mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 10:18:42 +08:00 
			
		
		
		
	trade: 分销业务review代码修改
This commit is contained in:
		| @@ -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); | ||||
|  | ||||
| } | ||||
| @@ -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; | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -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); | ||||
| } | ||||
|   | ||||
| @@ -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()); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 【会员】绑定推广员 | ||||
|      * | ||||
|   | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 owen
					owen