个人财富全景管理系统 AssetMe【内容均为AI制作】

个人财富全景管理系统 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 安装包使用教程

安装步骤

  1. 下载安装包 :获取 AssetMe-Setup-vX.X.X.exe
  2. 运行安装程序 :双击 exe,按向导完成安装(默认路径 C:\Program Files\AssetMe
  3. 启动方式
    • 桌面快捷方式「AssetMe」
    • 开始菜单 → AssetMe → 启动 AssetMe
  4. 自动打开浏览器 :启动后约 15 秒自动打开 http://localhost:8080
  5. 默认账号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
相关推荐
peterfei2 小时前
我给 CLI 加了个「长期记忆」,1200 行代码让 AI 记住你的所有偏好
ai编程
Niubility2 小时前
AI 让一个人干一家公司?现实卡在 Vibe Coding 这一关
ai编程·claude·vibecoding
刀法如飞2 小时前
Rust数组去重的20种实现方式,AI时代用不同思路解决问题
人工智能·算法·ai编程
jay神2 小时前
基于SpringBoot的宠物生命周期信息管理系统
java·数据库·spring boot·后端·web开发·宠物·管理系统
万亿少女的梦1682 小时前
基于SpringBoot的在线考试管理系统设计与实现
java·spring boot·后端
喜欢打篮球的普通人2 小时前
claude code 基础分享
ai编程
w1wi3 小时前
【Vibe Coding】TCP/UDP包篡改重放工具
人工智能·网络协议·tcp/ip·ai·udp·ai编程
下次再写3 小时前
【Redis实战】深入理解Redis缓存策略:从原理到Spring Boot实践
java·spring boot·redis·缓存穿透·缓存击穿·分布式缓存·缓存策略
小白君6534 小时前
互联网大厂Java面试:从Spring Boot到微服务的技术场景深度解析
spring boot·redis·微服务·消息队列·java面试·数据库优化