request->isAjax) { $get = Yii::$app->request->get(); $user_id = $get['user_id'] ?? 0; $keyword = $get['keyword'] ?? ''; $filter = []; if ($user_id > 0) { $filter[] = ['user_id' => $user_id]; } if (!empty($keyword)) { $search_user_ids = User::find()->where([ 'or', ['like', 'nickname', $keyword], ['like', 'mobile', $keyword] ])->select(['id'])->asArray()->all(); $search_user_ids = array_column($search_user_ids, 'id'); if ($search_user_ids) { $filter[] = ['user_id' => $search_user_ids]; } else { $filter[] = ['user_id' => []]; } } $params = [ 'where' => array_merge([ ['mall_id' => $this->mall_id], ], $filter), 'order' => 'id DESC' ]; $list = HigoMerchantRewardLog::listPage($params); if ($list === false) { return $this->error(HigoMerchantRewardLog::getStaticError()); } // $source_table_ids = array_column($list['list'], 'source_table_id'); $source_table_ids = []; $cashier_ids = []; /** @var \addons\Store\common\models\StoreCashierOrder $cashier_order_class */ $cashier_order_class = \addons\Store\common\models\StoreCashierOrder::class; foreach($list['list'] as $val){ if($val['source_table'] == Order::tableName()){ $source_table_ids[] = $val['source_table_id']; }elseif($val['source_table'] == $cashier_order_class::tableName()){ $cashier_ids[] = $val['source_table_id']; } } $order_list = Order::lists([ 'where' => [['id' => $source_table_ids], ['mall_id' => $this->mall_id]], 'with' => ['user', 'detail'], 'index' => 'id' ], true); $cashier_order_list = $cashier_order_class::lists([ 'where' => [['id' => $cashier_ids], ['mall_id' => $this->mall_id]], 'select' => 'id, pay_money, order_no,user_id', 'index' => 'id', 'with' => [ 'user' => function ($query){ return $query->select('id, nickname, avatar_url'); } ] ]); foreach ($list['list'] as &$item) { $item['goods_name'] = ''; $item['order_no'] = ''; $item['price'] = ''; $item['nickname'] = ''; $item['avatar_url'] = ''; $item['desc'] = '商家让利扣除商家嗨贝'; if (isset($order_list[$item['source_table_id']])) { $item['order_no'] = $order_list[$item['source_table_id']]['order_no']; $item['goods_name'] = $order_list[$item['source_table_id']]['detail'][0]['goods_name']; $item['price'] = $order_list[$item['source_table_id']]['detail'][0]['price']; $item['nickname'] = $order_list[$item['source_table_id']]['user']['nickname']; $item['avatar_url'] = $order_list[$item['source_table_id']]['user']['avatar_url']; }else if(isset($cashier_order_list[$item['source_table_id']])){ $item['order_no'] = $cashier_order_list[$item['source_table_id']]['order_no']; $item['goods_name'] = '收银台'; $item['price'] = $cashier_order_list[$item['source_table_id']]['pay_money']; $item['nickname'] = $cashier_order_list[$item['source_table_id']]['user']['nickname']; $item['avatar_url'] = $cashier_order_list[$item['source_table_id']]['user']['avatar_url']; } } unset($item); $higo_mall = HigoMall::getOne([['mall_id' => $this->mall_id]],true); $total = HigoMerchantRewardLog::find()->where(['mall_id' => $this->mall_id]) ->select('sum(profit_price) as total_profit_price,sum(profit) as total_profit')->asArray()->one(); $list['orderStatistics'] = [ 'total_send_hi_bei' => $higo_mall['hi_bei'] ?? 0, 'total_profit' => $total['total_profit_price'] ?? 0, 'total_deduct_hi_bei' => $total['total_profit'] ?? 0 ]; return $this->success('success', $list); } return $this->render('index', []); } /** * 让利列表 * @return mixed|string|null */ public function actionReduceProfit() { if (\Yii::$app->request->isAjax) { // 判断有没有安装 门店插件 if (!MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_STORE)) { return $this->error('请安装门店插件'); } if (\Yii::$app->request->isPost) { // 审核 $setting = $this->request->post(); // 数据校验 $res = \Yii::$app->services->validate->validate($setting, [ [['id', 'status', 'remark'], 'required'], [['id', 'status'], 'integer'], [['remark'], 'string'] ], [ 'id' => '审核对象', ]); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); try { $ret = (new MerchantReduceProfitService())->audit($this->mall_id, $setting['id'], $this->admin->id, $setting['status'], $setting['remark']); return is_string($ret) ? $this->error($ret) : $this->success('操作成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } else { $params = $this->request->get(); // 数据校验 $res = \Yii::$app->services->validate->validate($params, [ [['store_keyword', 'date_start', 'date_end'], 'string'], [['rate'], 'number'], [['status', 'page', 'limit', 'cate'], 'integer'], ]); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $ret = (new MerchantReduceProfitService())->page($this->mall_id, $params); if (is_array($ret)) { $cate_list = StoreCate::find() ->select('id,name') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]) ->asArray() ->all(); $ret['cate_list'] = $cate_list; } return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } } return $this->render($this->action->id); } }