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,7 +3,6 @@ package cn.iocoder.yudao.module.trade.convert.brokerage.user;
3 import cn.hutool.core.map.MapUtil; 3 import cn.hutool.core.map.MapUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 5 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
6 -import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;  
7 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserRespVO; 6 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserRespVO;
8 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO; 7 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
9 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO; 8 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
@@ -56,6 +55,4 @@ public interface BrokerageUserConvert { @@ -56,6 +55,4 @@ public interface BrokerageUserConvert {
56 user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar())); 55 user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
57 return target; 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,7 +29,6 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO;
29 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; 29 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
30 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; 30 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
31 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; 31 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
32 -import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;  
33 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; 32 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
34 import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO; 33 import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
35 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; 34 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
@@ -276,10 +275,10 @@ public interface TradeOrderConvert { @@ -276,10 +275,10 @@ public interface TradeOrderConvert {
276 275
277 TradeOrderDO convert(TradeOrderRemarkReqVO reqVO); 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 return new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId()) 279 return new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
281 .setBasePrice(item.getPayPrice() * item.getCount()) 280 .setBasePrice(item.getPayPrice() * item.getCount())
282 - .setTitle(BrokerageRecordBizTypeEnum.ORDER.getTitle()) // TODO @疯狂:标题类似:木晴冰雪成功购买云时代的JVM原理与实战;茫农成功购买深入拆解消息队列47讲 281 + .setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()))
283 .setFirstFixedPrice(sku.getFirstBrokerageRecord()).setSecondFixedPrice(sku.getSecondBrokerageRecord()); 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 package cn.iocoder.yudao.module.trade.service.brokerage.user; 1 package cn.iocoder.yudao.module.trade.service.brokerage.user;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
4 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserPageReqVO; 5 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserPageReqVO;
5 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO; 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 import java.util.Collection; 10 import java.util.Collection;
8 import java.util.List; 11 import java.util.List;
9 12
@@ -98,6 +101,21 @@ public interface BrokerageUserService { @@ -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 * @param userId 用户编号 119 * @param userId 用户编号
102 * @param bindUserId 推广员编号 120 * @param bindUserId 推广员编号
103 * @param isNewUser 是否为新用户 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,6 +12,8 @@ import cn.iocoder.yudao.module.member.api.address.AddressApi;
12 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; 12 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
13 import cn.iocoder.yudao.module.member.api.level.MemberLevelApi; 13 import cn.iocoder.yudao.module.member.api.level.MemberLevelApi;
14 import cn.iocoder.yudao.module.member.api.point.MemberPointApi; 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 import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum; 17 import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum;
16 import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum; 18 import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
17 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi; 19 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
@@ -115,6 +117,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -115,6 +117,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
115 @Resource 117 @Resource
116 private BargainRecordApi bargainRecordApi; 118 private BargainRecordApi bargainRecordApi;
117 @Resource 119 @Resource
  120 + private MemberUserApi memberUserApi;
  121 + @Resource
118 private MemberLevelApi memberLevelApi; 122 private MemberLevelApi memberLevelApi;
119 @Resource 123 @Resource
120 private MemberPointApi memberPointApi; 124 private MemberPointApi memberPointApi;
@@ -781,9 +785,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -781,9 +785,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
781 785
782 @Async 786 @Async
783 protected void addBrokerageAsync(Long userId, Long orderId) { 787 protected void addBrokerageAsync(Long userId, Long orderId) {
  788 + MemberUserRespDTO user = memberUserApi.getUser(userId);
  789 + Assert.notNull(user);
  790 +
784 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId); 791 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId);
785 List<BrokerageAddReqBO> list = convertList(orderItems, 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 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list); 794 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list);
788 } 795 }
789 796