个人财富全景管理系统 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
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐