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('添加导出任务成功,任务完成后请在下载中心进行下载!'); } } }