request; if ($request->isAjax) { // 查询参数 $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]]; $where[] = ['=','mall_id',$this->mall['id']]; $params = array('where' => $where, 'with' => ['upgradeCondition' => function($query){ $query->select('user_level_id,is_auto_upgrade,upgrade_type_condition')->where(['status'=>[StatusEnum::ENABLED,StatusEnum::DISABLED]]); }],'order' => 'level asc', 'limit' => $request->get('limit', 12)); $page_data = UserLevel::listPage($params, false); return $this->success('操作成功', $page_data); } return $this->render($this->action->id); } /** * 设置升级条件 * @return mixed|void */ public function actionConditionSet() { try { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { $user_condition_ids = UpgradeCondition::$user_condition_ids; if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) { $user_condition_ids = array_merge($user_condition_ids,UpgradeCondition::$zao_double_copy_condition_ids); } if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK)) { $user_condition_ids = array_merge($user_condition_ids, UpgradeCondition::$cloud_stock_install_condition_ids); } if(!MallAddons::isInstall($this->mall_id,'Store')){ $index = array_search(54, $user_condition_ids); if(isset($index))unset($user_condition_ids[$index]); } $upgrade_condition = UpgradeCondition::getData($user_condition_ids); $data['upgrade_condition'] = $upgrade_condition; $user_level_upgrade_condition = \Yii::$app->services->setting->mall->get($this->mall_id, 'upgrade_condition.user_level_upgrade_condition'); $compute_type = \Yii::$app->services->setting->mall->get($this->mall_id, 'upgrade_condition.compute_type'); $level_down = \Yii::$app->services->setting->mall->get($this->mall_id, 'upgrade_condition.level_down'); $data['checked_condition_keys'] = !empty($user_level_upgrade_condition) ? json_decode($user_level_upgrade_condition, true) : []; //处理没有过滤掉的 id if(empty($data['checked_condition_keys'])==false){ $data['checked_condition_keys'] = array_values(array_intersect(array_column($data['upgrade_condition'],'id'),$data['checked_condition_keys'])); } $data['compute_type'] = $compute_type??1; $data['level_down'] = !empty($level_down) ? $level_down : 0; return $this->success('操作成功', $data); } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } try { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isPost) { $params = Yii::$app->request->post(); if (!empty($params['checked_condition_keys'])) { //去掉购物升级 if(!in_array(8,$params['checked_condition_keys'])){ UserLevelUpgradeCondition::updateAll(['upgrade_type_goods'=>0],['mall_id'=>$this->mall_id]); } if(!in_array(54,$params['checked_condition_keys'])){ UserLevelUpgradeCondition::updateAll(['store_upgrade_type_goods'=>0],['mall_id'=>$this->mall_id]); } $data['upgrade_condition'] = [ 'user_level_upgrade_condition' => json_encode($params['checked_condition_keys']), 'compute_type'=>$params['compute_type']??1, 'level_down' => $params['level_down'] ?? 0, ]; \Yii::$app->services->setting->mall->set($this->mall_id, $data); UpgradeCondition::clear($params['checked_condition_keys'], UserLevelUpgradeCondition::class, $this->mall_id); return $this->success('操作成功'); } } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } return $this->render($this->action->id); } /** * 编辑数据 * @return mixed|void */ public function actionEdit() { try { $request = Yii::$app->request; $user_level_upgrade_condition = \Yii::$app->services->setting->mall->get($this->mall_id, 'upgrade_condition.user_level_upgrade_condition'); $list = []; if(!empty($user_level_upgrade_condition)) $list = UpgradeCondition::getData(json_decode($user_level_upgrade_condition,true)); if ($request->isAjax) { if ($request->isGet) { $id = Yii::$app->request->get('id', ''); if(!empty($id)){ $user_level_model = UserLevel::findOne($id)->toArray(); $data = $user_level_model; $user_level_upgrade_condition_model = UserLevelUpgradeCondition::findOne(['mall_id' => $this->mall_id, 'user_level_id' => $id, 'status' => [StatusEnum::ENABLED]]); if (!empty($user_level_upgrade_condition_model)) { unset($user_level_upgrade_condition_model['id']); $user_level_upgrade_condition_model = $user_level_upgrade_condition_model->toArray(); $user_level_upgrade_condition_model['checked_condition_values'] = json_decode($user_level_upgrade_condition_model['checked_condition_values'],true) ?? []; $user_level_upgrade_condition_model['checked_condition_keys'] = json_decode($user_level_upgrade_condition_model['checked_condition_keys'],true) ?? []; $user_level_upgrade_condition_model['goods_ids'] = json_decode($user_level_upgrade_condition_model['goods_ids'],true) ?? []; $user_level_upgrade_condition_model['cate_ids'] = json_decode($user_level_upgrade_condition_model['cate_ids'],true) ?? []; $user_level_upgrade_condition_model['goods_list'] = json_decode($user_level_upgrade_condition_model['goods_list'],true) ?? []; if(empty($user_level_upgrade_condition_model['store_goods_ids'])){ $user_level_upgrade_condition_model['store_goods_ids'] = []; }else{ $user_level_upgrade_condition_model['store_goods_ids'] = json_decode($user_level_upgrade_condition_model['store_goods_ids'],true); } if(empty($user_level_upgrade_condition_model['store_goods_list'])){ $user_level_upgrade_condition_model['store_goods_list'] = []; }else{ $user_level_upgrade_condition_model['store_goods_list'] = json_decode($user_level_upgrade_condition_model['store_goods_list'],true); } if(!empty($user_level_upgrade_condition_model['goods_list'])){ $goods_ids = array_column($user_level_upgrade_condition_model['goods_list'],'id'); $goods_list = Goods::lists(['where'=>[['id'=>$goods_ids]],'select'=>'id,cover_pic,goods_name','index'=>'id']); foreach ($user_level_upgrade_condition_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']; } } } //处理key可能不存在 或者 数组为 null 的情况 $upgrade_condition_data = UpgradeCondition::getUpgradeConditionData($this, $this->mall_id, $list, 'user_level'); $key_arr = json_decode($upgrade_condition_data['key_arr'],true); foreach ($key_arr as $key=>$arr){ if(isset($user_level_upgrade_condition_model['checked_condition_values'][$key]) == false){ $user_level_upgrade_condition_model['checked_condition_values'][$key] = $arr; } } foreach ($user_level_upgrade_condition_model['checked_condition_values'] as $key=>&$value){ if($value['key'] == null){ $value = $key_arr[$key]; } } $data = array_merge($data, $user_level_upgrade_condition_model); } unset($data['updated_at'], $data['created_at']); $cond = []; $cond['where']=[['level_id'=>$id],['status'=>StatusEnum::ENABLED]]; $data['benefits'] = MemberBenefit::lists($cond); } $data['level_list'] = UserLevel::getLevelList($this->mall_id); $conditions = [['status' => StatusEnum::ENABLED, 'mall_id' => $this->mall_id, 'mch_id' => $this->admin->mch_id]]; $good_cate_list = GoodsCate::getCates($conditions, [], true, 'id,name,pic,parent_id'); $good_cate_list = GoodsCate::getTreeCate($good_cate_list); if(empty($data['cate_ids'])) $data['cate_ids'] = []; if(!isset($data['buy_cate_type'])) $data['buy_cate_type'] = 1; $data['good_cate_list'] = $good_cate_list; $data['user_level_list'] = UserLevel::lists([ 'where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]], 'select' => 'level, name' ]); $data['specified_level'] = !empty($data['specified_level']) ? json_decode($data['specified_level'], true) : []; return $this->success('操作成功', $data); } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } try { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['level', 'name'], 'required'], [['id', 'discount', 'pic_url','is_auto_upgrade', 'upgrade_type_condition', 'checked_condition_values', 'checked_condition_keys', 'condition_type', 'upgrade_type_goods', 'goods_type', 'goods_ids', 'goods_list','buy_goods_type', 'store_upgrade_type_goods', 'store_goods_type', 'store_goods_ids', 'store_goods_list','store_buy_goods_type', 'status','benefits','cate_ids','buy_cate_type','is_open_expired','expired_day','member_price_is_show', 'enable_goods_protocol', 'specified_level', 'is_specified_level', 'is_custom_condition_num'], 'safe'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); if($params['is_auto_upgrade'] == 1 && $params['upgrade_type_condition'] == 1 && in_array(118,$params['checked_condition_keys'])){ foreach ($params['checked_condition_values'] as $item){ if($item['key'] == 118){ if($item['value']['team_num']<0 || $item['value']['level_num']<0 || $item['value']['agent_level']<0){ return $this->error('【团队()条线,出现()个()等级】,请输入正确的参数再提交'); } } } } $params['mall_id'] = $this->mall_id; $goods_list_arr = $params['goods_list'] ?? []; if($goods_list_arr){ $params['goods_ids'] = array_column($params['goods_list'],'id'); } $params['specified_level'] = empty($params['specified_level']) ? json_encode([]) : json_encode($params['specified_level']); $res = UserLevel::setData($params); if ($res === false) throw new Exception(UserLevel::getStaticError()); $event = new UserLevelEvent($this->mall_id); $data = [ 'mall_id'=>$this->mall_id, 'level'=>$params['level'], 'level_name'=>$params['name'], 'status'=>$params['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(), []); } $upgrade_condition_data = UpgradeCondition::getUpgradeConditionData($this, $this->mall_id, $list, 'user_level'); return $this->render($this->action->id, $upgrade_condition_data); } /** * 删除 * @param null $keyword * @param int $is_recycle * @return mixed|void */ public function actionDel() { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { try { $params = Yii::$app->request->get(); $params['mall_id'] = $this->mall_id; $res = UserLevel::del($params, StatusEnum::DELETE); if ($res === false) throw new Exception(UserLevel::getStaticCodeError()['error']); return $this->success('操作成功'); } catch (\Exception $e) { return $this->error($e->getMessage(), []); } } } } /** * 获取等级键值对 */ public function actionGetUserLevel() { $level = UserLevel::getListIndexByLevelColumn($this->mall_id); return $this->success('操作成功', $level); } /** * 会员等级列表(查询会员等级的列表) * * @return mixed */ public function actionList() { $service = new LevelService(['mall_id' => $this->mall_id]); return $this->success('操作成功', $service->getLevelList()); } }