- 使用 git mv 将包路径由 com.example.finance 迁移至 cn.rosercode.finance - 主类 MyApplication 重命名为 FinanceApplication,测试类同步更名 - build.gradle 的 group 调整为 cn.rosercode - 同步 application.yml、logback-spring.xml 中的包引用 - 测试账号密码移至 credentials.md 并加入忽略规则,README 移除该信息 - 更新 README 与 docs 中的包路径示例
89 lines
2.2 KiB
Markdown
89 lines
2.2 KiB
Markdown
# 收支管理系统
|
|
|
|
个人收支管理系统,支持收入/支出记录管理、分类管理、月度统计与图表展示。
|
|
|
|
## 技术栈
|
|
|
|
| 层级 | 技术 |
|
|
|---|---|
|
|
| 后端 | Spring Boot 3.3.6 + Java 21 + MyBatis-Plus + MySQL |
|
|
| 前端 | Vue 3 + TypeScript + Vite + Naive UI + ECharts |
|
|
| 构建 | Gradle 8.13 (后端) / npm (前端) |
|
|
| 认证 | JWT |
|
|
| API 文档 | Knife4j (OpenAPI 3) |
|
|
| JDK 版本 | 21.0.12.1 (Temurin LTS) |
|
|
| Node.js 版本 | v24.0.0 |
|
|
|
|
## 前置条件
|
|
|
|
- JDK 21.0.12.1 Temurin LTS,安装在 `D:\venv\jdk-21`
|
|
- Node.js v24.0.0
|
|
|
|
## 数据库初始化
|
|
|
|
首次运行前需建表,执行 `src/main/resources/sql/init.sql`,或运行 Python 脚本:
|
|
|
|
```bash
|
|
pip install pymysql bcrypt
|
|
python init_db.py
|
|
python generate_test_data.py
|
|
```
|
|
|
|
## 启动后端
|
|
|
|
```bash
|
|
cd my-app
|
|
set JAVA_HOME=D:\venv\jdk-21
|
|
gradlew.bat bootRun
|
|
```
|
|
|
|
- 后端地址:http://localhost:8080
|
|
- API 文档:http://localhost:8080/doc.html
|
|
|
|
## 启动前端
|
|
|
|
```bash
|
|
cd my-app/frontend
|
|
npm run dev
|
|
```
|
|
|
|
- 前端地址:http://localhost:5173
|
|
|
|
## 打包
|
|
|
|
将项目源代码打包为 tar.gz(不含构建产物和 node_modules):
|
|
|
|
```bash
|
|
gradlew.bat archive
|
|
```
|
|
|
|
输出文件:`build/distributions/finance-app-0.0.1-SNAPSHOT-{时间戳}.tar.gz`
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
my-app/
|
|
├── build.gradle
|
|
├── src/main/java/cn/rosercode/finance/
|
|
│ ├── controller/ # 接口层
|
|
│ ├── service/ # 业务层
|
|
│ ├── mapper/ # 数据访问层
|
|
│ ├── entity/ # 实体类
|
|
│ ├── dto/ # 请求对象
|
|
│ ├── vo/ # 响应对象
|
|
│ ├── config/ # 配置类
|
|
│ ├── common/ # 公共类
|
|
│ ├── interceptor/ # 拦截器
|
|
│ └── util/ # 工具类
|
|
├── src/main/resources/
|
|
│ ├── application.yml
|
|
│ ├── mapper/
|
|
│ └── sql/init.sql
|
|
└── frontend/ # Vue 3 前端
|
|
└── src/
|
|
├── api/ # API 请求封装
|
|
├── router/ # 路由配置
|
|
├── store/ # 状态管理
|
|
└── views/ # 页面组件
|
|
```
|