Commit 26dfbfb2ac7a229b160b4a16d9978d247a4f3015

Authored by YunaiV
1 parent 53bd1b9e

trade:发货逻辑,增加订单日志

yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderOperateTypeEnum.java
@@ -14,7 +14,8 @@ import lombok.RequiredArgsConstructor; @@ -14,7 +14,8 @@ import lombok.RequiredArgsConstructor;
14 public enum TradeOrderOperateTypeEnum { 14 public enum TradeOrderOperateTypeEnum {
15 15
16 MEMBER_CREATE(1, "用户下单"), 16 MEMBER_CREATE(1, "用户下单"),
17 - MEMBER_PAY(20, "用户付款成功"), 17 + MEMBER_PAY(10, "用户付款成功"),
  18 + ADMIN_DELIVERY(20, "已发货,快递公司:{deliveryName},快递单号:{logisticsNo}"),
18 MEMBER_RECEIVE(30, "用户已收货"), 19 MEMBER_RECEIVE(30, "用户已收货"),
19 SYSTEM_RECEIVE(31, "到期未收货,系统自动确认收货"), 20 SYSTEM_RECEIVE(31, "到期未收货,系统自动确认收货"),
20 MEMBER_COMMENT(33, "用户评价"), 21 MEMBER_COMMENT(33, "用户评价"),
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.service.order; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.service.order;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.lang.Assert; 4 import cn.hutool.core.lang.Assert;
  5 +import cn.hutool.core.map.MapUtil;
5 import cn.hutool.core.util.ObjectUtil; 6 import cn.hutool.core.util.ObjectUtil;
6 import cn.hutool.core.util.RandomUtil; 7 import cn.hutool.core.util.RandomUtil;
7 import cn.hutool.core.util.StrUtil; 8 import cn.hutool.core.util.StrUtil;
@@ -40,6 +41,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettle @@ -40,6 +41,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettle
40 import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; 41 import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO;
41 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; 42 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
42 import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO; 43 import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO;
  44 +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
43 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; 45 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
44 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; 46 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
45 import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; 47 import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper;
@@ -412,6 +414,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -412,6 +414,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
412 414
413 @Override 415 @Override
414 @Transactional(rollbackFor = Exception.class) 416 @Transactional(rollbackFor = Exception.class)
  417 + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CANCEL)
415 public void deliveryOrder(TradeOrderDeliveryReqVO deliveryReqVO) { 418 public void deliveryOrder(TradeOrderDeliveryReqVO deliveryReqVO) {
416 // 1.1 校验并获得交易订单(可发货) 419 // 1.1 校验并获得交易订单(可发货)
417 TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId()); 420 TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId());
@@ -423,8 +426,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -423,8 +426,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
423 // 2. 更新订单为已发货 426 // 2. 更新订单为已发货
424 TradeOrderDO updateOrderObj = new TradeOrderDO(); 427 TradeOrderDO updateOrderObj = new TradeOrderDO();
425 // 2.1 快递发货 428 // 2.1 快递发货
  429 + DeliveryExpressDO express = null;
426 if (ObjectUtil.notEqual(deliveryReqVO.getLogisticsId(), TradeOrderDO.LOGISTICS_ID_NULL)) { 430 if (ObjectUtil.notEqual(deliveryReqVO.getLogisticsId(), TradeOrderDO.LOGISTICS_ID_NULL)) {
427 - deliveryExpressService.validateDeliveryExpress(deliveryReqVO.getLogisticsId()); 431 + express = deliveryExpressService.validateDeliveryExpress(deliveryReqVO.getLogisticsId());
428 updateOrderObj.setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo()); 432 updateOrderObj.setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo());
429 } else { 433 } else {
430 // 2.2 无需发货 434 // 2.2 无需发货
@@ -437,11 +441,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -437,11 +441,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
437 throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED); 441 throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
438 } 442 }
439 443
440 - // 发送站内信 444 + // 3. 记录订单日志
  445 + TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus(),
  446 + MapUtil.<String, Object>builder().put("expressName", express != null ? express.getName() : "")
  447 + .put("logisticsNo", express != null ? deliveryReqVO.getLogisticsNo() : "").build());
  448 +
  449 + // 4. 发送站内信
441 tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId()) 450 tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId())
442 .setUserId(order.getUserId()).setMessage(null)); 451 .setUserId(order.getUserId()).setMessage(null));
443 -  
444 - // TODO 芋艿:OrderLog  
445 } 452 }
446 453
447 /** 454 /**
@@ -468,6 +475,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -468,6 +475,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
468 // 订单类类型:砍价 475 // 订单类类型:砍价
469 if (Objects.equals(TradeOrderTypeEnum.BARGAIN.getType(), order.getType())) { 476 if (Objects.equals(TradeOrderTypeEnum.BARGAIN.getType(), order.getType())) {
470 // 校验订单砍价是否成功 477 // 校验订单砍价是否成功
  478 + // TODO @puhui999:砍价的话,应该不用校验。因为是砍价成功后,才可以下单
471 if (!bargainRecordApi.isBargainRecordSuccess(order.getUserId(), order.getId())) { 479 if (!bargainRecordApi.isBargainRecordSuccess(order.getUserId(), order.getId())) {
472 throw exception(ORDER_DELIVERY_FAIL_BARGAIN_RECORD_STATUS_NOT_SUCCESS); 480 throw exception(ORDER_DELIVERY_FAIL_BARGAIN_RECORD_STATUS_NOT_SUCCESS);
473 } 481 }
yudao-server/src/main/resources/application-local.yaml
@@ -78,7 +78,7 @@ spring: @@ -78,7 +78,7 @@ spring:
78 # Quartz 配置项,对应 QuartzProperties 配置类 78 # Quartz 配置项,对应 QuartzProperties 配置类
79 spring: 79 spring:
80 quartz: 80 quartz:
81 - auto-startup: false # 本地开发环境,尽量不要开启 Job 81 + auto-startup: true # 本地开发环境,尽量不要开启 Job
82 scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName 82 scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName
83 job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。 83 job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
84 wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true 84 wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true