From b06432b8f8c1157e6cb68d2eeb9ba656ca762a42 Mon Sep 17 00:00:00 2001 From: xiaqing Date: Wed, 8 Nov 2023 10:46:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A2=E6=88=B7=E7=9A=84?= =?UTF-8?q?=E5=85=AC=E6=B5=B7=E9=A2=86=E5=8F=96=E5=92=8C=E5=88=86=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/crm/enums/ErrorCodeConstants.java | 4 ++ .../admin/customer/CrmCustomerController.java | 28 ++++++++++ .../service/customer/CrmCustomerService.java | 16 ++++++ .../customer/CrmCustomerServiceImpl.java | 56 ++++++++++++++++++- 4 files changed, 103 insertions(+), 1 deletion(-) diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java index 3a6e3713b..360c2f082 100644 --- a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java @@ -34,6 +34,10 @@ public interface ErrorCodeConstants { // ========== 客户管理 1_020_006_000 ========== ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_020_006_000, "客户不存在"); + ErrorCode CUSTOMER_OWNER_EXISTS = new ErrorCode(1_020_006_001, "客户已存在所属负责人"); + ErrorCode CUSTOMER_LOCKED = new ErrorCode(1_020_006_002, "客户状态已锁定"); + ErrorCode CUSTOMER_DEALED = new ErrorCode(1_020_006_003, "客户已交易"); + // ========== 权限管理 1_020_007_000 ========== ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在"); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java index 10b6b5ee8..f6e8fee72 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -21,6 +23,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -32,6 +35,7 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -152,4 +156,28 @@ public class CrmCustomerController { return success(true); } + @PutMapping("/receive") + @Operation(summary = "根据客户id领取公海任务") + @PreAuthorize("@ss.hasPermission('crm:customer:receive')") + public CommonResult receiveByIds(List cIds){ + // 判断是否为空 + if(CollectionUtils.isEmpty(cIds)) + return error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(),GlobalErrorCodeConstants.BAD_REQUEST.getMsg()); + // 领取公海任务 + customerService.receive(cIds); + return success("领取成功"); + } + + @PutMapping("/distributeByIds") + @Operation(summary = "分配公海给对应负责人") + @PreAuthorize("@ss.hasPermission('crm:customer:distributeByIds')") + public CommonResult distributeByIds(Long ownerId,ListcIds){ + //判断参数不能为空 + if(ownerId==null || CollectionUtils.isEmpty(cIds)) + return error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(),GlobalErrorCodeConstants.BAD_REQUEST.getMsg()); + + return success("分配成功"); + } + + } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java index 503027e5f..cc7bb2151 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java @@ -85,4 +85,20 @@ public interface CrmCustomerService { */ void lockCustomer(@Valid CrmCustomerUpdateReqVO updateReqVO); + /** + * 描述 :接受公海客户 + * Author :xiaqing + * Date :2023-11-07 22:47:40 + */ + void receive(Listids); + + /** + * + *功能描述: 分配负责人 + * @param cIds 要分配的客户id + * @param ownerId 分配的负责人id + * @author xiaqing + * @date 2023-11-08 10:40:22 + */ + void distributeByIds(ListcIds,Long ownerId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java index e4fafd5cc..301fe6f57 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.service.customer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.*; import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerConvert; import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; @@ -18,12 +19,13 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CUSTOMER_NOT_EXISTS; +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; /** * 客户 Service 实现类 @@ -142,4 +144,56 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { customerMapper.updateById(updateObj); } + @Override + @Transactional(rollbackFor = Exception.class) + public void receive(List ids) { + transferCustomerOwner(ids,SecurityFrameworkUtils.getLoginUserId()); + } + + @Override + public void distributeByIds(List cIds, Long ownerId) { + transferCustomerOwner(cIds,ownerId); + } + + private void transferCustomerOwner(List cIds, Long ownerId){ + //先一次性校验完成客户是否可用 + for (Long cId : cIds) { + //校验是否存在 + validateCustomerExists(cId); + //todo 校验是否已有负责人 + validCustomerOwnerExist(cId); + //todo 校验是否锁定 + validCustomerIsLocked(cId); + //todo 校验成交状态 + validCustomerDeal(cId); + } + List updateDos = new ArrayList <>(); + for (Long cId : cIds){ + CrmCustomerDO customerDO = new CrmCustomerDO(); + customerDO.setId(cId); + customerDO.setOwnerUserId(SecurityFrameworkUtils.getLoginUserId()); + } + //统一修改状态 + customerMapper.updateBatch(updateDos); + } + + private void validCustomerOwnerExist(Long id) { + if (customerMapper.selectById(id).getOwnerUserId()!=null) { + throw exception(CUSTOMER_OWNER_EXISTS); + } + } + + private void validCustomerIsLocked(Long id) { + if (customerMapper.selectById(id).getLockStatus() ==true) { + throw exception(CUSTOMER_LOCKED); + } + } + + private void validCustomerDeal(Long id) { + if (customerMapper.selectById(id).getDealStatus() ==true) { + throw exception(CUSTOMER_DEALED); + } + } + + }