毕设还没开始做?再不行动连社区快递上门服务系统这样的基础项目都做不出来了|计算机毕业设计

31 阅读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双语言支持,分别基于Spring Boot(Spring+SpringMVC+Mybatis)和Django框架开发,前端使用Vue+ElementUI+HTML技术栈,数据库选用MySQL。系统功能全面覆盖快递服务全流程,包括系统首页展示、个人中心管理、用户管理、配送员管理、快递信息管理、配送信息管理、配送完成管理、确认完成管理、商品信息管理、订单信息管理及商品分类管理等11大核心模块。该系统实现了从快递信息录入、配送员分配、配送过程跟踪到订单完成确认的全链路管理,有效解决了社区快递配送"最后一公里"问题,提高了配送效率和用户体验。通过模块化设计和直观的操作界面,系统既满足了管理人员对快递配送全过程的监控需求,又为用户提供了便捷的快递查询和确认服务,同时为配送员提供了清晰的任务管理工具,是一个功能完备、技术先进的社区快递服务解决方案。

三、社区快递上门服务系统-视频解说

毕设还没开始做?再不行动连社区快递上门服务系统这样的基础项目都做不出来了

四、社区快递上门服务系统-功能展示

后台登陆页

后台管理员管理配送员

后台配送员快递信息管理

前台商品分类

前台社区公告页

前台个人中心

前台商品详情页

前台下单

五、社区快递上门服务系统-代码展示

```
// 核心功能1: 快递信息管理 - 处理快递分配给配送员的业务逻辑
public ResponseEntity<Map<String, Object>> assignExpressToDeliveryMan(Long expressId, Long deliveryManId) {
    try {
        // 获取快递信息
        Express express = expressService.getExpressById(expressId);
        if (express == null) {
            return ResponseEntity.badRequest().body(Collections.singletonMap("message", "快递信息不存在"));
        }
        
        // 检查快递状态是否可分配
        if (express.getStatus() != ExpressStatus.WAITING_ASSIGN) {
            return ResponseEntity.badRequest().body(Collections.singletonMap("message", "该快递状态不可分配"));
        }
        
        // 获取配送员信息
        DeliveryMan deliveryMan = deliveryManService.getDeliveryManById(deliveryManId);
        if (deliveryMan == null) {
            return ResponseEntity.badRequest().body(Collections.singletonMap("message", "配送员不存在"));
        }
        
        // 检查配送员当前负载是否超出限制
        int currentLoad = deliveryService.getDeliveryManCurrentLoad(deliveryManId);
        if (currentLoad >= deliveryMan.getMaxCapacity()) {
            return ResponseEntity.badRequest().body(Collections.singletonMap("message", "配送员当前任务已满"));
        }
        
        // 创建配送任务
        Delivery delivery = new Delivery();
        delivery.setExpressId(expressId);
        delivery.setDeliveryManId(deliveryManId);
        delivery.setAssignTime(new Date());
        delivery.setStatus(DeliveryStatus.ASSIGNED);
        delivery.setEstimatedDeliveryTime(calculateEstimatedTime(express.getReceiverAddress()));
        
        // 保存配送任务
        deliveryService.saveDelivery(delivery);
        
        // 更新快递状态
        express.setStatus(ExpressStatus.ASSIGNED);
        express.setUpdateTime(new Date());
        expressService.updateExpress(express);
        
        // 发送通知给配送员
        notificationService.sendDeliveryAssignmentNotification(deliveryMan.getPhoneNumber(), express);
        
        // 记录操作日志
        operationLogService.logOperation("ASSIGN_EXPRESS", "将快递" + expressId + "分配给配送员" + deliveryManId);
        
        return ResponseEntity.ok(Collections.singletonMap("message", "分配成功"));
    } catch (Exception e) {
        logger.error("分配快递失败", e);
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                .body(Collections.singletonMap("message", "系统错误: " + e.getMessage()));
    }
}


// 核心功能2: 配送信息管理 - 更新配送状态和位置
public DeliveryResult updateDeliveryStatus(DeliveryStatusUpdateDTO updateDTO) {
    DeliveryResult result = new DeliveryResult();
    
    try {
        // 验证请求参数
        if (updateDTO.getDeliveryId() == null || updateDTO.getStatus() == null) {
            result.setSuccess(false);
            result.setMessage("配送ID和状态不能为空");
            return result;
        }
        
        // 获取配送信息
        Delivery delivery = deliveryMapper.selectById(updateDTO.getDeliveryId());
        if (delivery == null) {
            result.setSuccess(false);
            result.setMessage("配送信息不存在");
            return result;
        }
        
        // 检查状态转换是否合法
        if (!isValidStatusTransition(delivery.getStatus(), updateDTO.getStatus())) {
            result.setSuccess(false);
            result.setMessage("非法的状态转换: " + delivery.getStatus() + " -> " + updateDTO.getStatus());
            return result;
        }
        
        // 更新配送状态
        delivery.setStatus(updateDTO.getStatus());
        delivery.setUpdateTime(new Date());
        
        // 如果提供了位置信息,则更新位置
        if (updateDTO.getLatitude() != null && updateDTO.getLongitude() != null) {
            DeliveryLocation location = new DeliveryLocation();
            location.setDeliveryId(updateDTO.getDeliveryId());
            location.setLatitude(updateDTO.getLatitude());
            location.setLongitude(updateDTO.getLongitude());
            location.setCreateTime(new Date());
            deliveryLocationMapper.insert(location);
            
            // 计算与目的地的距离
            double distance = calculateDistance(
                updateDTO.getLatitude(), 
                updateDTO.getLongitude(),
                delivery.getTargetLatitude(),
                delivery.getTargetLongitude()
            );
            delivery.setCurrentDistance(distance);
        }
        
        // 如果状态是"已送达",则更新送达时间和处理相关业务
        if (updateDTO.getStatus() == DeliveryStatus.DELIVERED) {
            delivery.setDeliveredTime(new Date());
            
            // 更新快递状态
            Express express = expressMapper.selectById(delivery.getExpressId());
            express.setStatus(ExpressStatus.DELIVERED);
            express.setUpdateTime(new Date());
            expressMapper.updateById(express);
            
            // 发送通知给收件人
            User receiver = userMapper.selectById(express.getReceiverId());
            notificationService.sendDeliveryCompletionNotification(receiver.getPhoneNumber(), express);
        }
        
        // 保存更新后的配送信息
        deliveryMapper.updateById(delivery);
        
        // 记录配送状态变更历史
        DeliveryStatusHistory history = new DeliveryStatusHistory();
        history.setDeliveryId(delivery.getId());
        history.setOldStatus(delivery.getStatus());
        history.setNewStatus(updateDTO.getStatus());
        history.setCreateTime(new Date());
        history.setOperator(updateDTO.getOperator());
        history.setRemark(updateDTO.getRemark());
        deliveryStatusHistoryMapper.insert(history);
        
        result.setSuccess(true);
        result.setMessage("配送状态更新成功");
        result.setData(delivery);
        return result;
    } catch (Exception e) {
        logger.error("更新配送状态失败", e);
        result.setSuccess(false);
        result.setMessage("系统错误: " + e.getMessage());
        return result;
    }
}


// 核心功能3: 订单信息管理 - 创建订单并处理支付
public OrderCreateResult createOrder(OrderCreateDTO orderDTO) {
    OrderCreateResult result = new OrderCreateResult();
    Connection conn = null;
    
    try {
        // 开启事务
        conn = dataSource.getConnection();
        conn.setAutoCommit(false);
        
        // 验证商品信息
        List<OrderItem> orderItems = new ArrayList<>();
        BigDecimal totalAmount = BigDecimal.ZERO;
        
        for (OrderItemDTO itemDTO : orderDTO.getItems()) {
            Product product = productMapper.selectById(itemDTO.getProductId());
            if (product == null) {
                throw new BusinessException("商品不存在: " + itemDTO.getProductId());
            }
            
            // 检查库存
            if (product.getStock() < itemDTO.getQuantity()) {
                throw new BusinessException("商品库存不足: " + product.getName());
            }
            
            // 计算商品金额
            BigDecimal itemAmount = product.getPrice().multiply(new BigDecimal(itemDTO.getQuantity()));
            totalAmount = totalAmount.add(itemAmount);
            
            // 创建订单项
            OrderItem orderItem = new OrderItem();
            orderItem.setProductId(product.getId());
            orderItem.setProductName(product.getName());
            orderItem.setProductPrice(product.getPrice());
            orderItem.setQuantity(itemDTO.getQuantity());
            orderItem.setAmount(itemAmount);
            orderItems.add(orderItem);
            
            // 减少库存
            product.setStock(product.getStock() - itemDTO.getQuantity());
            product.setUpdateTime(new Date());
            productMapper.updateById(product);
        }
        
        // 创建订单
        Order order = new Order();
        order.setOrderNo(generateOrderNo());
        order.setUserId(orderDTO.getUserId());
        order.setTotalAmount(totalAmount);
        order.setStatus(OrderStatus.CREATED);
        order.setPaymentType(orderDTO.getPaymentType());
        order.setReceiverName(orderDTO.getReceiverName());
        order.setReceiverPhone(orderDTO.getReceiverPhone());
        order.setReceiverAddress(orderDTO.getReceiverAddress());
        order.setCreateTime(new Date());
        orderMapper.insert(order);
        
        // 保存订单项
        for (OrderItem item : orderItems) {
            item.setOrderId(order.getId());
            orderItemMapper.insert(item);
        }
        
        // 处理支付
        PaymentResult paymentResult = processPayment(order, orderDTO.getPaymentType(), orderDTO.getPaymentInfo());
        if (!paymentResult.isSuccess()) {
            throw new BusinessException("支付处理失败: " + paymentResult.getMessage());
        }
        
        // 创建支付记录
        Payment payment = new Payment();
        payment.setOrderId(order.getId());
        payment.setPaymentType(orderDTO.getPaymentType());
        payment.setAmount(totalAmount);
        payment.setStatus(PaymentStatus.SUCCESS);
        payment.setTransactionId(paymentResult.getTransactionId());
        payment.setPayTime(new Date());
        paymentMapper.insert(payment);
        
        // 更新订单状态
        order.setStatus(OrderStatus.PAID);
        order.setPaymentTime(new Date());
        orderMapper.updateById(order);
        
        // 创建快递信息
        Express express = new Express();
        express.setOrderId(order.getId());
        express.setSenderName("商城自营");
        express.setSenderPhone("400-123-4567");
        express.setSenderAddress("商城配送中心");
        express.setReceiverName(orderDTO.getReceiverName());
        express.setReceiverPhone(orderDTO.getReceiverPhone());
        express.setReceiverAddress(orderDTO.getReceiverAddress());
        express.setStatus(ExpressStatus.WAITING_ASSIGN);
        express.setCreateTime(new Date());
        expressMapper.insert(express);
        
        // 提交事务
        conn.commit();
        
        // 设置返回结果
        result.setSuccess(true);
        result.setMessage("订单创建成功");
        result.setOrderId(order.getId());
        result.setOrderNo(order.getOrderNo());
        return result;
    } catch (BusinessException be) {
        // 回滚事务
        try {
            if (conn != null) conn.rollback();
        } catch (SQLException e) {
            logger.error("事务回滚失败", e);
        }
        
        logger.warn("订单创建业务异常", be);
        result.setSuccess(false);
        result.setMessage(be.getMessage());
        return result;
    } catch (Exception e) {
        // 回滚事务
        try {
            if (conn != null) conn.rollback();
        } catch (SQLException se) {
            logger.error("事务回滚失败", se);
        }
        
        logger.error("订单创建系统异常", e);
        result.setSuccess(false);
        result.setMessage("系统错误: " + e.getMessage());
        return result;
    } finally {
        // 关闭连接
        try {
            if (conn != null) {
                conn.setAutoCommit(true);
                conn.close();
            }
        } catch (SQLException e) {
            logger.error("关闭数据库连接失败", e);
        }
    }
}
```

六、社区快递上门服务系统-文档展示

部分文档

七、END

致谢

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