where([ ['start_time', '<=', time()], ['end_time', '>=', time()], ['status', '=', TeamEnum::TEAM_STATUS_CONDUCT] ])->column('id'); // 查询出活动中的商品数据 $lists = (new TeamGoods())->alias('TG') ->field('TG.*,TA.people_num,TA.partake_number') ->whereIn('TG.team_id', $activityIds) ->where('G.status', GoodsEnum::STATUS_SELL) ->join('team_activity TA', 'TA.id = TG.team_id') ->join('goods G', 'G.id = TG.goods_id') ->order('TG.min_team_price asc') ->limit($this->limitOffset, $this->limitLength) ->select()->toArray(); $goodsIds = array_column($lists,'goods_id'); $salesList = TeamGoodsItem::where(['team_id'=>$activityIds,'goods_id'=>$goodsIds]) ->group('goods_id') ->column('sum(sales_volume)','goods_id'); // 处理数据 foreach ($lists as &$item) { $item['name'] = $item['goods_snap']['name']; $item['image'] = $item['goods_snap']['image']; $item['min_price'] = $item['goods_snap']['min_price']; $item['max_price'] = $item['goods_snap']['max_price']; unset($item['goods_snap']); $item['activity_sales'] = $salesList[$item['goods_id']] ?? 0; } return $lists; } /** * @notes 总数量 * @return int * @author 张无忌 * @date 2021/8/3 15:12 */ public function count(): int { $activityIds = (new TeamActivity())->where([ ['start_time', '<=', time()], ['end_time', '>=', time()], ['status', '=', TeamEnum::TEAM_STATUS_CONDUCT] ])->column('id'); return (new TeamGoods())->alias('TG') ->field('TG.*,TA.people_num') ->whereIn('TG.team_id', $activityIds) ->where('G.status', GoodsEnum::STATUS_SELL) ->join('goods G', 'G.id = TG.goods_id') ->join('team_activity TA', 'TA.id = TG.team_id') ->count(); } }