Commit e9c9ac0cabe54a44e3cc37f0039466051cfb3fc0
1 parent
71d6311b
trade:确认收货时,增加订单日志
Showing
2 changed files
with
39 additions
and
10 deletions
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,7 +14,7 @@ import lombok.RequiredArgsConstructor; | ||
| 14 | public enum TradeOrderOperateTypeEnum { | 14 | public enum TradeOrderOperateTypeEnum { |
| 15 | 15 | ||
| 16 | MEMBER_CREATE(1, "用户下单"), | 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,6 +48,7 @@ import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum; | ||
| 48 | import cn.iocoder.yudao.module.trade.enums.order.*; | 48 | import cn.iocoder.yudao.module.trade.enums.order.*; |
| 49 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; | 49 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 50 | import cn.iocoder.yudao.module.trade.framework.order.core.annotations.TradeOrderLog; | 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 | import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO; | 52 | import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO; |
| 52 | import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService; | 53 | import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService; |
| 53 | import cn.iocoder.yudao.module.trade.service.cart.CartService; | 54 | import cn.iocoder.yudao.module.trade.service.cart.CartService; |
| @@ -299,6 +300,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -299,6 +300,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 299 | // 5. 生成预支付 | 300 | // 5. 生成预支付 |
| 300 | createPayOrder(order, orderItems, calculateRespBO); | 301 | createPayOrder(order, orderItems, calculateRespBO); |
| 301 | 302 | ||
| 303 | + // 6. 插入订单日志 | ||
| 304 | + TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus()); | ||
| 305 | + | ||
| 302 | // TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来! | 306 | // TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来! |
| 303 | } | 307 | } |
| 304 | 308 | ||
| @@ -343,7 +347,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -343,7 +347,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 343 | // TODO 芋艿:OrderLog | 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 | getSelf().addUserExperienceAsync(order.getUserId(), order.getPayPrice(), order.getId()); | 352 | getSelf().addUserExperienceAsync(order.getUserId(), order.getPayPrice(), order.getId()); |
| 349 | // 增加用户佣金 | 353 | // 增加用户佣金 |
| @@ -492,7 +496,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -492,7 +496,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 492 | if (updateCount == 0) { | 496 | if (updateCount == 0) { |
| 493 | throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED); | 497 | throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED); |
| 494 | } | 498 | } |
| 495 | - // TODO 芋艿:OrderLog | ||
| 496 | 499 | ||
| 497 | // TODO 芋艿:lili 发送订单变化的消息 | 500 | // TODO 芋艿:lili 发送订单变化的消息 |
| 498 | 501 | ||
| @@ -500,7 +503,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -500,7 +503,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 500 | 503 | ||
| 501 | // TODO 芋艿:销售佣金的记录; | 504 | // TODO 芋艿:销售佣金的记录; |
| 502 | 505 | ||
| 503 | - // TODO 芋艿:获得积分; | 506 | + // 插入订单日志 |
| 507 | + TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus()); | ||
| 504 | } | 508 | } |
| 505 | 509 | ||
| 506 | @Override | 510 | @Override |
| @@ -664,7 +668,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -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 | getSelf().reduceUserExperienceAsync(order.getUserId(), orderRefundPrice, afterSaleId); | 673 | getSelf().reduceUserExperienceAsync(order.getUserId(), orderRefundPrice, afterSaleId); |
| 670 | // 更新分佣记录为已失效 | 674 | // 更新分佣记录为已失效 |
| @@ -768,29 +772,54 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -768,29 +772,54 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 768 | memberLevelApi.addExperience(userId, -refundPrice, bizType, String.valueOf(afterSaleId)); | 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 | @Async | 788 | @Async |
| 772 | - protected void addUserPointAsync(Long userId, Integer payPrice, Long orderId) { | 789 | + protected void addMemberPointAsync(Long userId, Integer payPrice, Long orderId) { |
| 773 | // TODO @疯狂:具体多少积分,需要分成 2 不分:1. 支付金额;2. 商品金额 | 790 | // TODO @疯狂:具体多少积分,需要分成 2 不分:1. 支付金额;2. 商品金额 |
| 774 | int bizType = MemberPointBizTypeEnum.ORDER_REWARD.getType(); | 791 | int bizType = MemberPointBizTypeEnum.ORDER_REWARD.getType(); |
| 775 | memberPointApi.addPoint(userId, payPrice, bizType, String.valueOf(orderId)); | 792 | memberPointApi.addPoint(userId, payPrice, bizType, String.valueOf(orderId)); |
| 776 | } | 793 | } |
| 777 | 794 | ||
| 778 | @Async | 795 | @Async |
| 779 | - protected void reduceUserPointAsync(Long userId, Integer refundPrice, Long afterSaleId) { | 796 | + protected void reduceMemberPointAsync(Long userId, Integer refundPrice, Long afterSaleId) { |
| 780 | // TODO @疯狂:退款时,按照金额比例,退还积分;https://help.youzan.com/displaylist/detail_4_4-1-49185 | 797 | // TODO @疯狂:退款时,按照金额比例,退还积分;https://help.youzan.com/displaylist/detail_4_4-1-49185 |
| 781 | int bizType = MemberPointBizTypeEnum.ORDER_CANCEL.getType(); | 798 | int bizType = MemberPointBizTypeEnum.ORDER_CANCEL.getType(); |
| 782 | memberPointApi.addPoint(userId, -refundPrice, bizType, String.valueOf(afterSaleId)); | 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 | @Async | 814 | @Async |
| 786 | protected void addBrokerageAsync(Long userId, Long orderId) { | 815 | protected void addBrokerageAsync(Long userId, Long orderId) { |
| 787 | MemberUserRespDTO user = memberUserApi.getUser(userId); | 816 | MemberUserRespDTO user = memberUserApi.getUser(userId); |
| 788 | Assert.notNull(user); | 817 | Assert.notNull(user); |
| 789 | - | 818 | + // 每一个订单项,都会去生成分销记录 |
| 790 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId); | 819 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId); |
| 791 | - List<BrokerageAddReqBO> list = convertList(orderItems, | 820 | + List<BrokerageAddReqBO> addList = convertList(orderItems, |
| 792 | item -> TradeOrderConvert.INSTANCE.convert(user, item, productSkuApi.getSku(item.getSkuId()))); | 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 | @Async | 825 | @Async |