make(UserServices::class); $userInfo = $userServices->getUserCacheInfo($uid); if (!$userInfo) { return; } $spreadUid = $userServices->getSpreadUid($uid, $userInfo); $twoSpreadUid = 0; if ($spreadUid > 0 && $oneUserInfo = $userServices->getUserCacheInfo($spreadUid)) { $twoSpreadUid = $userServices->getSpreadUid($spreadUid, $oneUserInfo, false); } $uids = array_unique([$uid, $spreadUid, $twoSpreadUid]); $this->agentLevelServices->checkUserLevelFinish($uid, $uids); } catch (\Throwable $e) { Log::error("[MemberLevel] checkUpgrade uid={$uid}: " . $e->getMessage()); } } /** * 获取用户当前会员等级 grade(0=普通, 1=创客, 2=云店, 3=服务商, 4=分公司) */ public function getUserGrade(int $uid): int { $agentLevel = (int)Db::name('user')->where('uid', $uid)->value('agent_level'); return $this->agentLevelServices->getGradeByLevelId($agentLevel); } /** * 获取用户当前等级名称 */ public function getUserLevelName(int $uid): string { $agentLevel = (int)Db::name('user')->where('uid', $uid)->value('agent_level'); if ($agentLevel <= 0) { return '普通会员'; } $maps = $this->agentLevelServices->loadHjfUserListLevelMaps(); $info = $this->agentLevelServices->pickHjfLevelRowForUserListDisplay($agentLevel, $maps); return $info['name'] ?? '普通会员'; } /** * 获取直推用户的报单订单数 */ public function getDirectQueueOrderCount(int $uid): int { return $this->agentLevelTaskServices->getDirectQueueOrderCount($uid); } /** * 获取直推人数 */ public function getDirectSpreadCount(int $uid): int { /** @var UserServices $userServices */ $userServices = app()->make(UserServices::class); return (int)$userServices->count(['spread_uid' => $uid]); } /** * 获取伞下总报单订单数(含业绩分离逻辑) */ public function getUmbrellaQueueOrderCount(int $uid): int { return $this->agentLevelTaskServices->getUmbrellaQueueOrderCount($uid); } /** * 手动设置会员等级(管理后台使用) * * @param int $uid 用户 ID * @param int $grade 目标等级 grade (0-4) */ public function setUserLevel(int $uid, int $grade): void { $agentLevelId = 0; if ($grade > 0) { $agentLevelId = $this->agentLevelServices->getLevelIdByGrade($grade); if ($agentLevelId <= 0) { throw new \think\exception\ValidateException("等级 grade={$grade} 在 eb_agent_level 中不存在"); } } /** @var UserServices $userServices */ $userServices = app()->make(UserServices::class); $userServices->update($uid, ['agent_level' => $agentLevelId]); Log::info("[MemberLevel] 手动设置 uid={$uid} agent_level={$agentLevelId} (grade={$grade})"); } }