一、个人简介
💖💖作者:计算机编程果茶熊
💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💕💕文末获取源码联系计算机编程果茶熊
二、系统介绍
开发语言:Java+Python
数据库:MySQL
系统架构:B/S
后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django
前端:Vue+HTML+CSS+JavaScript+jQuery
美容店信息管理系统是一套基于B/S架构的综合管理平台,采用Java/Python双语言支持,分别基于Spring Boot(Spring+SpringMVC+Mybatis)和Django框架开发,前端采用Vue+ElementUI+HTML技术栈,数据库使用MySQL。系统功能全面覆盖美容店日常运营所需的各项管理需求,包括系统首页信息展示、个人中心资料管理、用户权限管理、美容服务项目管理、服务类型分类管理、员工信息及排班管理、服务预约流程管理、会员充值管理、消费记录追踪管理、留言板互动管理、论坛交流管理以及系统基础配置管理等十二大功能模块。该系统通过前后端分离的开发模式,实现了数据的高效处理与美观的用户界面,为美容店提供了从客户管理、服务预约到财务统计的一站式信息化解决方案,有效提升了美容店的运营效率和客户满意度,是美容行业数字化转型的理想选择。
三、美容店信息管理系统-视频解说
毕设还没开始做?同学们都在开发美容店信息管理系统,你却还在发愁选题?|计算机毕业设计|Python
四、美容店信息管理系统-功能展示
以下仅展示部分功能:
后台管理员账号首页
后台管理员查看信息
后台员工账号查看信息
前台首页
前台美容资讯
前台美容服务
前台个人中心
服务详情
登陆验证
五、美容店信息管理系统-代码展示
```
// 核心功能1: 服务预约管理
@Service
public class AppointmentServiceImpl implements AppointmentService {
@Autowired
private AppointmentMapper appointmentMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private BeautyServiceMapper beautyServiceMapper;
@Autowired
private EmployeeMapper employeeMapper;
@Override
@Transactional
public ResponseResult createAppointment(AppointmentDTO appointmentDTO) {
// 验证客户是否存在
User user = userMapper.selectById(appointmentDTO.getUserId());
if (user == null) {
return ResponseResult.error("预约失败,客户不存在");
}
// 验证服务项目是否存在
BeautyService service = beautyServiceMapper.selectById(appointmentDTO.getServiceId());
if (service == null) {
return ResponseResult.error("预约失败,服务项目不存在");
}
// 验证美容师是否存在且可用
Employee employee = employeeMapper.selectById(appointmentDTO.getEmployeeId());
if (employee == null || !employee.getStatus().equals(EmployeeStatus.ACTIVE)) {
return ResponseResult.error("预约失败,美容师不可用");
}
// 检查所选时间段是否已被预约
List<Appointment> conflictAppointments = appointmentMapper.findConflictAppointments(
appointmentDTO.getEmployeeId(),
appointmentDTO.getAppointmentDate(),
appointmentDTO.getStartTime(),
appointmentDTO.getEndTime()
);
if (!conflictAppointments.isEmpty()) {
return ResponseResult.error("预约失败,所选时间段已被预约");
}
// 创建预约记录
Appointment appointment = new Appointment();
BeanUtils.copyProperties(appointmentDTO, appointment);
appointment.setStatus(AppointmentStatus.PENDING);
appointment.setCreateTime(new Date());
appointment.setUpdateTime(new Date());
// 计算预约服务的总价
BigDecimal totalPrice = service.getPrice();
if (user.getMemberLevel() > 0) {
// 会员折扣
BigDecimal discount = new BigDecimal("0.9").subtract(new BigDecimal(user.getMemberLevel() - 1).multiply(new BigDecimal("0.05")));
totalPrice = totalPrice.multiply(discount).setScale(2, RoundingMode.HALF_UP);
}
appointment.setTotalPrice(totalPrice);
// 保存预约记录
appointmentMapper.insert(appointment);
// 发送预约通知
sendAppointmentNotification(appointment, user, employee, service);
return ResponseResult.success("预约成功", appointment);
}
}
// 核心功能2: 会员充值管理
@Service
public class MemberRechargeServiceImpl implements MemberRechargeService {
@Autowired
private MemberRechargeMapper rechargeMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private TransactionHistoryMapper transactionMapper;
@Override
@Transactional
public ResponseResult processRecharge(RechargeDTO rechargeDTO) {
// 验证用户是否存在
User user = userMapper.selectById(rechargeDTO.getUserId());
if (user == null) {
return ResponseResult.error("充值失败,用户不存在");
}
// 验证充值金额
if (rechargeDTO.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
return ResponseResult.error("充值失败,充值金额必须大于0");
}
// 创建充值记录
MemberRecharge recharge = new MemberRecharge();
BeanUtils.copyProperties(rechargeDTO, recharge);
recharge.setRechargeTime(new Date());
recharge.setStatus(RechargeStatus.PROCESSING);
// 计算赠送金额
BigDecimal bonusAmount = calculateBonusAmount(rechargeDTO.getAmount());
recharge.setBonusAmount(bonusAmount);
// 保存充值记录
rechargeMapper.insert(recharge);
try {
// 模拟支付过程
boolean paymentSuccess = processPayment(rechargeDTO);
if (paymentSuccess) {
// 更新充值状态
recharge.setStatus(RechargeStatus.SUCCESS);
rechargeMapper.updateById(recharge);
// 更新用户余额
BigDecimal totalAmount = rechargeDTO.getAmount().add(bonusAmount);
user.setBalance(user.getBalance().add(totalAmount));
// 更新会员等级
updateMemberLevel(user);
userMapper.updateById(user);
// 记录交易历史
TransactionHistory transaction = new TransactionHistory();
transaction.setUserId(user.getId());
transaction.setType(TransactionType.RECHARGE);
transaction.setAmount(totalAmount);
transaction.setDescription("会员充值 " + rechargeDTO.getAmount() + " 元,赠送 " + bonusAmount + " 元");
transaction.setCreateTime(new Date());
transactionMapper.insert(transaction);
return ResponseResult.success("充值成功", recharge);
} else {
// 支付失败
recharge.setStatus(RechargeStatus.FAILED);
rechargeMapper.updateById(recharge);
return ResponseResult.error("充值失败,支付处理异常");
}
} catch (Exception e) {
// 异常处理
recharge.setStatus(RechargeStatus.FAILED);
rechargeMapper.updateById(recharge);
return ResponseResult.error("充值失败,系统异常:" + e.getMessage());
}
}
private BigDecimal calculateBonusAmount(BigDecimal rechargeAmount) {
// 充值满1000送200,满2000送500,满5000送1500
if (rechargeAmount.compareTo(new BigDecimal(5000)) >= 0) {
return new BigDecimal(1500);
} else if (rechargeAmount.compareTo(new BigDecimal(2000)) >= 0) {
return new BigDecimal(500);
} else if (rechargeAmount.compareTo(new BigDecimal(1000)) >= 0) {
return new BigDecimal(200);
}
return BigDecimal.ZERO;
}
}
// 核心功能3: 消费记录管理
@Service
public class ConsumptionRecordServiceImpl implements ConsumptionRecordService {
@Autowired
private ConsumptionRecordMapper consumptionMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private BeautyServiceMapper serviceMapper;
@Autowired
private TransactionHistoryMapper transactionMapper;
@Override
@Transactional
public ResponseResult createConsumptionRecord(ConsumptionRecordDTO recordDTO) {
// 验证用户是否存在
User user = userMapper.selectById(recordDTO.getUserId());
if (user == null) {
return ResponseResult.error("创建消费记录失败,用户不存在");
}
// 验证服务项目是否存在
BeautyService service = null;
if (recordDTO.getServiceId() != null) {
service = serviceMapper.selectById(recordDTO.getServiceId());
if (service == null) {
return ResponseResult.error("创建消费记录失败,服务项目不存在");
}
}
// 创建消费记录
ConsumptionRecord record = new ConsumptionRecord();
BeanUtils.copyProperties(recordDTO, record);
record.setConsumeTime(new Date());
// 计算实际消费金额(考虑会员折扣)
BigDecimal actualAmount = recordDTO.getAmount();
if (user.getMemberLevel() > 0 && service != null) {
// 会员折扣只适用于服务项目,不适用于产品购买
BigDecimal discount = new BigDecimal("0.9").subtract(new BigDecimal(user.getMemberLevel() - 1).multiply(new BigDecimal("0.05")));
actualAmount = actualAmount.multiply(discount).setScale(2, RoundingMode.HALF_UP);
record.setDiscountAmount(recordDTO.getAmount().subtract(actualAmount));
}
record.setActualAmount(actualAmount);
// 检查用户余额是否足够
if (recordDTO.getPaymentMethod() == PaymentMethod.BALANCE) {
if (user.getBalance().compareTo(actualAmount) < 0) {
return ResponseResult.error("消费失败,用户余额不足");
}
// 扣减用户余额
user.setBalance(user.getBalance().subtract(actualAmount));
user.setTotalConsumption(use
```
六、美容店信息管理系统-文档展示
以下仅展示部分文档:
七、END
💕💕文末获取源码联系计算机编程果茶熊