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,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 |