1. 项目背景与核心价值
黔醉酒业白酒销售系统是一个典型的电商平台项目,它巧妙地将传统白酒销售业务与现代推荐算法相结合。我在实际开发中发现,白酒行业有其特殊性——用户往往对特定香型、年份有明确偏好,但又容易被同类新品吸引。这正是协同过滤算法能大显身手的地方。
这个项目采用SpringBoot+Vue的主流技术栈,前后端完全分离。后端用SpringBoot构建RESTful API,处理核心业务逻辑;前端用Vue.js实现动态交互,ElementUI提供美观的界面组件。数据库选用MySQL 8.0,充分利用其JSON字段特性存储用户行为数据。
提示:白酒销售系统的商品属性比普通电商更复杂,需要特别关注香型(酱香、浓香等)、酒精度、年份等关键字段的设计。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 技术选型决策过程
选择SpringBoot而非传统SSM框架,主要基于三点考量:
- 内嵌Tomcat简化部署,特别适合学生快速搭建演示环境
- Starter机制能快速集成MyBatis-Plus、Redis等必备组件
- Actuator端点方便监控系统运行状态,这对毕设答辩演示很有帮助
前端选用Vue.js+ElementUI组合是因为:
- Vue的渐进式特性适合从简单页面逐步扩展
- ElementUI的表格、表单组件能快速构建后台管理系统
- 相比React,Vue的学习曲线更平缓,适合课设时间有限的情况
2.2 数据库设计精要
用户表(user)设计时特别注意了密码安全:
sql复制CREATE TABLE `user` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL COMMENT '登录名',
`password_hash` VARCHAR(100) NOT NULL COMMENT 'BCrypt加密密码',
`phone_number` VARCHAR(20) COMMENT '绑定手机',
`preference` JSON COMMENT '用户偏好{香型:["酱香"], 酒精度:[52]}',
PRIMARY KEY (`user_id`),
UNIQUE INDEX `username_UNIQUE` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
商品表(product)的关键字段:
sql复制`product_type` ENUM('酱香','浓香','清香','兼香') NOT NULL COMMENT '白酒香型',
`alcohol_degree` DECIMAL(3,1) NOT NULL COMMENT '酒精度数',
`production_year` YEAR NOT NULL COMMENT '生产年份'
3. 协同过滤算法实现
3.1 用户-商品评分矩阵构建
实际开发中发现,白酒销售场景不能简单套用电影推荐的5分制。我们创新性地采用三维评分体系:
| 行为类型 | 权重 | 计算方式 |
|---|---|---|
| 浏览 | 0.3 | 每次+0.5分 |
| 收藏 | 0.5 | 每次+2分 |
| 购买 | 1.0 | 实际购买数量×单价/100 |
Java实现片段:
java复制public class CFRecommender {
// 用户相似度计算(皮尔逊系数)
public double similarity(Map<Integer, Double> user1,
Map<Inte
