45 KiB
管理后台模块(AdminSrc)—— 功能与代码目录文档
本文档为「管理后台模块(AdminSrc)」的完整上下文说明,以仓库实际代码为准,供其他对话/开发者在不打开仓库的情况下理解该模块的定位、职责、接口、目录结构与跨模块交互。
一、平台背景与模块位置
本模块隶属于「捕鱼 + 棋牌游戏运营平台」后端,解决方案文件为 Template0524.sln。
平台技术栈
- 运行时/框架:.NET 8(
net8.0) - 数据库:MongoDB(主业务数据,通过自研
MongoRepository访问) - 缓存:Redis(
RedisHelper/RedisService) - 消息队列:RabbitMQ,经
DotNetCore.CAP(DotNetCore.CAP.RabbitMQ)封装;CAP 的投递日志存于 PostgreSQL - 实时推送:SignalR
- 网关:Ocelot
- 日志:NLog
- IoC:Autofac
- 网关 Ocelot 监听
http://localhost:8001,路由约定:
| 网关路由前缀 | 目标服务(Host) | 端口 |
|---|---|---|
/adminapi |
AdminHost(本模块) | 5241 |
/api、/loginhub |
UserHost | 5245 |
/customerapi、/customerHub |
CustomerHost | 5247 |
/chess、/chessgamehub |
ChessGameHost | 5242 |
/fishingroomhub |
FishRoomHost | 5244 |
/gamehub |
FishGameHost | 5248 |
本模块在平台中的位置
- 本模块进程入口为
AdminSrc/AdminHost,是管理后台(运营后台)的唯一 Web 服务。 - 对外统一由网关以
/adminapi前缀转发(各 Controller 自身的路由前缀也统一写成adminapi/[controller])。 - 本模块是一个「后台管理系统」,本身不承载玩家端实时游戏逻辑(游戏房间的实时状态由 Redis 中的房间数据体现,本模块通过 Redis 读写与 CAP 发消息来观测/干预)。
二、模块简介
2.1 定位
AdminSrc 是捕鱼/棋牌平台的运营管理后台:面向管理员(后台账号)提供用户管理、客服管理、游戏配置、房间管理、靓号、公告、任务、活动/抽奖、日志审计等运营能力。
2.2 职责
- 后台账号与权限体系:后台系统用户、角色、菜单(导航)、字典的增删改查,登录签发 JWT(
SystemService)。 - 玩家用户运营:玩家查询/详情、封禁与解封、资产调整、发邮件、黑白名单、玩家难度因子(PlayerFactor)配置、道具增减、等级同步等(
AdminUserService)。 - 客服与工单:客服账号、会话、聊天记录管理(
CustomerService+ 反馈FeedbackManageController)。 - 游戏配置管理:捕鱼/棋牌的核心
GameConfig与ActivityConfig(活动/战令/签到/商店/抽奖奖池等),支持从 JSON 模板初始化、分区保存、导出(GameConfigService、ActivityConfigService)。 - 房间运营:查看 Redis 中捕鱼房间/象棋房间实时数据、机器人增减、清空/踢人/结算、房间统计与初始化(
RoomController)。 - 靓号体系:靓号规则与号码的生成、增删改查、冻结/解冻、发放(
BeautifulNumberService+BeautifulNumberGenerator)。 - 公告/FAQ/任务/日志:公告发布、FAQ 板块与问答、每日任务配置与结算、操作日志与登录日志、后台操作日志审计。
- 基础设施:统一响应封装、JWT 鉴权、Redis、CAP 消息发布、图片上传、全局异常、NLog、健康检查。
2.3 核心业务流程 / 数据流
- 请求链路:客户端 → Ocelot 网关(
:8001,/adminapi前缀)→ AdminHost(:5241)。AdminHost 中间件管线依次经过 CORS → 路由 → 静态文件 → 认证 → 授权 →ApiLoggingMiddleware→OperationLogMiddleware→MapControllers。 - 鉴权:后台登录
adminapi/System/user/login校验账号密码(MD5)后,用JWTHelper.JwtTools签发含uid/uname/dname声明的 Token;后续接口由[Authorize]校验。 - 配置读改写:游戏/活动配置
Get优先从 Redis 读取(缓存),未命中回源 MongoDB 并回填 Redis;Update落库后回填 Redis,并向 CAP 发布配置变更(Topic_0524_ConfigChanged),通知游戏进程热更新。 - 运营操作 → 消息下发:房间清空、踢人、临时出鱼、后台资产/等级变更、玩家因子变更等,通过
ICapPublisher发到 RabbitMQ,由游戏/用户相关服务消费(本模块只发布不订阅,见第七节)。 - 审计:
OperationLogMiddleware对/adminapi与/api/Admin的非 GET/非登录类请求记录后台操作日志到 MongoDB(异步后台任务);ApiLoggingMiddleware对/api前缀请求记录 API 日志。
三、业务功能清单
说明:所有 Controller 路由前缀均为
adminapi/[controller](RoomController、TempSpawnFishController为adminapi/Admin/[controller])。下表接口路径省略该前缀。空[Authorize]表示类上未标注授权特性(是否放行由框架/Swagger 环境决定,此处只如实反映代码)。
3.1 后台系统账号 / 权限 / 字典(SystemController → ISystemService / SystemService)
| 接口 | 方法 | 用途 |
|---|---|---|
System/user/login |
GET | 管理员登录([AllowAnonymous]),返回 AdminUserToken(JWT);内置超级管理员 administrator/qwert |
System/user/add |
POST | 新增后台用户 |
System/user/update |
POST | 修改后台用户 |
System/user/update/icon |
GET | 修改头像 |
System/user/update/state |
GET | 启用/禁用(state) |
System/user/delete |
GET | 删除用户(逻辑删除 IsDelete) |
System/user/list |
POST | 后台用户分页列表 |
System/user/getuser |
GET | 获取当前登录管理员信息 |
System/user/nav |
GET | 获取当前管理员可见菜单树 |
System/role/add、update、updatenav、delete、list、get |
— | 角色增删改、角色授权菜单、角色列表/详情 |
System/nav/add、update、delete、list |
— | 后台菜单(导航)增删改查、菜单树 |
System/dic/add、update、delete、list、list/code、get/code |
— | 数据字典增删改查(按 Id 或 code 查询) |
3.2 玩家用户管理(AdminUserController → IAdminUserService / AdminUserService)
| 接口 | 方法 | 用途 |
|---|---|---|
AdminUser/GetUserList |
POST | 玩家分页列表(含在线状态:结合 Redis 在线用户集合与用户会话房间) |
AdminUser/GetUserDetail |
GET | 玩家详情(UserEntity) |
AdminUser/UpdateUserAssets |
POST | 调整玩家资产(金币/钻石等) |
AdminUser/GetUserStatistics |
GET | 用户统计(总数/今日注册/本月注册/在线/封禁/VIP/资产总量) |
AdminUser/GetEmailStatistics |
GET | 邮件统计 |
AdminUser/BatchBanUser、BanUser、UnbanUser |
POST/GET | 批量封号 / 封号 / 解封 |
AdminUser/BatchSendEmail、SendEmail |
POST | 批量/单个发邮件 |
AdminUser/CancelUser |
GET | 注销当前登录用户 |
AdminUser/DeleteUser、BatchDeleteUser |
GET/POST | 删除玩家 / 批量删除 |
AdminUser/UpdateUser |
POST | 修改玩家基础数据 |
AdminUser/GetEmailList、DeleteEmail、BatchDeleteEmail |
— | 邮件列表 / 删除 / 批量删除 |
AdminUser/SetUserType、BatchSetUserType |
POST | 设置用户类型 / 批量 |
AdminUser/SetBlackUser、BatchSetBlackUser |
POST | 黑名单设置 / 批量 |
AdminUser/UpdateUserFactor |
POST | 更新玩家难度因子 PlayerFactor |
AdminUser/GetBlackFactorConfig |
GET | 获取黑名单默认因子配置 |
AdminUser/ResetUserFactor |
POST | 重置玩家因子 |
AdminUser/InitUserPassword、InitSafeBoxPassword |
GET | 重置用户登录密码 / 保险箱密码 |
AdminUser/GetUserFactorList |
POST | 因子/风控列表(含同注册 IP 数量、盈亏等) |
AdminUser/GetUserProps、AddUserProp、UpdateUserPropCount、DeleteUserProp |
— | 玩家道具查询/新增/改数量/删除 |
AdminUser/SyncAllUserLevel |
GET | 全量同步用户等级 |
3.3 客服与工单(CustomerController → ICustomerService / CustomerService;FeedbackManageController)
| 接口 | 方法 | 用途 |
|---|---|---|
Customer/list |
GET | 客服列表 |
Customer/{id} |
GET | 客服详情 |
Customer |
POST | 新增客服 |
Customer |
PUT | 更新客服 |
Customer/{id} |
DELETE | 删除客服 |
Customer/conversations、conversation/{id}、conversation/{id}(DELETE) |
— | 会话列表 / 详情 / 删除 |
Customer/chatlog/{conversationId} |
GET | 会话聊天记录 |
Customer/message/{id}、messages/{conversationId}、messages/delete-batch |
— | 删除单条消息 / 删除会话全部消息 / 批量删除消息 |
FeedbackManage/List |
POST | 用户反馈分页 |
FeedbackManage/Detail |
GET | 反馈详情 |
FeedbackManage/Reply |
POST | 回复反馈(写入回复内容、状态、回复人) |
FeedbackManage/Delete |
POST | 删除反馈 |
3.4 游戏配置管理(GameConfigController → IGameConfigService)
| 接口 | 方法 | 用途 |
|---|---|---|
GameConfig |
GET | 获取完整游戏配置(道具信息补齐) |
GameConfig/FishTypeList |
GET | 鱼种列表 |
GameConfig/PropList |
GET | 道具列表 |
GameConfig/Update |
POST | 更新游戏配置(落库 + Redis + 发 配置变更) |
GameConfig/UpdateFishType |
POST | 更新鱼种配置 |
GameConfig/UpdateRoom |
POST | 更新房间配置 |
GameConfig/UpdateRoomFish |
POST | 更新房间鱼类配置 |
GameConfig/UpdateFishArray |
POST | 更新鱼阵配置 |
GameConfig/UpdateUserLevel |
POST | 更新用户等级配置 |
GameConfig/UpdateProp |
POST | 更新道具配置 |
GameConfig/UpdatePropFragment |
POST | 更新道具碎片配置 |
GameConfig/UpdateVipLevel |
POST | 更新 VIP 等级配置 |
GameConfig/UpdateScratchCard |
POST | 更新刮刮卡配置 |
GameConfig/UpdateBossDrop |
POST | 更新 Boss 掉落配置 |
GameConfig/init-all、init-game、init-activity |
GET | 从 JSON 模板全量初始化游戏/活动配置 |
GameConfig/InitSection/{sectionName}、InitActivitySection/{sectionName} |
GET | 按板块初始化单项 |
GameConfig/SaveSection/{sectionName}、ExportSection/{sectionName} |
GET | 将某板块保存到 / 导出为 gameconfig.json |
3.5 活动 / 抽奖配置(ActivityConfigController → IActivityConfigService;LotteryController)
| 接口 | 方法 | 用途 |
|---|---|---|
ActivityConfig / ActivityConfig/Get |
GET | 获取活动配置 |
ActivityConfig/Update |
POST | 更新活动配置(发 配置变更) |
ActivityConfig/Delete |
POST | 删除活动配置 |
ActivityConfig/UpdateBattleOrder |
POST | 战令配置 |
ActivityConfig/UpdateRelief |
POST | 救济金配置 |
ActivityConfig/UpdateSign |
POST | 签到配置 |
ActivityConfig/UpdateGoldShop、UpdateDiamondShop |
POST | 金币/钻石商店配置 |
ActivityConfig/UpdateRegister |
POST | 注册初始配置 |
ActivityConfig/UpdateFishingReturn、GetFishingReturn |
POST/GET | 捕鱼返水配置 |
ActivityConfig/SaveSection/{sectionName}、ExportSection/{sectionName} |
GET | 活动配置板块保存到 / 导出为 activityconfig.json |
Lottery/list、detail |
GET | 抽奖活动列表 / 详情 |
Lottery/save |
POST | 保存抽奖活动(校验三个奖池消耗并在换周期时清零已抽数) |
Lottery/toggle、delete |
POST/DELETE | 开关活动 / 清空抽奖配置 |
Lottery/initialize |
POST | 从 Config/lottery-init.json 模板初始化奖池(保持关闭) |
3.6 房间运营(RoomController → Redis + IGameConfigService;TempSpawnFishController;BotConfigController)
RoomController(文件 AdminRoomController.cs,路由 adminapi/Admin/Room,[Authorize]):
| 接口 | 用途 |
|---|---|
GetAllRooms、GetRoomDetail、GetUserRoomRealtime、GetRoomStatistics |
捕鱼房间列表/详情/玩家实时数据/统计 |
AddRobot、SetRobotCount、RegenerateAllBotIds |
机器人增减、设置数量、刷新机器人编号 |
ClearRoom |
清空捕鱼房间(对真人玩家发 游戏金币结算 结算,清理 Redis 会话与子弹) |
InitRooms |
重置并初始化所有房间(含象棋房间) |
GetAllChessRooms、GetChessRoomDetail、GetChessRoomStatistics |
象棋房间列表/详情/统计 |
ClearChessRoom、KickChessPlayer、DeleteChessRoom、RepairChessRooms、ReInitChessRooms |
清空/踢人(发 后台踢出象棋玩家)/删除/修复/重建象棋房间 |
AddChessRobot、SetChessRobot |
象棋房间机器人增减/设置(有真人时禁止) |
TempSpawnFishController(路由 adminapi/Admin/TempSpawnFish,[AllowAnonymous]):
SpawnFish:临时强制出鱼,校验房间在线后向临时强制出鱼(Topic_0524_TempSpawnFish)发布TempSpawnFishMessage(count 钳制 1~2000,默认持续 30 秒)。
BotConfigController(路由 adminapi/BotConfig):
GetAll/Add/Update/Delete:机器人档案(BotProfileEntity)配置维护。
3.7 靓号管理(BeautifulNumberController → IBeautifulNumberService / BeautifulNumberService)
list、available:靓号列表 / 可售列表(分页)check/{number}:检查号码状态(是否已占用)delete、set-normal、freeze、unfreeze:删除 / 置为普通号 / 冻结 / 解冻update-price、update-number:改价 / 修改号码(等级+价格)rules、update-rules、init-rules、add-rule、update-rule、delete-rule:靓号规则查询/批量更新/初始化/增删改give-to-user:靓号发放给指定用户init-numbers:批量生成靓号add-number、batch-add-numbers:新增单个 / 批量新增号码
3.8 公告(NoticeController → INoticeService / NoticeService)
add、update、delete、list:公告增改删、分页列表get([AllowAnonymous]):公告详情;新增/更新时会把正文/顶图/内容图从/uploads/temp/迁移到/uploads/notice/。
3.9 FAQ 帮助中心(FaqController → IFaqService / FaqService)
Categories、CategoryTree、CategoryDetail:板块列表 / 树 / 详情AddCategory、UpdateCategory、DeleteCategory:板块增删改(删除前校验子板块与问题)Questions、QuestionList、QuestionDetail:问题列表 / 分页 / 详情AddQuestion、UpdateQuestion、DeleteQuestion:问题增删改
3.10 任务(TaskController → ITaskService / TaskService)
Init:初始化默认任务DayTaskReward:执行每日任务结算(也由定时任务DailyTaskJob调用)AddTask、DeleteTask、UpdateTask、UpdateTaskState、GetTaskList:任务配置增删改查与启停
3.11 空房率配置(EmptyRoomRateConfigController → IEmptyRoomRateConfigService)
list:按游戏类型/房间等级分页查询add、update、delete:空房率(0~100)配置维护;中国象棋按 gameType 唯一,其余按 gameType+roomLevel 唯一
3.12 日志与审计(OperationLogController、UserLoginLogController、UserAssetChangeController)
OperationLogController:后台操作日志分页查询(排除 GET)、管理员下拉、模块枚举、单条/批量删除。UserLoginLogController:玩家登录日志分页查询(按用户/类型/状态/平台/时间过滤)、详情、删除、批量删除。UserAssetChangeController:玩家资产变动记录(UserReward,排除「开炮/击杀鱼」来源)分页查询、来源枚举选项。
3.13 后台进出账与通用能力(BackgroundOperationController、ImageUploadController)
BackgroundOperationController:charge(充值)、deduct(扣除)、logs(操作日志)、search-user(按关键字查用户)。ImageUploadController:upload、upload/temp、upload/config(配置图必须 PNG,编号校验后写入/uploads/{number}.png)。
四、项目结构与技术要点
4.1 五个项目及依赖关系
| 项目 | 路径 | SDK / 目标框架 | 关键 NuGet / 依赖 | 说明 |
|---|---|---|---|---|
| AdminHost | AdminSrc/AdminHost/AdminHost.csproj |
Microsoft.NET.Sdk.Web / net8.0 |
NLog.Web.AspNetCore 6.1.2、Autofac 8.3.0、Autofac.Extensions.DependencyInjection 10.0.0、AutoMapper 14.0.0、DotNetCore.CAP 8.3.4(+ Dashboard / PostgreSql / RabbitMQ)、Microsoft.AspNetCore.Mvc.NewtonsoftJson 8.0.24 | 进程入口(Web Host) |
| AdminApi | AdminSrc/AdminApi/AdminApi.csproj |
Microsoft.NET.Sdk / net8.0(OutputType=Exe) |
AutoMapper 14.0.0、Microsoft.AspNetCore.Mvc.Core 2.3.9 | 全部 Controller 所在程序集(实际由 AdminHost 通过 AddApplicationPart 挂载) |
| AdminApplication | AdminSrc/AdminApplication/AdminApplication.csproj |
Microsoft.NET.Sdk / net8.0 |
无 | 仅含 DTO(DTOs/CustomerDtos.cs) |
| AdminDomain | AdminSrc/AdminDomain/AdminDomain.csproj |
Microsoft.NET.Sdk / net8.0 |
Microsoft.Extensions.Logging.Abstractions 10.0.3、MongoDB.Bson 3.6.0 | 领域实体、枚举、领域服务接口 |
| AdminService | AdminSrc/AdminService/AdminService.csproj |
Microsoft.NET.Sdk / net8.0 |
AutoMapper 14.0.0、DotNetCore.CAP 8.3.4 | 业务服务实现 |
项目引用关系
AdminHost→ 引用AdminApi、AdminApplication,以及基础设施与外部业务程序集:- 基础设施:
Infrastructure/JWTHelper、Infrastructure/MongoRepository、Infrastructure/RabbitMQHelper、Infrastructure/RedisHelper、Infrastructure/ScheduledService、Infrastructure/SharpAbp.Infrastructure.Api - 外部业务:
UserSrc/UserService、FishGameSrc/FishGameService
- 基础设施:
AdminApi→AdminService、AdminApplication,以及ChessGameSrc/ChessGameDomain、ChessGameSrc/ChessGameService、FishRoomService、CustomerSrc/CustomerService.Domain(供房间/象棋实时数据与麻将类实体使用)AdminService→AdminDomain,以及CommonDomain、Infrastructure/CommonInfrastructure、Infrastructure/Common、Infrastructure/JWTHelper、Infrastructure/MongoRepository、Infrastructure/RabbitMQHelper、Infrastructure/RedisHelper、RedisService、UserSrc/UserDomain、CustomerSrc/CustomerService.DomainAdminDomain→Infrastructure/MongoRepository、CustomerSrc/CustomerService.DomainAdminApplication→ 无引用
注意:
AdminApi声明了OutputType=Exe并在其中含一个默认模板Program.cs(内容仅Console.WriteLine("Hello, World!")),但真正运行的是AdminHost;AdminHost 通过AddApplicationPart(typeof(AdminApi.AssemblyMarker).Assembly)把 AdminApi 中的 Controller 纳入路由。
4.2 进程入口要点(AdminSrc/AdminHost/Program.cs)
- 设置环境变量
SERVICE_NAME(默认程序集名AdminHost)、INSTANCE_ID(默认default)。 - MVC:
AddControllers().AddApplicationPart(AdminApi).AddControllersAsServices(),禁用模型校验自动过滤器(SuppressModelStateInvalidFilter = true)。 - 序列化:
AddNewtonsoftJson,日期yyyy-MM-dd HH:mm:ss、本地时区、忽略 null、CamelCase。 - 配置装载:额外加载
Config/system.json(可选);绑定MongoDbSettings;注册IMongoDbSettings单例。 - 基础设施:
IHttpContextAccessor、IRequestApi(Common.Request.RequestApi)、AddAutoMapper(typeof(AutoMapperConfig))、AddHealthChecks(self)。 - CORS:策略名
Cors,允许任意 Origin(SetIsOriginAllowed(_ => true))、任意头/方法、允许凭据。 AddSignalR():启用 SignalR(后台本身未注册 Hub,供共享基础库/前端使用)。- JWT:
AddCustomJwt(configuration);Redis:AddRedisCache(configuration);CAP:AddCap(configuration)(见Extension/CapExtension)。 - 定时任务:
AddCronJob<DailyTaskJob>,Cron0 0 0 * * *(每天 0 点),时区为本地时区,调用ITaskService.DayTaskReward()。 - Autofac:
UseServiceProviderFactory(new AutofacServiceProviderFactory())+ConfigureContainer<ContainerBuilder>注册AutofacModule。
中间件管线顺序(Program.cs):UseDeveloperExceptionPage(仅开发)→ UseCors("Cors") → UseRouting → UseStaticFiles → UseAuthentication → UseAuthorization → UseApiLogging → UseOperationLog → MapControllers → UseGlobalExceptionHandler(来自 SharpAbp)→ MapHealthChecks("/health")。
4.3 端口与环境
Properties/launchSettings.json:http档案的applicationUrl为http://localhost:8002/(环境Development);IIS Express 档案为http://localhost:57330。docker-compose.yaml:服务0524admin,容器名0524admin,端口映射5241:80(平台约定的对外端口为 5241,网关/adminapi指向该端口;容器内部监听 80)。appsettings.json:仅含Logging、AllowedHosts与CapConfig(RabbitMQ + PostgreSQL 连接)。- 其余关键配置来自
Config/system.json(JWT、PostgreSQL、CAP、Redis、MongoDB、微信公众号WXConfig、子弹BulletConfig等),运行时合并。注意:Config/system.json内含明文密钥/口令(JWT SecretKey、Redis/Mongo/RabbitMQ/PG 口令、微信 AppSecret 等),属敏感信息,切勿外泄。
4.4 DI / Autofac 注册位置
- 位置:
AdminSrc/AdminHost/Middleware/AutofacModule.cs。 - 注册内容:
MongoBaseRepository<>→IMongoBaseRepository<>(InstancePerLifetimeScope)RedisService.RedisService→IRedisService- 按「类型名以
Service结尾」扫描并AsImplementedInterfaces注册以下程序集:ApiLogService所在程序集(CommonService)、AdminOperationLogService/SystemService(AdminService)、UserFeedbackService(UserService)等 CommonService.BackgroundOperationService→IBackgroundOperationService
- AutoMapper:
AdminSrc/AdminService/AutoMapperConfig.cs(Profile),注册了AddUserParam→SystemUser、AddRoleParam→SystemUserRole、AddNavParam→SystemNavigation、AddDicParam→SystemDic、SystemUser→AdminUserToken、SystemNavigation→SystemNavigationResponse、SystemDic→SystemDicResponse、AddNoticeParam→Notice、UpdateNoticeParam→Notice、GameTask→UserTask等映射。
4.5 中间件细节
- ApiLoggingMiddleware(
/api前缀,非 OPTIONS):缓冲响应体,脱敏(把BaseResponse.Data置空)后写入ApiLog(MongoDB),记录 Token/Version/User-Agent/Source/DeviceId/Device/Ip/Sign 等头部。 - OperationLogMiddleware(
/adminapi开头或/api/Admin开头):跳过login/GetAccessToken及administrator;读取 POST/PUT 请求体(截断 4000 字符);放行后用后台Task.Run异步写入AdminOperationLog,模块(EnumOperationModule)与动作类型(封号/解封/批量/发邮件/初始化/冻结/解冻/赠送/清空/机器人管理/设置状态/修改头像/查询/新增/修改/删除)按路径关键字推断。 - CapExtension.AddCap:
UseDashboard()+UseRabbitMQ(ExchangeNamecap.exchange,读CapConfig)+UsePostgreSql(schemapublic);成功消息保留 7 天、失败重试 5 次、间隔 10 秒、失败阈值回调ObjFailedThresholdCallback(当前回调体为空实现)。
五、代码目录说明(完整目录树)
说明:
wwwroot为后台前端静态资源(layui 模板),图片/字体等二进制资源众多,此处按目录维度概述,仅列出其中出现的.json文件。其余为全部.cs/ 配置文件的完整清单。
AdminSrc/
├── AdminApi/ # 全部 Controller 程序集(由 AdminHost 挂载)
│ ├── AdminApi.csproj
│ ├── Program.cs # 默认模板(Hello World),非实际入口
│ ├── AssemblyMarker.cs # 空标记类,供 AddApplicationPart 定位程序集
│ ├── Controllers/
│ │ ├── OperationLogController.cs # 后台操作日志查询/删除
│ │ └── ImageUploadController.cs # 图片上传(通用/临时/配置图)
│ ├── AdminUser/
│ │ └── AdminUserController.cs # 玩家用户管理(封号/资产/邮件/因子/道具等)
│ ├── BackgroundOperation/
│ │ └── BackgroundOperationController.cs # 后台充值/扣除/日志/查用户
│ ├── BeautifulNumber/
│ │ └── BeautifulNumberController.cs # 靓号及规则管理
│ ├── Customer/
│ │ └── CustomerController.cs # 客服/会话/聊天记录
│ ├── EmptyRoomRate/
│ │ └── EmptyRoomRateConfigController.cs # 空房率配置
│ ├── Faq/
│ │ └── FaqController.cs # FAQ 板块与问题
│ ├── Feedbacks/
│ │ └── FeedbackManageController.cs # 用户反馈管理
│ ├── GameConfigs/
│ │ ├── GameConfigController.cs # 游戏配置(最大文件,含初始化/分区保存/导出)
│ │ ├── ActivityConfigController.cs # 活动配置
│ │ ├── AdminRoomController.cs # 房间运营(类名 RoomController)
│ │ ├── BotConfigController.cs # 机器人档案
│ │ ├── TempSpawnFishController.cs # 临时强制出鱼(AllowAnonymous)
│ │ └── .workbuddy/memory/ # 空目录(工具残留,无文件)
│ ├── LoginLogs/
│ │ └── UserLoginLogController.cs # 玩家登录日志
│ ├── Lottery/
│ │ └── LotteryController.cs # 抽奖活动配置
│ ├── Notices/
│ │ └── NoticeController.cs # 公告管理
│ ├── System/
│ │ └── SystemController.cs # 后台账号/角色/菜单/字典
│ ├── Task/
│ │ └── TaskController.cs # 任务配置与结算
│ └── UserAssetChanges/
│ └── UserAssetChangeController.cs # 玩家资产变动记录
│
├── AdminApplication/ # DTO 层(几乎为空)
│ ├── AdminApplication.csproj
│ └── DTOs/
│ └── CustomerDtos.cs # 客服/会话/消息 DTO
│
├── AdminDomain/ # 领域实体/枚举/领域接口
│ ├── AdminDomain.csproj
│ ├── Admin/
│ │ ├── AdminOperationLog.cs # 后台操作日志实体(Mongo: admin_operation_log)
│ │ ├── IAdminOperationLogService.cs # 操作日志服务接口
│ │ ├── SystemUser.cs # 后台系统用户(Mongo: system_user)
│ │ ├── SystemUserRole.cs # 后台角色(Mongo: system_user_role)
│ │ ├── SystemNavigation.cs # 后台菜单(Mongo: system_user_nav)
│ │ ├── SystemDic.cs # 数据字典(Mongo: system_user_dic)
│ │ ├── ENum/
│ │ │ ├── EnumNavigationCategory.cs # 菜单分类(后台/前台)
│ │ │ ├── EnumOperationModule.cs # 操作日志模块枚举
│ │ │ └── EnumResource.cs # 资源类型(菜单/资源/代码块)
│ │ └── Param/
│ │ └── OperationLogParam.cs # 操作日志查询/新增参数
│ ├── BeautifulNumber/
│ │ ├── BeautifulNumberConfig.cs # 靓号配置与规则实体(Mongo: beautiful_number_config/rule)
│ │ └── BeautifulNumberRuleEnum.cs # 靓号规则/等级/状态枚举
│ ├── Customer/
│ │ ├── ICustomerService.cs # 客服领域服务接口
│ │ └── Param/
│ │ └── CustomerParam.cs # 客服/会话查询参数
│ └── Notices/
│ └── NoticeDtos.cs # 公告 DTO
│
├── AdminHost/ # 进程入口(Web Host)
│ ├── AdminHost.csproj
│ ├── Program.cs # 入口:MVC/JWT/Redis/CAP/定时任务/Autofac/中间件管线
│ ├── appsettings.json # Logging + CapConfig(RabbitMQ/PG)
│ ├── appsettings.Development.json # 开发日志级别
│ ├── docker-compose.yaml # 容器编排:0524admin,5241:80
│ ├── .dockerignore
│ ├── Config/
│ │ ├── system.json # 运行时主配置(JWT/PG/CAP/Redis/Mongo/微信/子弹等)
│ │ ├── gameconfig.json # 游戏配置初始化模板(很大)
│ │ ├── activityconfig.json # 活动配置初始化模板(战令/签到/商店/排行榜等)
│ │ └── lottery-init.json # 抽奖奖池初始化模板
│ ├── Extension/
│ │ └── CapExtension.cs # CAP(RabbitMQ + PostgreSQL)注册
│ ├── Jobs/
│ │ └── DailyTaskJob.cs # 每日 0 点任务结算定时任务
│ ├── Middleware/
│ │ ├── AutofacModule.cs # Autofac DI 注册
│ │ ├── ApiLoggingMiddleware.cs # /api 请求日志(脱敏)
│ │ └── OperationLogMiddleware.cs # 后台操作日志记录
│ ├── Properties/
│ │ └── launchSettings.json # 启动档案(http:8002)
│ └── wwwroot/ # 后台前端静态资源(layui 后台模板)
│ ├── admin/
│ │ ├── index.html # 后台入口页
│ │ ├── json/tree.json # 示例菜单树数据
│ │ ├── dist/ # 编译后的前端资源
│ │ │ ├── controller/ lib/(extend) style/(res/template)
│ │ │ └── views/ # 各业务视图页
│ │ │ ├── activity/(lottery) background beautifulnumber
│ │ │ ├── config customer email gameconfig mail
│ │ │ └── notice room set/(system,user) system
│ │ │ └── user/(administrators, assetchange, user)
│ │ ├── json/ # 假数据目录(console/content/forum/mall/message/table/upload/user/useradmin/workorder 等)
│ │ ├── layui/ # layui 组件库(css/font/images/lay/rc;css/modules/layim/html/getmsg.json)
│ │ ├── layuiv2/ # layui 第二版(css/font)
│ │ └── lib/ # 富文本等(wangEditor)
│ ├── image/ # 界面截图等图片
│ └── uploads/ # 上传文件(图标/道具/头像等大量 png/jpg)
│
└── AdminService/ # 业务服务实现
├── AdminService.csproj
├── AutoMapperConfig.cs # AutoMapper 映射配置
├── Admin/
│ ├── AdminOperationLogService.cs # 操作日志写入/分页查询(排除 GET)
│ └── OperationLogHelper.cs # 操作日志构造/管理员信息/IP 提取辅助
├── BeautifulNumber/
│ ├── BeautifulNumberService.cs # 靓号业务(列表/购买/冻结/规则/生成)
│ ├── BeautifulNumberGenerator.cs # 靓号号码生成器(按规则笛卡尔积生成 8 位号)
│ └── IBeautifulNumberService.cs
├── Customer/
│ └── CustomerService.cs # 客服/会话/消息数据访问
├── EmptyRoomRate/
│ ├── EmptyRoomRateConfigService.cs # 空房率配置业务
│ └── IEmptyRoomRateConfigService.cs
├── Faq/
│ ├── FaqService.cs # FAQ 板块树/问题
│ └── IFaqService.cs
├── GameConfigs/
│ ├── GameConfigService.cs # 游戏配置(Redis 缓存 + 落库 + 发配置变更)
│ ├── ActivityConfigService.cs # 活动配置(同上)
│ ├── IGameConfigService.cs
│ └── IActivityConfigService.cs
├── ImageUpload/
│ ├── ImageUploadService.cs # 图片校验/保存(支持自定义命名)
│ └── IImageUploadService.cs
├── Notices/
│ ├── NoticeService.cs # 公告增删改查 + 临时图片迁移
│ ├── INoticeService.cs
│ └── Param/
│ ├── AddNoticeParam.cs
│ ├── UpdateNoticeParam.cs
│ └── GetNoticeListParam.cs
├── System/
│ ├── SystemService.cs # 后台账号/角色/菜单/字典/登录 JWT
│ ├── ISystemService.cs
│ ├── Param/ # AddUserParam/UpdateUserParam/AddRoleParam/UpdateRoleParam/
│ │ # UpdateRoleNavParam/AddNavParam/UpdateNavParam/AddDicParam/
│ │ # UpdateDicParam/GetUserListParam(共 10 个参数类)
│ └── Response/
│ ├── AdminUserToken.cs # 登录返回 Token 模型
│ ├── SystemNavigationResponse.cs # 菜单树响应
│ └── SystemDicResponse.cs # 字典响应
├── Tasks/
│ ├── TaskService.cs # 任务配置/每日结算/注册任务
│ ├── ITaskService.cs
│ └── Param/
│ ├── GiftResponse.cs
│ ├── GetTaskListParam.cs
│ ├── GetUserTaskListParam.cs
│ └── CompletedTaskParam.cs
└── User/
├── AdminUserService.cs # 玩家用户核心业务(最大服务)
├── IAdminUserService.cs
├── Param/ # AdminUserListParam/BatchBanUserParam/BatchSendEmailParam/
│ # SendEmailParam/EmailListQueryParam/UpdateUserAssetsParam/
│ # UpdateUserDataParam/UserManagementParam/
│ # UserAssetChangeQueryParam(共 9 个参数类,另有 BatchDelete/BatchSet 等内联于控制器)
└── Response/
├── UserStatistics.cs # 用户统计模型
└── EmailStatistics.cs # 邮件统计模型
六、关键文件索引
| 文件相对路径 | 职责 |
|---|---|
AdminSrc/AdminHost/Program.cs |
进程入口:MVC/JWT/Redis/CAP/SignalR/定时任务/Autofac 装配与中间件管线 |
AdminSrc/AdminHost/Extension/CapExtension.cs |
CAP(RabbitMQ + PostgreSQL)注册与失败回调 |
AdminSrc/AdminHost/Middleware/AutofacModule.cs |
Autofac IoC 注册(仓储/Redis/各 Service) |
AdminSrc/AdminHost/Middleware/ApiLoggingMiddleware.cs |
/api 请求日志(响应脱敏后写 MongoDB) |
AdminSrc/AdminHost/Middleware/OperationLogMiddleware.cs |
后台操作日志记录(模块/动作推断,异步写入) |
AdminSrc/AdminHost/Jobs/DailyTaskJob.cs |
每日 0 点调用 ITaskService.DayTaskReward() |
AdminSrc/AdminHost/Config/system.json |
运行时主配置(JWT/PG/CAP/Redis/Mongo/微信/子弹,含敏感信息) |
AdminSrc/AdminHost/Config/gameconfig.json |
游戏配置初始化模板(服务启动读取,用于 init) |
AdminSrc/AdminHost/Config/activityconfig.json |
活动配置初始化模板 |
AdminSrc/AdminHost/Config/lottery-init.json |
抽奖奖池初始化模板 |
AdminSrc/AdminHost/appsettings.json |
日志 + CapConfig(生产/容器环境) |
AdminSrc/AdminApi/AssemblyMarker.cs |
程序集标记(AddApplicationPart 定位) |
AdminSrc/AdminApi/System/SystemController.cs |
后台账号/角色/菜单/字典接口 |
AdminSrc/AdminApi/AdminUser/AdminUserController.cs |
玩家用户管理接口(封号/资产/邮件/因子/道具) |
AdminSrc/AdminApi/GameConfigs/GameConfigController.cs |
游戏配置接口(最大文件,含初始化/分区保存/导出) |
AdminSrc/AdminApi/GameConfigs/ActivityConfigController.cs |
活动配置接口 |
AdminSrc/AdminApi/GameConfigs/AdminRoomController.cs |
房间运营接口(类名 RoomController,含 CAP 结算/踢人) |
AdminSrc/AdminApi/GameConfigs/TempSpawnFishController.cs |
临时强制出鱼接口(发 CAP) |
AdminSrc/AdminApi/GameConfigs/BotConfigController.cs |
机器人档案接口 |
AdminSrc/AdminApi/Lottery/LotteryController.cs |
抽奖活动配置接口 |
AdminSrc/AdminApi/BeautifulNumber/BeautifulNumberController.cs |
靓号接口 |
AdminSrc/AdminApi/Notices/NoticeController.cs |
公告接口 |
AdminSrc/AdminApi/Customer/CustomerController.cs |
客服/会话/消息接口 |
AdminSrc/AdminApi/Feedbacks/FeedbackManageController.cs |
用户反馈管理接口 |
AdminSrc/AdminApi/Faq/FaqController.cs |
FAQ 接口 |
AdminSrc/AdminApi/EmptyRoomRate/EmptyRoomRateConfigController.cs |
空房率配置接口 |
AdminSrc/AdminApi/Task/TaskController.cs |
任务配置接口 |
AdminSrc/AdminApi/LoginLogs/UserLoginLogController.cs |
玩家登录日志接口 |
AdminSrc/AdminApi/UserAssetChanges/UserAssetChangeController.cs |
玩家资产变动记录接口 |
AdminSrc/AdminApi/BackgroundOperation/BackgroundOperationController.cs |
后台充值/扣除/日志/查用户接口 |
AdminSrc/AdminApi/Controllers/OperationLogController.cs |
后台操作日志查询/删除接口 |
AdminSrc/AdminApi/Controllers/ImageUploadController.cs |
图片上传接口 |
AdminSrc/AdminService/System/SystemService.cs |
后台账号/角色/菜单/字典/登录 JWT 业务 |
AdminSrc/AdminService/User/AdminUserService.cs |
玩家用户核心业务(最大服务,含资产/邮件/因子/道具/等级) |
AdminSrc/AdminService/GameConfigs/GameConfigService.cs |
游戏配置读写(Redis 缓存 + CAP 配置变更) |
AdminSrc/AdminService/GameConfigs/ActivityConfigService.cs |
活动配置读写(Redis 缓存 + CAP 配置变更) |
AdminSrc/AdminService/BeautifulNumber/BeautifulNumberService.cs |
靓号业务逻辑 |
AdminSrc/AdminService/BeautifulNumber/BeautifulNumberGenerator.cs |
靓号号码生成算法 |
AdminSrc/AdminService/Customer/CustomerService.cs |
客服/会话/消息数据访问 |
AdminSrc/AdminService/Faq/FaqService.cs |
FAQ 业务 |
AdminSrc/AdminService/Notices/NoticeService.cs |
公告业务(含临时图片迁移) |
AdminSrc/AdminService/EmptyRoomRate/EmptyRoomRateConfigService.cs |
空房率配置业务 |
AdminSrc/AdminService/Tasks/TaskService.cs |
任务配置与每日结算 |
AdminSrc/AdminService/ImageUpload/ImageUploadService.cs |
图片校验与保存 |
AdminSrc/AdminService/Admin/AdminOperationLogService.cs |
操作日志写入/查询 |
AdminSrc/AdminService/Admin/OperationLogHelper.cs |
操作日志辅助方法 |
AdminSrc/AdminService/AutoMapperConfig.cs |
AutoMapper 映射配置 |
AdminSrc/AdminDomain/Admin/SystemUser.cs |
后台用户实体(system_user) |
AdminSrc/AdminDomain/Admin/SystemUserRole.cs |
后台角色实体 |
AdminSrc/AdminDomain/Admin/SystemNavigation.cs |
后台菜单实体 |
AdminSrc/AdminDomain/Admin/SystemDic.cs |
数据字典实体 |
AdminSrc/AdminDomain/Admin/AdminOperationLog.cs |
操作日志实体(admin_operation_log) |
AdminSrc/AdminDomain/Admin/ENum/EnumOperationModule.cs |
操作日志模块枚举 |
AdminSrc/AdminDomain/BeautifulNumber/BeautifulNumberConfig.cs |
靓号配置/规则实体 |
AdminSrc/AdminDomain/BeautifulNumber/BeautifulNumberRuleEnum.cs |
靓号规则/等级/状态枚举 |
AdminSrc/AdminDomain/Customer/ICustomerService.cs |
客服领域服务接口 |
AdminSrc/AdminDomain/Customer/Param/CustomerParam.cs |
客服/会话查询参数 |
AdminSrc/AdminDomain/Notices/NoticeDtos.cs |
公告 DTO |
AdminSrc/AdminApplication/DTOs/CustomerDtos.cs |
客服/会话/消息 DTO |
七、与其他模块的交互
7.1 CAP / RabbitMQ 消息(本模块只发布,不订阅)
在
AdminSrc全目录搜索CapSubscribe/Subscribe无任何命中,因此本模块为纯消息生产者。主题常量定义于CommonDomain/TopicKeys.cs。CAP ExchangeName 为cap.exchange,CAP 投递日志存 PostgreSQL(CapConfig)。
| 主题(常量 / 实际字符串) | 触发位置 | 消息类型 | 用途 |
|---|---|---|---|
TopicKeys.配置变更 / Topic_0524_ConfigChanged |
GameConfigService.Update、ActivityConfigService.Update |
ConfigChangedMessage(ConfigType、OperationId、PublishedAtUnixMs) |
通知游戏进程热更新游戏/活动配置 |
TopicKeys.游戏金币结算 / Topic_0524_GameCoinsSettlement |
RoomController.ClearRoom |
匿名对象(UserId、BeforeGold、AfterGold、Remark、RoomName、RoomInfo) | 管理员清空房间时对玩家做金币结算 |
TopicKeys.后台踢出象棋玩家 / Topic_0524_AdminKickChessPlayer |
RoomController.KickChessPlayer |
AdminKickChessPlayerMessage(RoomId、UserId、Reason) |
异步踢出象棋房间玩家 |
TopicKeys.临时强制出鱼 / Topic_0524_TempSpawnFish |
TempSpawnFishController.SpawnFish |
TempSpawnFishMessage(RoomId、FishNumber、Count、RouteId、Seconds、OperationId、PublishedAtUnixMs) |
临时强制房间出鱼 |
TopicKeys.因子变更 / Topic_0524_PlayerFactorChanged |
AdminUserService(更新/重置玩家因子) |
PlayerFactorChangedMessage |
通知游戏进程玩家难度因子变更 |
"BackgroundOperation.NotifyUser"(字符串字面量) |
AdminUserService(后台资产/等级变更、后台进出账等) |
BackgroundOperationNotifyMessage |
通知用户端资产/等级等发生变化 |
其余在
TopicKeys中定义的主题(任务完成、用户资产变更、用户升级、击杀鱼日志、房间变化、全局击杀公告、玩家踢出、用户资产同步前端、登录绑定、拒绝回房、登录结果通知、召唤卡出鱼等)由平台其它模块发布/订阅,本模块代码中未直接使用。
7.2 Redis
通过 IRedisService(RedisService)读写,主要集中在:
- 房间实时数据:捕鱼房间
GetGameRoom / GetGameRoomAllList / SetGameRoom / RemoveGameRoom(All);象棋房间GetChessRoom / GetAllChessRooms / SetChessRoom / RemoveChessRoom / ClearAllChessRooms(房间运营的核心数据源)。 - 玩家会话:
GetRedisUserCId / SetRedisUserCId(用于在线状态、所在房间判断)。 - 子弹清理:
ClearBulletIds(清空房间/移除机器人时清理)。 - 配置缓存:
GetGameConfig / SetGameConfig、GetActivityConfig / SetActivityConfig / RemoveActivityConfig、GetFishingKillConfig / SetFishingKillConfig、SetFishSpawnConfig。 - 在线用户集合:
GetAllLoginUserIds()(AdminUserController.GetUserList判定在线)。 - 分布式锁:
IDistributedLock(由AdminUserService注入使用)。
7.3 HTTP 调用
AdminSrc 内未见对其他服务的直接 HttpClient/HTTP 调用。跨服务协作均通过 CAP 消息与 Redis 共享状态完成(网关侧的 /adminapi 路由是本模块被调用的入口,而非本模块发起调用)。
7.4 共享实体 / 项目引用(跨模块耦合点)
UserDomain(UserSrc/UserDomain):UserEntity、UserEmail、UserReward、UserFeedback、UserLoginLog、GameTask、UserTask、Notice、PlayerFactor、RewardSource等玩家侧实体被本模块大量直接读写。CommonDomain/CommonInfrastructure/Common:统一响应(BaseResponse/PageResponse/BaseController)、TopicKeys、GameConfig/ActivityConfig及各配置模型、EmptyRoomRateConfig、FaqCategory/FaqQuestion、BotProfileEntity、枚举GameTypeEnum、LoginUser等。ChessGameDomain(ChessGameRoom/RedisChessGameUser)、ChessGameService、FishRoomService:房间/象棋相关数据模型与服务。CustomerSrc/CustomerService.Domain:CustomerEntity/ConversationEntity/MessageEntity(客服模块实体)。Infrastructure/*:JWTHelper(JwtTools签发 Token)、MongoRepository(IMongoBaseRepository<>、ServiceDatabases.Admin)、RabbitMQHelper、RedisHelper、ScheduledService(CronJobService/AddCronJob)、SharpAbp.Infrastructure.Api(UseGlobalExceptionHandler等)。
7.5 MongoDB 集合(服务库 ServiceDatabases.Admin)
本模块直接落库的主要集合(由实体 [BsonCollection] 声明):
system_user、system_user_role、system_user_nav、system_user_dic:后台账号/角色/菜单/字典admin_operation_log:后台操作日志beautiful_number_config、beautiful_number_rule:靓号与规则
(GameConfig、ActivityConfig、EmptyRoomRateConfig、FaqCategory、FaqQuestion、BotProfileEntity、Notice、UserEntity 等实体的集合归属由各自定义所在程序集决定,本模块通过通用仓储读写。)