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 9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.BrokerageUserDO;
10 10 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
11 11 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum;
12   -import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService;
13 12 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
  13 +import cn.iocoder.yudao.module.trade.service.brokerage.record.BrokerageRecordService;
14 14 import cn.iocoder.yudao.module.trade.service.brokerage.user.BrokerageUserService;
15 15 import io.swagger.v3.oas.annotations.Operation;
16 16 import io.swagger.v3.oas.annotations.Parameter;
... ... @@ -72,7 +72,8 @@ public class BrokerageUserController {
72 72 @PreAuthorize("@ss.hasPermission('trade:brokerage-user:query')")
73 73 public CommonResult<BrokerageUserRespVO> getBrokerageUser(@RequestParam("id") Long id) {
74 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 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 37 PageResult<BrokerageUserRespVO> result = convertPage(pageResult);
38 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 43 vo.setBrokerageUserCount(MapUtil.getInt(brokerageUserCountMap, vo.getId(), 0));
... ... @@ -60,5 +56,12 @@ public interface BrokerageUserConvert {
60 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 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 55  
56 56 @Override
57 57 public void updateBrokerageUserId(Long id, Long bindUserId) {
58   - // 校验存在
59   - validateBrokerageUserExists(id);
  58 + // 0. 校验存在
  59 + BrokerageUserDO brokerageUser = validateBrokerageUserExists(id);
60 60 if (bindUserId == null) {
61   - // 清除推广员
  61 + // 1. 清除推广员
62 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 73 @Override
... ... @@ -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 90 throw exception(BROKERAGE_USER_NOT_EXISTS);
87 91 }
  92 +
  93 + return brokerageUserDO;
88 94 }
89 95  
90 96 @Override
... ... @@ -142,12 +148,15 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
142 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 153 if (!validated) {
148 154 return false;
149 155 }
150 156  
  157 + // 校验能否绑定
  158 + validateCanBindUser(brokerageUser, bindUserId);
  159 +
151 160 if (isInsert) {
152 161 Integer enabledCondition = tradeConfigService.getTradeConfig().getBrokerageEnabledCondition();
153 162 if (BrokerageEnabledConditionEnum.ALL.getCondition().equals(enabledCondition)) {
... ... @@ -162,28 +171,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
162 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 176 TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig();
172 177 if (tradeConfig == null || !BooleanUtil.isTrue(tradeConfig.getBrokerageEnabled())) {
173 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 182 if (BrokerageEnabledConditionEnum.ADMIN.getCondition().equals(tradeConfig.getBrokerageEnabledCondition())) {
189 183 throw exception(BROKERAGE_BIND_CONDITION_ADMIN);
... ... @@ -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 213 // A->B->A:下级不能绑定自己的上级, A->B->C->A可以!!
204 214 if (Objects.equals(user.getId(), bindUser.getBindUserId())) {
205 215 throw exception(BROKERAGE_BIND_LOOP);
206 216 }
207   - return true;
208 217 }
209 218  
210 219 }
... ...