Files
henan-backend/docs

Skins 业务后端

基于 若依(RuoYi)4.8.2 扩展的多模块 Java 后端,集成 CSGO/饰品相关业务(用户、玩法、第三方支付与回调、定时任务、推广后台等)。仓库同时包含两套管理端前端工程。

克隆后请在项目根目录执行 mvn -v 确认 JDK 21 与 Maven 可用,再按下文完成数据库与中间件初始化。


技术栈概览

层级 技术
运行时 Java 21
框架 Spring Boot 4.0.3(启用虚拟线程 spring.threads.virtual.enabled)
Web 与安全 Spring Security 6(无状态会话)、JWT(Authorization 请求头)、若依式菜单/权限模型
持久层 MyBatis / MyBatis-Plus、PageHelper、Druid(含多数据源扩展)
数据库 MySQL
缓存 Redis(Spring Data Redis + Lettuce)
消息 RabbitMQ(业务侧配置虚拟主机等,详见各 profile)
实时 WebSocket(如 /ws/** 等路径,与安全放行配置保持一致)
API 文档 已移除(不再依赖 Springfox / springdoc,仓库内无 Swagger UI 与 OpenAPI 端点)

仓库结构

chengdu-backend/
├── ruoyi-admin/          # Web 入口(Spring Boot 启动模块)
├── ruoyi-framework/      # 安全、过滤器、资源配置等封装
├── ruoyi-system/         # 系统管理(用户、角色、菜单等)
├── ruoyi-common/         # 通用工具、常量、MQ 配置等
├── ruoyi-quartz/         # 定时任务(若依 Quartz 集成)
├── ruoyi-generator/      # 代码生成
├── skins-model/          # 业务领域模型(实体等)
├── skins-service/        # 业务服务聚合 POM(子模块见下)
│   ├── service-admin/    # 运营管理侧接口
│   ├── service-user/     # 用户侧接口
│   ├── service-playingmethod/   # 玩法相关
│   ├── service-thirdparty/      # 第三方对接
│   └── service-task/     # 任务与调度配合
├── skins-promo/          # 推广后台 API(路径前缀多为 /promo)
├── ruoyi-ui/             # 管理端 Vue2 + Element UI(若依经典前端)
├── promo-ui2/            # 推广/运营后台 Vue3 + Element Plus + Vite
└── docker/               # MySQL / Redis / RabbitMQ 编排

启动类

后端入口:ruoyi-admin 模块中的 com.ruoyi.RuoYiApplication。使用 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) 排除 Spring Boot 默认数据源自动配置(Spring Boot 4 下为 org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration),由若依多数据源与 Druid 配置接管。


运行环境与配置

必备依赖

  • JDK 21
  • Maven 3.6+
  • MySQL 8.x(库名与账号见各 profile;本地可参考 docker/docker-compose.yml)
  • Redis
  • RabbitMQ(若启用了 MQ 监听或相关消费者则需可用)

根 pom.xml 已配置 阿里云 Maven 公共仓库,便于国内环境拉取依赖。

Spring Profile

ruoyi-admin/src/main/resources/application.yml 中通过 spring.profiles.active 切换环境,配套文件:

  • application-dev.yml — 本地/开发
  • application-test.yml — 测试
  • application-pro.yml — 生产

重要: 上述 profile 文件中常含数据库口令、第三方支付与短信密钥等敏感信息。勿将真实密钥提交到公开仓库;上线请改用环境变量、密钥管理系统或独立于仓库的配置挂载。

默认服务端口与上下文

  • HTTP 端口:28081(见根配置 ruoyi-admin/src/main/resources/application.yml 中的 server.port;各环境可被 profile 或部署参数覆盖,默认绑定 0.0.0.0)
  • 上下文路径:/(与管理端、VUE_APP_BASE_API 及反向代理前缀需一致)

对外匿名接口(简述)

与安全配置对齐的常见分类包括:/login、/register、/captchaImage,以及业务侧的 /api/**、/admin/**、WebSocket、Druid 监控路径等。具体请以 ruoyi-framework 中 SecurityFilterChain 与白名单配置为准。


本地启动后端

方式一:先打包再在启动模块运行

在项目根目录执行:

mvn clean package -DskipTests
cd ruoyi-admin
mvn spring-boot:run

方式二:根目录一键拉起(会解析 ruoyi-admin 所需模块依赖)

mvn -pl ruoyi-admin -am spring-boot:run -DskipTests

也可在 IDE 中直接运行 RuoYiApplication。

首次运行前请:

  1. 创建 MySQL 库并完成若依及业务所需的 SQL 初始化(以团队提供的脚本为准)。
  2. 按所选 profile 修改数据源、Redis、RabbitMQ 等连接信息。

Docker 基础设施

目录:docker/

  • docker-compose.yml:MySQL(含自定义镜像)、Redis、RabbitMQ(管理端口及初始化示例)。
  • docker/docker-cn/:面向大陆镜像拉取环境的编排变体。

常用操作见 docker/readme.md(如单独重建某个服务等)。


前端工程

ruoyi-ui(Vue 2)

  • 技术栈:Vue CLI、Element UI(package.json 声明 Node >=8.9,实际开发建议 Node 16 LTS 或 18 LTS,并按需开启 OpenSSL 兼容)。
  • 脚本见 ruoyi-ui/package.json(Windows 脚本含 set NODE_OPTIONS=--openssl-legacy-provider;在 macOS/Linux 上需 export NODE_OPTIONS=... 或使用等价脚本)。
  • 开发与打包:npm run dev、npm run build:prod 等。
  • 原「系统工具 → 系统接口」的 Swagger 页已随接口文档一并删除(views/tool/swagger/index.vue),若侧边栏仍有该菜单,执行 DELETE FROM sys_menu WHERE component = 'tool/swagger/index'; 后重新登录。

promo-ui2(Vue 3)

  • 技术栈:Vue 3、Vite、TypeScript、Element Plus(基于 vue-element-plus-admin 演进);要求 Node ≥ 18、pnpm ≥ 8.1(以 promo-ui2/package.json 中 engines 为准)。
  • 推荐使用 pnpm:pnpm install、pnpm dev、pnpm build:pro 等。
  • 详细说明见 promo-ui2/README.zh-CN.md。

前端请求的接口基地址需指向本后端;若经 Nginx 网关,注意与团队约定的前缀(如 /prod-api)一致。


业务模块说明(简述)

模块 职责
skins-model 共享实体与领域常量
service-user 用户相关业务
service-admin 运营管理侧业务
service-playingmethod 玩法相关逻辑
service-thirdparty 第三方对接(支付、交易平台回调等,密钥在各 profile 中)
service-task 异步任务 / 与 Quartz 等协同
skins-promo 推广后台:登录注册、流水与佣金、充值卡等(REST 前缀示例:/promo)

API 文档

  • 项目已移除全部接口文档能力:删除 Springfox(springfox-boot-starter)、springdoc-openapi 依赖、SwaggerConfig 与源码中的 @Api / @ApiOperation / @ApiModelProperty 等注解,SecurityConfig 与 ResourcesConfig 里对应的放行与静态映射也已去掉。
  • 因此 /swagger-ui.html、/v3/api-docs、/*/api-docs、/doc.html 均不再对外提供服务(未认证访问会直接落到 401)。

版本信息

  • 父 POM:com.ruoyi:ruoyi:4.8.2(spring-boot.version 4.0.3)
  • 若依官网参考:http://www.ruoyi.vip

安全建议

  1. 轮换并私有化所有第三方(支付宝、聚合支付、短信等)密钥;生产环境勿使用仓库内示例明文。
  2. 修改 JWT token.secret 等非默认值。
  3. Druid 监控台:生产已关闭(application-pro.yml 的 statViewServlet.enabled=false,/druid/** 是匿名放行的,开着等于把全部 SQL 与连接信息暴露到公网); 开发环境已限制 allow: 127.0.0.1 并改用非默认口令。临时排障如需开启,务必保持白名单 + 改口令,用完立即关回。
  4. 三端 token 互不通用(游戏管理后台 / 推广后台 / 玩家端):三个端共用同一套 JWT 与会话存储, 靠 LoginUser.loginScope(admin / promo / player)区分,判定在 ruoyi-framework 的 SecurityConfig: /admin|/system|/monitor|/tool|/test 只认后台账号、/promo/** 只认推广端签发的 token、/api/** 只认玩家端签发的 token。 标记由 ApiUserDetailsServiceImpl 按登录账号前缀(api_ / promo_ / promo_user_ / 无前缀)写入,随会话缓存在 Redis。 注意:升级到该版本后,不带端标记的旧 token 会被拒绝,推广后台与玩家端需要重新登录一次(后台账号不受影响)。

如有与本说明不一致之处,以当前仓库代码及团队部署文档为准。