model = new \app\admin\model\app\agent\Goods; $this->courseModel = new \app\admin\model\course\Course; } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ /** * 查看 */ public function index() { //当前是否为关联查询 $this->relationSearch = true; //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('keyField')) { return $this->selectpage(); } //创建时间搜索格式转换 $filterParams = json_decode(input('filter'),true); if(isset($filterParams['goods.createtime']) && $filterParams['goods.createtime']){ $createtimeParams = explode(" - ",$filterParams['goods.createtime']); if($createtimeParams && count($createtimeParams) == 2){ $createtimeParams[0] = strtotime($createtimeParams[0]); $createtimeParams[1] = strtotime($createtimeParams[1]); //合并$createtimeParams $createtimeParams = implode(" - ",$createtimeParams); $filterParams['goods.createtime'] = $createtimeParams; Request::instance()->post(['filter'=>json_encode($filterParams)]); } } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $list = \app\common\model\goods\Handle::getGoodsQuery() ->join("app_agent_goods prop","goods.id = prop.goods_id","LEFT") ->order("goods.createtime", "desc") ->field(["goods.*","prop.goods_id","prop.goods_type","prop.status","prop.mode","prop.prop_rule"]) ->field("CONCAT_WS('_', goods.id,goods.type) as id_type") ->group("CONCAT_WS('_', goods.id,goods.type)") ->where($where) ->where('goods.type', '<>', 'test') ->where('goods.sales_type', 'like', '%alone%') ->where(function ($query) { // 部分商品的实际价格依赖关联表或历史同步结果,不能只靠 goods.price 过滤 $query->where('goods.price', '>', 0) ->whereOr('goods.type', 'vipcard') ->whereOr('goods.type', 'activity'); }) ->where(['goods.pay_type'=>'pay']) ->paginate($limit); if($list){ $list = $list->toArray(); foreach ($list['data'] as &$row) { $extendInfo = \app\common\model\goods\Handle::parseGoodsExtendInfo($row['id'],$row['type']); if($extendInfo){ $row = array_merge($row,$extendInfo); } if(!$row['goods_id']){ $row = array_merge($row,\app\common\model\app\ConfigDefault::$goodsProp); $row['goods_id'] = $row['id']; } if($row['pay_type'] != 'pay'){ $row['disabled'] = true; } $row['prop'] = \app\common\model\app\agent\Goods::getGoodsAllProp($row['goods_id'],$this->getGoodsType($row['type'])); // if(!isset($row['goods_id']) || !$row['goods_id']){ // $row['goods_id'] = $row['id']; // } // // if($row['pay_type'] != 'pay'){ // $row['disabled'] = true; // } // // $prop = \app\common\model\app\agent\Goods::getGoodsAllProp($row['goods_id'],$row['type']); // if($prop){ // $row = array_merge($prop['goods'],$row); // $row['prop'] = $prop; // }else{ // $row = array_merge($row,\app\common\model\app\ConfigDefault::$goodsProp); // } } } $result = array("total" => $list['total'], "rows" => $list['data'],'attr'=>[ 'statusList'=>$this->model->getStatusList(), 'modeList'=>$this->model->getModeList(), 'goodsTypeList'=> array_merge([ 'column'=>__('Column'), 'video'=>__('Video'), 'audio'=>__('Audio'), 'article'=>__('Article'), 'live'=>__('Live'), 'vipcard' => __('Vipcard'), 'activity' => __('Activity'), 'exercises' => __('Exercises'), 'physical' => __('Physical') ], \app\admin\library\project\App::isInstall('composite') ? ['composite' => '组合商品'] : []) ]); return $this->success("获取成功",$result); } /** * 获取比例详情 * @return void */ public function getPropDetail(){ $goodsId = $this->request->post("goods_id/a"); $goodsType = $this->request->post("goods_type/a"); if(count($goodsId) > 1){ $goodsId = 0; $goodsType = 'article'; }else{ $goodsId = $goodsId[0]; $goodsType = $goodsType[0]; } $data = \app\common\model\app\agent\Goods::getGoodsAllProp($goodsId,$this->getGoodsType($goodsType)); return $this->success("获取成功",$data); } /** * 设置商品佣金 * @return void */ public function setGoodsProp() { $goodsIds = $this->request->post("goods_id/a"); $goodsTypes = $this->request->post("goods_type/a"); $row = $this->request->post("row/a"); if(!is_array($goodsIds)){ $goodsIds = [$goodsIds]; } if(!is_array($goodsTypes)){ $goodsTypes = [$goodsTypes]; } $row['prop_rule'] = json_encode($row['prop_rule'],true); //过滤字段 $fields = ['prop_rule','status','mode']; foreach ($row as $index => $item){ if(!in_array($index,$fields)){ unset($row[$index]); } } $count = 0; foreach ($goodsIds as $index => $goodsId){ $detail = $this->model->where([ 'goods_id'=>$goodsId, 'goods_type'=>$this->getGoodsType($goodsTypes[$index]) ])->find(); if(!$detail){ $row['uniacid'] = UNIACID; $row['goods_id'] = $goodsId; $row['goods_type'] = $this->getGoodsType($goodsTypes[$index]); $row['createtime'] = time(); $ret = $this->model->insert($row); }else{ $ret = $this->model->where([ 'goods_id'=>$goodsId, 'goods_type'=>$this->getGoodsType($goodsTypes[$index]) ])->update($row); } if($ret){ $count++; } } return $this->success("已变更{$count}条数据"); } public function getGoodsType($type){ if($type == 'video' || $type == 'column' || $type == 'audio' || $type == 'article' || $type == 'live'){ $type = 'course'; } return $type; } }