| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583 |
- <?php
- namespace backend\modules\mall\controllers;
- use addons\Agent\common\models\AgentLevel;
- use backend\controllers\MallController;
- use common\enums\MemberLabelEnum;
- use common\enums\StatusEnum;
- use common\models\common\MallSetting;
- use common\models\mall\MallAddons;
- use common\models\user\MemberLabel;
- use common\models\user\UserLevel;
- use common\models\user\UserMemberLabel;
- use PHPUnit\Util\Exception;
- use Yii;
- class MemberLabelController extends MallController
- {
- public function actionValueLabel()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::VALUE_LABEL;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionUserLevel()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::USER_LEVEL;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionAgentLevel()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::AGENT_LEVEL;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionRepurchase()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::REPURCHASE;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionPoppularize()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::POPULARIZE;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionLead()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::LEAD;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionActive()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::ACTIVE;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionIncome()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::INCOME;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionShare()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::SHARE;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionRefund()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::REFUND;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function actionUserAge()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $param = Yii::$app->request->post();
- $param['cate_id'] = MemberLabelEnum::USER_AGE;
- $result = $this->index($param);
- return $this->success('操作成功', $result);
- }
- }
- return $this->render('index');
- }
- public function index($param)
- {
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'cate_id', $param['cate_id'] ?? 1];
- $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
- if (isset($param['name'])) $where[] = ['like', 'name', $param['name']];
- if (!empty($param['date_start'])) {
- $where[] = ['>=', 'created_at', strtotime($param['date_start'])];
- }
- if (!empty($param['date_end'])) {
- $where[] = ['<=', 'created_at', strtotime($param['date_end'])];
- }
- $params = array('where' => $where, 'order' => 'id asc', 'limit' => $param['limit'] ?? 50);
- $page_data = MemberLabel::listPage($params, false);
- $mapContent = MemberLabelEnum::getMapContent();
- if ($page_data['list']) {
- switch ($param['cate_id']) {
- case MemberLabelEnum::USER_LEVEL:
- $level_list = UserLevel::lists([
- 'where' => [
- ['mall_id' => $this->mall_id],
- ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]
- ],
- 'select' => 'name,level',
- ]);
- $level_arr = array_column($level_list, 'name', 'level');
- $level_arr[0] = MallSetting::getDefaultLevelName($this->mall_id);
- break;
- case MemberLabelEnum::AGENT_LEVEL:
- if (MallAddons::isInstall($this->mall_id, 'Agent')) {
- $level_list = AgentLevel::lists([
- 'where' => [
- ['mall_id' => $this->mall_id],
- ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]
- ],
- 'select' => 'name,level',
- ]);
- $level_arr = array_column($level_list, 'name', 'level');
- }
- break;
- }
- foreach ($page_data['list'] as &$item) {
- $content = $mapContent[$item['cate_id']];
- $item['condition'] = json_decode($item['condition'], true);
- if (empty($item['condition']['num'])) $item['condition']['num'] = 0;
- if (in_array($param['cate_id'], [MemberLabelEnum::USER_LEVEL, MemberLabelEnum::AGENT_LEVEL])) {
- $temp_num = $level_arr[$item['condition']['num']] ?? '';
- $content = str_replace('{data}', $temp_num, $content);
- } else {
- $content = str_replace('{data}', $item['condition']['num'], $content);
- }
- $item['content'] = $content;
- }
- }
- $cateNameMap = MemberLabelEnum::getMap();
- $page_data['cate_name'] = $cateNameMap[$param['cate_id']];
- $page_data['cate_id'] = $param['cate_id'];
- return $page_data;
- }
- public function Edit()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isGet) {
- $id = $request->get('id');
- $cate_id = $request->get('cate_id');
- $detail = [];
- if (!empty($id)) {
- $detail = MemberLabel::getOne([['id' => $id], ['mall_id' => $this->mall_id]], true);
- if (!empty($detail)) {
- $detail['condition'] = json_decode($detail['condition'], true);
- }
- }
- $contentMap = MemberLabelEnum::getMapContent();
- $content = $contentMap[$cate_id] ?? "";
- $contentArr = explode('{data}', $content);
- $content = $contentArr[0];
- $unit = $contentArr[1];
- $routeMap = MemberLabelEnum::getRouteMap();
- $cateNameMap = MemberLabelEnum::getMap();
- $level_arr = $levelMap = [];
- $levelTable = '';
- switch ($cate_id) {
- case MemberLabelEnum::USER_LEVEL:
- $level_arr = UserLevel::lists([
- 'where' => [
- ['mall_id' => $this->mall_id],
- ['status' => StatusEnum::ENABLED]
- ],
- 'select' => 'id,name,level',
- 'order' => 'level asc'
- ]);
- $levelMap = array_column($level_arr, 'id', 'level');
- $levelTable = UserLevel::tableName();
- break;
- case MemberLabelEnum::AGENT_LEVEL:
- if (MallAddons::isInstall($this->mall_id, 'Agent')) {
- $level_arr = AgentLevel::lists([
- 'where' => [
- ['mall_id' => $this->mall_id],
- ['status' => StatusEnum::ENABLED]
- ],
- 'select' => 'id,name,level',
- 'order' => 'level asc'
- ]);
- $levelMap = array_column($level_arr, 'id', 'level');
- $levelTable = AgentLevel::tableName();
- }
- break;
- }
- return $this->success('操作成功', [
- 'detail' => $detail,
- 'content' => $content,
- 'unit' => $unit,
- 'route' => $routeMap[$cate_id],
- 'cate_name' => $cateNameMap[$cate_id],
- 'level_arr' => $level_arr,
- 'levelMap' => $levelMap,
- 'levelTable' => $levelTable,
- ]);
- }
- //保存数据
- if ($request->isPost) {
- $params = Yii::$app->request->post('form');
- $res = Yii::$app->services->validate->validate($params, [
- [['cate_id'], 'integer'],
- [['name', 'condition', 'color', 'status'], 'required'],
- [['id', 'source_table', 'source_table_id'], 'safe'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- try {
- $params['mall_id'] = $this->mall_id;
- $params['condition'] = json_encode($params['condition']);
- $model = MemberLabel::setData($params);
- if ($model == false) throw new \Exception(MemberLabel::getStaticError());
- return $this->success('操作成功');
- } catch (\Exception $e) {
- return $this->error($e->getMessage());
- }
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- return $this->render($this->action->id);
- }
- public function SwitchStatus()
- {
- 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 = MemberLabel::setData($params);
- if ($res === false) return $this->error(AgentLevel::getStaticError());
- return $this->success('操作成功');
- }
- }
- return $this->error();
- }
- public function Del()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isGet) {
- try {
- $params = Yii::$app->request->get();
- $res = Yii::$app->services->validate->validate($params, [
- [['id', 'cate_id'], 'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['status'] = StatusEnum::DELETE;
- $params['mall_id'] = $this->mall_id;
- $res = UserMemberLabel::findOne(['cate_id' . $params['cate_id'] => $params['id'], 'status' => StatusEnum::ENABLED]);
- if (!empty($res)) throw new Exception('该标签关联了用户');
- MemberLabel::updateAll(['status' => StatusEnum::DELETE], ['id' => $params['id'], 'cate_id' => $params['cate_id']]);
- $routeMap = MemberLabelEnum::getRouteMap();
- return $this->success('操作成功', ['route' => $routeMap[$params['cate_id']]]);
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- }
- }
- }
- /**
- * 价值标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionValueLabelEdit()
- {
- $this->Edit();
- }
- public function actionValueLabelSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionValueLabelDel()
- {
- $this->Del();
- }
- /**
- * 会员等级标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionUserLevelEdit()
- {
- $this->Edit();
- }
- public function actionUserLevelSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionUserLevelDel()
- {
- $this->Del();
- }
- /**
- * 团队等级标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionAgentLevelEdit()
- {
- $this->Edit();
- }
- public function actionAgentLevelSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionAgentLevelDel()
- {
- $this->Del();
- }
- /**
- * 复购标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionRepurchaseEdit()
- {
- $this->Edit();
- }
- public function actionRepurchaseSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionRepurchaseDel()
- {
- $this->Del();
- }
- /**
- * 活跃标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionActiveEdit()
- {
- $this->Edit();
- }
- public function actionActiveSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionActiveDel()
- {
- $this->Del();
- }
- /**
- * 收入标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionIncomeEdit()
- {
- $this->Edit();
- }
- public function actionIncomeSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionIncomeDel()
- {
- $this->Del();
- }
- /**
- * 分享标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionShareEdit()
- {
- $this->Edit();
- }
- public function actionShareSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionShareDel()
- {
- $this->Del();
- }
- /**
- * 退款标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionRefundEdit()
- {
- $this->Edit();
- }
- public function actionRefundSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionRefundDel()
- {
- $this->Del();
- }
- /**
- * 会员年龄标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionUserAgeEdit()
- {
- $this->Edit();
- }
- public function actionUserAgeSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionUserAgeDel()
- {
- $this->Del();
- }
- /**
- * 推广标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionPoppularizeEdit()
- {
- $this->Edit();
- }
- public function actionPoppularizeSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionPoppularizeDel()
- {
- $this->Del();
- }
- /**
- * 领导标签增删改
- * @Author: lun
- * @DateTime: 2023/5/29 0029 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionLeadEdit()
- {
- $this->Edit();
- }
- public function actionLeadSwitchStatus()
- {
- $this->SwitchStatus();
- }
- public function actionLeadDel()
- {
- $this->Del();
- }
- }
|