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,10 +50,9 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> {
50 .eq(BrokerageRecordDO::getStatus, status)); 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 default List<UserBrokerageSummaryRespBO> selectCountAndSumPriceByUserIdInAndBizTypeAndStatus(Collection<Long> userIds, 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,11 +78,10 @@ public interface BrokerageRecordService {
78 /** 78 /**
79 * 取消佣金:将佣金记录,状态修改为已失效 79 * 取消佣金:将佣金记录,状态修改为已失效
80 * 80 *
81 - * @param userId 会员编号  
82 * @param bizType 业务类型 81 * @param bizType 业务类型
83 * @param bizId 业务编号 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,27 +107,29 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
107 107
108 @Override 108 @Override
109 @Transactional(rollbackFor = Exception.class) 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 return; 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 +9,6 @@ import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokera
9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO; 9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
10 import jakarta.validation.constraints.NotNull; 10 import jakarta.validation.constraints.NotNull;
11 11
12 -import java.util.Collection;  
13 -import java.util.List;  
14 -  
15 /** 12 /**
16 * 分销用户 Service 接口 13 * 分销用户 Service 接口
17 * 14 *
@@ -28,14 +25,6 @@ public interface BrokerageUserService { @@ -28,14 +25,6 @@ public interface BrokerageUserService {
28 BrokerageUserDO getBrokerageUser(Long id); 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 * @param pageReqVO 分页查询 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,11 +61,6 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
61 } 61 }
62 62
63 @Override 63 @Override
64 - public List<BrokerageUserDO> getBrokerageUserList(Collection<Long> ids) {  
65 - return brokerageUserMapper.selectBatchIds(ids);  
66 - }  
67 -  
68 - @Override  
69 public PageResult<BrokerageUserDO> getBrokerageUserPage(BrokerageUserPageReqVO pageReqVO) { 64 public PageResult<BrokerageUserDO> getBrokerageUserPage(BrokerageUserPageReqVO pageReqVO) {
70 List<Long> childIds = getChildUserIdsByLevel(pageReqVO.getBindUserId(), pageReqVO.getLevel()); 65 List<Long> childIds = getChildUserIdsByLevel(pageReqVO.getBindUserId(), pageReqVO.getLevel());
71 // 有”绑定用户编号“查询条件时,没有查到下级会员,直接返回空 66 // 有”绑定用户编号“查询条件时,没有查到下级会员,直接返回空
@@ -130,6 +125,7 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -130,6 +125,7 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
130 125
131 @Override 126 @Override
132 public BrokerageUserDO getOrCreateBrokerageUser(Long id) { 127 public BrokerageUserDO getOrCreateBrokerageUser(Long id) {
  128 + // TODO @芋艿:这块优化下;统一到注册时处理;
133 BrokerageUserDO brokerageUser = brokerageUserMapper.selectById(id); 129 BrokerageUserDO brokerageUser = brokerageUserMapper.selectById(id);
134 // 特殊:人人分销的情况下,如果分销人为空则创建分销人 130 // 特殊:人人分销的情况下,如果分销人为空则创建分销人
135 if (brokerageUser == null && ObjUtil.equal(BrokerageEnabledConditionEnum.ALL.getCondition(), 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,7 +83,7 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler {
83 if (order.getBrokerageUserId() == null) { 83 if (order.getBrokerageUserId() == null) {
84 return; 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,8 +111,4 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler {
111 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, addList); 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 }