Appearance
Java 后端概览(单体 server-java)
路径:packages/server-java
入口:com.xichen.server.ServerJavaApplication
技术:Spring Boot 3.4 + Spring Security 6 + JWT + MyBatis-Plus + Quartz + springdoc-openapi
另有微服务实现
同一 RBAC 契约的微服务版本见 micro-java 概览(Gateway 对外仍 :8080)。
启动
bash
# 根目录
docker compose up -d
pnpm --filter @xichen-full-stack/server-java dev
# 或 Maven
cd packages/server-java
mvn spring-boot:run默认端口 8080。Swagger:http://localhost:8080/swagger-ui.html
模块结构
text
com.xichen.server/
├── auth/ # 登录、Token、me、个人资料
│ ├── controller/ AuthController
│ ├── dto/ LoginRequest、AuthDtos、ChangePasswordRequest
│ └── service/ AuthService、CustomUserDetailsService
│
├── system/ # RBAC + 平台管理(若依风格扩展)
│ ├── controller/ 13 个 REST Controller(users/roles/menus/...)
│ ├── dto/ SystemDtos、UserExcelRow
│ ├── entity/ SysUser、SysRole、SysMenu、SysPermission、SysDept、...
│ ├── mapper/ MyBatis-Plus Mapper(15 个)
│ └── service/ CRUD、数据权限、Excel、文件、DatabaseInit
│
├── monitor/ # 操作/登录日志 + Quartz 定时任务
│ ├── annotation/ @Log 操作审计
│ ├── aspect/ OperLogAspect
│ ├── controller/ operlogs / logininfor / jobs / job-logs
│ ├── entity/ SysOperLog、SysLogininfor、SysJob、SysJobLog
│ ├── service/ 日志 CRUD、QuartzScheduleService、SysJobService
│ └── task/ DemoTask(种子演示任务)
│
└── common/ # 横切能力
├── config/ Security、MyBatis、OpenAPI、Upload、DatabaseInit 配置
├── exception/ BusinessException、GlobalExceptionHandler
├── response/ ApiResponse、PageResult
├── security/ JWT Filter/Provider、401/403 Handler
└── util/ PageParams、DateTimeUtils、MenuClientUtils资源文件
| 路径 | 说明 |
|---|---|
src/main/resources/application.yml | 数据源、Quartz、JWT、CORS、上传、DB init 开关 |
src/main/resources/db/schema.sql | 表结构(与 contracts/sql/schema.sql 对齐) |
src/main/resources/db/drop.sql | init 时删表脚本 |
契约层:contracts/openapi/rbac-api.yaml + contracts/openapi/platform-api.yaml
API 模块一览
| 模块 | 前缀 | 文档 |
|---|---|---|
| Auth | /api/v1/auth/*、/api/v1/health | Auth 与菜单 |
| System | /api/v1/system/* | System 平台管理 |
| Monitor | /api/v1/monitor/* | Monitor 监控 |
配置
application.yml 支持环境变量覆盖:
| 变量 | 说明 | 默认(见 yml) |
|---|---|---|
SERVER_PORT | 服务端口 | 8080 |
DB_HOST / DB_PORT / DB_NAME | MySQL | — |
DB_USER / DB_PASSWORD | 数据库账号 | — |
JWT_SECRET | JWT 签名密钥 | 开发密钥(生产必改) |
CORS_ORIGINS | 允许的前端源,逗号分隔 | localhost:5173 等 |
DB_INIT_ALLOW_WEB | 是否允许 Web 端 init | true |
UPLOAD_PATH | 文件上传目录 | ./uploads |
本地与 docker-compose 对齐
开发时可将 DB_* 设为 localhost:3306、用户 xichen / 密码 xichen123(见根目录 docker-compose.yml)。application.yml 中的默认值以你仓库当前配置为准,部署前请核对。
数据库初始化
POST /api/v1/system/database/init — 执行 drop.sql + schema.sql + 种子数据(admin / 菜单 / 权限 / 字典 / 参数等)。详见 数据库初始化。
白名单放行,无需登录(生产建议 DB_INIT_ALLOW_WEB=false)。
启动容错
SysJobService.initJobs() 在 @PostConstruct 中加载已启用的 Quartz 任务。若 sys_job 等表尚未创建,只记录 WARN,不阻断 Spring 启动。完整 RBAC 数据仍须通过 init 接口写入。
seed_data 在应用启动时也会尝试补种,但 已有用户则跳过(与 init 全量重置不同)。
默认账号
通过 init 写入:admin / admin123。admin 角色拥有全部权限。