Files
BuYuHouDuan/docs/01-管理后台模块-AdminSrc.md
T
2026-10-12 16:22:04 +08:00

45 KiB
Raw Blame History

管理后台模块(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 核心业务流程 / 数据流

  1. 请求链路:客户端 → Ocelot 网关(:8001,/adminapi 前缀)→ AdminHost(:5241)。AdminHost 中间件管线依次经过 CORS → 路由 → 静态文件 → 认证 → 授权 → ApiLoggingMiddleware → OperationLogMiddleware → MapControllers。
  2. 鉴权:后台登录 adminapi/System/user/login 校验账号密码(MD5)后,用 JWTHelper.JwtTools 签发含 uid/uname/dname 声明的 Token;后续接口由 [Authorize] 校验。
  3. 配置读改写:游戏/活动配置 Get 优先从 Redis 读取(缓存),未命中回源 MongoDB 并回填 Redis;Update 落库后回填 Redis,并向 CAP 发布 配置变更(Topic_0524_ConfigChanged),通知游戏进程热更新。
  4. 运营操作 → 消息下发:房间清空、踢人、临时出鱼、后台资产/等级变更、玩家因子变更等,通过 ICapPublisher 发到 RabbitMQ,由游戏/用户相关服务消费(本模块只发布不订阅,见第七节)。
  5. 审计: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.Domain
  • AdminDomain → Infrastructure/MongoRepository、CustomerSrc/CustomerService.Domain
  • AdminApplication → 无引用

注意: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>,Cron 0 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(ExchangeName cap.exchange,读 CapConfig)+ UsePostgreSql(schema public);成功消息保留 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 等实体的集合归属由各自定义所在程序集决定,本模块通过通用仓储读写。)