Commit df4716d5a115a527baf3d022b6f9155f90de702c

Authored by YunaiV
1 parent d874346d

code review:分销

yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
@@ -83,7 +83,6 @@ public interface ErrorCodeConstants { @@ -83,7 +83,6 @@ public interface ErrorCodeConstants {
83 ErrorCode BROKERAGE_BIND_LOOP = new ErrorCode(1_011_007_007, "下级不能绑定自己的上级"); 83 ErrorCode BROKERAGE_BIND_LOOP = new ErrorCode(1_011_007_007, "下级不能绑定自己的上级");
84 ErrorCode BROKERAGE_USER_LEVEL_NOT_SUPPORT = new ErrorCode(1_011_007_008, "目前只支持 level 小于等于 2"); 84 ErrorCode BROKERAGE_USER_LEVEL_NOT_SUPPORT = new ErrorCode(1_011_007_008, "目前只支持 level 小于等于 2");
85 85
86 -  
87 // ========== 分销提现 模块 1-011-008-000 ========== 86 // ========== 分销提现 模块 1-011-008-000 ==========
88 ErrorCode BROKERAGE_WITHDRAW_NOT_EXISTS = new ErrorCode(1_011_008_000, "佣金提现记录不存在"); 87 ErrorCode BROKERAGE_WITHDRAW_NOT_EXISTS = new ErrorCode(1_011_008_000, "佣金提现记录不存在");
89 ErrorCode BROKERAGE_WITHDRAW_STATUS_NOT_AUDITING = new ErrorCode(1_011_008_001, "佣金提现记录状态不是审核中"); 88 ErrorCode BROKERAGE_WITHDRAW_STATUS_NOT_AUDITING = new ErrorCode(1_011_008_001, "佣金提现记录状态不是审核中");
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageUserMapper.java
@@ -151,10 +151,16 @@ public interface BrokerageUserMapper extends BaseMapperX<BrokerageUserDO> { @@ -151,10 +151,16 @@ public interface BrokerageUserMapper extends BaseMapperX<BrokerageUserDO> {
151 @Param("ids") Collection<Long> ids, 151 @Param("ids") Collection<Long> ids,
152 @Param("sortingField") SortingField sortingField); 152 @Param("sortingField") SortingField sortingField);
153 153
  154 + /**
  155 + * 获得被 bindUserIds 推广的用户编号数组
  156 + *
  157 + * @param bindUserIds 推广员编号数组
  158 + * @return 用户编号数组
  159 + */
154 default List<Long> selectIdListByBindUserIdIn(Collection<Long> bindUserIds) { 160 default List<Long> selectIdListByBindUserIdIn(Collection<Long> bindUserIds) {
155 return Convert.toList(Long.class, 161 return Convert.toList(Long.class,
156 selectObjs(new LambdaQueryWrapperX<BrokerageUserDO>() 162 selectObjs(new LambdaQueryWrapperX<BrokerageUserDO>()
157 - .select(Collections.singletonList(BrokerageUserDO::getId)) 163 + .select(Collections.singletonList(BrokerageUserDO::getId)) // 只查询 id 字段,加速返回速度
158 .in(BrokerageUserDO::getBindUserId, bindUserIds))); 164 .in(BrokerageUserDO::getBindUserId, bindUserIds)));
159 } 165 }
160 166
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserServiceImpl.java
@@ -231,7 +231,6 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -231,7 +231,6 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
231 if (CollUtil.isEmpty(childIds)) { 231 if (CollUtil.isEmpty(childIds)) {
232 return PageResult.empty(); 232 return PageResult.empty();
233 } 233 }
234 -  
235 // 1.2 根据昵称过滤下级用户 234 // 1.2 根据昵称过滤下级用户
236 Map<Long, MemberUserRespDTO> userMap = convertMapByFilter(memberUserApi.getUserList(childIds), 235 Map<Long, MemberUserRespDTO> userMap = convertMapByFilter(memberUserApi.getUserList(childIds),
237 user -> StrUtil.contains(user.getNickname(), pageReqVO.getNickname()), 236 user -> StrUtil.contains(user.getNickname(), pageReqVO.getNickname()),
@@ -240,13 +239,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -240,13 +239,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
240 return PageResult.empty(); 239 return PageResult.empty();
241 } 240 }
242 241
243 - // 2 分页查询 242 + // 2. 分页查询
244 IPage<AppBrokerageUserChildSummaryRespVO> pageResult = brokerageUserMapper.selectSummaryPageByUserId( 243 IPage<AppBrokerageUserChildSummaryRespVO> pageResult = brokerageUserMapper.selectSummaryPageByUserId(
245 MyBatisUtils.buildPage(pageReqVO), BrokerageRecordBizTypeEnum.ORDER.getType(), 244 MyBatisUtils.buildPage(pageReqVO), BrokerageRecordBizTypeEnum.ORDER.getType(),
246 BrokerageRecordStatusEnum.SETTLEMENT.getStatus(), userMap.keySet(), pageReqVO.getSortingField() 245 BrokerageRecordStatusEnum.SETTLEMENT.getStatus(), userMap.keySet(), pageReqVO.getSortingField()
247 ); 246 );
248 247
249 - // 3 拼接数据并返回 248 + // 3. 拼接数据并返回
250 BrokerageUserConvert.INSTANCE.copyTo(pageResult.getRecords(), userMap); 249 BrokerageUserConvert.INSTANCE.copyTo(pageResult.getRecords(), userMap);
251 return new PageResult<>(pageResult.getRecords(), pageResult.getTotal()); 250 return new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
252 } 251 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.member.service.user; @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.member.service.user;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.collection.ListUtil; 4 import cn.hutool.core.collection.ListUtil;
5 -import cn.hutool.core.util.BooleanUtil;  
6 import cn.hutool.core.util.IdUtil; 5 import cn.hutool.core.util.IdUtil;
7 import cn.hutool.core.util.ObjectUtil; 6 import cn.hutool.core.util.ObjectUtil;
8 import cn.hutool.core.util.StrUtil; 7 import cn.hutool.core.util.StrUtil;
@@ -28,6 +27,8 @@ import lombok.extern.slf4j.Slf4j; @@ -28,6 +27,8 @@ import lombok.extern.slf4j.Slf4j;
28 import org.springframework.security.crypto.password.PasswordEncoder; 27 import org.springframework.security.crypto.password.PasswordEncoder;
29 import org.springframework.stereotype.Service; 28 import org.springframework.stereotype.Service;
30 import org.springframework.transaction.annotation.Transactional; 29 import org.springframework.transaction.annotation.Transactional;
  30 +import org.springframework.transaction.support.TransactionSynchronization;
  31 +import org.springframework.transaction.support.TransactionSynchronizationManager;
31 import org.springframework.transaction.support.TransactionTemplate; 32 import org.springframework.transaction.support.TransactionTemplate;
32 33
33 import javax.annotation.Resource; 34 import javax.annotation.Resource;
@@ -78,6 +79,7 @@ public class MemberUserServiceImpl implements MemberUserService { @@ -78,6 +79,7 @@ public class MemberUserServiceImpl implements MemberUserService {
78 } 79 }
79 80
80 @Override 81 @Override
  82 + @Transactional(rollbackFor = Exception.class)
81 public MemberUserDO createUserIfAbsent(String mobile, String registerIp) { 83 public MemberUserDO createUserIfAbsent(String mobile, String registerIp) {
82 // 用户已经存在 84 // 用户已经存在
83 MemberUserDO user = memberUserMapper.selectByMobile(mobile); 85 MemberUserDO user = memberUserMapper.selectByMobile(mobile);
@@ -85,7 +87,7 @@ public class MemberUserServiceImpl implements MemberUserService { @@ -85,7 +87,7 @@ public class MemberUserServiceImpl implements MemberUserService {
85 return user; 87 return user;
86 } 88 }
87 // 用户不存在,则进行创建 89 // 用户不存在,则进行创建
88 - return this.createUser(mobile, registerIp); 90 + return createUser(mobile, registerIp);
89 } 91 }
90 92
91 private MemberUserDO createUser(String mobile, String registerIp) { 93 private MemberUserDO createUser(String mobile, String registerIp) {
@@ -97,13 +99,17 @@ public class MemberUserServiceImpl implements MemberUserService { @@ -97,13 +99,17 @@ public class MemberUserServiceImpl implements MemberUserService {
97 user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 99 user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
98 user.setPassword(encodePassword(password)); // 加密密码 100 user.setPassword(encodePassword(password)); // 加密密码
99 user.setRegisterIp(registerIp); 101 user.setRegisterIp(registerIp);
  102 + memberUserMapper.insert(user);
100 103
101 - Boolean success = transactionTemplate.execute(status -> memberUserMapper.insert(user) > 0);  
102 - if (BooleanUtil.isTrue(success)) {  
103 - // 发送 MQ 消息:用户创建  
104 - registerCouponProducer.sendUserCreateMessage(user.getId());  
105 - } 104 + // 发送 MQ 消息:用户创建
  105 + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
  106 +
  107 + @Override
  108 + public void afterCommit() {
  109 + registerCouponProducer.sendUserCreateMessage(user.getId());
  110 + }
106 111
  112 + });
107 return user; 113 return user;
108 } 114 }
109 115