浏览代码

trade: 分销业务review代码修改

owen 1 年之前
父节点
当前提交
a3e161a9a3

+ 0 - 52
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/BrokerageApi.java

@@ -1,52 +0,0 @@
-package cn.iocoder.yudao.module.trade.api.brokerage;
-
-import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
-import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
-
-import javax.validation.constraints.NotNull;
-import java.time.LocalDateTime;
-
-// TODO @疯狂:是不是不需要这个啦?
-/**
- * 分销 API 接口
- *
- * @author owen
- */
-public interface BrokerageApi {
-
-    /**
-     * 获得分销用户
-     *
-     * @param userId 用户编号
-     * @return 分销用户信息
-     */
-    BrokerageUserDTO getBrokerageUser(Long userId);
-
-    /**
-     * 【会员】绑定推广员
-     *
-     * @param userId       用户编号
-     * @param bindUserId   推广员编号
-     * @param registerTime 用户注册时间
-     * @return 是否绑定
-     */
-    default boolean bindUser(@NotNull Long userId, @NotNull Long bindUserId, @NotNull LocalDateTime registerTime) {
-        // 注册时间在30秒内的,都算新用户
-        // TODO @疯狂:这个要不抽到 service 里哈?
-        boolean isNewUser = LocalDateTimeUtils.afterNow(registerTime.minusSeconds(30));
-        return bindUser(userId, bindUserId, isNewUser);
-    }
-
-    /**
-     * 绑定推广员
-     *
-     * @param userId     用户编号
-     * @param bindUserId 推广员编号
-     * @param isNewUser  是否为新用户
-     * @return 是否绑定
-     */
-    boolean bindUser(@NotNull(message = "用户编号不能为空") Long userId,
-                     @NotNull(message = "推广员编号不能为空") Long bindUserId,
-                     @NotNull Boolean isNewUser);
-
-}

+ 0 - 51
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/dto/BrokerageUserDTO.java

@@ -1,51 +0,0 @@
-package cn.iocoder.yudao.module.trade.api.brokerage.dto;
-
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-/**
- * 分销用户 DTO
- *
- * @author owen
- */
-@Data
-public class BrokerageUserDTO {
-
-    /**
-     * 用户编号
-     * <p>
-     * 对应 MemberUserDO 的 id 字段
-     */
-    private Long id;
-
-    /**
-     * 推广员编号
-     * <p>
-     * 关联 MemberUserDO 的 id 字段
-     */
-    private Long bindUserId;
-    /**
-     * 推广员绑定时间
-     */
-    private LocalDateTime bindUserTime;
-
-    /**
-     * 推广资格
-     */
-    private Boolean brokerageEnabled;
-    /**
-     * 成为分销员时间
-     */
-    private LocalDateTime brokerageTime;
-
-    /**
-     * 可用佣金
-     */
-    private Integer price;
-    /**
-     * 冻结佣金
-     */
-    private Integer frozenPrice;
-
-}

+ 0 - 33
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/BrokerageApiImpl.java

@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.trade.api.brokerage;
-
-import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
-import cn.iocoder.yudao.module.trade.convert.brokerage.user.BrokerageUserConvert;
-import cn.iocoder.yudao.module.trade.service.brokerage.user.BrokerageUserService;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-
-/**
- * 分销 API 接口实现类
- *
- * @author owen
- */
-@Service
-@Validated
-public class BrokerageApiImpl implements BrokerageApi {
-
-    @Resource
-    private BrokerageUserService brokerageUserService;
-
-    @Override
-    public BrokerageUserDTO getBrokerageUser(Long userId) {
-        return BrokerageUserConvert.INSTANCE.convertDTO(brokerageUserService.getBrokerageUser(userId));
-    }
-
-    @Override
-    public boolean bindUser(Long userId, Long bindUserId, Boolean isNewUser) {
-        return brokerageUserService.bindBrokerageUser(userId, bindUserId, isNewUser);
-    }
-
-}

+ 0 - 3
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;
 import cn.hutool.core.map.MapUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
-import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserRespVO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
@@ -56,6 +55,4 @@ public interface BrokerageUserConvert {
                 user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
         return target;
     }
-
-    BrokerageUserDTO convertDTO(BrokerageUserDO brokerageUser);
 }

+ 2 - 3
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;
 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
-import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
 import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
@@ -276,10 +275,10 @@ public interface TradeOrderConvert {
 
     TradeOrderDO convert(TradeOrderRemarkReqVO reqVO);
 
-    default BrokerageAddReqBO convert(TradeOrderItemDO item, ProductSkuRespDTO sku) {
+    default BrokerageAddReqBO convert(MemberUserRespDTO user, TradeOrderItemDO item, ProductSkuRespDTO sku) {
         return new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
                 .setBasePrice(item.getPayPrice() * item.getCount())
-                .setTitle(BrokerageRecordBizTypeEnum.ORDER.getTitle()) // TODO @疯狂:标题类似:木晴冰雪成功购买云时代的JVM原理与实战;茫农成功购买深入拆解消息队列47讲
+                .setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()))
                 .setFirstFixedPrice(sku.getFirstBrokerageRecord()).setSecondFixedPrice(sku.getSecondBrokerageRecord());
     }
 

+ 18 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/user/BrokerageUserService.java

@@ -1,9 +1,12 @@
 package cn.iocoder.yudao.module.trade.service.brokerage.user;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.BrokerageUserPageReqVO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
 
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 
@@ -95,6 +98,21 @@ public interface BrokerageUserService {
      */
     Long getBrokerageUserCountByBindUserId(Long bindUserId, Integer level);
 
+    /**
+     * 【会员】绑定推广员
+     *
+     * @param userId       用户编号
+     * @param bindUserId   推广员编号
+     * @param registerTime 用户注册时间
+     * @return 是否绑定
+     */
+    default boolean bindBrokerageUser(@NotNull Long userId, @NotNull Long bindUserId, @NotNull LocalDateTime registerTime) {
+        // 注册时间在30秒内的,都算新用户
+        boolean isNewUser = LocalDateTimeUtils.afterNow(registerTime.minusSeconds(30));
+        return bindBrokerageUser(userId, bindUserId, isNewUser);
+    }
+
+
     /**
      * 【会员】绑定推广员
      *

+ 8 - 1
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;
 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
 import cn.iocoder.yudao.module.member.api.level.MemberLevelApi;
 import cn.iocoder.yudao.module.member.api.point.MemberPointApi;
+import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
+import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 import cn.iocoder.yudao.module.member.enums.MemberExperienceBizTypeEnum;
 import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
@@ -115,6 +117,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
     @Resource
     private BargainRecordApi bargainRecordApi;
     @Resource
+    private MemberUserApi memberUserApi;
+    @Resource
     private MemberLevelApi memberLevelApi;
     @Resource
     private MemberPointApi memberPointApi;
@@ -781,9 +785,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 
     @Async
     protected void addBrokerageAsync(Long userId, Long orderId) {
+        MemberUserRespDTO user = memberUserApi.getUser(userId);
+        Assert.notNull(user);
+
         List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId);
         List<BrokerageAddReqBO> list = convertList(orderItems,
-                item -> TradeOrderConvert.INSTANCE.convert(item, productSkuApi.getSku(item.getSkuId())));
+                item -> TradeOrderConvert.INSTANCE.convert(user, item, productSkuApi.getSku(item.getSkuId())));
         brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list);
     }