[['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); } } }