request->isGet) { return $this->error('请求方式错误'); } $params = []; $params['where'] = [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]]; $params['select'] = 'id, level, name'; $params['order'] = 'level asc'; $levelList = DistributionLevel::lists($params); $configs = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_DISTRIBUTION, 'basic'); array_unshift($levelList, [ 'id' => 0, 'level' => 0, 'name' => $configs['default_level_name']??'默认等级' ]); return $this->success('操作成功', ['list' => $levelList]); } /** * @desc:首页 * @Author: hua * @Date: 2021/10/23 * @Time: 16:25 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionIndex() { $request = Yii::$app->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(['mall_id'=>$mall_id,'commission_type' => 'commission', 'from_type' => 'Distribution','status'=>StatusEnum::ENABLED]); }]; $params['order'] = 'level asc'; $page_data = DistributionLevel::listPage($params, false); $setting = \Yii::$app->services->setting->addons->get($this->mall_id, DistributionEnum::ADDONS_NAME, 'basic'); if(!empty($page_data['list'])){ foreach ($page_data['list'] as &$item){ if(empty($item['commissionLevelSetting'])){ $item['commissionLevelSetting'] = [ 'commission_type'=> "commission", 'first_prize'=> 0, 'from_type'=> "Distribution", 'is_percent'=> 0, 'level'=> $item['level'], 'mall_id'=> 5, 'second_prize'=> 0, 'third_prize'=> 0, ]; } } } $page_data['level'] = $setting['level'] ?? '2'; return $this->success('操作成功', $page_data); } return $this->render($this->action->id); } /** * @desc:编辑等级 * @Author: hua * @Date: 2021/10/23 * @Time: 16:26 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionEdit() { try { //购买门店商品升级-指定商品数量限制 $buy_store_goods_limit = 100; $request = Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { $id = Yii::$app->request->get('id', ''); $data = []; $mall_id = $this->mall_id; if (!empty($id)) { $model = DistributionLevel::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) ?? []; $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) ?? []; unset($model['updated_at'], $model['created_at']); if(!empty($model['goods_list'])){ $goods_ids = array_column($model['goods_list'],'id'); $goods_list = Goods::lists(['where'=>[['id'=>$goods_ids]],'select'=>'id,cover_pic,goods_name,price,stock','index'=>'id']); foreach ($model['goods_list'] as&$item){ if(isset($goods_list[$item['id']])){ $item['cover_pic'] = $goods_list[$item['id']]['cover_pic']; $item['name'] = $goods_list[$item['id']]['goods_name']; } } } $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']; } } } if (!empty($model['commissionLevelSettingList'])) { foreach ($model['commissionLevelSettingList'] as $val) { $model[$val['commission_type']] = $val; } } else { $model['score'] = [ 'is_percent' => 0, 'first_prize' => 0, 'second_prize' => 0, 'third_prize' => 0, ]; $model['commission'] = [ 'is_percent' => 0, 'first_prize' => 0, 'second_prize' => 0, 'third_prize' => 0, ]; $model['drive_cy'] = [ 'is_percent' => 0, 'first_prize' => 0, 'second_prize' => 0, 'third_prize' => 0, ]; $model['digital'] = [ 'is_percent' => 0, 'first_prize' => 0, 'second_prize' => 0, 'third_prize' => 0, ]; } $data['detail'] = $model; } $data['weights'] = DistributionLevel::getLevelWeights($this->mall_id); $configs = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_DISTRIBUTION, 'basic'); $data['level']=$configs['level']??0; $data['is_huiju_beauty'] = DistributionEnum::getHuiJuBeauty($this->mall_id); $data['buy_store_goods_limit'] = $buy_store_goods_limit; return $this->success('操作成功', $data); } if ($request->isPost) { $params = Yii::$app->request->post()['form']; $res = Yii::$app->services->validate->validate($params, [ [['level', 'is_auto_upgrade', 'upgrade_type_condition', 'condition_type', 'upgrade_type_goods', 'buy_goods_type', 'goods_type', 'status'], 'integer'], [['name'], 'string', 'max' => 45], [['explain'], 'string', 'max' => 5000], [['id', 'checked_condition_values', 'checked_condition_keys', 'score', 'commission', 'goods_ids', 'goods_list', 'drive_cy','digital'], 'safe'], [['store_goods_ids', 'store_goods_type', 'store_buy_goods_type','store_goods_list','store_upgrade_type_goods', 'is_custom_condition_num'],'safe'] ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; if(!empty($params['id'])){ $distribution_level = DistributionLevel::findOne(['id'=>$params['id'],'mall_id'=>$this->mall_id,'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]); if($distribution_level&&$distribution_level->level!=$params['level']){ $res = Distribution::findOne(['mall_id'=>$this->mall_id,'level'=>$distribution_level->level,'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]); if($res) return $this->error('该等级关联了分销商,等级不能修改'); } } $res = DistributionLevel::setData($params); if ($res === false) throw new \Exception(DistributionLevel::getStaticCodeError()['error']); return $this->success('操作成功'); } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } $agentUpgradeCondition = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_DISTRIBUTION, 'upgrade_condition'); $list = []; if (!empty($agentUpgradeCondition['distribution_level_upgrade_condition'])) { $ids = json_decode($agentUpgradeCondition['distribution_level_upgrade_condition'], true); if(!empty($ids)) { $list = UpgradeCondition::getData($ids); } } $upgrade_condition_data = UpgradeCondition::getUpgradeConditionData($this, $this->mall_id, $list,'',1,[ 'buy_store_goods_limit' => $buy_store_goods_limit ]); 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 = DistributionLevel::getLevelWeights($this->mall_id); // dd($weights); $enable_level_list = []; foreach ($weights as $weight) { foreach ($weight 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(); } /** * @desc: * @Author: hua * @Date: 2021/10/29 * @Time: 10:27 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionDefaultLevelWeight() { if (\Yii::$app->request->isAjax) { $newList = []; for ($i = 1; $i <= 10; $i++) { $newList[] = [ 'name' => '等级' . $i, 'level' => $i, ]; } return $this->success('操作成功', ['list' => $newList]); } else { return $this->success('操作成功', ['list' => []]); } } /** * @desc:修改状态 * @Author: hua * @Date: 2021/10/23 * @Time: 16:46 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ 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 = DistributionLevel::setData($params); if ($res === false) return $this->error(DistributionLevel::getStaticError()); return $this->success('操作成功'); } } return $this->error(); } /** * @desc:删除等级 * @Author: hua * @Date: 2021/10/23 * @Time: 16:46 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ 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 = DistributionLevel::del($params); if ($res === false) return $this->error(DistributionLevel::getStaticError()); return $this->success('操作成功'); } } return $this->error(); } /** * @desc:设置升级条件 * @Author: hua * @Date: 2021/10/23 * @Time: 16:27 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionConditionSetting() { if (\Yii::$app->request->isAjax) { try { $request = \Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { $distribution_condition_ids = UpgradeCondition::$distribution_condition_ids; if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK)) { $distribution_condition_ids = array_merge($distribution_condition_ids, UpgradeCondition::$cloud_stock_install_condition_ids); } $upgrade_condition = UpgradeCondition::getData($distribution_condition_ids); $data['upgrade_condition'] = $upgrade_condition; $distribution_level_upgrade_condition = \Yii::$app->services->setting->addons->get($this->mall_id, DistributionEnum::ADDONS_NAME, 'upgrade_condition.distribution_level_upgrade_condition'); $data['checked_condition_keys'] = $distribution_level_upgrade_condition ? json_decode($distribution_level_upgrade_condition, true) : []; $level_down = \Yii::$app->services->setting->addons->get($this->mall_id, DistributionEnum::ADDONS_NAME, 'upgrade_condition.level_down'); $data['level_down'] = $level_down ?? 0; return $this->success('操作成功', $data); } elseif ($request->isPost) { $params = \Yii::$app->request->post(); $data['upgrade_condition'] = [ 'distribution_level_upgrade_condition' => $params['checked_condition_keys'] ?? [], 'level_down' => $params['level_down'] ]; \Yii::$app->services->setting->addons->set($this->mall_id, DistributionEnum::ADDONS_NAME, $data); UpgradeCondition::clear($params['checked_condition_keys'], 'addons\Distribution\common\models\DistributionLevel', $this->mall_id); return $this->success('操作成功'); } } } catch (\Exception $e) { return $this->error($e->getMessage().',line:'.$e->getLine(), []); } } else { return $this->render('condition-setting'); } } }