1df6e2351032564bf77cf1e2115d0044d59190af
- 账单导入:新增支付宝账单解析/导入接口,按 external_no 去重;前端拖拽上传 + 预览确认弹窗 - 分类可选:category_id 允许为空,支持「未分类」筛选,新增按类型一键批量设置分类 - 备注隐藏:新增 remark_hidden 与切换接口,列表默认显示 ****** 并可单格查看/取消隐藏,导出同步隐藏 - 统计扩展:新增 /statistics/summary、/statistics/group,支持日/周/月/季/年/支付方式/分类/类型维度与时间范围过滤 - 收支记录:金额区间过滤、金额/交易时间列排序、分页快速跳转、本页收支结余汇总、交易时间列前置并合并创建时间提示 - 用户偏好:统计面板与列表的筛选条件持久化到 localStorage,进入自动还原 - 其他:新增默认分类种子脚本(含美容美发)、commons-csv 依赖、上传大小限制 10MB、Vite 监听 0.0.0.0
收支管理系统
个人收支管理系统,支持收入/支出记录管理、分类管理、月度统计与图表展示。
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | 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 脚本:
pip install pymysql bcrypt
python init_db.py
python generate_test_data.py
启动后端
cd my-app
set JAVA_HOME=D:\venv\jdk-21
gradlew.bat bootRun
- 后端地址:http://localhost:8080
- API 文档:http://localhost:8080/doc.html
启动前端
cd my-app/frontend
npm run dev
打包
将项目源代码打包为 tar.gz(不含构建产物和 node_modules):
gradlew.bat archive
输出文件:build/distributions/finance-app-0.0.1-SNAPSHOT-{时间戳}.tar.gz
测试账号
| 用户名 | 密码 |
|---|---|
| demo | 123456 |
项目结构
my-app/
├── build.gradle
├── src/main/java/com/example/myapp/
│ ├── 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/ # 页面组件
Languages
Java
62%
Vue
26.2%
TypeScript
10.8%
Go Template
0.9%