3.7 KiB
3.7 KiB
AGENTS.md
本文件用于帮助后续 OpenCode 会话快速了解本仓库,避免常见错误。
项目概况
- 技术栈:Java 17 + Spring Boot 3.3.2 + Spring Security 6 + MyBatis-Plus 3.5.7
- 构建工具:Maven(单模块 POM)
- 应用入口:
com.ichangzuo.iczApplication - 默认端口:8989(dev/test)/ 9999(prod)
- 接口文档:启动后访问
http://localhost:8989/doc.html(Knife4j)
运行环境依赖
- MySQL:数据库名
music,开发配置在application-dev.yml - Redis:端口 16378,开发环境密码
CZwy168 - 运行时 Profile:
dev(默认):本地开发test:测试环境(数据库192.168.5.2)prod:生产环境
注意:
application.yml中默认激活的是prod,但 Maven 的devprofile 是默认激活的。
常用命令
# 开发模式启动(使用 dev profile)
mvn spring-boot:run -P dev
# 打包(默认 dev)
mvn clean package
# 测试环境打包
mvn clean package -P test
# 生产环境打包
mvn clean package -P prod
# 运行测试
mvn test
# 跳过测试打包
mvn clean package -DskipTests
项目结构
src/main/java/com/ichangzuo/
iczApplication.java # 启动类(注意不是 YouLaiApplication)
common/ # 公共模块:注解、常量、枚举、异常、工具类
config/ # 自动装配配置(CORS、Redis、Security、Swagger 等)
core/ # 核心功能:切面(日志、防重提交)、过滤器、Security
module/ # 业务模块
auth/ # 认证模块
codegen/ # 代码生成器
file/ # 文件模块
mail/ # 邮件模块
sms/ # 短信模块
websocket/ # WebSocket 模块
system/ # 系统管理模块:用户、角色、菜单、部门、字典等
controller/
converter/ # MapStruct 转换器
event/ # 事件处理
handler/
listener/
model/ # bo, dto, entity, form, query, vo
mapper/
service/
关键配置与约定
数据库与 ORM
- MyBatis-Plus:
- 逻辑删除字段:
is_deleted(删除=1,未删除=0) - 主键 ID 类型:
none - 驼峰下划线自动转换已开启
- 逻辑删除字段:
- 数据源:Druid 连接池
安全与认证
- 基于 Spring Security + JWT 的无状态认证
- JWT 密钥配置在
application.yml的security.jwt.key - 部分接口在白名单中(如
/api/v1/auth/**、/client/**等),无需认证
文件存储
- 支持
minio和aliyun两种类型,通过oss.type切换 - 当前测试/生产环境使用
minio
缓存
- Spring Cache + Redis,但当前
spring.cache.enabled=false
定时任务
- 集成 XXL-JOB,但默认
enabled: false
支付
- 集成支付宝和微信支付,配置在
pay.ali和pay.wx下
开发注意事项
- 启动类名称:实际启动类是
iczApplication,不是 README 中提到的YouLaiApplication.java - MapStruct:项目使用 MapStruct 进行实体转换,配合 Lombok 使用,需确保
lombok-mapstruct-binding依赖存在 - Undertow 替代 Tomcat:
spring-boot-starter-tomcat被排除,使用spring-boot-starter-undertow - 打包配置:
spring-boot-maven-plugin配置了ZIPlayout,并排除了 Lombok - Maven Profile 优先级:
devprofile 默认激活,但 Spring 的application.yml默认激活prod。实际运行时以 Spring 的spring.profiles.active为准