Commit e9c9ac0cabe54a44e3cc37f0039466051cfb3fc0

Authored by YunaiV
1 parent 71d6311b

trade:确认收货时,增加订单日志

yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderOperateTypeEnum.java
... ... @@ -14,7 +14,7 @@ import lombok.RequiredArgsConstructor;
14 14 public enum TradeOrderOperateTypeEnum {
15 15  
16 16 MEMBER_CREATE(1, "用户下单"),
17   - TEST(2, "用户({nickname})做了({thing})"),
  17 + MEMBER_RECEIVE(30, "用户已收货")
18 18 ;
19 19  
20 20 /**
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
... ... @@ -48,6 +48,7 @@ import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum;
48 48 import cn.iocoder.yudao.module.trade.enums.order.*;
49 49 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
50 50 import cn.iocoder.yudao.module.trade.framework.order.core.annotations.TradeOrderLog;
  51 +import cn.iocoder.yudao.module.trade.framework.order.core.utils.TradeOrderLogUtils;
51 52 import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO;
52 53 import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService;
53 54 import cn.iocoder.yudao.module.trade.service.cart.CartService;
... ... @@ -299,6 +300,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
299 300 // 5. 生成预支付
300 301 createPayOrder(order, orderItems, calculateRespBO);
301 302  
  303 + // 6. 插入订单日志
  304 + TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus());
  305 +
302 306 // TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来!
303 307 }
304 308  
... ... @@ -343,7 +347,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
343 347 // TODO 芋艿:OrderLog
344 348  
345 349 // 增加用户积分
346   - getSelf().addUserPointAsync(order.getUserId(), order.getPayPrice(), order.getId());
  350 + getSelf().addMemberPointAsync(order.getUserId(), order.getPayPrice(), order.getId());
347 351 // 增加用户经验
348 352 getSelf().addUserExperienceAsync(order.getUserId(), order.getPayPrice(), order.getId());
349 353 // 增加用户佣金
... ... @@ -492,7 +496,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
492 496 if (updateCount == 0) {
493 497 throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED);
494 498 }
495   - // TODO 芋艿:OrderLog
496 499  
497 500 // TODO 芋艿:lili 发送订单变化的消息
498 501  
... ... @@ -500,7 +503,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
500 503  
501 504 // TODO 芋艿:销售佣金的记录;
502 505  
503   - // TODO 芋艿:获得积分;
  506 + // 插入订单日志
  507 + TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus());
504 508 }
505 509  
506 510 @Override
... ... @@ -664,7 +668,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
664 668 }
665 669  
666 670 // 扣减用户积分
667   - getSelf().reduceUserPointAsync(order.getUserId(), orderRefundPrice, afterSaleId);
  671 + getSelf().reduceMemberPointAsync(order.getUserId(), orderRefundPrice, afterSaleId);
668 672 // 扣减用户经验
669 673 getSelf().reduceUserExperienceAsync(order.getUserId(), orderRefundPrice, afterSaleId);
670 674 // 更新分佣记录为已失效
... ... @@ -768,29 +772,54 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
768 772 memberLevelApi.addExperience(userId, -refundPrice, bizType, String.valueOf(afterSaleId));
769 773 }
770 774  
  775 + /**
  776 + * 添加用户积分
  777 + *
  778 + * 目前是支付成功后,就会创建积分记录。
  779 + *
  780 + * 业内还有两种做法,可以根据自己的业务调整:
  781 + * 1. 确认收货后,才创建积分记录
  782 + * 2. 支付 or 下单成功时,创建积分记录(冻结),确认收货解冻或者 n 天后解冻
  783 + *
  784 + * @param userId 用户编号
  785 + * @param payPrice 支付金额
  786 + * @param orderId 订单编号
  787 + */
771 788 @Async
772   - protected void addUserPointAsync(Long userId, Integer payPrice, Long orderId) {
  789 + protected void addMemberPointAsync(Long userId, Integer payPrice, Long orderId) {
773 790 // TODO @疯狂:具体多少积分,需要分成 2 不分:1. 支付金额;2. 商品金额
774 791 int bizType = MemberPointBizTypeEnum.ORDER_REWARD.getType();
775 792 memberPointApi.addPoint(userId, payPrice, bizType, String.valueOf(orderId));
776 793 }
777 794  
778 795 @Async
779   - protected void reduceUserPointAsync(Long userId, Integer refundPrice, Long afterSaleId) {
  796 + protected void reduceMemberPointAsync(Long userId, Integer refundPrice, Long afterSaleId) {
780 797 // TODO @疯狂:退款时,按照金额比例,退还积分;https://help.youzan.com/displaylist/detail_4_4-1-49185
781 798 int bizType = MemberPointBizTypeEnum.ORDER_CANCEL.getType();
782 799 memberPointApi.addPoint(userId, -refundPrice, bizType, String.valueOf(afterSaleId));
783 800 }
784 801  
  802 + /**
  803 + * 创建分销记录
  804 + *
  805 + * 目前是支付成功后,就会创建分销记录。
  806 + *
  807 + * 业内还有两种做法,可以根据自己的业务调整:
  808 + * 1. 确认收货后,才创建分销记录
  809 + * 2. 支付 or 下单成功时,创建分销记录(冻结),确认收货解冻或者 n 天后解冻
  810 + *
  811 + * @param userId 用户编号
  812 + * @param orderId 订单编号
  813 + */
785 814 @Async
786 815 protected void addBrokerageAsync(Long userId, Long orderId) {
787 816 MemberUserRespDTO user = memberUserApi.getUser(userId);
788 817 Assert.notNull(user);
789   -
  818 + // 每一个订单项,都会去生成分销记录
790 819 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId);
791   - List<BrokerageAddReqBO> list = convertList(orderItems,
  820 + List<BrokerageAddReqBO> addList = convertList(orderItems,
792 821 item -> TradeOrderConvert.INSTANCE.convert(user, item, productSkuApi.getSku(item.getSkuId())));
793   - brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list);
  822 + brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, addList);
794 823 }
795 824  
796 825 @Async
... ...