| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- <?php
- namespace console\controllers;
- use addons\Agent\common\models\Agent;
- use common\enums\MemberLabelEnum;
- use common\enums\StatusEnum;
- use common\logic\memberLabel\MemberLabelLogic;
- use common\models\mall\Mall;
- use common\models\statistics\UserStatisticsTotal;
- use common\models\user\MemberLabel;
- use common\models\user\User;
- use common\models\user\UserExtra;
- use common\models\user\UserMemberLabel;
- use common\models\user\UserTeamStatistics;
- use common\models\user\UserWallet;
- use yii\console\Controller;
- class UserMemberLabelController extends Controller
- {
- public function actionMLabel()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $memberLabelList = MemberLabel::lists(['where' => [['status' => 1],['mall_id'=>$mall['id']]]]);
- $memberLabelArr = [];
- foreach ($memberLabelList as &$val) {
- $val['condition'] = json_decode($val['condition'], true);
- if (!empty($val['condition']['num'])) {
- }
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- $i = 1;
- $page_size = 1000;
- $keyMap = MemberLabelEnum::getKeyMap();
- while ($user_list = User::find()->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level,created_at')
- ->orderBy('id asc')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- MemberLabelLogic::cateId2Or3($mall['id'], $user_list, $memberLabelArr[MemberLabelEnum::USER_LEVEL], MemberLabelEnum::USER_LEVEL);
- $userArr = array_column($user_list, 'created_at', 'id');
- $userIds = array_column($user_list, 'id');
- $userMallArr = array_column($user_list, 'mall_id', 'id');
- $userStatisticsList = UserStatisticsTotal::lists(['where' => [['user_id' => $userIds]], 'select' => 'mall_id,user_id,pay_money,pay_num,refund_order_num,share_nums,visit_nums']);
- MemberLabelLogic::cateIdCommon($mall['id'], $userStatisticsList, $userArr, $memberLabelArr[MemberLabelEnum::VALUE_LABEL], $keyMap[MemberLabelEnum::VALUE_LABEL], MemberLabelEnum::VALUE_LABEL);
- MemberLabelLogic::cateIdCommon($mall['id'], $userStatisticsList, $userArr, $memberLabelArr[MemberLabelEnum::REPURCHASE], $keyMap[MemberLabelEnum::REPURCHASE], MemberLabelEnum::REPURCHASE);
- MemberLabelLogic::cateIdCommon($mall['id'], $userStatisticsList, $userArr, $memberLabelArr[MemberLabelEnum::ACTIVE], $keyMap[MemberLabelEnum::ACTIVE], MemberLabelEnum::ACTIVE);
- MemberLabelLogic::cateIdCommon($mall['id'], $userStatisticsList, $userArr, $memberLabelArr[MemberLabelEnum::SHARE] ?? [], $keyMap[MemberLabelEnum::SHARE], MemberLabelEnum::SHARE);
- MemberLabelLogic::cateIdCommon($mall['id'], $userStatisticsList, $userArr, $memberLabelArr[MemberLabelEnum::REFUND], $keyMap[MemberLabelEnum::REFUND], MemberLabelEnum::REFUND);
- $userWallet = UserWallet::lists(['where' => [['user_id' => $userIds]], 'select' => 'mall_id,user_id,total_commission']);
- MemberLabelLogic::cateIdCommon($mall['id'], $userWallet, $userArr, $memberLabelArr[MemberLabelEnum::INCOME], $keyMap[MemberLabelEnum::INCOME], MemberLabelEnum::INCOME);
- $userExtra = UserExtra::lists(['where' => [['user_id' => $userIds]], 'select' => 'user_id,birthday']);
- MemberLabelLogic::cateId11($mall['id'], $userExtra, $memberLabelArr[MemberLabelEnum::USER_AGE], $userMallArr, $userArr, MemberLabelEnum::USER_AGE);
- $userTeamStatistics = UserTeamStatistics::lists(['where' => [['user_id' => $userIds]], 'select' => 'mall_id,user_id,user_direct_total,user_team_total']);
- MemberLabelLogic::cateIdCommon($mall['id'], $userTeamStatistics, $userArr, $memberLabelArr[MemberLabelEnum::POPULARIZE], $keyMap[MemberLabelEnum::POPULARIZE], MemberLabelEnum::POPULARIZE);
- MemberLabelLogic::cateIdCommon($mall['id'], $userTeamStatistics, $userArr, $memberLabelArr[MemberLabelEnum::LEAD], $keyMap[MemberLabelEnum::LEAD], MemberLabelEnum::LEAD);
- $i++;
- }
- $i = 1;
- $page_size = 1000;
- while ($user_list = Agent::find()->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- MemberLabelLogic::cateId2Or3($mall['id'], $user_list, $memberLabelArr[MemberLabelEnum::AGENT_LEVEL], MemberLabelEnum::USER_LEVEL);
- $i++;
- }
- }
- }
- public function actionValueLabel()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $memberLabelList = MemberLabel::lists(['where' => [['status' => 1],['mall_id'=>$mall['id']]]]);
- $memberLabelArr = [];
- foreach ($memberLabelList as &$val) {
- $val['condition'] = json_decode($val['condition'], true);
- if (!empty($val['condition']['num'])) {
- }
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- $i = 1;
- $page_size = 1000;
- $keyMap = MemberLabelEnum::getKeyMap();
- while ($user_list = User::find()->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level,created_at')
- ->orderBy('id asc')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- $userArr = array_column($user_list, 'created_at', 'id');
- $userIds = array_column($user_list, 'id');
- $userStatisticsList = UserStatisticsTotal::lists(['where' => [['user_id' => $userIds]], 'select' => 'mall_id,user_id,pay_money,pay_num,refund_order_num,share_nums,visit_nums']);
- MemberLabelLogic::cateIdCommon($mall['id'], $userStatisticsList, $userArr, $memberLabelArr[MemberLabelEnum::VALUE_LABEL], $keyMap[MemberLabelEnum::VALUE_LABEL], MemberLabelEnum::VALUE_LABEL);
- $i++;
- }
- }
- }
- /**
- * 维护会员等级标签对应的用户数量,当会员登记标签用户数量对不上时可以通过此方法重新计算
- * @Author:lun
- * @Date:2024-05-25 16:30
- * @Copyright:copyright(c)2024 广东七件事集团
- * @return void
- */
- public function actionUserLevel()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $memberLabelList = MemberLabel::lists(['where' => [['status' => 1],['mall_id'=>$mall['id']]]]);
- $memberLabelArr = [];
- foreach ($memberLabelList as &$val) {
- $val['condition'] = json_decode($val['condition'], true);
- if (!empty($val['condition']['num'])) {
- }
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- $i = 1;
- $page_size = 1000;
- while ($user_list = User::find()->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level,created_at')
- ->orderBy('id asc')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- MemberLabelLogic::cateId2Or3($mall['id'], $user_list, $memberLabelArr[MemberLabelEnum::USER_LEVEL], MemberLabelEnum::USER_LEVEL);
- $i++;
- }
- }
- }
- public function actionAgentLevel()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $memberLabelList = MemberLabel::lists(['where' => [['status' => 1],['mall_id'=>$mall['id']]]]);
- $memberLabelArr = [];
- foreach ($memberLabelList as &$val) {
- $val['condition'] = json_decode($val['condition'], true);
- if (!empty($val['condition']['num'])) {
- }
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- $i = 1;
- $page_size = 1000;
- while ($user_list = Agent::find()->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- MemberLabelLogic::cateId2Or3($mall['id'], $user_list, $memberLabelArr[MemberLabelEnum::AGENT_LEVEL], MemberLabelEnum::AGENT_LEVEL);
- $i++;
- }
- }
- }
- public function actionUserAge()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $i = 1;
- $page_size = 1000;
- $memberLabelArr = MemberLabelLogic::getMemberLabelArr($mall['id'], MemberLabelEnum::USER_AGE);
- while ($userExtra = UserExtra::find()
- ->where(['<>', 'birthday', ''])
- ->select('user_id,birthday')
- ->orderBy('id asc')
- ->asArray()
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- $userIds = array_column($userExtra, 'user_id');
- $user_list = User::lists(['where' => [['id' => $userIds]], 'select' => 'id,mall_id,created_at']);
- $userMallArr = array_column($user_list, 'mall_id', 'id');
- $userArr = array_column($user_list, 'created_at', 'id');
- if(!isset($memberLabelArr[MemberLabelEnum::AGENT_LEVEL])) continue;
- MemberLabelLogic::cateId11($mall['id'], $userExtra, $memberLabelArr[MemberLabelEnum::USER_AGE], $userMallArr, $userArr, MemberLabelEnum::USER_AGE);
- $i++;
- }
- }
- }
- public function actionLead()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $memberLabelList = MemberLabel::lists(['where' => [['status' => 1],['mall_id'=>$mall['id']]]]);
- $memberLabelArr = [];
- foreach ($memberLabelList as &$val) {
- $val['condition'] = json_decode($val['condition'], true);
- if (!empty($val['condition']['num'])) {
- }
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- $i = 1;
- $page_size = 1000;
- $keyMap = MemberLabelEnum::getKeyMap();
- while ($user_list = User::find()
- ->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level,created_at')
- ->orderBy('id asc')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- $userArr = array_column($user_list, 'created_at', 'id');
- $userIds = array_column($user_list, 'id');
- $userTeamStatistics = UserTeamStatistics::lists(['where' => [['user_id' => $userIds]], 'select' => 'mall_id,user_id,user_direct_total,user_team_total']);
- MemberLabelLogic::cateIdCommon($mall['id'], $userTeamStatistics, $userArr, $memberLabelArr[MemberLabelEnum::LEAD], $keyMap[MemberLabelEnum::LEAD], MemberLabelEnum::LEAD);
- $i++;
- }
- }
- }
- public function actionUserDir()
- {
- $mallList = Mall::getEnableMallList();
- foreach ($mallList as $mall) {
- $memberLabelList = MemberLabel::lists(['where' => [['status' => 1],['mall_id'=>$mall['id']]]]);
- $memberLabelArr = [];
- foreach ($memberLabelList as &$val) {
- $val['condition'] = json_decode($val['condition'], true);
- if (!empty($val['condition']['num'])) {
- }
- $memberLabelArr[$val['cate_id']][] = $val;
- }
- $i = 1;
- $page_size = 1000;
- $keyMap = MemberLabelEnum::getKeyMap();
- while ($user_list = User::find()->where(['status' => StatusEnum::ENABLED])
- ->andWhere(['mall_id'=>$mall['id']])
- ->select('id,mall_id,level,created_at')
- ->orderBy('id asc')
- ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
- $userArr = array_column($user_list, 'created_at', 'id');
- $userIds = array_column($user_list, 'id');
- $userTeamStatistics = UserTeamStatistics::lists(['where' => [['user_id' => $userIds]], 'select' => 'mall_id,user_id,user_direct_total,user_team_total']);
- MemberLabelLogic::cateIdCommon($mall['id'], $userTeamStatistics, $userArr, $memberLabelArr[MemberLabelEnum::POPULARIZE], $keyMap[MemberLabelEnum::POPULARIZE], MemberLabelEnum::POPULARIZE);
- $i++;
- }
- }
- }
- public function actionTidy()
- {
- MemberLabelLogic::changeUserNum(5, 2);
- $list = MemberLabel::find()->where(['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]])->all();
- foreach ($list as $item) {
- if ($item['cate_id'] == 12) continue;
- $count = UserMemberLabel::find()->where(
- [
- 'mall_id' => $item['mall_id'],
- 'cate_id' . $item['cate_id'] => $item['id'],
- 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]
- ]
- )->count();
- $item->user_num = $count ?? 0;
- $res = $item->save();
- var_dump($res);
- }
- }
- }
|