display(); } // 获取可选选择商品--赠品 public function adminCanChooseBySku() { $user = session("ls_userinfo"); $store_id = session("storeid"); $merchant_id = $user['merchantid']; $content = I("post."); $page = $content['page'] ? $content['page'] : 1; $limit = $content['pageSize'] ? $content['pageSize'] : 10; $goods_number = $content['keyword']; if (!empty($goods_number)) { $where['goods_name'] = array('like', "%" . $goods_number . "%"); } $where['merchant_id'] = $merchant_id; $where['store_id'] = $store_id; $where['status'] = 0; $where['serial_number_state'] = ['neq',1]; $fields = [ 'id as sale_goods_id', 'goods_id', 'goods_name', 'sku_id', 'sku_name', 'goods_num', 'cost_price', ]; $RetailGoodsModel = new RetailGoodsModel(); $RetailSkuGoods = new SkuGoodsViewModel(); $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $ImageGalleryModel = new ImageGalleryModel(); $goodsList = D('SSaleMGoods')->getSelect($where, $page, $limit, $fields, "goods_num asc"); if ($goodsList) { $count = D('SSaleMGoods')->getCount($where); foreach ($goodsList as $key => &$val) { $val['index'] = $key + 1; $val['goods_num'] = round($val['goods_num'], 3); $val['cost_price'] = round($val['cost_price'], 2); $val['sku_num'] = round($val['sku_num'], 3); if ($val['attribute_state'] == 2) { $val['specifications'] = $val['sku_name']; $val['goods_number'] = $val['sku_goods_number']; $val['goods_code'] = $val['sku_code']; } // 零售价格处理 $val['retail_price'] = $RetailGoodsGiftsModel->getRetailPriceBySku($val['goods_id'], $val['sku_id']); // 商品图片处理 $goods_img_id = $RetailGoodsModel->getFind(['id' => $val['goods_id']], 'goods_img_id'); $val['goods_img_id'] = $goods_img_id['goods_img_id']; if ($goods_img_id) { $val['goods_img'] = $ImageGalleryModel->getImagePath($val['goods_img_id']); } else { $val['goods_img'] = ''; } $val['choose_status'] = 0; // 前端需要 } } else { $goodsList = array(); $count = 0; } $res['status'] = 1; $res['msg'] = ''; $res['total'] = $count; $res['data'] = $goodsList; $this->ajaxReturn($res); } // 获取促销赠送主商品 public function goodsGiftsActivityMain() { $param = array( 'store_id' => $this->store_id, 'identity' => I('session.identity'), //寄售类型 'page' => I('post.page') ? I('post.page') : 1, //页 'limit' => I('post.pageSize') ? I('post.pageSize') : 10, //每页数量 'need_img' => true, //是否需要图片 'need_goods_num' => true, //是否需要库存 'need_count' => true, //是否需要总数量 'attribute_state' => I('post.attribute_state'), //规格 1无规格 2规格 'keyword' => I('post.keyword'), //搜索关键词 'keyword_type' => I('post.keyword_type'), //关键词搜索类型 1货号 2条码 3名称 'order_type' => I('post.order_type'), //排序规则 'condition_name' => I('post.condition_name'), //排序规则关键词 'pricing_method' => I('post.pricing_method'), 'online_state' => I('post.online_state'), 'recovery_type' => I('post.recovery_type'), //2回收站 'advance_sale_status' => I('post.advance_sale_status'), // 按照商品类别搜索 'person1' => I('post.person1'), 'person2' => I('post.person2'), 'person3' => I('post.person3'), ); $SkuGoodsViewModel = new SkuGoodsViewModel(); $ret = $SkuGoodsViewModel->getGoodsListActivity($param); $this->ajaxReturn($ret); } // 获取商品规格 //获取商品规格信息--活动用,精简信息 public function getGoodsSkuAttrActivity() { $user = session('ls_userinfo'); $id = I('post.id'); if (empty($user) || empty($id)) { $res['status'] = 0; $res['msg'] = "登录超时"; $this->ajaxReturn($res); } $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $skuList = M('retail_sku_goods')->field('id, sku_id_list, retail_price, goods_img, goods_id')->where(array('goods_id' => $id, 'state' => 0))->select(); if (!empty($skuList)) { foreach ($skuList as &$value) { $id = explode(',', $value['sku_id_list']); foreach ($id as &$v) { $v = intval($v); $value['name'][] = M('retail_sku_list')->where(array('id' => $v))->getField('name'); $value['retail_price'] = $RetailGoodsGiftsModel->getRetailPriceBySku($value['goods_id'], $v); } $value['id'] = $id; $value['sku_checked'] = false; unset($value['sku_id_list']); } } $data['list'] = $skuList; $this->ajaxReturn(array('data' => $data)); } /* ******************************** 后台收银员赠送START ******************************** */ // 后台赠品列表 public function getGoodsGiftBack() { $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $start_time = I('post.start_time'); // 开始时间 $end_time = I('post.end_time'); // 结束时间 $status = I('post.status'); // 状态:0=关闭,1=开启 $search = I('post.search'); // 搜索条件 if ($status) { $where['rgg.status'] = $status; } if ($status === 0 || $status === '0') { $where['rgg.status'] = $status; } if ($search) { $where['rg.goods_name|rg.goods_number|rg.goods_code'] = ['like', "%{$search}%"]; } if ($start_time && $end_time) { $where['rgg.created_at'] = ['between', [$start_time, $end_time]]; } $store_id = $this->store_id; $where['rgg.store_id'] = $store_id; $where['rgg.is_del'] = 1; $where['rg.status'] = ['in','0,1']; $field = [ 'rg.goods_img_id', 'rssg.goods_name', 'rssg.specifications', 'rssg.goods_num', 'rssg.sku_num', 'rssg.sku_name', 'rgg.id as gifts_id', 'rgg.remain_inventory', 'rgg.status', 'rgg.created_at', 'rgg.sku_id', 'rgg.goods_id', ]; $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $ImageGalleryModel = new ImageGalleryModel(); $result = $RetailGoodsGiftsModel->getGoodsGiftsList($where, $field, $page, $pageSize, 'id desc'); if ($result['list']) { foreach ($result['list'] as &$value) { if ($value['sku_id']) { $value['retail_price'] = $RetailGoodsGiftsModel->getRetailPriceBySku($value['goods_id'], $value['sku_id']); } $value['goods_img'] = $ImageGalleryModel->getImagePath($value['goods_img_id']); $value['checked'] = false; unset($value['goods_img_id']); } $res['status'] = 1; $res['msg'] = '数据获取成功!'; $res['data'] = $result; } else { $res['status'] = 0; $res['msg'] = '暂无更多商品信息!'; } $this->ajaxReturn($res); } // 后台选择赠品 // [{"sale_goods_id":4496,"goods_id":1,"sku_id":1,"remain_inventory":100}] public function chooseGoodsJoinGifts() { $gifts_json = I('post.gifts_json'); // 选择的赠品 if (empty($gifts_json)) { $result['status'] = 0; $result['msg'] = '缺少商品信息'; $this->ajaxReturn($result); } try { $giftsList = json_decode($gifts_json, true); } catch (Exception $e) { echo $e->getMessage(); exit; } if (!is_array($giftsList)) { $result['status'] = 0; $result['msg'] = '商品信息有误'; $this->ajaxReturn($result); } $store_id = $this->store_id; if (!$store_id) { $result['status'] = 0; $result['msg'] = '重要信息缺失!'; $this->ajaxReturn($result); } // 赠品表记录 $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $num = 0; foreach ($giftsList as &$value) { if ($value['remain_inventory'] < 0) { $res['status'] = 0; $res['msg'] = '请填写正确的赠品数量!'; $this->ajaxReturn($res); } if (empty($value['remain_inventory'])) { $value['remain_inventory'] = 0; } // 检验赠品库存 $saleGoodsNum = $this->getGoodsSaleNum($value['sale_goods_id']); if ($value['remain_inventory'] > $saleGoodsNum) { $res['status'] = 0; $res['msg'] = '商品库存不足!'; $this->ajaxReturn($res); } // 检验赠品是否已经存在 $is_gifts = $RetailGoodsGiftsModel->getOrderFind(['sale_goods_id' => $value['sale_goods_id'], 'is_del' => 1, 'store_id' => $store_id]); if ($is_gifts) { $res['status'] = 0; $res['msg'] = '赠品已存在,请勿重复添加!'; $this->ajaxReturn($res); } $value['created_at'] = date('Y-m-d H:i:s', time()); $value['store_id'] = $store_id; $gifts_id = $RetailGoodsGiftsModel->addOrder($value); if ($gifts_id) { //商品库存减少 A('Api/Inventory')->Inventory(2, $value['remain_inventory'], $value['goods_id'], $value['sku_id']); $num++; } } if ($num == count($giftsList)) { $result['status'] = 1; $result['msg'] = '赠品记录入库成功!'; } else { $result['status'] = 0; $result['msg'] = '赠品记录入库失败!'; } $this->ajaxReturn($result); } // 更改赠品属性 状态:0=关闭,1=开启 public function updateGiftsStatus() { $id = I('post.gifts_id'); if (!$id) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } $where['id'] = $id; $field = [ 'status', 'remain_inventory' ]; $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $evaluate_info = $RetailGoodsGiftsModel->getOrderFind($where, $field); if (!$evaluate_info) { $res['status'] = 0; $res['msg'] = '赠品数据有误!'; $this->ajaxReturn($res); } if ($evaluate_info['status'] == 1) { $result = $RetailGoodsGiftsModel->updateOrder(['id' => $id], ['status' => 0, 'updated_at' => date('Y-m-d H:i:s', time())]); } else { // 判断库存 if ($evaluate_info['remain_inventory'] < 1) { $res['status'] = 0; $res['msg'] = '赠品库存不足,无法开启!'; $this->ajaxReturn($res); } $result = $RetailGoodsGiftsModel->updateOrder(['id' => $id], ['status' => 1, 'updated_at' => date('Y-m-d H:i:s', time())]); } if ($result) { $res['status'] = 1; $res['msg'] = '操作成功'; } else { $res['status'] = 0; $res['msg'] = '操作失败,请稍后!'; } $this->ajaxReturn($res); } // 更改赠品库存 public function updateGiftsInventory() { $id = I('post.gifts_id'); $type = I('post.type'); $remain_inventory = I('post.remain_inventory'); if (!$id) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } if (!$remain_inventory) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } $where['id'] = $id; $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $giftsInfo = $RetailGoodsGiftsModel->getOrderFind($where); if (!$giftsInfo) { $res['status'] = 0; $res['msg'] = '赠品数据有误!'; $this->ajaxReturn($res); } // 库存验证 $saleGoodsNum = $this->getGoodsSaleNum($giftsInfo['sale_goods_id']); if ($remain_inventory > $saleGoodsNum) { $res['status'] = 0; $res['msg'] = '商品库存不足!'; $this->ajaxReturn($res); } if ($type == 1) { $fact = $giftsInfo['remain_inventory'] + $remain_inventory; } else { $fact = $giftsInfo['remain_inventory'] - $remain_inventory; } $update = [ 'remain_inventory' => $fact, 'updated_at' => date('Y-m-d H:i:s', time()) ]; $result = $RetailGoodsGiftsModel->updateOrder(['id' => $id], $update); if ($result) { if ($remain_inventory > 0) { if ($type == 1) { //增品库存增加商品库存减少 A('Api/Inventory')->Inventory(2, $remain_inventory, $giftsInfo['goods_id'], $giftsInfo['sku_id']); } else { // 增品库存减少商品库存增加 A('Api/Inventory')->Inventory(1, $remain_inventory, $giftsInfo['goods_id'], $giftsInfo['sku_id']); } } $res['status'] = 1; $res['msg'] = '数据更新成功'; } else { $res['status'] = 0; $res['msg'] = '操作失败,请稍后!'; } $this->ajaxReturn($res); } // 后台删除赠品 public function deleteGiftsRecord() { $id = I('post.gifts_id'); if (!$id) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } $where['id'] = $id; $RetailGoodsGiftsModel = new RetailGoodsGiftsModel(); $evaluate_info = $RetailGoodsGiftsModel->getOrderFind($where); if (!$evaluate_info) { $res['status'] = 0; $res['msg'] = '赠品数据有误!'; $this->ajaxReturn($res); } $result = $RetailGoodsGiftsModel->updateOrder(['id' => $id], ['is_del' => 0, 'deleted_at' => date('Y-m-d H:i:s', time())]); if ($result) { if ($evaluate_info['remain_inventory'] > 0) { A('Api/Inventory')->Inventory(1, $evaluate_info['remain_inventory'], $evaluate_info['goods_id'], $evaluate_info['sku_id']); } $res['status'] = 1; $res['msg'] = '删除成功'; } else { $res['status'] = 0; $res['msg'] = '操作失败,请稍后!'; } $this->ajaxReturn($res); } /* ******************************** 后台促销赠送START ******************************** */ /** * 促销赠送活动列表 * */ public function getGoodsGiftActivityBack() { $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $goods_name = I('post.goods_name'); // $start_time = I('post.start_time'); // 开始时间 $end_time = I('post.end_time'); // 结束时间 $sales_start_time = I('post.sales_start_time'); // 促销开始时间 $sales_end_time = I('post.sales_end_time'); // 促销结束时间 $status = I('post.status'); // 状态:0=关闭,1=开启 if ($status) { $where['rgga.status'] = $status; } if ($goods_name) { $where['rgga.goods_name'] = ['like', "%{$goods_name}%"]; } if ($start_time && $end_time) { $start_time = strtotime($start_time); $end_time = strtotime($end_time); $where['rgga.created_at'] = ['between', [$start_time, $end_time]]; } if ($sales_start_time && $sales_end_time) { $sales_start_time = strtotime($sales_start_time); $sales_end_time = strtotime($sales_end_time); $map['_complex'] = array( array( 'rgga.start_time' => array('elt', $sales_start_time), 'rgga.end_time' => array('egt', $sales_end_time), ), array( '_complex' => array( array( '_string' => "rgga.start_time >={$sales_start_time} AND rgga.start_time <={$sales_end_time}", ), array( '_string' => "rgga.end_time >={$sales_start_time} AND rgga.end_time <={$sales_end_time}", ), '_logic' => 'or' ), ), array( 'rgga.start_time' => array('egt', $sales_start_time), 'rgga.end_time' => array('elt', $sales_end_time), ), '_logic' => 'or' ); } $store_id = $this->store_id; $where['rgga.store_id'] = $store_id; $where['rgga.is_del'] = 1; $field = [ 'rgga.id as activity_id', 'rgga.goods_json', 'rgga.sku_info', 'rgga.created_at', 'rgga.start_time', 'rgga.end_time', 'rgga.status', ]; $RetailGoodsGiftsActivityModel = new RetailGoodsGiftsActivityModel(); $result = $RetailGoodsGiftsActivityModel->getGoodsGiftsActivityList($where, $field, $page, $pageSize, 'id desc'); if ($result['list']) { foreach ($result['list'] as &$value) { $goodsList = json_decode($value['goods_json'], true); $value['goods_name'] = $goodsList[0]['goods_name']; $skuList = json_decode($value['sku_info'], true); if ($skuList[0]['id']) { $sku = []; foreach ($skuList as &$v) { $sku[] = $v['name'][0]; } $value['sku_name'] = implode(',', $sku); } unset($value['goods_json']); unset($value['sku_info']); unset($goodsList); } $res['status'] = 1; $res['msg'] = '数据获取成功!'; $res['data'] = $result; } else { $res['status'] = 0; $res['msg'] = '暂无更多商品信息!'; } $this->ajaxReturn($res); } /** * 促销赠送活动发布 * goods_json [{"goods_id":1,"sku_id":1}] * gifts_json [{"id":1,"gifts_num":1}] **/ public function releaseGoodsGiftsActivity() { $data['goods_json'] = I('post.goods_json'); // 主商品信息 $data['goods_gifts_json'] = I('post.gifts_json'); // 赠品信息 $data['goods_num_min'] = I('post.goods_num_min'); // 赠品门槛 $data['time_limit'] = I('post.time_limit'); // 时间限制 1=有限制 $data['start_time'] = I('post.start_time') ? I('post.start_time') : null; // 开始时间 $data['end_time'] = I('post.end_time') ? I('post.end_time') : null; // 结束时间 $data['online_promotion'] = I('post.online_promotion'); // 线上促销 $data['online_buy_limit'] = I('post.online_buy_limit'); // 线上购买限制 $data['offline_promotion'] = I('post.offline_promotion'); // 线下促销 $data['offline_buy_limit'] = I('post.offline_buy_limit'); // 线上购买限制 $store_id = $this->store_id; $data['store_id'] = $store_id; $goodsList = $this->goodsJsonVerify($data['goods_json']); $giftsList = $this->goodsJsonVerify($data['goods_gifts_json']); // 商品数据处理 $data['goods_id'] = $goodsList[0]['id']; $sku = []; foreach ($goodsList[0]['specifications'] as &$value) { $sku[] = $value['id'][0]; unset($value['goods_id']); unset($value['sku_checked']); } $data['sku_ids'] = implode(',', $sku); if ($goodsList[0]['specifications'][0]['id']) { $data['sku_info'] = json_encode($goodsList[0]['specifications']); } if ($data['time_limit'] == 1) { if (empty($data['start_time']) || empty($data['end_time'])) { $result['status'] = 0; $result['msg'] = '活动时间错误!'; $this->ajaxReturn($result); } } // 赠品数据判断 foreach ($giftsList as &$value) { } // 主商品是否已经参加活动 $where['goods_id'] = $data['goods_id']; $where['is_del'] = 1; $where['store_id'] = $store_id; $RetailGoodsGiftsActivityModel = new RetailGoodsGiftsActivityModel(); $activity_info = $RetailGoodsGiftsActivityModel->getOrderFind($where); if ($activity_info) { $res['status'] = 0; $res['msg'] = '该商品已有促销活动,请勿重新添加!'; $this->ajaxReturn($res); } $data['created_at'] = date('Y-m-d H:i:s', time()); $activity_id = $RetailGoodsGiftsActivityModel->addOrder($data); if ($activity_id) { $result['status'] = 1; $result['msg'] = '满赠促销活动添加成功!'; } else { $result['status'] = 0; $result['msg'] = '满赠促销活动添加失败!'; } $this->ajaxReturn($result); } // 促销赠送活动详情 public function goodsGiftsActivityDetails() { $id = I('post.activity_id'); if (!$id) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } $where['id'] = $id; $field = [ 'id as activity_id', 'goods_json', 'sku_info', 'goods_gifts_json', 'created_at', 'start_time', 'end_time', 'status', 'goods_num_min', 'online_promotion', 'online_buy_limit', 'offline_promotion', 'offline_buy_limit', ]; $RetailGoodsGiftsActivityModel = new RetailGoodsGiftsActivityModel(); // $activity_info = $RetailGoodsGiftsActivityModel->goodsGiftsActivityDetails($where, $field); $activity_info = $RetailGoodsGiftsActivityModel->getFind($where, $field); if ($activity_info) { if ($activity_info['goods_json']) { $activity_info['goods_info'] = json_decode($activity_info['goods_json'], true); unset($activity_info['goods_json']); unset($activity_info['goods_info'][0]['specifications']); } $activity_info['sku_info'] = json_decode($activity_info['sku_info'], true); $activity_info['goods_gifts_info'] = json_decode($activity_info['goods_gifts_json'], true); unset($activity_info['goods_gifts_json']); $res['status'] = 1; $res['msg'] = '操作成功'; $res['data'] = $activity_info; } else { $res['status'] = 0; $res['msg'] = '操作失败,请稍后!'; } $this->ajaxReturn($res); } // 促销活动状态修改 public function updateGiftsActivityStatus() { $id = I('post.activity_id'); if (!$id) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } $where['id'] = $id; $RetailGoodsGiftsActivityModel = new RetailGoodsGiftsActivityModel(); $evaluate_info = $RetailGoodsGiftsActivityModel->getOrderFind($where); if (!$evaluate_info) { $res['status'] = 0; $res['msg'] = '赠品数据有误!'; $this->ajaxReturn($res); } if ($evaluate_info['status'] == 1) { $result = $RetailGoodsGiftsActivityModel->updateOrder(['id' => $id], ['status' => 0, 'updated_at' => date('Y-m-d H:i:s', time())]); } else { $result = $RetailGoodsGiftsActivityModel->updateOrder(['id' => $id], ['status' => 1, 'updated_at' => date('Y-m-d H:i:s', time())]); } if ($result) { $res['status'] = 1; $res['msg'] = '操作成功'; } else { $res['status'] = 0; $res['msg'] = '操作失败,请稍后!'; } $this->ajaxReturn($res); } // 删除促销活动 public function deleteGiftsActivityRecord() { $id = I('post.activity_id'); if (!$id) { $res['status'] = 0; $res['msg'] = '必要参数缺失!'; $this->ajaxReturn($res); } $where['id'] = $id; $RetailGoodsGiftsActivityModel = new RetailGoodsGiftsActivityModel(); $evaluate_info = $RetailGoodsGiftsActivityModel->getOrderFind($where); if (!$evaluate_info) { $res['status'] = 0; $res['msg'] = '赠品数据有误!'; $this->ajaxReturn($res); } $result = $RetailGoodsGiftsActivityModel->updateOrder(['id' => $id], ['is_del' => 0, 'deleted_at' => date('Y-m-d H:i:s', time())]); if ($result) { $res['status'] = 1; $res['msg'] = '删除成功'; } else { $res['status'] = 0; $res['msg'] = '操作失败,请稍后!'; } $this->ajaxReturn($res); } /* ******************************** 后台促销赠送START ******************************** */ // 商品数据验证 private function goodsJsonVerify($data_json) { if (empty($data_json)) { $result['status'] = 0; $result['msg'] = '缺少商品信息'; $this->ajaxReturn($result); } try { $dataList = json_decode($data_json, true); } catch (Exception $e) { echo $e->getMessage(); exit; } if (!is_array($dataList)) { $result['status'] = 0; $result['msg'] = '商品信息有误'; $this->ajaxReturn($result); } return $dataList; } // 获取商品库存 private function getGoodsSaleNum($sale_goods_id) { $goods_num = D('SSaleMGoods')->getFind(['id' => $sale_goods_id], 'goods_num'); if ($goods_num) { return $goods_num['goods_num']; } else { return 0; } } }