Files
henan-backend/docs/README.md
T

186 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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** 与白名单配置为准。
---
## 本地启动后端
**方式一:先打包再在启动模块运行**
在项目根目录执行:
```bash
mvn clean package -DskipTests
cd ruoyi-admin
mvn spring-boot:run
```
**方式二:根目录一键拉起(会解析 `ruoyi-admin` 所需模块依赖)**
```bash
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 会被拒绝,推广后台与玩家端需要重新登录一次(后台账号不受影响)。
如有与本说明不一致之处,以当前仓库代码及团队部署文档为准。