Commit dad56fd0963e46eb866923a5f39bcef3fc237b42

Authored by owen
1 parent 9aee08ee

trade: 1.支付成功后,增加用户经验;2.退款成功后,扣减用户经验

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
... ... @@ -12,8 +12,10 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
12 12 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
13 13 import cn.iocoder.yudao.module.member.api.address.AddressApi;
14 14 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
  15 +import cn.iocoder.yudao.module.member.api.level.MemberLevelApi;
15 16 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
16 17 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
  18 +import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum;
17 19 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
18 20 import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
19 21 import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderRespDTO;
... ... @@ -29,10 +31,10 @@ import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUp
29 31 import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi;
30 32 import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO;
31 33 import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
32   -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
33   -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderUpdatePriceReqVO;
34 34 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
35 35 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
  36 +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
  37 +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderUpdatePriceReqVO;
36 38 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
37 39 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO;
38 40 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
... ... @@ -57,6 +59,7 @@ import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO;
57 59 import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO;
58 60 import lombok.extern.slf4j.Slf4j;
59 61 import org.jetbrains.annotations.NotNull;
  62 +import org.springframework.scheduling.annotation.Async;
60 63 import org.springframework.stereotype.Service;
61 64 import org.springframework.transaction.annotation.Transactional;
62 65  
... ... @@ -101,9 +104,13 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
101 104 private AddressApi addressApi;
102 105 @Resource
103 106 private CouponApi couponApi;
  107 +
104 108 @Resource
105 109 private MemberUserApi memberUserApi;
106 110 @Resource
  111 + private MemberLevelApi memberLevelApi;
  112 +
  113 + @Resource
107 114 private ProductCommentApi productCommentApi;
108 115 @Resource
109 116 private TradeMessageService tradeMessageService;
... ... @@ -336,6 +343,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
336 343 // TODO 芋艿:发送站内信
337 344  
338 345 // TODO 芋艿:OrderLog
  346 +
  347 + // todo 增加用户积分
  348 +
  349 + // 增加用户经验
  350 + addUserExperienceAsync(order.getUserId(), order.getPayPrice(), order.getId());
339 351 }
340 352  
341 353 /**
... ... @@ -602,6 +614,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
602 614 }
603 615  
604 616 // TODO 芋艿:未来如果有分佣,需要更新相关分佣订单为已失效
  617 +
  618 + // todo 取消用户积分
  619 +
  620 + // 取消用户经验
  621 + reduceUserExperienceAsync(order.getUserId(), orderRefundPrice, afterSaleId);
605 622 }
606 623  
607 624 @Override
... ... @@ -649,4 +666,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
649 666 TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus()));
650 667 }
651 668  
  669 + @Async
  670 + protected void addUserExperienceAsync(Long userId, Integer payPrice, Long orderId) {
  671 + int bizType = MemberExperienceBizTypeEnum.ORDER.getType();
  672 + memberLevelApi.addExperience(userId, payPrice, bizType, String.valueOf(orderId));
  673 + }
  674 +
  675 + @Async
  676 + protected void reduceUserExperienceAsync(Long userId, Integer refundPrice, Long afterSaleId){
  677 + int bizType = MemberExperienceBizTypeEnum.REFUND.getType();
  678 + memberLevelApi.addExperience(userId, -refundPrice, bizType, String.valueOf(afterSaleId));
  679 + }
652 680 }
... ...