request->isGet) { return $this->error('请求方式错误'); } $cate_id = \Yii::$app->request->get('cate_id', 0); $goods_name = \Yii::$app->request->get('goods_name'); $order_field = \Yii::$app->request->get('order_field'); $order_by = \Yii::$app->request->get('order_by', 'desc'); $page = \Yii::$app->request->get('page', 1); $limit = \Yii::$app->request->get('limit', $this->pageSize); if ( (!empty($order_field) && !in_array($order_field, ['sales', 'price'])) || (!empty($order_by) && !in_array($order_by, ['desc', 'asc'])) ) { return $this->error('参数错误'); } $wheres[] = ['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'is_on_sale' => 1]; if (!empty($cate_id)) { $good_cates = GoodsCateRelate::findAll(['cate_id' => $cate_id]); if (!empty($good_cates)) $wheres[] = ['id' => array_column($good_cates, 'goods_id')]; } if (!empty($goods_name)) $wheres[] = ['liek', 'goods_name', $goods_name]; $group_buy_goodids = GoodsMarketing::find() ->select('goods_id') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'marketing_type' => 'GroupBuy']) ->asArray() ->column(); if (!empty($group_buy_goodids)) $wheres[] = ['not id', 'id', $group_buy_goodids]; $order = 'sort asc,created_at desc'; if (!empty($order_field) && !empty($order_by)) { $order .= ',' . $order_field . ' ' . $order_by; } $params = [ 'select' => 'id,goods_name,cover_pic,price,sales_num', 'where' => $wheres, 'order' => $order, 'page' => $page, 'limit' => $limit, ]; $goods = Goods::listPage($params); if (empty($goods['list'])) { if (is_array($goods['list'])) { return $this->success('success', $goods); } else { return $this->error(Goods::getStaticError()); } } $configs = ShortVideoConfig::getConfig($this->mall_id); foreach ($goods['list'] as &$good) { $reward_rst = ShortVideoCommissionItemSetting::calculateReward($this->mall_id, $good['id'], $good['price']); $good['commission'] = $reward_rst['commission']; } return $this->success('success', $goods); } /** * @name: * @msg: 已购买当前商品的会员列表 * @param {*} * @return {*} */ public function actionBoughtList() { if (!\Yii::$app->request->isGet) { return $this->error('请求方式错误'); } $video_id = \Yii::$app->request->get('video_id'); $page = \Yii::$app->request->get('page', 1); $limit = \Yii::$app->request->get('limit', $this->pageSize); if (empty($video_id)) return $this->error('参数错误'); $wheres[] = ['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'video_id' => $video_id]; $params = [ 'select' => 'id,user_id,order_id', 'where' => $wheres, 'order' => 'created_at desc', 'page' => $page, 'limit' => $limit, ]; $video_orders = ShortVideoOrderAward::listPage($params); if (empty($video_orders['list'])) { if (!is_array($video_orders['list'])) { return $this->error(ShortVideoOrderAward::getStaticError()); } } $user_ids = array_column($video_orders['list'], 'user_id'); $users = User::find() ->select('id,nickname,avatar_url') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $user_ids]) ->asArray() ->indexBy('id') ->all(); $order_ids = array_column($video_orders['list'], 'order_id'); $order_details = OrderDetail::find() ->select('order_id,num') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'order_id' => $order_ids]) ->asArray() ->indexBy('order_id') ->all(); $bought_num = 0; foreach ($video_orders['list'] as &$order) { $user = $users[$order['order_id']] ?? []; $order['nickname'] = $user['nickname'] ?? '默认会员'; $order['avatar_url'] = $user['avatar_url'] ?? \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png'; $order['bought_num'] = $order_details[$order['order_id']]['num'] ?? 0; $bought_num += $order_details[$order['order_id']]['num'] ?? 0; } $bought_users = count(array_unique($user_ids)); $video_orders['bought_num'] = $bought_num; $video_orders['bought_users'] = $bought_users; return $this->success('success', $video_orders); } }