From a740e600ccee9fb8bb2c86ff5453d47f44b435a8 Mon Sep 17 00:00:00 2001 From: luojian <1327479187@qq.com> Date: Wed, 12 Feb 2025 16:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E6=8E=A8=E9=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/biz/OpenContrller.java | 80 +++++++++++++++++- .../java/com/cpxt/biz/domain/BizOrderSub.java | 4 + .../domain/BizOrderSubStatusChangeLog.java | 84 +++++++++++++++++++ .../domain/OrderStatusChangePushEntity.java | 58 +++++++++++++ .../BizOrderSubStatusChangeLogMapper.java | 20 +++++ .../BizOrderSubStatusChangeLogService.java | 13 +++ ...BizOrderSubStatusChangeLogServiceImpl.java | 22 +++++ .../mapper/BizOrderStatusChangeLogMapper.xml | 27 ++++++ 8 files changed, 305 insertions(+), 3 deletions(-) create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSubStatusChangeLog.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/domain/OrderStatusChangePushEntity.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/mapper/BizOrderSubStatusChangeLogMapper.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/service/BizOrderSubStatusChangeLogService.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderSubStatusChangeLogServiceImpl.java create mode 100644 cpxt-system/src/main/resources/mapper/BizOrderStatusChangeLogMapper.xml diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/OpenContrller.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/OpenContrller.java index 49d886d..00c7c73 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/OpenContrller.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/OpenContrller.java @@ -1,19 +1,93 @@ package com.cpxt.web.controller.biz; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.cpxt.biz.domain.BizOrder; +import com.cpxt.biz.domain.BizOrderSub; +import com.cpxt.biz.domain.OrderStatusChangePushEntity; +import com.cpxt.biz.mapper.BizOrderMapper; +import com.cpxt.biz.mapper.BizOrderSubMapper; import com.cpxt.common.annotation.Anonymous; +import com.cpxt.common.core.domain.AjaxResult; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + @RestController @Slf4j @RequestMapping("/cpxt-api/api/order") public class OpenContrller { - @Anonymous - @PostMapping("/orderStatusChangePush") - public void orderStatusChangePush() { + @Autowired + private BizOrderMapper bizOrderMapper; + @Autowired + private BizOrderSubMapper bizOrderSubMapper; + + /** + * 订单状态变更推送 + * @param orderStatusChangePushEntity 接口参数 + * @return + */ + @Anonymous + @Transactional + @PostMapping("/orderStatusChangePush") + public Map orderStatusChangePush(@RequestBody OrderStatusChangePushEntity orderStatusChangePushEntity) { + Map resultMap = new HashMap<>(); + String subOrderSn = orderStatusChangePushEntity.getChannelOrderNo(); + BizOrderSub bizOrderSub = bizOrderSubMapper.selectBySubOrderSn(subOrderSn); + if (bizOrderSub == null) { + resultMap.put("code", 500); + resultMap.put("message", "操作失败,订单不存在!"); + resultMap.put("result", ""); + resultMap.put("success", "false"); + }else { + // 修改子单信息(状态、预计送达时间) + bizOrderSub.setSubOrderStatus(orderStatusChangePushEntity.getStatus()); + if (ObjectUtil.isNotEmpty(orderStatusChangePushEntity.getRemark().getDeliverTime())){ + bizOrderSub.setExpectTime(DateUtil.parseTime(orderStatusChangePushEntity.getRemark().getDeliverTime())); + } + bizOrderSubMapper.updateById(bizOrderSub); + // 修改订单信息(状态、开始配送时间和到达时间) + BizOrder bizOrder = bizOrderMapper.selectByOrderSn(bizOrderSub.getOrderSn()); + String status = orderStatusChangePushEntity.getStatus(); + if ("02".equals(status) || "03".equals(status) || "04".equals(status)) { + bizOrder.setStatus(1); //待配送 + }else if ("05".equals(status)){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizOrderSub::getOrderSn,bizOrderSub.getOrderSn()); + queryWrapper.eq(BizOrderSub::getSubOrderStatus,"05"); + if (bizOrderSubMapper.selectList(queryWrapper).size() == 0) { + bizOrder.setStatus(2); //已接单 + bizOrder.setStartTime(new Date()); //开始配送时间 + } + }else if ("06".equals(status)){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizOrderSub::getOrderSn,bizOrderSub.getOrderSn()); + queryWrapper.ne(BizOrderSub::getSubOrderStatus,"06"); + if (bizOrderSubMapper.selectList(queryWrapper).size() == 0) { + bizOrder.setStatus(3); //已送达 + bizOrder.setArriveTime(new Date()); //到达时间 + } + }else { + bizOrder.setStatus(4); //已取消 + } + bizOrderMapper.updateById(bizOrder); + resultMap.put("code", 200); + resultMap.put("message", "操作成功!"); + resultMap.put("result", ""); + resultMap.put("success", "true"); + } + resultMap.put("timestamp",System.currentTimeMillis()); + return resultMap; } } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSub.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSub.java index 32156f4..ce9d9b3 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSub.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSub.java @@ -32,6 +32,10 @@ public class BizOrderSub @Excel(name = "子单号") private String subOrderSn; + /** 子单状态 */ + @Excel(name = "子单状态") + private String subOrderStatus; + /** 重量 */ @Excel(name = "重量") private BigDecimal weight; diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSubStatusChangeLog.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSubStatusChangeLog.java new file mode 100644 index 0000000..b3c06f7 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderSubStatusChangeLog.java @@ -0,0 +1,84 @@ +package com.cpxt.biz.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName biz_order_status_change_log + */ +@TableName(value ="biz_order_status_change_log") +@Data +public class BizOrderSubStatusChangeLog implements Serializable { + /** + * + */ + @TableId + private Long id; + + /** + * 渠道订单号(接入方订单号) + */ + private String channelOrderNo; + + /** + * 平台订单号 + */ + private String platformOrderNo; + + /** + * 同城系统订单号 + */ + private String orderNo; + + /** + * 运单号 + */ + private String expressNbr; + + /** + * 02 -> 未分配骑手 +03 -> 已分配骑手 +04 -> 已到店 +05 -> 配送中 +06 -> 已完单 +07 -> 配送退回 +08 -> 配送员取消 +09 -> 用户取消 + + */ + private String status; + + /** + * 状态描述 + */ + private String message; + + /** + * 邮件号 + */ + private String emailNbr; + + /** + * 预估送达时间 + */ + private Date deliverTime; + + /** + * 操作时间 + */ + private Date opTime; + + /** + * 入库时间 + */ + private Date createTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/OrderStatusChangePushEntity.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/OrderStatusChangePushEntity.java new file mode 100644 index 0000000..eba5816 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/OrderStatusChangePushEntity.java @@ -0,0 +1,58 @@ +package com.cpxt.biz.domain; + +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +public class OrderStatusChangePushEntity { + + /** + * 渠道订单号 + */ + private String channelOrderNo; + /** + * 平台订单号(cpxt订单号) + */ + private String platformOrderNo; + /** + * 订单号 + */ + private String orderNo; + /** + * 02 -> 未分配骑手 + * 03 -> 已分配骑手 + * 04 -> 已到店 + * 05 -> 配送中 + * 06 -> 已完单 + * 07 -> 配送退回 + * 08 -> 配送员取消 + * 09 -> 用户取消 + */ + private String status; + /** + * 状态描述 + */ + private String message; + /** + * 操作时间 + */ + private String opTime; + /** + * 备注 + */ + private RemarkBean remark; + + @NoArgsConstructor + @Data + public static class RemarkBean { + /** + * 邮件号(运单号) + */ + private String expressNbr; + /** + * 预计送达时间 + */ + private String deliverTime; + } +} diff --git a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizOrderSubStatusChangeLogMapper.java b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizOrderSubStatusChangeLogMapper.java new file mode 100644 index 0000000..fc43cde --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizOrderSubStatusChangeLogMapper.java @@ -0,0 +1,20 @@ +package com.cpxt.biz.mapper; + +import com.cpxt.biz.domain.BizOrderSubStatusChangeLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author LuoJian +* @description 针对表【biz_order_status_change_log】的数据库操作Mapper +* @createDate 2025-02-12 14:56:06 +* @Entity com.cpxt.biz.domain.BizOrderStatusChangeLog +*/ +@Mapper +public interface BizOrderSubStatusChangeLogMapper extends BaseMapper { + +} + + + + diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/BizOrderSubStatusChangeLogService.java b/cpxt-system/src/main/java/com/cpxt/biz/service/BizOrderSubStatusChangeLogService.java new file mode 100644 index 0000000..d2d8363 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/BizOrderSubStatusChangeLogService.java @@ -0,0 +1,13 @@ +package com.cpxt.biz.service; + +import com.cpxt.biz.domain.BizOrderSubStatusChangeLog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author LuoJian +* @description 针对表【biz_order_status_change_log】的数据库操作Service +* @createDate 2025-02-12 14:56:06 +*/ +public interface BizOrderSubStatusChangeLogService extends IService { + +} diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderSubStatusChangeLogServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderSubStatusChangeLogServiceImpl.java new file mode 100644 index 0000000..9024f9a --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderSubStatusChangeLogServiceImpl.java @@ -0,0 +1,22 @@ +package com.cpxt.biz.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cpxt.biz.domain.BizOrderSubStatusChangeLog; +import com.cpxt.biz.service.BizOrderSubStatusChangeLogService; +import com.cpxt.biz.mapper.BizOrderSubStatusChangeLogMapper; +import org.springframework.stereotype.Service; + +/** +* @author LuoJian +* @description 针对表【biz_order_status_change_log】的数据库操作Service实现 +* @createDate 2025-02-12 14:56:06 +*/ +@Service +public class BizOrderSubStatusChangeLogServiceImpl extends ServiceImpl + implements BizOrderSubStatusChangeLogService { + +} + + + + diff --git a/cpxt-system/src/main/resources/mapper/BizOrderStatusChangeLogMapper.xml b/cpxt-system/src/main/resources/mapper/BizOrderStatusChangeLogMapper.xml new file mode 100644 index 0000000..0364bf6 --- /dev/null +++ b/cpxt-system/src/main/resources/mapper/BizOrderStatusChangeLogMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + id,channel_order_no,platform_order_no, + order_no,express_nbr,status, + message,email_nbr,deliver_time, + op_time,create_time + +