alias($alias); $alias .= '.'; } // 昵称模糊查询 if (isset($where['nickname']) && $where['nickname'] !== '') { $model = $model->where("{$userAlias}nickname", 'like', "%{$where['nickname']}%"); } // 代理等级ID精确查询 if (isset($where['level_id']) && $where['level_id'] !== '') { $model = $model->where("{$alias}level_id", $where['level_id']); } // 过滤:状态正常 + 未删除 return $model->where("{$alias}status", 1)->where("{$alias}is_del", 0); } /** * 查询用户代理等级列表(带分页、关联信息) * @param array $where 分页及筛选条件(page、limit、nickname、level_id等) * @return array 格式:['data' => 列表数据, 'count' => 总数] */ public static function getUserAgentList($where) { // 关联查询:用户表 + 代理等级配置表 $query = self::setWhere($where, 'a') ->group('a.uid') ->order('a.grade desc') ->field('a.*, u.nickname, u.avatar') ->join('user u', 'a.uid = u.uid'); // 分页查询数据 $data = $query->page((int)$where['page'], (int)$where['limit'])->select(); $data = $data ? $data->toArray() : []; // 补充代理等级名称、图标 + 格式化有效期显示 foreach ($data as &$item) { $levelInfo = SystemUserAgentLevel::where('id', $item['level_id'])->find(); if ($levelInfo) { $item['level_name'] = $levelInfo['name']; $item['level_icon'] = $levelInfo['icon']; } $item['is_forever_text'] = $item['is_forever'] ? '永久代理' : '限时代理'; // $item['valid_time_text'] = $item['is_forever'] ? '永久' : (date('Y-m-d H:i:s', $item['valid_time']) ?: ''); } // 统计符合条件的总数 $count = $query->count(); return compact('data', 'count'); } /** * 清除用户代理等级(软删除 + 更新用户表标识) * @param int $uid 用户ID * @return bool|string 成功返回true,失败返回错误信息 */ public static function cleanUpAgentLevel($uid) { self::startTrans(); // 开启事务 try { // 1. 软删除用户代理等级记录 $delRes = self::where('uid', $uid)->update(['is_del' => 1]); // 【可选】若有“代理任务完成记录”,需同步删除(示例:假设表为 user_agent_task_finish) // $taskDelRes = UserAgentTaskFinish::where('uid', $uid)->delete(); $taskDelRes = true; // 暂无需删除任务,模拟成功 // 2. 所有操作成功时,更新用户表的代理等级为0 if ($delRes && $taskDelRes) { User::where('uid', $uid)->update(['agent_level' => 0]); self::commitTrans(); // 提交事务 return true; } else { self::rollbackTrans(); // 回滚事务 return self::setErrorInfo('清除代理等级失败'); } } catch (\Exception $e) { self::rollbackTrans(); // 异常时回滚 return self::setErrorInfo($e->getMessage()); } } /* * 清除会员等级 * @paran int $uid * @paran boolean * */ public static function cleanUpLevel($uid) { self::rollbackTrans(); $res = false !== self::where('uid', $uid)->update(['is_del' => 1]); // $res = $res && UserTaskFinish::where('uid', $uid)->delete(); if ($res) { User::where('uid', $uid)->update(['agent_level' => 0]); self::commitTrans(); return true; } else { self::rollbackTrans(); return self::setErrorInfo('清除失败'); } } }