毕设没思路?《家政服务网站设计与开发》手把手教学,从需求分析到代码实现|计算机毕业设计

30 阅读5分钟

一、个人简介

💖💖作者:计算机编程果茶熊

💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!

💛💛想说的话:感谢大家的关注与支持!

💕💕文末获取源码联系计算机编程果茶熊

二、前言

开发语言:Java+Python

数据库:MySQL

系统架构:B/S

后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django

前端:Vue+HTML+CSS+JavaScript+jQuery

《家政服务网站系统》是一套完整的家政服务管理解决方案,采用B/S架构,支持Java和Python双版本实现。Java版基于Spring Boot(Spring+SpringMVC+Mybatis)框架开发,Python版则使用Django框架,前端统一采用Vue+ElementUI+HTML技术栈,数据库选用MySQL。系统功能全面,包括会员管理、服务人员管理、会员等级管理、服务类型管理、家政信息管理、服务下单管理、服务接单管理、服务费用管理、服务评价管理、服务投诉管理、问卷调查管理及问卷调查题管理等十二大核心模块,实现了从用户注册、服务人员录入、服务发布到订单处理、评价反馈的完整业务流程。该系统通过前后端分离的开发模式,确保了界面美观与功能稳定性,同时为家政服务提供商提供了高效的业务管理平台,使家政服务供需双方能够便捷地进行信息交流、服务匹配和质量监督,有效提升了家政服务的数字化管理水平和用户体验。

三、家政服务网站系统-视频解说

毕设没思路?《家政服务网站设计与开发》手把手教学,从需求分析到代码实现|计算机毕业设计

四、家政服务网站系统-功能介绍

以下仅展示部分功能:

1.前台首页

2.前台家政信息列表

3.前台家政服务推荐

4.前台公告信息

5.前台个人信息

6.前台问卷调查

7.前台登录页

8.后台家政服务员系统页面

9.后台管理员首页

10.后台管理员问卷调查题管理

五、家政服务网站系统-代码展示

以下仅展示部分代码:

// 核心功能1: 服务下单管理
@Service
public class OrderServiceImpl implements OrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private ServiceInfoMapper serviceInfoMapper;
    @Autowired
    private MemberMapper memberMapper;
    
    @Transactional
    public ResponseResult placeOrder(OrderDTO orderDTO) {
        // 验证会员信息
        Member member = memberMapper.selectById(orderDTO.getMemberId());
        if (member == null) {
            return ResponseResult.error("会员不存在");
        }
        
        // 验证服务信息
        ServiceInfo serviceInfo = serviceInfoMapper.selectById(orderDTO.getServiceId());
        if (serviceInfo == null) {
            return ResponseResult.error("所选服务不存在");
        }
        
        // 检查服务是否可用
        if (serviceInfo.getStatus() != 1) {
            return ResponseResult.error("该服务暂不可用");
        }
        
        // 计算服务费用
        BigDecimal totalFee = calculateOrderFee(serviceInfo, orderDTO.getServiceHours(), member.getMemberLevel());
        
        // 创建订单
        Order order = new Order();
        order.setOrderNo(generateOrderNo());
        order.setMemberId(orderDTO.getMemberId());
        order.setServiceId(orderDTO.getServiceId());
        order.setServiceAddress(orderDTO.getAddress());
        order.setContactPhone(orderDTO.getContactPhone());
        order.setServiceTime(orderDTO.getServiceTime());
        order.setServiceHours(orderDTO.getServiceHours());
        order.setRequirements(orderDTO.getRequirements());
        order.setTotalFee(totalFee);
        order.setStatus(OrderStatusEnum.WAITING.getCode());
        order.setCreateTime(new Date());
        
        // 保存订单
        orderMapper.insert(order);
        
        // 更新服务信息的预约次数
        serviceInfoMapper.updateOrderCount(orderDTO.getServiceId());
        
        // 发送订单通知
        sendOrderNotification(order, serviceInfo);
        
        return ResponseResult.success(order);
    }
    
    private BigDecimal calculateOrderFee(ServiceInfo serviceInfo, Integer hours, Integer memberLevel) {
        // 基础费用计算
        BigDecimal baseFee = serviceInfo.getHourlyRate().multiply(new BigDecimal(hours));
        
        // 会员折扣计算
        BigDecimal discount = getMemberDiscount(memberLevel);
        
        // 应用折扣
        BigDecimal discountedFee = baseFee.multiply(discount);
        
        // 额外费用计算(如特殊时段、节假日等)
        BigDecimal extraFee = calculateExtraFee(serviceInfo, hours);
        
        return discountedFee.add(extraFee).setScale(2, RoundingMode.HALF_UP);
    }
}


// 核心功能2: 服务接单管理
@Service
public class ServiceAssignmentImpl implements ServiceAssignmentService {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private ServiceStaffMapper staffMapper;
    @Autowired
    private ServiceAssignmentMapper assignmentMapper;
    
    @Transactional
    public ResponseResult assignServiceStaff(Long orderId, Long staffId) {
        // 获取订单信息
        Order order = orderMapper.selectById(orderId);
        if (order == null) {
            return ResponseResult.error("订单不存在");
        }
        
        // 检查订单状态
        if (order.getStatus() != OrderStatusEnum.WAITING.getCode()) {
            return ResponseResult.error("该订单状态不允许分配服务人员");
        }
        
        // 获取服务人员信息
        ServiceStaff staff = staffMapper.selectById(staffId);
        if (staff == null) {
            return ResponseResult.error("服务人员不存在");
        }
        
        // 检查服务人员状态
        if (staff.getStatus() != StaffStatusEnum.AVAILABLE.getCode()) {
            return ResponseResult.error("该服务人员当前不可用");
        }
        
        // 检查服务人员技能是否匹配订单要求
        ServiceInfo serviceInfo = serviceInfoMapper.selectById(order.getServiceId());
        if (!checkSkillMatch(staff, serviceInfo)) {
            return ResponseResult.error("该服务人员技能不匹配订单要求");
        }
        
        // 检查服务人员时间是否冲突
        if (checkTimeConflict(staffId, order.getServiceTime(), order.getServiceHours())) {
            return ResponseResult.error("该服务人员在所选时间段已有其他订单");
        }
        
        // 创建服务分配记录
        ServiceAssignment assignment = new ServiceAssignment();
        assignment.setOrderId(orderId);
        assignment.setStaffId(staffId);
        assignment.setAssignTime(new Date());
        assignment.setStatus(AssignmentStatusEnum.ASSIGNED.getCode());
        
        // 保存分配记录
        assignmentMapper.insert(assignment);
        
        // 更新订单状态
        order.setStatus(OrderStatusEnum.ASSIGNED.getCode());
        orderMapper.updateById(order);
        
        // 更新服务人员状态
        staff.setCurrentOrderCount(staff.getCurrentOrderCount() + 1);
        staffMapper.updateById(staff);
        
        // 发送通知给服务人员和客户
        notifyStaffAndCustomer(order, staff);
        
        return ResponseResult.success("服务人员分配成功");
    }
    
    private boolean checkSkillMatch(ServiceStaff staff, ServiceInfo serviceInfo) {
        List<StaffSkill> staffSkills = staffSkillMapper.selectByStaffId(staff.getId());
        Set<Integer> skillIds = staffSkills.stream()
            .map(StaffSkill::getSkillId)
            .collect(Collectors.toSet());
        
        // 检查服务所需技能是否都包含在服务人员技能中
        List<ServiceSkill> requiredSkills = serviceSkillMapper.selectByServiceId(serviceInfo.getId());
        for (ServiceSkill skill : requiredSkills) {
            if (!skillIds.contains(skill.getSkillId())) {
                return false;
            }
        }
        return true;
    }
}


// 核心功能3: 服务评价管理
@Service
public class ServiceEvaluationImpl implements ServiceEvaluationService {
    @Autowired
    private EvaluationMapper evaluationMapper;
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private ServiceStaffMapper staffMapper;
    @Autowired
    private MemberMapper memberMapper;
    
    @Transactional
    public ResponseResult submitEvaluation(EvaluationDTO evaluationDTO) {
        // 验证订单信息
        Order order = orderMapper.selectById(evaluationDTO.getOrderId());
        if (order == null) {
            return ResponseResult.error("订单不存在");
        }
        
        // 检查订单状态是否已完成
        if (order.getStatus() != OrderStatusEnum.COMPLETED.getCode()) {
            return ResponseResult.error("只能评价已完成的订单");
        }
        
        // 检查是否已评价
        Evaluation existingEval = evaluationMapper.selectByOrderId(evaluationDTO.getOrderId());
        if (existingEval != null) {
            return ResponseResult.error("该订单已评价,不能重复评价");
        }
        
        // 获取服务人员信息
        ServiceAssignment assignment = assignmentMapper.selectByOrderId(order.getId());
        if (assignment == null) {
            return ResponseResult.error("订单未分配服务人员");
        }
        
        // 创建评价记录
        Evaluation evaluation = new Evaluation();
        evaluation.setOrderId(evaluationDTO.getOrderId());
        evaluation.setMemberId(order.getMemberId());
        evaluation.setStaffId(assignment.getStaffId());
        evaluation.setServiceQualityScore(evaluationDTO.getServiceQualityScore());
        evaluation.setAttitudeScore(evaluationDTO.getAttitudeScore());
        evaluation.setPunctualityScore(evaluationDTO.getPunctualityScore());
        evaluation.setOverallScore(calculateOverallScore(evaluationDTO));
        evaluation.setComment(evaluationDTO.getComment());
        evaluation.setEvaluationTime(new Date());
        
        // 保存评价
        evaluationMapper.insert(evaluation);
        
        // 更新服务人员评分
        updateStaffRating(assignment.getStaffId());
        
        // 检查是否需要升级会员等级
        checkAndUpdateMemberLevel(order.getMemberId());
        
        // 如果评分较低,创建系统提醒给管理员
        if (evaluation.getOverallScore() < 3.0) {
            createLowScoreAlert(evaluation);
        }
        
        // 如果有差评,记录到服务人员的绩效记录中
        if (evaluation.getOverallScore() < 2.0) {
            recordStaffPerformanceIssue(assignment.getStaffId(), evaluation);
        }
        
        // 发送感谢评价的消息给用户
        sendEvaluationThanksMessage(order.getMemberId());
        
        return ResponseResult.success("评价提交成功");
    }
    
    private double calculateOverallScore(EvaluationDTO evaluationDTO) {
        // 计算综合评分,可以设置不同维度的权重
        double serviceQualityWeight = 0.4;
        double attitudeWeight = 0.3;
        double punctualityWeight = 0.3;
        
        double overallScore = evaluationDTO.getServiceQualityScore() * serviceQualityWeight +
                             evaluationDTO.getAttitudeScore() * attitudeWeight +
                             evaluationDTO.getPunctualityScore() * punctualityWeight;
                             
        // 保留一位小数
        return Math.round(overallScore * 10) / 10.0;
    }
}

六、家政服务网站系统-文档展示

七、END

💕💕文末获取源码联系计算机编程果茶熊