request->getMore([ ['keyword', ''], ['member_level', ''], ['page', 1], ['limit', 20], ]); $page = (int)$where['page']; $limit = (int)$where['limit']; $condition = []; if ($where['keyword'] !== '') { $condition['uid|nickname|phone'] = ['like', '%' . $where['keyword'] . '%']; } if ($where['member_level'] !== '') { $grade = (int)$where['member_level']; if ($grade === 0) { $condition['agent_level'] = 0; } else { $agentLevelId = $this->agentLevelServices->getLevelIdByGrade($grade); $condition['agent_level'] = $agentLevelId ?: -1; } } $count = $this->userDao->count($condition); $list = $this->userDao->selectList( $condition, 'uid,nickname,avatar,phone,agent_level,frozen_points,available_points,now_money,spread_uid,add_time', $page, $limit, 'uid', 'desc' ); $levelList = $this->agentLevelServices->dao->getList(['is_del' => 0, 'status' => 1]); $levelMap = array_column($levelList, null, 'id'); foreach ($list as &$item) { $agentLevelId = (int)($item['agent_level'] ?? 0); $levelInfo = $levelMap[$agentLevelId] ?? null; $item['member_level'] = $levelInfo ? (int)$levelInfo['grade'] : 0; $item['member_level_name'] = $levelInfo ? $levelInfo['name'] : '普通会员'; $item['direct_order_count'] = $this->levelServices->getDirectQueueOrderCount((int)$item['uid']); $item['umbrella_order_count'] = $this->levelServices->getUmbrellaQueueOrderCount((int)$item['uid']); $item['direct_spread_count'] = $this->levelServices->getDirectSpreadCount((int)$item['uid']); } unset($item); return $this->success(compact('list', 'count')); } /** * 手动调整会员等级 */ public function updateLevel(int $uid): mixed { $data = $this->request->getMore([ ['member_level', 0], ]); $grade = (int)$data['member_level']; if ($grade < 0 || $grade > 4) { return $this->fail('等级范围 0-4'); } $user = $this->userDao->get($uid); if (!$user) { return $this->fail('用户不存在'); } $this->levelServices->setUserLevel($uid, $grade); return $this->success('更新成功'); } /** * 获取会员等级配置(从 eb_agent_level 表读取) */ public function getConfig(): mixed { $levelList = $this->agentLevelServices->dao->getList(['is_del' => 0, 'status' => 1]); $config = []; foreach ($levelList as $level) { $config[] = [ 'id' => $level['id'], 'name' => $level['name'], 'grade' => $level['grade'], 'direct_reward_points' => $level['direct_reward_points'] ?? 0, 'umbrella_reward_points' => $level['umbrella_reward_points'] ?? 0, ]; } return $this->success($config); } /** * 保存会员等级配置(写入 eb_agent_level 表) */ public function saveConfig(): mixed { $levels = $this->request->post('levels', []); if (!is_array($levels)) { return $this->fail('参数格式错误'); } foreach ($levels as $item) { if (empty($item['id'])) continue; $updateData = []; if (isset($item['direct_reward_points'])) { $updateData['direct_reward_points'] = (int)$item['direct_reward_points']; } if (isset($item['umbrella_reward_points'])) { $updateData['umbrella_reward_points'] = (int)$item['umbrella_reward_points']; } if ($updateData) { $this->agentLevelServices->dao->update((int)$item['id'], $updateData); } } return $this->success('保存成功'); } }