Commit f589881de57297e72d4f0067596f36e86cc6c466
1 parent
e519b412
code review:客户的分配和领取
Showing
3 changed files
with
19 additions
and
23 deletions
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java
| 1 | 1 | package cn.iocoder.yudao.module.crm.controller.admin.customer; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.util.NumberUtil; | |
| 5 | -import cn.hutool.core.util.ObjectUtil; | |
| 6 | -import cn.iocoder.yudao.framework.common.exception.ErrorCode; | |
| 7 | 4 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; |
| 8 | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 9 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -185,17 +182,20 @@ public class CrmCustomerController { |
| 185 | 182 | } |
| 186 | 183 | |
| 187 | 184 | @PutMapping("/receive") |
| 188 | - @Operation(summary = "根据客户id领取公海任务") | |
| 185 | + @Operation(summary = "领取公海客户") | |
| 186 | + // TODO @xiaqing:1)receiveCustomer 方法名字;2)cIds 改成 ids,要加下 @RequestParam,还有 swagger 注解;3)参数非空,使用 validator 校验;4)返回 true 即可; | |
| 189 | 187 | @PreAuthorize("@ss.hasPermission('crm:customer:receive')") |
| 190 | - public CommonResult<String> receiveByIds(List<Long> cIds){ | |
| 188 | + public CommonResult<String> receiveByIds(List<Long> cIds){ | |
| 191 | 189 | // 判断是否为空 |
| 192 | 190 | if(CollectionUtils.isEmpty(cIds)) |
| 193 | 191 | return error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(),GlobalErrorCodeConstants.BAD_REQUEST.getMsg()); |
| 194 | 192 | // 领取公海任务 |
| 193 | + // TODO @xiaqing:userid,通过 controller 传递给 service,不要在 service 里面获取,无状态 | |
| 195 | 194 | customerService.receive(cIds); |
| 196 | 195 | return success("领取成功"); |
| 197 | 196 | } |
| 198 | 197 | |
| 198 | + // TODO @xiaqing:1)distributeCustomer 方法名;2)cIds 同上;3)参数校验,同上;4)ownerId 改成 ownerUserId,和别的模块统一;5)返回 true 即可; | |
| 199 | 199 | @PutMapping("/distributeByIds") |
| 200 | 200 | @Operation(summary = "分配公海给对应负责人") |
| 201 | 201 | @PreAuthorize("@ss.hasPermission('crm:customer:distributeByIds')") |
| ... | ... | @@ -207,5 +207,4 @@ public class CrmCustomerController { |
| 207 | 207 | return success("分配成功"); |
| 208 | 208 | } |
| 209 | 209 | |
| 210 | - | |
| 211 | 210 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java
| ... | ... | @@ -85,20 +85,22 @@ public interface CrmCustomerService { |
| 85 | 85 | */ |
| 86 | 86 | void lockCustomer(@Valid CrmCustomerUpdateReqVO updateReqVO); |
| 87 | 87 | |
| 88 | + // TODO @xiaqing:根据 controller 的建议,改下 | |
| 88 | 89 | /** |
| 89 | - * 描述 :接受公海客户 | |
| 90 | - * Author :xiaqing | |
| 91 | - * Date :2023-11-07 22:47:40 | |
| 90 | + * 领取公海客户 | |
| 91 | + * | |
| 92 | + * @param ids 要领取的客户 id | |
| 92 | 93 | */ |
| 93 | 94 | void receive(List<Long>ids); |
| 94 | 95 | |
| 96 | + // TODO @xiaqing:根据 controller 的建议,改下 | |
| 95 | 97 | /** |
| 98 | + * 分配公海客户 | |
| 96 | 99 | * |
| 97 | - *功能描述: 分配负责人 | |
| 98 | - * @param cIds 要分配的客户id | |
| 100 | + * @param cIds 要分配的客户 id | |
| 99 | 101 | * @param ownerId 分配的负责人id |
| 100 | 102 | * @author xiaqing |
| 101 | - * @date 2023-11-08 10:40:22 | |
| 102 | 103 | */ |
| 103 | 104 | void distributeByIds(List<Long>cIds,Long ownerId); |
| 105 | + | |
| 104 | 106 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
| ... | ... | @@ -21,16 +21,10 @@ import org.springframework.transaction.annotation.Transactional; |
| 21 | 21 | import org.springframework.validation.annotation.Validated; |
| 22 | 22 | |
| 23 | 23 | import javax.annotation.Resource; |
| 24 | -import java.util.Collections; | |
| 25 | -import java.util.ArrayList; | |
| 26 | -import java.util.Collection; | |
| 27 | -import java.util.List; | |
| 28 | -import java.util.Objects; | |
| 29 | -import java.util.Set; | |
| 24 | +import java.util.*; | |
| 30 | 25 | |
| 31 | 26 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 32 | 27 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 33 | -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CUSTOMER_NOT_EXISTS; | |
| 34 | 28 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; |
| 35 | 29 | |
| 36 | 30 | /** |
| ... | ... | @@ -178,7 +172,8 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { |
| 178 | 172 | } |
| 179 | 173 | |
| 180 | 174 | private void transferCustomerOwner(List <Long> cIds, Long ownerId){ |
| 181 | - //先一次性校验完成客户是否可用 | |
| 175 | + // 先一次性校验完成客户是否可用 | |
| 176 | + // TODO @xiaqing:批量一次性加载客户列表,然后去逐个校验; | |
| 182 | 177 | for (Long cId : cIds) { |
| 183 | 178 | //校验是否存在 |
| 184 | 179 | validateCustomerExists(cId); |
| ... | ... | @@ -189,13 +184,14 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { |
| 189 | 184 | //todo 校验成交状态 |
| 190 | 185 | validCustomerDeal(cId); |
| 191 | 186 | } |
| 187 | + // TODO @xiaqing:每个客户更新的时候,where 条件,加上 owner_user_id is null,防止并发问题; | |
| 192 | 188 | List<CrmCustomerDO> updateDos = new ArrayList <>(); |
| 193 | 189 | for (Long cId : cIds){ |
| 194 | 190 | CrmCustomerDO customerDO = new CrmCustomerDO(); |
| 195 | 191 | customerDO.setId(cId); |
| 196 | 192 | customerDO.setOwnerUserId(SecurityFrameworkUtils.getLoginUserId()); |
| 197 | 193 | } |
| 198 | - //统一修改状态 | |
| 194 | + // 统一修改状态 | |
| 199 | 195 | customerMapper.updateBatch(updateDos); |
| 200 | 196 | } |
| 201 | 197 | |
| ... | ... | @@ -213,9 +209,8 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { |
| 213 | 209 | |
| 214 | 210 | private void validCustomerDeal(Long id) { |
| 215 | 211 | if (customerMapper.selectById(id).getDealStatus() ==true) { |
| 216 | - throw exception(CUSTOMER_DEALED); | |
| 212 | + throw exception(CUSTOMER_ALREADY_DEAL); | |
| 217 | 213 | } |
| 218 | 214 | } |
| 219 | 215 | |
| 220 | - | |
| 221 | 216 | } | ... | ... |