Commit 643602d0382b60249f5d19276265fb5dd971b7a5

Authored by owen
1 parent ca55e61d

trade: 分销业务后台功能:修改上级推广人

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/user/BrokerageUserController.java
@@ -9,8 +9,8 @@ import cn.iocoder.yudao.module.trade.convert.brokerage.user.BrokerageUserConvert @@ -9,8 +9,8 @@ import cn.iocoder.yudao.module.trade.convert.brokerage.user.BrokerageUserConvert
9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO; 9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
10 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; 10 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
11 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; 11 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum;
12 -import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService;  
13 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO; 12 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
  13 +import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService;
14 import cn.iocoder.yudao.module.trade.service.brokerage.user.BrokerageUserService; 14 import cn.iocoder.yudao.module.trade.service.brokerage.user.BrokerageUserService;
15 import io.swagger.v3.oas.annotations.Operation; 15 import io.swagger.v3.oas.annotations.Operation;
16 import io.swagger.v3.oas.annotations.Parameter; 16 import io.swagger.v3.oas.annotations.Parameter;
@@ -72,7 +72,8 @@ public class BrokerageUserController { @@ -72,7 +72,8 @@ public class BrokerageUserController {
72 @PreAuthorize("@ss.hasPermission('trade:brokerage-user:query')") 72 @PreAuthorize("@ss.hasPermission('trade:brokerage-user:query')")
73 public CommonResult<BrokerageUserRespVO> getBrokerageUser(@RequestParam("id") Long id) { 73 public CommonResult<BrokerageUserRespVO> getBrokerageUser(@RequestParam("id") Long id) {
74 BrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(id); 74 BrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(id);
75 - return success(BrokerageUserConvert.INSTANCE.convert(brokerageUser)); 75 + BrokerageUserRespVO respVO = BrokerageUserConvert.INSTANCE.convert(brokerageUser);
  76 + return success(BrokerageUserConvert.INSTANCE.copyTo(memberUserApi.getUser(id), respVO));
76 } 77 }
77 78
78 @GetMapping("/page") 79 @GetMapping("/page")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/brokerage/user/BrokerageUserConvert.java
@@ -37,11 +37,7 @@ public interface BrokerageUserConvert { @@ -37,11 +37,7 @@ public interface BrokerageUserConvert {
37 PageResult<BrokerageUserRespVO> result = convertPage(pageResult); 37 PageResult<BrokerageUserRespVO> result = convertPage(pageResult);
38 for (BrokerageUserRespVO vo : result.getList()) { 38 for (BrokerageUserRespVO vo : result.getList()) {
39 // 用户信息 39 // 用户信息
40 - Optional.ofNullable(userMap.get(vo.getId()))  
41 - .ifPresent(user -> {  
42 - vo.setNickname(user.getNickname());  
43 - vo.setAvatar(user.getAvatar());  
44 - }); 40 + copyTo(userMap.get(vo.getId()), vo);
45 41
46 // 推广用户数量(一级) 42 // 推广用户数量(一级)
47 vo.setBrokerageUserCount(MapUtil.getInt(brokerageUserCountMap, vo.getId(), 0)); 43 vo.setBrokerageUserCount(MapUtil.getInt(brokerageUserCountMap, vo.getId(), 0));
@@ -60,5 +56,12 @@ public interface BrokerageUserConvert { @@ -60,5 +56,12 @@ public interface BrokerageUserConvert {
60 return result; 56 return result;
61 } 57 }
62 58
  59 + default BrokerageUserRespVO copyTo(MemberUserRespDTO source, BrokerageUserRespVO target) {
  60 + Optional.ofNullable(source)
  61 + .ifPresent(user -> target.setNickname(user.getNickname())
  62 + .setAvatar(user.getAvatar()));
  63 + return target;
  64 + }
  65 +
63 BrokerageUserDTO convertDTO(BrokerageUserDO brokerageUser); 66 BrokerageUserDTO convertDTO(BrokerageUserDO brokerageUser);
64 } 67 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/user/BrokerageUserServiceImpl.java
@@ -55,16 +55,19 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -55,16 +55,19 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
55 55
56 @Override 56 @Override
57 public void updateBrokerageUserId(Long id, Long bindUserId) { 57 public void updateBrokerageUserId(Long id, Long bindUserId) {
58 - // 校验存在  
59 - validateBrokerageUserExists(id); 58 + // 0. 校验存在
  59 + BrokerageUserDO brokerageUser = validateBrokerageUserExists(id);
60 if (bindUserId == null) { 60 if (bindUserId == null) {
61 - // 清除推广员 61 + // 1. 清除推广员
62 brokerageUserMapper.updateBindUserIdAndBindUserTimeToNull(id); 62 brokerageUserMapper.updateBindUserIdAndBindUserTimeToNull(id);
63 - } else {  
64 - // 修改推广员  
65 - brokerageUserMapper.updateById(new BrokerageUserDO().setId(id)  
66 - .setBindUserId(bindUserId).setBindUserTime(LocalDateTime.now())); 63 + return;
67 } 64 }
  65 +
  66 + // 2.1 校验能否绑定
  67 + validateCanBindUser(brokerageUser, bindUserId);
  68 + // 2.2 修改推广员
  69 + brokerageUserMapper.updateById(new BrokerageUserDO().setId(id)
  70 + .setBindUserId(bindUserId).setBindUserTime(LocalDateTime.now()));
68 } 71 }
69 72
70 @Override 73 @Override
@@ -81,10 +84,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -81,10 +84,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
81 } 84 }
82 } 85 }
83 86
84 - private void validateBrokerageUserExists(Long id) {  
85 - if (brokerageUserMapper.selectById(id) == null) { 87 + private BrokerageUserDO validateBrokerageUserExists(Long id) {
  88 + BrokerageUserDO brokerageUserDO = brokerageUserMapper.selectById(id);
  89 + if (brokerageUserDO == null) {
86 throw exception(BROKERAGE_USER_NOT_EXISTS); 90 throw exception(BROKERAGE_USER_NOT_EXISTS);
87 } 91 }
  92 +
  93 + return brokerageUserDO;
88 } 94 }
89 95
90 @Override 96 @Override
@@ -142,12 +148,15 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -142,12 +148,15 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
142 brokerageUser = new BrokerageUserDO().setId(userId).setBrokerageEnabled(false).setPrice(0).setFrozenPrice(0); 148 brokerageUser = new BrokerageUserDO().setId(userId).setBrokerageEnabled(false).setPrice(0).setFrozenPrice(0);
143 } 149 }
144 150
145 - // 校验能否绑定  
146 - boolean validated = validateCanBindUser(brokerageUser, bindUserId, isNewUser); 151 + // 校验分配配置
  152 + boolean validated = validateTradeConfig(brokerageUser, bindUserId, isNewUser);
147 if (!validated) { 153 if (!validated) {
148 return false; 154 return false;
149 } 155 }
150 156
  157 + // 校验能否绑定
  158 + validateCanBindUser(brokerageUser, bindUserId);
  159 +
151 if (isInsert) { 160 if (isInsert) {
152 Integer enabledCondition = tradeConfigService.getTradeConfig().getBrokerageEnabledCondition(); 161 Integer enabledCondition = tradeConfigService.getTradeConfig().getBrokerageEnabledCondition();
153 if (BrokerageEnabledConditionEnum.ALL.getCondition().equals(enabledCondition)) { 162 if (BrokerageEnabledConditionEnum.ALL.getCondition().equals(enabledCondition)) {
@@ -162,28 +171,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -162,28 +171,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
162 return true; 171 return true;
163 } 172 }
164 173
165 - private boolean validateCanBindUser(BrokerageUserDO user, Long bindUserId, Boolean isNewUser) {  
166 - if (bindUserId == null) {  
167 - return false;  
168 - }  
169 - 174 + private boolean validateTradeConfig(BrokerageUserDO user, Long bindUserId, Boolean isNewUser) {
170 // 校验分销功能是否启用 175 // 校验分销功能是否启用
171 TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig(); 176 TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig();
172 if (tradeConfig == null || !BooleanUtil.isTrue(tradeConfig.getBrokerageEnabled())) { 177 if (tradeConfig == null || !BooleanUtil.isTrue(tradeConfig.getBrokerageEnabled())) {
173 return false; 178 return false;
174 } 179 }
175 180
176 - // 校验绑定自己  
177 - if (Objects.equals(user.getId(), bindUserId)) {  
178 - throw exception(BROKERAGE_BIND_SELF);  
179 - }  
180 -  
181 - // 校验要绑定的用户有无推广资格  
182 - BrokerageUserDO bindUser = brokerageUserMapper.selectById(bindUserId);  
183 - if (bindUser == null || !BooleanUtil.isTrue(bindUser.getBrokerageEnabled())) {  
184 - throw exception(BROKERAGE_BIND_USER_NOT_ENABLED);  
185 - }  
186 -  
187 // 校验分佣模式:仅可后台手动设置推广员 181 // 校验分佣模式:仅可后台手动设置推广员
188 if (BrokerageEnabledConditionEnum.ADMIN.getCondition().equals(tradeConfig.getBrokerageEnabledCondition())) { 182 if (BrokerageEnabledConditionEnum.ADMIN.getCondition().equals(tradeConfig.getBrokerageEnabledCondition())) {
189 throw exception(BROKERAGE_BIND_CONDITION_ADMIN); 183 throw exception(BROKERAGE_BIND_CONDITION_ADMIN);
@@ -200,11 +194,26 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { @@ -200,11 +194,26 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
200 } 194 }
201 } 195 }
202 196
  197 + validateCanBindUser(user, bindUserId);
  198 + return true;
  199 + }
  200 +
  201 + private void validateCanBindUser(BrokerageUserDO user, Long bindUserId) {
  202 + // 校验要绑定的用户有无推广资格
  203 + BrokerageUserDO bindUser = brokerageUserMapper.selectById(bindUserId);
  204 + if (bindUser == null || !BooleanUtil.isTrue(bindUser.getBrokerageEnabled())) {
  205 + throw exception(BROKERAGE_BIND_USER_NOT_ENABLED);
  206 + }
  207 +
  208 + // 校验绑定自己
  209 + if (Objects.equals(user.getId(), bindUserId)) {
  210 + throw exception(BROKERAGE_BIND_SELF);
  211 + }
  212 +
203 // A->B->A:下级不能绑定自己的上级, A->B->C->A可以!! 213 // A->B->A:下级不能绑定自己的上级, A->B->C->A可以!!
204 if (Objects.equals(user.getId(), bindUser.getBindUserId())) { 214 if (Objects.equals(user.getId(), bindUser.getBindUserId())) {
205 throw exception(BROKERAGE_BIND_LOOP); 215 throw exception(BROKERAGE_BIND_LOOP);
206 } 216 }
207 - return true;  
208 } 217 }
209 218
210 } 219 }