first commit
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
# 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 的 `dev` profile 是默认激活的。
|
||||
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
# 开发模式启动(使用 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` 下
|
||||
|
||||
## 开发注意事项
|
||||
|
||||
1. **启动类名称**:实际启动类是 `iczApplication`,不是 README 中提到的 `YouLaiApplication.java`
|
||||
2. **MapStruct**:项目使用 MapStruct 进行实体转换,配合 Lombok 使用,需确保 `lombok-mapstruct-binding` 依赖存在
|
||||
3. **Undertow 替代 Tomcat**:`spring-boot-starter-tomcat` 被排除,使用 `spring-boot-starter-undertow`
|
||||
4. **打包配置**:`spring-boot-maven-plugin` 配置了 `ZIP` layout,并排除了 Lombok
|
||||
5. **Maven Profile 优先级**:`dev` profile 默认激活,但 Spring 的 `application.yml` 默认激活 `prod`。实际运行时以 Spring 的 `spring.profiles.active` 为准
|
||||
Reference in New Issue
Block a user