trade: 分销业务review代码修改
This commit is contained in:
parent
a3e8b42be6
commit
a3e161a9a3
@ -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.hutool.core.map.MapUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
|
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.controller.admin.brokerage.user.vo.BrokerageUserRespVO;
|
||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
|
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
|
||||||
import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
|
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()));
|
user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
|
||||||
return target;
|
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.delivery.DeliveryExpressDO;
|
||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
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.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.enums.order.TradeOrderItemAfterSaleStatusEnum;
|
||||||
import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
|
import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
|
||||||
import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
|
import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
|
||||||
@ -276,10 +275,10 @@ public interface TradeOrderConvert {
|
|||||||
|
|
||||||
TradeOrderDO convert(TradeOrderRemarkReqVO reqVO);
|
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())
|
return new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
|
||||||
.setBasePrice(item.getPayPrice() * item.getCount())
|
.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());
|
.setFirstFixedPrice(sku.getFirstBrokerageRecord()).setSecondFixedPrice(sku.getSecondBrokerageRecord());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package cn.iocoder.yudao.module.trade.service.brokerage.user;
|
package cn.iocoder.yudao.module.trade.service.brokerage.user;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
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.controller.admin.brokerage.user.vo.BrokerageUserPageReqVO;
|
||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
|
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.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -95,6 +98,21 @@ public interface BrokerageUserService {
|
|||||||
*/
|
*/
|
||||||
Long getBrokerageUserCountByBindUserId(Long bindUserId, Integer level);
|
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.address.dto.AddressRespDTO;
|
||||||
import cn.iocoder.yudao.module.member.api.level.MemberLevelApi;
|
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.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.MemberExperienceBizTypeEnum;
|
||||||
import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum;
|
||||||
import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
|
import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
|
||||||
@ -115,6 +117,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
@Resource
|
@Resource
|
||||||
private BargainRecordApi bargainRecordApi;
|
private BargainRecordApi bargainRecordApi;
|
||||||
@Resource
|
@Resource
|
||||||
|
private MemberUserApi memberUserApi;
|
||||||
|
@Resource
|
||||||
private MemberLevelApi memberLevelApi;
|
private MemberLevelApi memberLevelApi;
|
||||||
@Resource
|
@Resource
|
||||||
private MemberPointApi memberPointApi;
|
private MemberPointApi memberPointApi;
|
||||||
@ -781,9 +785,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
|
|
||||||
@Async
|
@Async
|
||||||
protected void addBrokerageAsync(Long userId, Long orderId) {
|
protected void addBrokerageAsync(Long userId, Long orderId) {
|
||||||
|
MemberUserRespDTO user = memberUserApi.getUser(userId);
|
||||||
|
Assert.notNull(user);
|
||||||
|
|
||||||
List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId);
|
List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId);
|
||||||
List<BrokerageAddReqBO> list = convertList(orderItems,
|
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);
|
brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user