1. 项目背景与核心价值
大学生消费管理一直是校园生活中的痛点问题。根据某高校2022年调研数据显示,超过73%的学生存在月末资金紧张情况,其中60%坦言"根本不知道钱花到哪里去了"。这个基于SpringBoot+Vue+MyBatis+MySQL的智能记账系统,正是为解决这一实际问题而设计。
我在开发过程中发现,传统记账应用存在三个致命缺陷:一是数据孤岛现象严重,二是分析维度单一,三是缺乏消费预警机制。而本系统通过前后端分离架构,实现了三大突破:
- 多终端数据同步:采用RESTful API设计,无论是微信小程序、APP还是网页端,消费数据实时云端同步
- 智能分析引擎:内置基于时间序列的消费模式识别算法,能自动标记异常消费行为
- 场景化预警:当餐饮支出超过日均值200%时,系统会推送"最近吃大餐了?"的趣味提醒
技术选型上,SpringBoot 2.7.4提供稳定的后端服务,Vue3组合式API带来流畅的前端体验,MyBatis-Plus 3.5.2简化数据库操作,MySQL 8.0作为可靠的数据存储方案。这个技术栈组合经过我们团队在三个校园项目的实战验证,在开发效率与系统稳定性之间取得了完美平衡。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据库设计与优化实践
2.1 核心表结构设计
消费系统的数据库模型需要平衡查询效率与扩展性。经过三次迭代,最终确定的表结构如下:
sql复制CREATE TABLE `t_user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`student_id` varchar(20) NOT NULL COMMENT '学号',
`password` varchar(64) NOT NULL COMMENT 'SHA256加密密码',
`nickname` varchar(30) DEFAULT NULL COMMENT '昵称',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',
`daily_budget` decimal(10,2) DEFAULT 50.00 COMMENT '每日预算',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_student_id` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `t_consumption` (
`id` bigint NOT NULL AUTO_INCREMENT,
`user_id` bigint NOT NULL,
`amount` decimal(10,2) NOT NULL COMMENT '金额',
`category_id` int NOT NULL COMMENT '消费分类',
`payment_method` tinyint NOT NULL COMMENT '1现金 2支付宝 3微信 4银行卡',
`location` varchar(100) DEFAULT NULL COMMENT '消费地点',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`consumption_time` datetime NOT NULL COMMENT '消费时间',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_time` (`user_id`,`consumption_time`),
KEY `idx_category` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2.2 性能优化关键点
-
索引策略:在consumption表建立了复合索引(user_id, consumption_time),使按月查询速度提升8倍。测试数据表明,无索引时查询2023年9月消费记录耗时487ms,添加索引后降至58ms。
-
字段选型:
- 金额使用DECIMAL(10,2)而非FLO
