request; if ($request->isAjax) { // 查询参数 $get = \Yii::$app->request->get(); $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]]; $where[] = ['or', ['like', 'name', $get['keyword']], ['like', 'level', $get['keyword']]]; $params = array('where' => $where, 'order' => 'id desc', 'limit' => $request->get('limit', 12)); $mall_id = $this->mall_id; $params['with'] = ['commissionLevelSetting'=>function($query)use($mall_id){ $query->where(['commission_type'=>'commission','from_type'=>AgentEnum::ADDONS_NAME,'mall_id'=>$mall_id,'status'=>StatusEnum::ENABLED]); }]; $params['order'] = 'level asc'; $page_data = AgentLevel::listPage($params, false); return $this->success('操作成功', $page_data); } return $this->render($this->action->id); } /** * @desc:修改状态 * @Author: hua * @Date: 2021/10/23 * @Time: 16:31 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void * @throws Exception */ public function actionSwitchStatus() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isPost) { $params = \Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id'], 'required'], [['status'], 'integer'] ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; $res = AgentLevel::setData($params); if ($res === false) return $this->error(AgentLevel::getStaticError()); $event = new AgentLevelEvent($this->mall_id); $data = [ 'mall_id'=>$this->mall_id, 'level'=>$res['level'], 'level_name'=>$res['name'], 'status'=>$res['status'], 'id'=>$res['id'], 'type'=>'edit', ]; \Yii::$app->services->events->dispatch($event,$data , $event->listeners); return $this->success('操作成功'); } } return $this->error(); } /** * @desc:删除等级 * @Author: hua * @Date: 2021/10/23 * @Time: 16:43 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void * @throws Exception */ public function actionDelete() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isPost) { $params = \Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id'], 'required'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; $params['status'] = StatusEnum::DELETE; $res = AgentLevel::del($params); if ($res === false) return $this->error(AgentLevel::getStaticError()); return $this->success('操作成功'); } } return $this->error(); } /** * @desc:设置升级条件 * @Author: hua * @Date: 2021/10/20 * @Time: 18:50 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionCondition() { if (\Yii::$app->request->isAjax) { try { if (\Yii::$app->request->isGet) { $upgrade_condition_ids = UpgradeCondition::$agent_condition_ids; if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK)) { $upgrade_condition_ids = array_merge($upgrade_condition_ids, UpgradeCondition::$cloud_stock_install_condition_ids); } $data['upgrade_condition'] = UpgradeCondition::getData($upgrade_condition_ids); $agentUpgradeCondition = Yii::$app->services->setting->addons->get($this->mall_id, AgentEnum::ADDONS_NAME, 'upgrade_condition'); $data['checked_condition_keys'] = !empty($agentUpgradeCondition['agent_level_upgrade_condition']) ? json_decode($agentUpgradeCondition['agent_level_upgrade_condition'], true) : []; $upgrade_condition_ids = array_column($data['upgrade_condition'],'id'); $checked_condition_keys = []; foreach($data['checked_condition_keys'] as $item){ if(in_array($item,$upgrade_condition_ids)){ $checked_condition_keys[] = $item; } } $data['checked_condition_keys'] = $checked_condition_keys; $data['level_down'] = $agentUpgradeCondition['level_down'] ?? 0; return $this->success('操作成功', $data); } else { $postData = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($postData, [ [['checked_condition_keys'], 'required'], [['level_down'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $data['upgrade_condition'] = [ 'agent_level_upgrade_condition' => json_encode($postData['checked_condition_keys']), 'level_down' => $postData['level_down'], ]; Yii::$app->services->setting->addons->set($this->mall_id, AgentEnum::ADDONS_NAME, $data); UpgradeCondition::clear($postData['checked_condition_keys'], 'addons\Agent\common\models\AgentLevel', $this->mall_id); return $this->success('操作成功'); } } catch (\Exception $e) { return $this->error($e->getMessage()); } } return $this->render('condition'); } /** * @desc:编辑等级 * @Author: hua * @Date: 2021/10/20 * @Time: 15:51 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionEdit() { try { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { $id = Yii::$app->request->get('id', ''); $mall_id = $this->mall_id; $data = []; $repurchase_subsidy_condition = AgentEnum::getRepurchaseSubsidyConditionInitValue(); if (!empty($id)) { $model = AgentLevel::getOne([['id' => $id]], true, ['commissionLevelSettingList'=>function($query)use($mall_id){ $query->where(['mall_id'=>$mall_id]); }]); $model['checked_condition_values'] = json_decode($model['checked_condition_values'], true) ?? []; if (empty($model['checked_condition_values'])) unset($model['checked_condition_values']); $model['checked_condition_keys'] = json_decode($model['checked_condition_keys'], true) ?? []; $model['goods_ids'] = json_decode($model['goods_ids'], true) ?? []; $model['goods_list'] = json_decode($model['goods_list'], true) ?? []; if(!empty($model['goods_ids'])){ $copyGoodsList = $model['goods_list']; $model['goods_list'] = Goods::lists(['where'=>[['id'=>$model['goods_ids']]],'select'=>'id,cover_pic,goods_name as name,price,stock', 'index' => 'id']); foreach ($copyGoodsList as $item) { isset($model['goods_list'][$item['id']]) && $model['goods_list'][$item['id']]['condition_num'] = $item['condition_num']; } $model['goods_list'] = array_values($model['goods_list']); } $model['store_goods_ids'] = json_decode($model['store_goods_ids'],true) ?? []; $model['store_goods_list'] = json_decode($model['store_goods_list'],true) ?? []; if(!empty($model['store_goods_list']) && MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_STORE) ){ $store_goods_ids = array_column($model['store_goods_list'],'id'); $store_goods_list = StoreGoods::lists(['where'=>[['id'=>$store_goods_ids]],'select'=>'id,cover_pic,goods_name,price,stock','index'=>'id']); foreach ($model['store_goods_list'] as&$item){ if(isset($store_goods_list[$item['id']])){ $item['cover_pic'] = $store_goods_list[$item['id']]['cover_pic']; $item['name'] = $store_goods_list[$item['id']]['goods_name']; $item['price'] = $store_goods_list[$item['id']]['price']; $item['stock'] = $store_goods_list[$item['id']]['stock']; } } } unset($model['updated_at'], $model['created_at']); $setting = \Yii::$app->services->setting->addons->get($this->mall_id, AgentEnum::ADDONS_NAME, 'basic'); $equal_prize_deep = $setting['equal_prize_deep'] ?? 0; if($equal_prize_deep > AgentEnum::ALONE_EQUAL_DEEP) $equal_prize_deep = AgentEnum::ALONE_EQUAL_DEEP; if (!empty($model['commissionLevelSettingList'])) { foreach ($model['commissionLevelSettingList'] as $val){ $val['alone_agent_equal_prize_info'] = $val['alone_agent_equal_prize_info'] ? json_decode($val['alone_agent_equal_prize_info'],true) : []; $val['repurchase_subsidy_condition'] = $val['repurchase_subsidy_condition'] ? json_decode($val['repurchase_subsidy_condition'],true) : $repurchase_subsidy_condition; if(!empty($val['repurchase_subsidy_condition']['condition_goods_ids'])){ $val['repurchase_subsidy_condition']['condition_goods_list'] = Goods::lists(['where'=>[['id'=>$val['repurchase_subsidy_condition']['condition_goods_ids']]],'select'=>'id,cover_pic,goods_name as name,price,stock',]); } $model[$val['commission_type']] = $val; } } else { $alone_info = []; $model['score'] = [ 'is_percent_team' => 0, 'is_percent_equal' => 0, 'agent_team_prize' => 0, 'agent_equal_prize' => 0, 'agent_over_prize' => 0, 'is_alone_agent_equal_prize' => 0, 'alone_agent_equal_prize_info' => $alone_info, 'is_repurchase_subsidy' => 0, 'repurchase_subsidy_condition' => $repurchase_subsidy_condition, ]; $model['commission'] = [ 'is_percent_team' => 0, 'is_percent_equal' => 0, 'agent_team_prize' => 0, 'agent_equal_prize' => 0, 'agent_over_prize' => 0, 'is_alone_agent_equal_prize' => 0, 'alone_agent_equal_prize_info' => $alone_info, 'is_repurchase_subsidy' => 0, 'repurchase_subsidy_condition' => $repurchase_subsidy_condition, ]; $model['digital'] = [ 'is_percent_team' => 0, 'is_percent_equal' => 0, 'agent_team_prize' => 0, 'agent_equal_prize' => 0, 'agent_over_prize' => 0, 'is_repurchase_subsidy' => 0, 'repurchase_subsidy_condition' => $repurchase_subsidy_condition, ]; $model['additional_score'] = [ 'channel_reward_additional_type' => 0, 'channel_reward_additional' => 0, 'channel_reward_additional_leap' => 0, 'same_reward_additional_type' => 0, 'same_reward_additional' => 0, 'is_enable_independent_same_reward' => 0, 'alone_agent_equal_prize_info' => $alone_info, 'is_repurchase_subsidy' => 0, 'repurchase_subsidy_condition' => $repurchase_subsidy_condition, ]; } $from_type_arr = ['commission' => [ 'alone_agent_equal_prize_info' ],'score' => [ 'alone_agent_equal_prize_info', ], 'additional_score' => [ 'alone_agent_equal_prize_info', ]]; foreach($from_type_arr as $from_type => $fields){ foreach ($fields as $field) { if(empty($model[$from_type][$field]) || !is_array($model[$from_type][$field])){ $model[$from_type][$field] = []; } $count = count($model[$from_type][$field]); if($count != $equal_prize_deep){ $diff = $equal_prize_deep - $count; if($diff > 0){ if($equal_prize_deep > 0){ $deep = $count; for($i=0;$i<$diff;$i++){ $deep++; $model[$from_type][$field][] = [ 'deep' => $deep, 'prize' => 0, ]; } } }else{ $model[$from_type][$field] = array_slice($model[$from_type][$field],0,$equal_prize_deep); } } } } $data['detail'] = $model; } $data['weights'] = AgentLevel::getLevelWeights($this->mall_id); return $this->success('操作成功', $data); } if ($request->isPost) { $params = Yii::$app->request->post()['form']; $res = Yii::$app->services->validate->validate($params, [ [['level', 'name'], 'required'], [['id', 'is_auto_upgrade', 'score', 'commission', 'checked_condition_values', 'checked_condition_keys', 'condition_type', 'upgrade_type_goods', 'goods_list', 'upgrade_type_condition', 'goods_ids', 'goods_type', 'buy_goods_type','explain','is_open_equal_settle_type','equal_settle_type','status','digital', 'additional_score'], 'safe'], [['store_goods_ids', 'store_goods_type', 'buy_store_goods_type','store_goods_list','upgrade_type_store_goods', 'is_custom_condition_num'],'safe'] ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); if(!empty($params['id'])){ $distribution_level = AgentLevel::findOne(['id'=>$params['id'],'mall_id'=>$this->mall_id,'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]); if($distribution_level&&$distribution_level->level!=$params['level']){ $res = Agent::findOne(['mall_id'=>$this->mall_id,'level'=>$distribution_level->level,'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]); if($res) return $this->error('该等级关联了经销商,等级不能修改'); } } $params['mall_id'] = $this->mall_id; $res = AgentLevel::setData($params); if ($res === false) throw new Exception(AgentLevel::getStaticCodeError()['error']); $event = new AgentLevelEvent($this->mall_id); $data = [ 'mall_id'=>$this->mall_id, 'level'=>$params['level'], 'level_name'=>$params['name'], 'status'=>$res['status'], 'id'=>$res['id'], 'type'=>!empty($params['id'])?'edit':'add', ]; \Yii::$app->services->events->dispatch($event,$data , $event->listeners); return $this->success('操作成功'); } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } $agentUpgradeCondition = \Yii::$app->services->setting->addons->get($this->mall_id, AgentEnum::ADDONS_NAME, 'upgrade_condition'); $list = []; if (!empty($agentUpgradeCondition['agent_level_upgrade_condition'])) { $ids = json_decode($agentUpgradeCondition['agent_level_upgrade_condition'], true); if(!empty($ids)) { $list = UpgradeCondition::getData($ids); } } $upgrade_condition_data = UpgradeCondition::getUpgradeConditionData($this, $this->mall_id, $list); // 是否显示额外积分设置 $is_show_additional_score = StatusEnum::DISABLED; if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_POINT_UPPER_LIMIT)) { $is_show_additional_score = (new SettingService())->isEnable($this->mall_id); } $upgrade_condition_data['is_show_additional_score'] = $is_show_additional_score; $upgrade_condition_data['is_show_store_upgrade'] = 0; if(MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_STORE)){ $upgrade_condition_data['is_show_store_upgrade'] = 1; } return $this->render('edit', $upgrade_condition_data); } /** * @desc:权重 * @Author: hua * @Date: 2021/10/23 * @Time: 15:56 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionSetting() { if (\Yii::$app->request->isAjax) { $weights = AgentLevel::getLevelWeights($this->mall_id); $enable_level_list = []; foreach ($weights as $k) { if ($k['disabled'] == true) { unset($k['disabled']); array_push($enable_level_list, $k); } } return $this->success('操作成功', ['weights' => $weights, 'enable_level_list' => $enable_level_list]); } return $this->error(); } }