一、个人简介
💖💖作者:计算机编程果茶熊
💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长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
致谢
💕💕文末获取源码联系计算机编程果茶熊