个人财富全景管理系统 AssetMe
「收支 + 流动现金 + 固定资产」三位一体的个人财富全景管理系统
版本 :v1.5
说明 :本项目全部内容均由WorkBuddy(腾讯小龙虾免费积分)生成
补充:这里的资源好像无法免费下载,大家需要的话可以私信我
📖 项目简介
AssetMe 是一款面向个人用户的财富管理桌面应用,核心解决三个问题:
- 💰 钱怎么来的? ------ 收入来源分析与追踪
- 💸 钱花哪了? ------ 支出分布与预算控制
- 🏠 我拥有什么? ------ 固定资产的"人生档案"管理
系统采用深色科技风 UI 设计,数据可视化驱动,让每一笔收支、每一件物品都清晰可见。
✨ 功能介绍
1. 总览仪表盘

系统首页,一屏掌握全貌:
| 区域 | 内容 |
|---|---|
| 核心指标卡片 | 总资产、净资产、本月结余、结余率,带环比变化箭头 |
| 资产结构饼图 | 流动资产 / 固定资产 / 投资资产的占比分布 |
| 收支趋势图 | 支持 3/6/12/24/36 个月切换,收入与支出双折线对比 |
| 本月支出 Top5 | 一级分类支出排行,快速定位消费大头 |
| 近期活动流水 | 最近收支记录一览 |
| 保修提醒 | 固定资产保修到期倒计时预警 |
| 财务目标进度 | 储蓄/理财目标完成百分比 |
2. 收支分析

收支录入 + 数据图表一站式管理:
录入功能:
- 收入录入:金额、日期、来源分类(工资/奖金/副业/理财/红包等)、是否税后、入账账户
- 支出录入:金额、日期、一级/二级分类、标签(必要/想要/投资/浪费)、关联账户
- 支持编辑、删除,表单弹窗操作
图表分析:
- 📊 收入趋势折线图
- 📊 支出趋势折线图
- 🥧 收入来源环形图
- 🥧 支出分类环形图
- 📊 月度收支对比柱状图
Excel 导入导出:
- 支持下载收入/支出 Excel 模板(含下拉验证+示例行)
- 支持上传 Excel 批量导入数据
3. 固定资产管理

参考"归物App"理念,为每件物品建立完整的生命周期档案:
物品卡片展示:
- 分类图标 + 渐变色背景(数码/交通/家居/电器/服饰/健康/其他)
- 自动计算:陪伴天数、日均成本(购入价 ÷ 使用天数)
- 保修状态标签:正常 / 即将到期 / 已过保
录入字段:
- 基础信息:名称、品牌、分类、标签
- 购入信息:购入日期、购入价格、购买渠道
- 保修信息:保修截止日期
- 状态:使用中 / 已退役 / 闲置 / 已转卖
- 其他:当前估值、备注
筛选与排序:
- 按状态、分类、品牌筛选
- 关键词搜索
- 陪伴天数/日均成本/价格排序
统计图表:
- 分类统计环形图
- 品牌分布图
- 固定资产总值 + 物品总数
4. 预算管理

实时预算监控 + 预支出模拟:
预算概览:
- 本月总预算 / 已支出 / 剩余
- 预算使用进度条(绿 → 黄 → 红三级预警)
- 预警阈值:70% 黄色提示,90% 红色警告
分类预算:
- 按一级支出分类设置月度预算
- 支持快速编辑调整预算金额
- 展开查看二级分类明细支出
预支出模拟器:
- 输入计划外大额支出 → 计算对月度结余的影响
- 失业模拟:无收入情况下现有资产可支撑月数
- 储蓄目标模拟:输入目标金额 → 推荐需削减的支出项
- 购物决策:计算新物品日均成本,辅助判断"值不值得买"
5. 交易记录

收支明细一站式管理:
- 📋 收入/支出 Tab 切换
- 🔍 按日期范围、分类、来源/标签筛选
- ➕ 快捷录入(复用收支分析录入弹窗)
- ✏️ 行内编辑 / 🗑️ 删除
- 📄 分页浏览
6. 账户管理

多账户管理,自动计算净资产:
支持的账户类型:
| 类型 | 说明 | 余额含义 |
|---|---|---|
| 💵 现金 | 手头现金 | 正数=持有 |
| 🏦 存款 | 银行活期/定期 | 正数=持有 |
| 📈 投资 | 基金/股票/理财 | 正数=持有 |
| 💳 信用卡 | 信用账户 | 正数=欠款 |
| 🏠 贷款 | 房贷/车贷/消费贷 | 正数=欠款 |
- 收支录入时可关联账户,余额自动更新
- 账户排序支持拖拽调整
7. 财务目标

设定并追踪长期财务目标:
- 目标名称、目标金额、当前进度
- 起始日期、目标日期
- 进度条可视化
- 备注
8. 字典管理

⚠️ 仅管理员可见
全系统字典数据统一管理:
字典类型(8 种):
| 类型编码 | 名称 | 说明 |
|---|---|---|
income_source |
收入来源 | 工资/奖金/副业/理财收益等 |
expense_category |
支出分类 | 一级+二级分类(支持树形结构) |
expense_nature |
支出性质 | 必要/想要/投资/浪费 |
tag |
标签 | 通用标签 |
account_type |
账户类型 | 现金/存款/投资/信用卡/贷款 |
asset_category |
资产分类 | 数码/交通/家居/电器等 |
asset_brand |
资产品牌 | Apple/小米/华为等 |
asset_status |
资产状态 | 使用中/退役/闲置/转卖 |
功能特性:
- 🌳 支出分类支持二级树形展示(一级 → 二级展开)
- 🔀 拖拽排序调整顺序
- ✅ 启用/禁用字典项(禁用后不在选择器中显示)
- 🔒 系统内置项不可删除
9. 设置

系统配置与数据管理:
- 📤 数据导出:一键导出全量数据为 JSON(含收支、资产、预算、账户、目标、字典)
- 📥 数据导入:从 JSON 备份恢复数据
- 🗑️ 清空数据:重置所有业务数据(需二次确认)
- ℹ️ 系统信息:版本号、数据库类型等
👥 用户系统
| 特性 | 说明 |
|---|---|
| 认证方式 | JWT(HS256,24小时有效期) |
| 角色 | admin(超级管理员)/ user(普通用户) |
| 首个注册用户 | 自动成为 admin |
| 数据隔离 | 所有业务数据按 user_id 隔离 |
| 字典数据 | 全局共享,不按用户隔离 |
🖥️ EXE 安装包使用教程
安装步骤
- 下载安装包 :获取
AssetMe-Setup-vX.X.X.exe - 运行安装程序 :双击 exe,按向导完成安装(默认路径
C:\Program Files\AssetMe) - 启动方式 :
- 桌面快捷方式「AssetMe」
- 开始菜单 → AssetMe → 启动 AssetMe
- 自动打开浏览器 :启动后约 15 秒自动打开
http://localhost:8080 - 默认账号 :
admin/admin97
日常使用
| 操作 | 方法 |
|---|---|
| 启动 | 双击桌面快捷方式或 AssetMe.bat |
| 访问 | 浏览器打开 http://localhost:8080 |
| 停止 | 关闭黑色命令行窗口即可 |
| 查看数据库 | 访问 http://localhost:8080/h2-console(JDBC URL: jdbc:h2:file:./data/assetme,用户名: sa,密码为空) |
数据管理
| 操作 | 方法 |
|---|---|
| 备份数据 | 复制安装目录下 data/ 文件夹 |
| 恢复数据 | 将备份的 data/ 文件夹覆盖到安装目录 |
| 重置数据 | 删除 data/ 文件夹,重启应用自动重建 |
| 导出数据 | 在设置页面点击「导出数据」下载 JSON 文件 |
| 导入数据 | 在设置页面点击「导入数据」选择 JSON 备份文件 |
常见问题
| 问题 | 解决方案 |
|---|---|
| 端口 8080 被占用 | 编辑 AssetMe.bat,在 --spring.profiles.active=h2 后添加 --server.port=8081 |
| 浏览器未自动打开 | 手动访问 http://localhost:8080 |
| 启动后页面空白 | 等待 15-30 秒,服务启动需要时间 |
| 卸载后数据丢失? | 卸载不会删除 data/ 目录,重新安装即可恢复 |
🏗️ 项目架构
技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | React 18 + TypeScript | SPA 单页应用 |
| 构建 | Vite | 快速开发 & 打包 |
| 样式 | Tailwind CSS v4 | 原子化 CSS |
| UI 组件 | Ant Design 6.x | 企业级 UI 组件库 |
| 图表 | ECharts + echarts-for-react | 数据可视化 |
| 路由 | react-router-dom | 前端路由 |
| 图标 | lucide-react + @ant-design/icons | SVG 图标库 |
| 后端 | Java Spring Boot 3.3 | RESTful API |
| ORM | Spring Data JPA + Hibernate | 数据持久化 |
| 数据库(开发) | MySQL 8.0 | 外部数据库服务 |
| 数据库(打包版) | H2(嵌入式) | 文件数据库,零配置 |
| 认证 | JWT(HS256) | 无状态令牌认证 |
| 打包 | Inno Setup 6 | Windows 安装包制作 |
系统架构图
┌─────────────────────────────────────────────────────┐
│ 浏览器 (Chrome/Edge) │
│ React SPA + Ant Design + ECharts │
└──────────────────────┬──────────────────────────────┘
│ fetch(/api/*)
▼
┌─────────────────────────────────────────────────────┐
│ Spring Boot 3.3 (端口 8080) │
│ ┌───────────────────────────────────────────────┐ │
│ │ Controller 层 (RESTful API) │ │
│ │ ├─ IncomeController /api/incomes │ │
│ │ ├─ ExpenseController /api/expenses │ │
│ │ ├─ FixedAssetController /api/fixed-assets │ │
│ │ ├─ BudgetController /api/budgets │ │
│ │ ├─ AccountController /api/accounts │ │
│ │ ├─ GoalController /api/goals │ │
│ │ ├─ DictController /api/dict │ │
│ │ ├─ AuthController /api/auth │ │
│ │ ├─ DashboardController /api/dashboard │ │
│ │ └─ ImportController /api/import │ │
│ └───────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Service 层 (业务逻辑) │ │
│ │ ├─ IncomeService / ExpenseService / ... │ │
│ │ └─ AccountService (净资产计算) │ │
│ └───────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Repository 层 (Spring Data JPA) │ │
│ │ ├─ IncomeRepository / ExpenseRepository / ... │ │
│ │ └─ 自定义 @Query 方法 │ │
│ └───────────────┬───────────────────────────────┘ │
│ ▼ │
│ ┌──────────────────┬──────────────────────────┐ │
│ │ MySQL 8.0 │ H2 (嵌入式) │ │
│ │ (开发环境) │ (打包版) │ │
│ │ 端口: 3306 │ 文件: ./data/assetme │ │
│ └──────────────────┴──────────────────────────┘ │
└─────────────────────────────────────────────────────┘
目录结构
AssetMe/
├── app/ # 前端项目
│ ├── src/
│ │ ├── types/index.ts # 核心类型定义
│ │ ├── api/index.ts # API 客户端(fetch 封装)
│ │ ├── hooks/
│ │ │ ├── useApi.ts # 通用请求 Hook
│ │ │ └── useDict.ts # 字典数据全局缓存 Hook
│ │ ├── components/
│ │ │ └── Layout.tsx # 侧边栏导航布局
│ │ └── pages/
│ │ ├── Dashboard.tsx # 总览仪表盘
│ │ ├── Analysis.tsx # 收支分析
│ │ ├── Assets.tsx # 固定资产管理
│ │ ├── Budget.tsx # 预算管理 + 模拟器
│ │ ├── Transactions.tsx # 交易记录
│ │ ├── Accounts.tsx # 账户管理
│ │ ├── Goals.tsx # 财务目标
│ │ ├── DictManager.tsx # 字典管理(admin)
│ │ └── Settings.tsx # 设置(导入/导出)
│ ├── .env.development # 开发环境变量
│ ├── .env.production # 生产环境变量
│ └── vite.config.ts # Vite 配置
│
├── server/ # 后端项目
│ ├── src/main/java/com/assetme/
│ │ ├── AssetMeApplication.java # 启动类
│ │ ├── config/
│ │ │ ├── CorsConfig.java # CORS 跨域
│ │ │ ├── GlobalExceptionHandler.java # 全局异常
│ │ │ ├── H2WebMvcConfig.java # H2 模式 API 前缀(@Profile("h2"))
│ │ │ └── H2SpaForwardConfig.java # H2 模式 SPA 路由(@Profile("h2"))
│ │ ├── dto/ # 数据传输对象
│ │ ├── entity/ # JPA 实体
│ │ ├── repository/ # 数据访问层
│ │ ├── service/ # 业务逻辑层
│ │ └── controller/ # REST 控制器
│ ├── src/main/resources/
│ │ ├── application.yml # 公共配置
│ │ ├── application-mysql.yml # MySQL Profile
│ │ ├── application-h2.yml # H2 Profile
│ │ ├── schema-h2.sql # H2 建表脚本
│ │ ├── data-h2.sql # H2 种子数据
│ │ └── static/ # 前端构建产物
│ ├── sql/
│ │ └── assetme.sql # MySQL 完整备份
│ └── installer/
│ └── AssetMe.iss # Inno Setup 安装脚本
│
├── package.bat # 一键打包脚本
├── PACKAGING.md # 打包部署指南
└── 项目介绍/ # 本文档所在目录
数据库设计
9 张表:
| 表名 | 说明 | 核心字段 |
|---|---|---|
users |
用户表 | username, password(BCrypt), role(admin/user) |
incomes |
收入表 | amount, date, source, is_after_tax, account_id |
expenses |
支出表 | amount, date, category_l1, category_l2, tag, account_id |
fixed_assets |
固定资产表 | name, brand, category, purchase_price, warranty_expiry, status |
budgets |
预算表 | month, category_l1, budget_amount |
accounts |
账户表 | type, name, balance, sort_order |
financial_goals |
财务目标表 | name, target_amount, current_amount, start_date, target_date |
dict_types |
字典类型表 | code, name, is_system |
dict_items |
字典项表 | type_code, value, label, parent_value, is_active, sort_order |
所有主键均为 UUID(VARCHAR(100)) ,业务表按 user_id 数据隔离。
双模式架构
系统支持两种运行模式,通过 Spring Profile 切换:
| 配置项 | MySQL 模式(开发) | H2 模式(打包) |
|---|---|---|
spring.profiles.active |
mysql |
h2 |
context-path |
/api |
/(根路径) |
| API 前缀来源 | context-path | H2WebMvcConfig 给 Controller 加 /api |
| 数据库 | MySQL 8.0 外部服务 | H2 文件数据库(嵌入式) |
| 前端部署 | Vite Dev Server (:5173) | Spring Boot static/ 目录 |
| SPA 路由 | Vite 处理 | H2SpaForwardConfig 404→index.html |