| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- namespace backend\modules\mall\controllers;
- use backend\controllers\MallController;
- use common\enums\DownloadEnum;
- use common\enums\MemberLabelEnum;
- use common\enums\StatusEnum;
- use common\helpers\csv\CsvExportHelper;
- use common\models\user\MemberLabel;
- use common\models\user\User;
- use common\models\user\UserMemberLabel;
- use Yii;
- class UserMemberLabelController extends MallController
- {
- public function actionMemberLabelList()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isGet) {
- $memberLabelCategoryList = MemberLabelEnum::getMap();
- $cateIds = array_keys($memberLabelCategoryList);
- $memberLabelList = MemberLabel::lists([
- 'where' => [['cate_id' => $cateIds], ['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]],
- 'select' => 'id,cate_id,name,condition'
- ]);
- $list = [];
- $memberLabelArr = [];
- $mapContent = MemberLabelEnum::getMapContent();
- foreach ($memberLabelList as &$val) {
- $content = $mapContent[$val['cate_id']];
- $val['condition'] = json_decode($val['condition'], true);
- if (empty($val['condition']['num'])) $val['condition']['num'] = '';
- $content = str_replace('{data}', $val['condition']['num'], $content);
- $val['content'] = $content;
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- foreach ($memberLabelCategoryList as $id => $name) {
- $list[] = [
- 'id' => $id,
- 'key' => 'key' . $id,
- 'name' => $name,
- 'list' => $memberLabelArr[$id] ?? []
- ];
- }
- return $this->success('操作成功', $list);
- }
- }
- }
- public function actionIndex()
- {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isGet) {
- $params = Yii::$app->request->get();
- $query = UserMemberLabel::find()->where(['mall_id' => $this->mall_id])->andWhere(['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]);
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
- if (!empty($params['start'])) {
- $temp = ['>=', 'register_time', strtotime($params['start'])];
- $where[] = $temp;
- $query->andWhere($temp);
- }
- if (!empty($params['end'])) {
- $temp = ['<=', 'register_time', strtotime($params['end'])];
- $where[] = $temp;
- $query->andWhere($temp);
- }
- if (!empty($params['nickname'])) {
- $userList = User::lists([
- 'where' => [
- ['mall_id' => $this->mall_id],
- ['like', 'nickname', $params['nickname']],
- ['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]
- ],
- 'select' => 'id',
- ]);
- $userIds = array_column($userList, 'id');
- $temp = ['user_id' => $userIds];
- $where[] = $temp;
- $query->andWhere($temp);
- }
- if (!empty($params['user_id'])) {
- $temp = ['=', 'user_id', $params['user_id']];
- $where[] = $temp;
- $query->andWhere($temp);
- }
- if (!empty($params['memberLabelIds']) && !empty($params['cate_id'])) {
- $cate_id = str_replace('key', '', $params['cate_id']);
- $temp = ['cate_id' . $cate_id => $params['memberLabelIds']];
- $where[] = $temp;
- $query->andWhere($temp);
- }
- if (!empty($params['memberLabelIds'])) {
- $cateIdArr = [];
- foreach ($params['memberLabelIds'] as $val) {
- $temp_arr = explode('_', $val);
- $cateIdArr[$temp_arr[0]][] = $temp_arr[1];
- }
- foreach ($cateIdArr as $cate_id => $memberLabelIds) {
- $temp = ['cate_id' . $cate_id => $memberLabelIds];
- $where[] = $temp;
- $query->andWhere($temp);
- }
- }
- $order = 'user_id desc';
- $params['where'] = $where;
- $params['order'] = $order;
- $params['limit'] = !empty($params['limit']) ? $params['limit'] : 10;
- $page_data = UserMemberLabel::listPage($params, false, true);
- $total = $query->count();
- if (!empty($page_data['list'])) {
- $userIds = array_column($page_data['list'], 'user_id');
- $cate_map = MemberLabelEnum::getMap();
- $mapIds = array_keys($cate_map);
- $member_label_id_arr = [];
- foreach ($mapIds as $cate_id) {
- $member_label_ids = array_column($page_data['list'], 'cate_id' . $cate_id);
- $member_label_id_arr = array_merge($member_label_id_arr, $member_label_ids);
- }
- $member_label_id_arr = array_unique($member_label_id_arr);
- $member_label_list = MemberLabel::lists(['where' => [['id' => $member_label_id_arr]], 'index' => 'id']);
- $userArr = User::lists(['where' => [['id' => $userIds]], 'index' => 'id', 'select' => 'id,nickname,mobile,avatar_url']);
- $mapContent = MemberLabelEnum::getMapContent();
- foreach ($page_data['list'] as &$item) {
- $item['nickname'] = '';
- $item['mobile'] = '';
- $item['avatar_url'] = '';
- if (isset($userArr[$item['user_id']])) {
- $item['nickname'] = $userArr[$item['user_id']]['nickname'];
- $item['mobile'] = $userArr[$item['user_id']]['mobile'];
- $item['avatar_url'] = $userArr[$item['user_id']]['avatar_url'];
- }
- $userMemberLabelList = [];
- foreach ($mapIds as $cate_id) {
- $temp_cate_id = $item['cate_id' . $cate_id];
- if (isset($member_label_list[$temp_cate_id])) {
- $content = $mapContent[$cate_id];
- if (!is_array($member_label_list[$temp_cate_id]['condition'])) {
- $member_label_list[$temp_cate_id]['condition'] = json_decode($member_label_list[$temp_cate_id]['condition'], true);
- }
- if (empty($member_label_list[$temp_cate_id]['condition']['num'])) $member_label_list[$temp_cate_id]['condition']['num'] = '';
- $content = str_replace('{data}', $member_label_list[$temp_cate_id]['condition']['num'], $content);
- $member_label_list[$temp_cate_id]['content'] = $content;
- $userMemberLabelList[] = $member_label_list[$temp_cate_id];
- }
- }
- $item['userMemberLabelList'] = $userMemberLabelList;
- }
- }
- $page_data['total'] = "共 {$total} 条";
- return $this->success('操作成功', $page_data);
- }
- }
- return $this->render($this->action->id);
- }
- public function actionExport()
- {
- if (\Yii::$app->request->isPost) {
- $post = \Yii::$app->request->post();
- $type_arr = DownloadEnum::getTypeMap();
- $post['mall_id'] = $this->mall_id;
- $post['type'] = DownloadEnum::TYPE_MEMBER;
- $post['status'] = DownloadEnum::STATUS_DOWNING;
- $post['name'] = $type_arr[DownloadEnum::TYPE_MEMBER] . '列表' . date('YmdHis');
- $filename = '会员分析-' . date('YmdHis') . '_' . rand(10000, 99999);
- $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_MEMBER, UserMemberLabel::class, 'exportHandle', $post);
- if ($res === false) return $this->error('加入导出任务失败' . CsvExportHelper::getStaticError());
- return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
- }
- }
- }
|