Commit cf6f3eaa414be82345e354408ef72185485db377

Authored by YunaiV
1 parent 4959479a

【代码修复】MALL:修复订单项取消时,分销未取消所有推广员的推广记录问题

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageRecordMapper.java
... ... @@ -50,10 +50,9 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> {
50 50 .eq(BrokerageRecordDO::getStatus, status));
51 51 }
52 52  
53   - default BrokerageRecordDO selectByBizTypeAndBizIdAndUserId(Integer bizType, String bizId, Long userId) {
54   - return selectOne(BrokerageRecordDO::getBizType, bizType,
55   - BrokerageRecordDO::getBizId, bizId,
56   - BrokerageRecordDO::getUserId, userId);
  53 + default List<BrokerageRecordDO> selectListByBizTypeAndBizId(Integer bizType, String bizId) {
  54 + return selectList(BrokerageRecordDO::getBizType, bizType,
  55 + BrokerageRecordDO::getBizId, bizId);
57 56 }
58 57  
59 58 default List<UserBrokerageSummaryRespBO> selectCountAndSumPriceByUserIdInAndBizTypeAndStatus(Collection<Long> userIds,
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordService.java
... ... @@ -78,11 +78,10 @@ public interface BrokerageRecordService {
78 78 /**
79 79 * 取消佣金:将佣金记录,状态修改为已失效
80 80 *
81   - * @param userId 会员编号
82 81 * @param bizType 业务类型
83 82 * @param bizId 业务编号
84 83 */
85   - void cancelBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, String bizId);
  84 + void cancelBrokerage(BrokerageRecordBizTypeEnum bizType, String bizId);
86 85  
87 86 /**
88 87 * 解冻佣金:将待结算的佣金记录,状态修改为已结算
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java
... ... @@ -107,27 +107,29 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
107 107  
108 108 @Override
109 109 @Transactional(rollbackFor = Exception.class)
110   - public void cancelBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, String bizId) {
111   - BrokerageRecordDO record = brokerageRecordMapper.selectByBizTypeAndBizIdAndUserId(bizType.getType(), bizId, userId);
112   - if (record == null) {
113   - log.error("[cancelBrokerage][userId({})][bizId({}) 更新为已失效失败:记录不存在]", userId, bizId);
  110 + public void cancelBrokerage(BrokerageRecordBizTypeEnum bizType, String bizId) {
  111 + List<BrokerageRecordDO> records = brokerageRecordMapper.selectListByBizTypeAndBizId(bizType.getType(), bizId);
  112 + if (CollUtil.isEmpty(records)) {
  113 + log.error("[cancelBrokerage][bizId({}) bizType({}) 更新为已失效失败:记录不存在]", bizId, bizType);
114 114 return;
115 115 }
116 116  
117   - // 1. 更新佣金记录为已失效
118   - BrokerageRecordDO updateObj = new BrokerageRecordDO().setStatus(BrokerageRecordStatusEnum.CANCEL.getStatus());
119   - int updateRows = brokerageRecordMapper.updateByIdAndStatus(record.getId(), record.getStatus(), updateObj);
120   - if (updateRows == 0) {
121   - log.error("[cancelBrokerage][record({}) 更新为已失效失败]", record.getId());
122   - return;
123   - }
  117 + records.forEach(record -> {
  118 + // 1. 更新佣金记录为已失效
  119 + BrokerageRecordDO updateObj = new BrokerageRecordDO().setStatus(BrokerageRecordStatusEnum.CANCEL.getStatus());
  120 + int updateRows = brokerageRecordMapper.updateByIdAndStatus(record.getId(), record.getStatus(), updateObj);
  121 + if (updateRows == 0) {
  122 + log.error("[cancelBrokerage][record({}) 更新为已失效失败]", record.getId());
  123 + return;
  124 + }
124 125  
125   - // 2. 更新用户的佣金
126   - if (BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus().equals(record.getStatus())) {
127   - brokerageUserService.updateUserFrozenPrice(userId, -record.getPrice());
128   - } else if (BrokerageRecordStatusEnum.SETTLEMENT.getStatus().equals(record.getStatus())) {
129   - brokerageUserService.updateUserPrice(userId, -record.getPrice());
130   - }
  126 + // 2. 更新用户的佣金
  127 + if (BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus().equals(record.getStatus())) {
  128 + brokerageUserService.updateUserFrozenPrice(record.getUserId(), -record.getPrice());
  129 + } else if (BrokerageRecordStatusEnum.SETTLEMENT.getStatus().equals(record.getStatus())) {
  130 + brokerageUserService.updateUserPrice(record.getUserId(), -record.getPrice());
  131 + }
  132 + });
131 133 }
132 134  
133 135 /**
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserService.java
... ... @@ -9,9 +9,6 @@ import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokera
9 9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
10 10 import jakarta.validation.constraints.NotNull;
11 11  
12   -import java.util.Collection;
13   -import java.util.List;
14   -
15 12 /**
16 13 * 分销用户 Service 接口
17 14 *
... ... @@ -28,14 +25,6 @@ public interface BrokerageUserService {
28 25 BrokerageUserDO getBrokerageUser(Long id);
29 26  
30 27 /**
31   - * 获得分销用户列表
32   - *
33   - * @param ids 编号
34   - * @return 分销用户列表
35   - */
36   - List<BrokerageUserDO> getBrokerageUserList(Collection<Long> ids);
37   -
38   - /**
39 28 * 获得分销用户分页
40 29 *
41 30 * @param pageReqVO 分页查询
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserServiceImpl.java
... ... @@ -61,11 +61,6 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
61 61 }
62 62  
63 63 @Override
64   - public List<BrokerageUserDO> getBrokerageUserList(Collection<Long> ids) {
65   - return brokerageUserMapper.selectBatchIds(ids);
66   - }
67   -
68   - @Override
69 64 public PageResult<BrokerageUserDO> getBrokerageUserPage(BrokerageUserPageReqVO pageReqVO) {
70 65 List<Long> childIds = getChildUserIdsByLevel(pageReqVO.getBindUserId(), pageReqVO.getLevel());
71 66 // 有”绑定用户编号“查询条件时,没有查到下级会员,直接返回空
... ... @@ -130,6 +125,7 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
130 125  
131 126 @Override
132 127 public BrokerageUserDO getOrCreateBrokerageUser(Long id) {
  128 + // TODO @芋艿:这块优化下;统一到注册时处理;
133 129 BrokerageUserDO brokerageUser = brokerageUserMapper.selectById(id);
134 130 // 特殊:人人分销的情况下,如果分销人为空则创建分销人
135 131 if (brokerageUser == null && ObjUtil.equal(BrokerageEnabledConditionEnum.ALL.getCondition(),
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBrokerageOrderHandler.java
... ... @@ -83,7 +83,7 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler {
83 83 if (order.getBrokerageUserId() == null) {
84 84 return;
85 85 }
86   - cancelBrokerage(order.getBrokerageUserId(), orderItem.getId());
  86 + brokerageRecordService.cancelBrokerage(BrokerageRecordBizTypeEnum.ORDER, String.valueOf(orderItem.getId()));
87 87 }
88 88  
89 89 /**
... ... @@ -111,8 +111,4 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler {
111 111 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, addList);
112 112 }
113 113  
114   - protected void cancelBrokerage(Long userId, Long orderItemId) {
115   - brokerageRecordService.cancelBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, String.valueOf(orderItemId));
116   - }
117   -
118 114 }
... ...