code review:分销逻辑

plp
YunaiV 3 years ago
parent 3b5215db21
commit 557b09a157

@ -20,6 +20,7 @@ public class BrokerageApiImpl implements BrokerageApi {
@Resource @Resource
private BrokerageUserService brokerageUserService; private BrokerageUserService brokerageUserService;
@Override
public BrokerageUserDTO getBrokerageUser(Long userId) { public BrokerageUserDTO getBrokerageUser(Long userId) {
return BrokerageUserConvert.INSTANCE.convertDTO(brokerageUserService.getBrokerageUser(userId)); return BrokerageUserConvert.INSTANCE.convertDTO(brokerageUserService.getBrokerageUser(userId));
} }

@ -62,7 +62,7 @@ public class BrokerageUserController {
@Operation(summary = "修改推广资格") @Operation(summary = "修改推广资格")
@PreAuthorize("@ss.hasPermission('trade:brokerage-user:update-brokerage-enable')") @PreAuthorize("@ss.hasPermission('trade:brokerage-user:update-brokerage-enable')")
public CommonResult<Boolean> updateBrokerageEnabled(@Valid @RequestBody BrokerageUserUpdateBrokerageEnabledReqVO updateReqVO) { public CommonResult<Boolean> updateBrokerageEnabled(@Valid @RequestBody BrokerageUserUpdateBrokerageEnabledReqVO updateReqVO) {
brokerageUserService.updateBrokerageEnabled(updateReqVO.getId(), updateReqVO.getEnabled()); brokerageUserService.updateBrokerageUserEnabled(updateReqVO.getId(), updateReqVO.getEnabled());
return success(true); return success(true);
} }
@ -89,12 +89,12 @@ public class BrokerageUserController {
// 合计分佣订单 // 合计分佣订单
Map<Long, UserBrokerageSummaryBO> userOrderSummaryMap = convertMap(userIds, Map<Long, UserBrokerageSummaryBO> userOrderSummaryMap = convertMap(userIds,
userId -> userId, userId -> userId,
userId -> brokerageRecordService.summaryByUserIdAndBizTypeAndStatus(userId, userId -> brokerageRecordService.getUserBrokerageSummaryByUserId(userId,
BrokerageRecordBizTypeEnum.ORDER.getType(), BrokerageRecordStatusEnum.SETTLEMENT.getStatus())); BrokerageRecordBizTypeEnum.ORDER.getType(), BrokerageRecordStatusEnum.SETTLEMENT.getStatus()));
// 合计推广用户数量 // 合计推广用户数量
Map<Long, Long> brokerageUserCountMap = convertMap(userIds, Map<Long, Long> brokerageUserCountMap = convertMap(userIds,
userId -> userId, userId -> userId,
userId -> brokerageUserService.getCountByBindUserId(userId)); userId -> brokerageUserService.getBrokerageUserCountByBindUserId(userId));
// todo 合计提现 // todo 合计提现

@ -23,21 +23,18 @@ public class AppBrokerageWithdrawCreateReqVO {
@Min(value = 1, message = "提现金额不能小于 1") @Min(value = 1, message = "提现金额不能小于 1")
private Integer price; private Integer price;
// ========== 银行卡、微信、支付宝 提现相关字段 ========== // ========== 银行卡、微信、支付宝 提现相关字段 ==========
@Schema(description = "提现账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789") @Schema(description = "提现账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789")
@NotBlank(message = "提现账号不能为空", groups = {Bank.class, Wechat.class, Alipay.class}) @NotBlank(message = "提现账号不能为空", groups = {Bank.class, Wechat.class, Alipay.class})
private String accountNo; private String accountNo;
// ========== 微信、支付宝 提现相关字段 ========== // ========== 微信、支付宝 提现相关字段 ==========
@Schema(description = "收款码的图片", example = "https://www.iocoder.cn/1.png") @Schema(description = "收款码的图片", example = "https://www.iocoder.cn/1.png")
@URL(message = "收款码的图片,必须是一个 URL") @URL(message = "收款码的图片,必须是一个 URL")
private String accountQrCodeUrl; private String accountQrCodeUrl;
// ========== 银行卡 提现相关字段 ========== // ========== 银行卡 提现相关字段 ==========
@Schema(description = "持卡人姓名", example = "张三") @Schema(description = "持卡人姓名", example = "张三")

@ -30,25 +30,21 @@ public interface BrokerageRecordConvert {
PageResult<BrokerageRecordRespVO> convertPage(PageResult<BrokerageRecordDO> page); PageResult<BrokerageRecordRespVO> convertPage(PageResult<BrokerageRecordDO> page);
// TODO @疯狂:可能 title 不是很固化会存在类似沐晴成功购买《XXX JVM 实战》
default BrokerageRecordDO convert(BrokerageUserDO user, BrokerageRecordBizTypeEnum bizType, String bizId, default BrokerageRecordDO convert(BrokerageUserDO user, BrokerageRecordBizTypeEnum bizType, String bizId,
Integer brokerageFrozenDays, int brokerage, LocalDateTime unfreezeTime, Integer brokerageFrozenDays, int brokeragePrice, LocalDateTime unfreezeTime,
String title) { String title) {
brokerageFrozenDays = ObjectUtil.defaultIfNull(brokerageFrozenDays, 0); brokerageFrozenDays = ObjectUtil.defaultIfNull(brokerageFrozenDays, 0);
// 不冻结时,佣金直接就是结算状态 // 不冻结时,佣金直接就是结算状态
Integer status = brokerageFrozenDays > 0 Integer status = brokerageFrozenDays > 0
? BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus() ? BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus()
: BrokerageRecordStatusEnum.SETTLEMENT.getStatus(); : BrokerageRecordStatusEnum.SETTLEMENT.getStatus();
return new BrokerageRecordDO() return new BrokerageRecordDO().setUserId(user.getId())
.setUserId(user.getId()) .setBizType(bizType.getType()).setBizId(bizId)
.setBizType(bizType.getType()) .setPrice(brokeragePrice).setTotalPrice(user.getPrice())
.setBizId(bizId)
.setPrice(brokerage)
.setTotalPrice(user.getPrice())
.setTitle(title) .setTitle(title)
.setDescription(StrUtil.format(bizType.getDescription(), String.valueOf(brokerage / 100.0))) .setDescription(StrUtil.format(bizType.getDescription(), String.valueOf(brokeragePrice / 100.0)))
.setStatus(status) .setStatus(status).setFrozenDays(brokerageFrozenDays).setUnfreezeTime(unfreezeTime);
.setFrozenDays(brokerageFrozenDays)
.setUnfreezeTime(unfreezeTime);
} }
} }

@ -37,24 +37,16 @@ public interface BrokerageUserConvert {
PageResult<BrokerageUserRespVO> result = convertPage(pageResult); PageResult<BrokerageUserRespVO> result = convertPage(pageResult);
for (BrokerageUserRespVO vo : result.getList()) { for (BrokerageUserRespVO vo : result.getList()) {
// 用户信息 // 用户信息
Optional.ofNullable(userMap.get(vo.getId())) Optional.ofNullable(userMap.get(vo.getId())).ifPresent(
.ifPresent(user -> { user -> vo.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
vo.setNickname(user.getNickname());
vo.setAvatar(user.getAvatar());
});
// 推广用户数量(一级) // 推广用户数量(一级)
vo.setBrokerageUserCount(MapUtil.getInt(brokerageUserCountMap, vo.getId(), 0)); vo.setBrokerageUserCount(MapUtil.getInt(brokerageUserCountMap, vo.getId(), 0));
// 推广订单数量、推广订单金额
Optional<UserBrokerageSummaryBO> orderSummaryOptional = Optional.ofNullable(userOrderSummaryMap.get(vo.getId())); Optional<UserBrokerageSummaryBO> orderSummaryOptional = Optional.ofNullable(userOrderSummaryMap.get(vo.getId()));
// 推广订单数量 vo.setBrokerageOrderCount(orderSummaryOptional.map(UserBrokerageSummaryBO::getCount).orElse(0))
vo.setBrokerageOrderCount(orderSummaryOptional.map(UserBrokerageSummaryBO::getCount).orElse(0)); .setBrokerageOrderPrice(orderSummaryOptional.map(UserBrokerageSummaryBO::getPrice).orElse(0));
// 推广订单金额 // todo 已提现次数、已提现金额
vo.setBrokerageOrderPrice(orderSummaryOptional.map(UserBrokerageSummaryBO::getPrice).orElse(0));
// todo 已提现次数
vo.setWithdrawCount(0); vo.setWithdrawCount(0);
// todo 已提现金额
vo.setWithdrawPrice(0); vo.setWithdrawPrice(0);
} }
return result; return result;

@ -48,6 +48,7 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> {
BrokerageRecordDO::getBizId, bizId); BrokerageRecordDO::getBizId, bizId);
} }
// TODO @疯狂mysql 关键字,大写哈;这样看起来清晰点;例如说 SELECT COUNT(1)
@Select("select count(1), sum(price) from trade_brokerage_record where user_id = #{userId} and biz_type = #{bizType} and status = #{status}") @Select("select count(1), sum(price) from trade_brokerage_record where user_id = #{userId} and biz_type = #{bizType} and status = #{status}")
UserBrokerageSummaryBO selectCountAndSumPriceByUserIdAndBizTypeAndStatus(@Param("userId") Long userId, UserBrokerageSummaryBO selectCountAndSumPriceByUserIdAndBizTypeAndStatus(@Param("userId") Long userId,
@Param("bizType") Integer bizType, @Param("bizType") Integer bizType,

@ -111,4 +111,5 @@ public interface BrokerageUserMapper extends BaseMapperX<BrokerageUserDO> {
.eq(BrokerageUserDO::getId, id) .eq(BrokerageUserDO::getId, id)
.set(BrokerageUserDO::getBrokerageEnabled, false).set(BrokerageUserDO::getBrokerageTime, null)); .set(BrokerageUserDO::getBrokerageEnabled, false).set(BrokerageUserDO::getBrokerageTime, null));
} }
} }

@ -5,6 +5,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/** /**
* Request BO * Request BO
@ -24,6 +25,7 @@ public class BrokerageAddReqBO {
/** /**
* *
*/ */
@NotNull(message = "佣金基数不能为空")
private Integer basePrice; private Integer basePrice;
/** /**
* *

@ -13,6 +13,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class UserBrokerageSummaryBO { public class UserBrokerageSummaryBO {
/** /**
* *
*/ */
@ -21,4 +22,5 @@ public class UserBrokerageSummaryBO {
* *
*/ */
private Integer price; private Integer price;
} }

@ -66,5 +66,5 @@ public interface BrokerageRecordService {
* @param status * @param status
* @return * @return
*/ */
UserBrokerageSummaryBO summaryByUserIdAndBizTypeAndStatus(Long userId, Integer bizType, Integer status); UserBrokerageSummaryBO getUserBrokerageSummaryByUserId(Long userId, Integer bizType, Integer status);
} }

@ -89,6 +89,7 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void cancelBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, String bizId) { public void cancelBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, String bizId) {
// TODO @疯狂userId 加进去查询,会不会更好一点?万一穿错参数;
BrokerageRecordDO record = brokerageRecordMapper.selectByBizTypeAndBizId(bizType.getType(), bizId); BrokerageRecordDO record = brokerageRecordMapper.selectByBizTypeAndBizId(bizType.getType(), bizId);
if (record == null || ObjectUtil.notEqual(record.getUserId(), userId)) { if (record == null || ObjectUtil.notEqual(record.getUserId(), userId)) {
log.error("[cancelBrokerage][userId({})][bizId({}) 更新为已失效失败:记录不存在]", userId, bizId); log.error("[cancelBrokerage][userId({})][bizId({}) 更新为已失效失败:记录不存在]", userId, bizId);
@ -138,7 +139,7 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
* @param list * @param list
* @param brokerageFrozenDays * @param brokerageFrozenDays
* @param brokeragePercent * @param brokeragePercent
* @param fixedPriceFun * @param fixedPriceFun // TODO 疯狂:这里是不是可以直接传递 fixedPrice 呀?
* @param bizType * @param bizType
*/ */
private void addBrokerage(BrokerageUserDO user, List<BrokerageAddReqBO> list, Integer brokerageFrozenDays, private void addBrokerage(BrokerageUserDO user, List<BrokerageAddReqBO> list, Integer brokerageFrozenDays,
@ -200,9 +201,9 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
} }
@Override @Override
public UserBrokerageSummaryBO summaryByUserIdAndBizTypeAndStatus(Long userId, Integer bizType, Integer status) { public UserBrokerageSummaryBO getUserBrokerageSummaryByUserId(Long userId, Integer bizType, Integer status) {
UserBrokerageSummaryBO summaryBO = brokerageRecordMapper.selectCountAndSumPriceByUserIdAndBizTypeAndStatus(userId, bizType, status); UserBrokerageSummaryBO summaryBO = brokerageRecordMapper.selectCountAndSumPriceByUserIdAndBizTypeAndStatus(userId, bizType, status);
return summaryBO == null ? new UserBrokerageSummaryBO(0, 0) : summaryBO; return summaryBO != null ? summaryBO : new UserBrokerageSummaryBO(0, 0);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)

@ -52,7 +52,7 @@ public interface BrokerageUserService {
* @param id * @param id
* @param enabled 广 * @param enabled 广
*/ */
void updateBrokerageEnabled(Long id, Boolean enabled); void updateBrokerageUserEnabled(Long id, Boolean enabled);
/** /**
* 广 * 广
@ -79,20 +79,21 @@ public interface BrokerageUserService {
void updateUserFrozenPrice(Long id, Integer frozenPrice); void updateUserFrozenPrice(Long id, Integer frozenPrice);
/** /**
* , *
* *
* @param id * @param id
* @param frozenPrice * @param frozenPrice
*/ */
void updateFrozenPriceDecrAndPriceIncr(Long id, Integer frozenPrice); void updateFrozenPriceDecrAndPriceIncr(Long id, Integer frozenPrice);
// TODO @疯狂:这个后面可能要支持下,二级
/** /**
* 广 * 广
* *
* @param bindUserId 广 * @param bindUserId 广
* @return 广 * @return 广
*/ */
Long getCountByBindUserId(Long bindUserId); Long getBrokerageUserCountByBindUserId(Long bindUserId);
/** /**
* 广 * 广
@ -103,4 +104,5 @@ public interface BrokerageUserService {
* @return * @return
*/ */
boolean bindUser(Long userId, Long bindUserId, Boolean isNewUser); boolean bindUser(Long userId, Long bindUserId, Boolean isNewUser);
} }

@ -57,18 +57,22 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
public void updateBrokerageUserId(Long id, Long bindUserId) { public void updateBrokerageUserId(Long id, Long bindUserId) {
// 校验存在 // 校验存在
validateBrokerageUserExists(id); validateBrokerageUserExists(id);
// 情况一:清除推广员
if (bindUserId == null) { if (bindUserId == null) {
// 清除推广员 // 清除推广员
brokerageUserMapper.updateBindUserIdAndBindUserTimeToNull(id); brokerageUserMapper.updateBindUserIdAndBindUserTimeToNull(id);
} else { return;
// 修改推广员
brokerageUserMapper.updateById(new BrokerageUserDO().setId(id)
.setBindUserId(bindUserId).setBindUserTime(LocalDateTime.now()));
} }
// 情况二:修改推广员
// TODO @疯狂:要复用一些 validateCanBindUser 的校验哈;
brokerageUserMapper.updateById(new BrokerageUserDO().setId(id)
.setBindUserId(bindUserId).setBindUserTime(LocalDateTime.now()));
} }
@Override @Override
public void updateBrokerageEnabled(Long id, Boolean enabled) { public void updateBrokerageUserEnabled(Long id, Boolean enabled) {
// 校验存在 // 校验存在
validateBrokerageUserExists(id); validateBrokerageUserExists(id);
if (BooleanUtil.isTrue(enabled)) { if (BooleanUtil.isTrue(enabled)) {
@ -124,36 +128,41 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
} }
@Override @Override
public Long getCountByBindUserId(Long bindUserId) { public Long getBrokerageUserCountByBindUserId(Long bindUserId) {
// TODO @疯狂mapper 封装下哈;不直接在 service 调用这种基础 mapper 的基础方法
return brokerageUserMapper.selectCount(BrokerageUserDO::getBindUserId, bindUserId); return brokerageUserMapper.selectCount(BrokerageUserDO::getBindUserId, bindUserId);
} }
// TODO @疯狂:因为现在 user 会存在使用验证码直接注册,所以 isNewUser 不太好传递我们是不是可以约定绑定的时间createTime 在 30 秒内,就认为新用户;
@Override @Override
public boolean bindUser(Long userId, Long bindUserId, Boolean isNewUser) { public boolean bindUser(Long userId, Long bindUserId, Boolean isNewUser) {
// TODO @疯狂userId 为空,搞到参数校验里哇;
if (userId == null) { if (userId == null) {
throw exception(0); throw exception(0);
} }
boolean isInsert = false; // 1. 获得分销用户
boolean isNewBrokerageUser = false;
BrokerageUserDO brokerageUser = brokerageUserMapper.selectById(userId); BrokerageUserDO brokerageUser = brokerageUserMapper.selectById(userId);
// 分销用户不存在的情况1.新注册 2.旧数据 3.分销功能关闭后又打开 if (brokerageUser == null) { // 分销用户不存在的情况1. 新注册2. 旧数据3. 分销功能关闭后又打开
if (brokerageUser == null) { isNewBrokerageUser = true;
isInsert = true;
brokerageUser = new BrokerageUserDO().setId(userId).setBrokerageEnabled(false).setPrice(0).setFrozenPrice(0); brokerageUser = new BrokerageUserDO().setId(userId).setBrokerageEnabled(false).setPrice(0).setFrozenPrice(0);
} }
// 校验能否绑定 // 2.1 校验能否绑定
boolean validated = validateCanBindUser(brokerageUser, bindUserId, isNewUser); boolean validated = validateCanBindUser(brokerageUser, bindUserId, isNewUser);
if (!validated) { if (!validated) {
return false; return false;
} }
if (isInsert) { // 2.2 绑定用户
if (isNewBrokerageUser) {
Integer enabledCondition = tradeConfigService.getTradeConfig().getBrokerageEnabledCondition(); Integer enabledCondition = tradeConfigService.getTradeConfig().getBrokerageEnabledCondition();
if (BrokerageEnabledConditionEnum.ALL.getCondition().equals(enabledCondition)) { if (BrokerageEnabledConditionEnum.ALL.getCondition().equals(enabledCondition)) { // 人人分销:用户默认就有分销资格
// 人人分销:用户默认就有分销资格 // TODO @疯狂:应该设置下 brokerageTime而不是 bindUserTime
brokerageUser.setBrokerageEnabled(true).setBindUserTime(LocalDateTime.now()); brokerageUser.setBrokerageEnabled(true).setBindUserTime(LocalDateTime.now());
} }
// TODO @疯狂:这里是不是要设置 bindUserId、bindUserTime 字段哈;
brokerageUserMapper.insert(brokerageUser); brokerageUserMapper.insert(brokerageUser);
} else { } else {
brokerageUserMapper.updateById(new BrokerageUserDO().setId(userId) brokerageUserMapper.updateById(new BrokerageUserDO().setId(userId)
@ -162,14 +171,16 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
return true; return true;
} }
// TODO @疯狂validate 方法,一般不返回 true false而是抛出异常如果要返回 true false 这种,方法名字可以改成 isUserCanBind
private boolean validateCanBindUser(BrokerageUserDO user, Long bindUserId, Boolean isNewUser) { private boolean validateCanBindUser(BrokerageUserDO user, Long bindUserId, Boolean isNewUser) {
// TODO @疯狂bindUserId 为空,搞到参数校验里哇;
if (bindUserId == null) { if (bindUserId == null) {
return false; return false;
} }
// 校验分销功能是否启用 // 校验分销功能是否启用
TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig(); TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig();
if (tradeConfig == null || !BooleanUtil.isTrue(tradeConfig.getBrokerageEnabled())) { if (tradeConfig == null || BooleanUtil.isFalse(tradeConfig.getBrokerageEnabled())) {
return false; return false;
} }
@ -180,7 +191,7 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
// 校验要绑定的用户有无推广资格 // 校验要绑定的用户有无推广资格
BrokerageUserDO bindUser = brokerageUserMapper.selectById(bindUserId); BrokerageUserDO bindUser = brokerageUserMapper.selectById(bindUserId);
if (bindUser == null || !BooleanUtil.isTrue(bindUser.getBrokerageEnabled())) { if (bindUser == null || BooleanUtil.isFalse(bindUser.getBrokerageEnabled())) {
throw exception(BROKERAGE_BIND_USER_NOT_ENABLED); throw exception(BROKERAGE_BIND_USER_NOT_ENABLED);
} }
@ -200,6 +211,7 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
} }
} }
// TODO @疯狂:这块是不是一直查询到根节点,中间不允许出现自己;就是不能形成环。虽然目前是 2 级,但是未来可能会改多级; = = 环的话,就会存在问题哈
// A->B->A下级不能绑定自己的上级, A->B->C->A可以!! // A->B->A下级不能绑定自己的上级, A->B->C->A可以!!
if (Objects.equals(user.getId(), bindUser.getBindUserId())) { if (Objects.equals(user.getId(), bindUser.getBindUserId())) {
throw exception(BROKERAGE_BIND_LOOP); throw exception(BROKERAGE_BIND_LOOP);

@ -395,7 +395,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 增加用户经验 // 增加用户经验
getSelf().addUserExperienceAsync(order.getUserId(), order.getPayPrice(), order.getId()); getSelf().addUserExperienceAsync(order.getUserId(), order.getPayPrice(), order.getId());
// 增加用户佣金 // 增加用户佣金
getSelf().addBrokerageAsync(order.getUserId(), BrokerageRecordBizTypeEnum.ORDER, order.getId()); getSelf().addBrokerageAsync(order.getUserId(), order.getId());
} }
/** /**
@ -675,7 +675,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 扣减用户经验 // 扣减用户经验
getSelf().reduceUserExperienceAsync(order.getUserId(), orderRefundPrice, afterSaleId); getSelf().reduceUserExperienceAsync(order.getUserId(), orderRefundPrice, afterSaleId);
// 更新分佣记录为已失效 // 更新分佣记录为已失效
getSelf().cancelBrokerageAsync(order.getUserId(), BrokerageRecordBizTypeEnum.ORDER, id); getSelf().cancelBrokerageAsync(order.getUserId(), id);
} }
@Override @Override
@ -785,16 +785,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Async @Async
protected void addBrokerageAsync(Long userId, BrokerageRecordBizTypeEnum bizType, Long orderId) { protected void addBrokerageAsync(Long userId, Long orderId) {
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(item, productSkuApi.getSku(item.getSkuId())));
brokerageRecordService.addBrokerage(userId, bizType, list); brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, list);
} }
@Async @Async
protected void cancelBrokerageAsync(Long userId, BrokerageRecordBizTypeEnum bizType, Long orderItemId) { protected void cancelBrokerageAsync(Long userId, Long orderItemId) {
brokerageRecordService.cancelBrokerage(userId, bizType, String.valueOf(orderItemId)); brokerageRecordService.cancelBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, String.valueOf(orderItemId));
} }
/** /**

@ -33,11 +33,6 @@
<artifactId>yudao-module-infra-api</artifactId> <artifactId>yudao-module-infra-api</artifactId>
<version>${revision}</version> <version>${revision}</version>
</dependency> </dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-trade-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 --> <!-- 业务组件 -->
<dependency> <dependency>

@ -8,8 +8,6 @@ import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.service.level.MemberLevelService; import cn.iocoder.yudao.module.member.service.level.MemberLevelService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService; import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.trade.api.brokerage.BrokerageApi;
import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageUserDTO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -18,7 +16,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Optional;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@ -32,23 +29,16 @@ public class AppMemberUserController {
@Resource @Resource
private MemberUserService userService; private MemberUserService userService;
@Resource @Resource
private MemberLevelService levelService; private MemberLevelService levelService;
@Resource
private BrokerageApi brokerageApi;
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得基本信息") @Operation(summary = "获得基本信息")
@PreAuthenticated @PreAuthenticated
public CommonResult<AppMemberUserInfoRespVO> getUserInfo() { public CommonResult<AppMemberUserInfoRespVO> getUserInfo() {
MemberUserDO user = userService.getUser(getLoginUserId()); MemberUserDO user = userService.getUser(getLoginUserId());
MemberLevelDO level = levelService.getLevel(user.getLevelId()); MemberLevelDO level = levelService.getLevel(user.getLevelId());
BrokerageUserDTO brokerageUser = brokerageApi.getBrokerageUser(user.getId()); return success(MemberUserConvert.INSTANCE.convert(user, level));
return success(MemberUserConvert.INSTANCE.convert(user, level)
.setBrokerageEnabled(Optional.ofNullable(brokerageUser).map(BrokerageUserDTO::getBrokerageEnabled).orElse(false))
);
} }
@PutMapping("/update") @PutMapping("/update")

Loading…
Cancel
Save