Commit 643602d0382b60249f5d19276265fb5dd971b7a5
1 parent
ca55e61d
trade: 分销业务后台功能:修改上级推广人
Showing
3 changed files
with
48 additions
and
35 deletions
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 | } | ... | ... |