Commit a3e161a9a3e9a5d5b5f1c75b9a06cd89f5a7d539

Authored by owen
1 parent a3e8b42b

trade: 分销业务review代码修改

yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/BrokerageApi.java deleted
1   -package cn.iocoder.yudao.module.trade.api.brokerage;
2   -
3   -import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
4   -import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
5   -
6   -import javax.validation.constraints.NotNull;
7   -import java.time.LocalDateTime;
8   -
9   -// TODO @疯狂:是不是不需要这个啦?
10   -/**
11   - * 分销 API 接口
12   - *
13   - * @author owen
14   - */
15   -public interface BrokerageApi {
16   -
17   - /**
18   - * 获得分销用户
19   - *
20   - * @param userId 用户编号
21   - * @return 分销用户信息
22   - */
23   - BrokerageUserDTO getBrokerageUser(Long userId);
24   -
25   - /**
26   - * 【会员】绑定推广员
27   - *
28   - * @param userId 用户编号
29   - * @param bindUserId 推广员编号
30   - * @param registerTime 用户注册时间
31   - * @return 是否绑定
32   - */
33   - default boolean bindUser(@NotNull Long userId, @NotNull Long bindUserId, @NotNull LocalDateTime registerTime) {
34   - // 注册时间在30秒内的,都算新用户
35   - // TODO @疯狂:这个要不抽到 service 里哈?
36   - boolean isNewUser = LocalDateTimeUtils.afterNow(registerTime.minusSeconds(30));
37   - return bindUser(userId, bindUserId, isNewUser);
38   - }
39   -
40   - /**
41   - * 绑定推广员
42   - *
43   - * @param userId 用户编号
44   - * @param bindUserId 推广员编号
45   - * @param isNewUser 是否为新用户
46   - * @return 是否绑定
47   - */
48   - boolean bindUser(@NotNull(message = "用户编号不能为空") Long userId,
49   - @NotNull(message = "推广员编号不能为空") Long bindUserId,
50   - @NotNull Boolean isNewUser);
51   -
52   -}
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/dto/BrokerageUserDTO.java deleted
1   -package cn.iocoder.yudao.module.trade.api.brokerage.dto;
2   -
3   -import lombok.Data;
4   -
5   -import java.time.LocalDateTime;
6   -
7   -/**
8   - * 分销用户 DTO
9   - *
10   - * @author owen
11   - */
12   -@Data
13   -public class BrokerageUserDTO {
14   -
15   - /**
16   - * 用户编号
17   - * <p>
18   - * 对应 MemberUserDO 的 id 字段
19   - */
20   - private Long id;
21   -
22   - /**
23   - * 推广员编号
24   - * <p>
25   - * 关联 MemberUserDO 的 id 字段
26   - */
27   - private Long bindUserId;
28   - /**
29   - * 推广员绑定时间
30   - */
31   - private LocalDateTime bindUserTime;
32   -
33   - /**
34   - * 推广资格
35   - */
36   - private Boolean brokerageEnabled;
37   - /**
38   - * 成为分销员时间
39   - */
40   - private LocalDateTime brokerageTime;
41   -
42   - /**
43   - * 可用佣金
44   - */
45   - private Integer price;
46   - /**
47   - * 冻结佣金
48   - */
49   - private Integer frozenPrice;
50   -
51   -}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/BrokerageApiImpl.java deleted
1   -package cn.iocoder.yudao.module.trade.api.brokerage;
2   -
3   -import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
4   -import cn.iocoder.yudao.module.trade.convert.brokerage.user.BrokerageUserConvert;
5   -import cn.iocoder.yudao.module.trade.service.brokerage.user.BrokerageUserService;
6   -import org.springframework.stereotype.Service;
7   -import org.springframework.validation.annotation.Validated;
8   -
9   -import javax.annotation.Resource;
10   -
11   -/**
12   - * 分销 API 接口实现类
13   - *
14   - * @author owen
15   - */
16   -@Service
17   -@Validated
18   -public class BrokerageApiImpl implements BrokerageApi {
19   -
20   - @Resource
21   - private BrokerageUserService brokerageUserService;
22   -
23   - @Override
24   - public BrokerageUserDTO getBrokerageUser(Long userId) {
25   - return BrokerageUserConvert.INSTANCE.convertDTO(brokerageUserService.getBrokerageUser(userId));
26   - }
27   -
28   - @Override
29   - public boolean bindUser(Long userId, Long bindUserId, Boolean isNewUser) {
30   - return brokerageUserService.bindBrokerageUser(userId, bindUserId, isNewUser);
31   - }
32   -
33   -}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/brokerage/user/BrokerageUserConvert.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.trade.convert.brokerage.user;
3 3 import cn.hutool.core.map.MapUtil;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
6   -import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
7 6 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserRespVO;
8 7 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
9 8 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
... ... @@ -56,6 +55,4 @@ public interface BrokerageUserConvert {
56 55 user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
57 56 return target;
58 57 }
59   -
60   - BrokerageUserDTO convertDTO(BrokerageUserDO brokerageUser);
61 58 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
... ... @@ -29,7 +29,6 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO;
29 29 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
30 30 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
31 31 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
32   -import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
33 32 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
34 33 import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
35 34 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
... ... @@ -276,10 +275,10 @@ public interface TradeOrderConvert {
276 275  
277 276 TradeOrderDO convert(TradeOrderRemarkReqVO reqVO);
278 277  
279   - default BrokerageAddReqBO convert(TradeOrderItemDO item, ProductSkuRespDTO sku) {
  278 + default BrokerageAddReqBO convert(MemberUserRespDTO user, TradeOrderItemDO item, ProductSkuRespDTO sku) {
280 279 return new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
281 280 .setBasePrice(item.getPayPrice() * item.getCount())
282   - .setTitle(BrokerageRecordBizTypeEnum.ORDER.getTitle()) // TODO @疯狂:标题类似:木晴冰雪成功购买云时代的JVM原理与实战;茫农成功购买深入拆解消息队列47讲
  281 + .setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()))
283 282 .setFirstFixedPrice(sku.getFirstBrokerageRecord()).setSecondFixedPrice(sku.getSecondBrokerageRecord());
284 283 }
285 284  
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/user/BrokerageUserService.java
1 1 package cn.iocoder.yudao.module.trade.service.brokerage.user;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
4 5 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserPageReqVO;
5 6 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
6 7  
  8 +import javax.validation.constraints.NotNull;
  9 +import java.time.LocalDateTime;
7 10 import java.util.Collection;
8 11 import java.util.List;
9 12  
... ... @@ -98,6 +101,21 @@ public interface BrokerageUserService {
98 101 /**
99 102 * 【会员】绑定推广员
100 103 *
  104 + * @param userId 用户编号
  105 + * @param bindUserId 推广员编号
  106 + * @param registerTime 用户注册时间
  107 + * @return 是否绑定
  108 + */
  109 + default boolean bindBrokerageUser(@NotNull Long userId, @NotNull Long bindUserId, @NotNull LocalDateTime registerTime) {
  110 + // 注册时间在30秒内的,都算新用户
  111 + boolean isNewUser = LocalDateTimeUtils.afterNow(registerTime.minusSeconds(30));
  112 + return bindBrokerageUser(userId, bindUserId, isNewUser);
  113 + }
  114 +
  115 +
  116 + /**
  117 + * 【会员】绑定推广员
  118 + *
101 119 * @param userId 用户编号
102 120 * @param bindUserId 推广员编号
103 121 * @param isNewUser 是否为新用户
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
... ... @@ -12,6 +12,8 @@ import cn.iocoder.yudao.module.member.api.address.AddressApi;
12 12 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
13 13 import cn.iocoder.yudao.module.member.api.level.MemberLevelApi;
14 14 import cn.iocoder.yudao.module.member.api.point.MemberPointApi;
  15 +import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
  16 +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
15 17 import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum;
16 18 import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
17 19 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
... ... @@ -115,6 +117,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
115 117 @Resource
116 118 private BargainRecordApi bargainRecordApi;
117 119 @Resource
  120 + private MemberUserApi memberUserApi;
  121 + @Resource
118 122 private MemberLevelApi memberLevelApi;
119 123 @Resource
120 124 private MemberPointApi memberPointApi;
... ... @@ -781,9 +785,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
781 785  
782 786 @Async
783 787 protected void addBrokerageAsync(Long userId, Long orderId) {
  788 + MemberUserRespDTO user = memberUserApi.getUser(userId);
  789 + Assert.notNull(user);
  790 +
784 791 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId);
785 792 List<BrokerageAddReqBO> list = convertList(orderItems,
786   - item -> TradeOrderConvert.INSTANCE.convert(item, productSkuApi.getSku(item.getSkuId())));
  793 + item -> TradeOrderConvert.INSTANCE.convert(user, item, productSkuApi.getSku(item.getSkuId())));
787 794 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list);
788 795 }
789 796  
... ...