model = new \app\api\model\app\agent\Goods(); } /** * 获取分销商品列表 * @return void */ public function getGoodsList(){ $limit = input('limit',10); $page = input('page',1); $type = input('type',''); $name = input('name',''); $sort = input('sort','time'); $order = input('order','desc'); $where = []; if($type){ $where['goods.type'] = $type; } if($name){ $where['goods.name'] = ['like',"%{$name}%"]; } $where['goods.pay_type'] = ['=','pay']; switch ($sort){ case 'time': $sort = 'goods.createtime'; break; case 'price': $sort = 'goods.price'; break; default: $sort = 'goods.createtime'; break; } $list = \app\common\model\goods\Handle::getGoodsQuery() ->join(\app\api\model\app\agent\Goods::getTable() ." prop","goods.id = prop.goods_id","left") ->field(["goods.*","prop.goods_id","prop.goods_type","prop.status","prop.mode","prop.prop_rule"]) ->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($where) ->where(function ($query) { $query->where('prop.status', '<>', 2) ->whereNull('prop.status', 'OR'); }) ->limit($limit) ->page($page) ->order($sort,$order) ->select(); if($list){ foreach ($list as $index => &$row) { try{ $extendInfo = \app\common\model\goods\Handle::parseGoodsExtendInfo($row['id'],$row['type']); if($extendInfo){ $row = array_merge($row,$extendInfo); } if(!isset($row['goods_id']) || !$row['goods_id']){ $row['goods_id'] = $row['id']; } $row['prop'] = \app\common\model\app\agent\Goods::getUserGoodsProp($this->auth->id,$row['goods_id'],$row['type'],$row['price']); if(!isset($row['prop']) || !$row['prop']){ $row['prop'] = [ 'price'=>[ 'goods'=>0 ] ]; } }catch(\Exception $e){ unset($list[$index]); } } } $this->success('获取成功', $list); } }