Commit a3e161a9a3e9a5d5b5f1c75b9a06cd89f5a7d539
1 parent
a3e8b42b
trade: 分销业务review代码修改
Showing
7 changed files
with
28 additions
and
143 deletions
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 | ... | ... |