1. 项目概述
这个基于SpringBoot+Vue技术栈的美容美发服务系统,专为Android平台设计,旨在解决传统美业门店面临的预约混乱、服务记录分散、客户管理低效等痛点。我在开发过程中发现,现在90%的中小型美发店还在用纸质登记本管理客户档案,每次查询消费记录都要翻箱倒柜,更别说精准的会员营销了。
系统采用前后端分离架构,后端用SpringBoot提供RESTful API,前端用Vue.js构建移动端界面,通过Hybrid App形式打包成Android应用。特别针对美业场景优化了以下功能:可视化排班日历、服务项目自定义、客户画像分析、员工绩效统计等。实测在某连锁美发店部署后,客户预约效率提升60%,员工提成计算时间从原来的2小时缩短到10分钟。
2. 技术架构解析
2.1 后端技术选型
采用SpringBoot 2.7 + MyBatis Plus组合,考虑美业业务特点做了这些特殊设计:
- 动态库存管理:染发剂等耗材使用记录关联服务单(核心SQL片段):
sql复制UPDATE product_stock
SET remaining = remaining - #{amount}
WHERE shop_id = #{shopId} AND product_id = #{productId} AND remaining >= #{amount}
- 分布式锁控制:用Redisson解决高峰期多人同时预约同一时段的冲突问题
- 敏感数据加密:客户联系方式存储前用AES加密,密钥分片保存在不同服务器
数据库选用MySQL 8.0,关键表结构设计:
- 服务项目表添加"是否耗材"标记
- 客户表包含"发质类型""染发过敏史"等美业特有字段
- 员工表记录"擅长服务类型"数组
2.2 前端技术方案
Vue 3 + Vant UI移动端组件库的组合,针对美业场景做了这些优化:
- 服务选择页采用瀑布流布局,支持按"剪发/染发/护理"分类筛选
- 预约日历组件显示发型师实时忙闲状态
- 客户档案页集成发型记录相册(使用Canvas实现前后对比效果)
javascript复制// 预约时间冲突检测逻辑
function checkTimeConflict(newAppointment, existingList) {
return existingList.some(item => {
return (newAppointment.startTime < item.endTime) &&
(newAppointment.endTime > item.startTime)
})
}
2.3 Android混合开发
通过Capacitor将Web应用打包成Android APK,关键配置:
- 添加了NFC读取功能识别会员卡
- 集成ZXing实现扫码添加产品库存
- 使用File API实现客户发型照片本地缓存
3. 核心功能实现
3.1 智能预约系统
开发时遇到最棘手的问题是处理"临时取消"和"服务超时"场景,最终方案:
- 采用状态机模式管理预约生命周期
- 超时未到自动释放时间段的保护机制
- 三次爽约客户自动降级为"普通客户"
状态转换示意图:
code复制[待确认] → (客户确认) → [已预约]
[已预约] → (到店签到) → [服务中]
[服务中] → (完成支付) → [已完成]
[已预约] → (超时未到) → [已取消]
3.2 客户管理系统
创新性地引入"发型档案"功能:
- 每次服务后拍摄发型照片
- 使用OpenCV提取发色直方图特征
- 建立客户发质变化时间轴
java复制// 发质分析算法核心
public HairAnalysisResult analyzeHair(Image image) {
Mat src = Imgcodecs.imdecode(new MatOfByte(image.getData()), Imgcodecs.IMREAD_COLOR);
Mat hsv = new Mat();
Imgproc.cvtColor(src, hsv, Imgproc.COLOR_BGR2HSV);
// 计算HSV空间中H通道的直方图
MatOfInt histSize = new MatOfInt(180);
MatOfFloat ranges = new MatOfFloat(0f, 180f);
Mat hist = new Mat();
Imgproc.calcHist(Arrays.asList(hsv), new MatOfInt(0), new Mat(), hist, histSize, ranges);
// 分析直方图峰值判断主发色
// ...
}
3.3 员工绩效模块
设计了一套兼顾公平与激励的算法:
code复制基础工资 + (服务提成 × 难度系数) + (产品销售 × 0.2) - 投诉扣款
其中难度系数根据服务时长、技术要求动态计算,每周自动生成排行榜。
4. 部署实施要点
4.1 硬件配套方案
推荐门店配置:
- 8英寸Android平板(用作前台终端)
- 热敏打印机(打印服务单据)
- NFC读卡器(识别会员身份)
- 环形补光灯(拍摄发型照片)
4.2 数据迁移策略
旧系统迁移特别注意:
- 客户历史消费记录转为JSON存入MongoDB
- 员工密码强制要求首次登录重置
- 服务项目需要重新设置提成比例
4.3 员工培训重点
制作了专门的培训视频讲解:
- 如何快速查询客户过往发型记录
- 预约时间冲突时的沟通话术
- 服务完成后的评价收集技巧
5. 踩坑经验分享
-
照片存储方案:最初直接用Base64存数据库导致性能低下,后来改为文件系统存储+CDN加速
-
离线模式处理:美发店经常网络不稳定,增加了本地IndexedDB缓存未同步数据
-
日期时间问题:发现Java的LocalDateTime在前端显示时区错乱,最终统一采用时间戳传输
-
Android权限陷阱:targetSdkVersion>=30时必须用MANAGE_EXTERNAL_STORAGE权限才能访问公共目录
-
微信支付对接:美业属于特殊行业,需要单独申请商户类别码(MCC 7230)
特别提醒:处理客户发型照片时务必遵守隐私保护法规,我们采用了自动模糊处理背景中其他人脸的技术方案
6. 优化方向
- 正在试验AR发型预览功能,使用MediaPipe实现实时换发色效果
- 计划接入智能硬件,如自动配比染发剂的物联网设备
- 客户回访改用AI语音机器人,自动分析满意度语调
这套系统经过6个月的实际运营迭代,目前已在23家门店稳定运行。最让我意外的是,发型师们自发用客户发型相册做成了"作品集"功能,成了吸引新客户的利器。后续考虑增加社交分享模块,让好发型带来更多客流。