From 388e07c8346ba7d13b963d5885c7a8dc8e58a60d Mon Sep 17 00:00:00 2001 From: puhui999 Date: Wed, 8 Nov 2023 16:05:23 +0800 Subject: [PATCH] =?UTF-8?q?CRM=EF=BC=9A=E5=AE=8C=E5=96=84=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=95=B0=E6=8D=AE=E6=94=BE=E5=85=A5=E5=85=AC=E6=B5=B7?= =?UTF-8?q?=E3=80=81=E5=85=AC=E6=B5=B7=E6=95=B0=E6=8D=AE=E9=A2=86=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../permission/CrmPermissionController.java | 37 +++++++++++++++---- .../permission/CrmPermissionService.java | 18 +++++++++ .../permission/CrmPermissionServiceImpl.java | 20 ++++++++++ 3 files changed, 68 insertions(+), 7 deletions(-) diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java index 594e132bf..ab9d7907a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java @@ -32,10 +32,13 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Predicate; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.anyMatch; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Tag(name = "管理后台 - CRM 数据权限(数据团队成员操作)") @RestController @@ -44,7 +47,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. public class CrmPermissionController { @Resource - private CrmPermissionService crmPermissionService; + private CrmPermissionService permissionService; @Resource private AdminUserApi adminUserApi; @@ -59,11 +62,27 @@ public class CrmPermissionController { @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#reqVO.bizType", bizId = "#reqVO.bizId" , level = CrmPermissionLevelEnum.OWNER) public CommonResult addPermission(@Valid @RequestBody CrmPermissionCreateReqVO reqVO) { - // 2. 加入成员 - crmPermissionService.createPermission(CrmPermissionConvert.INSTANCE.convert(reqVO)); + permissionService.createPermission(CrmPermissionConvert.INSTANCE.convert(reqVO)); return success(true); } + @PutMapping("/receive") + @Operation(summary = "领取公海数据") + @PreAuthorize("@ss.hasPermission('crm:permission:update')") + public CommonResult receive(@RequestParam("bizType") Integer bizType, @RequestParam("bizId") Long bizId) { + permissionService.receiveBiz(bizType, bizId, getLoginUserId()); + return success(true); + } + + @PutMapping("/put-pool") + @Operation(summary = "数据放入公海") + @PreAuthorize("@ss.hasPermission('crm:permission:update')") + @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#bizType", bizId = "#bizId" + , level = CrmPermissionLevelEnum.OWNER) + public CommonResult putPool(@RequestParam(value = "bizType") Integer bizType, @RequestParam("bizId") Long bizId) { + permissionService.putPool(bizType, bizId, getLoginUserId()); + return success(true); + } @PutMapping("/update") @Operation(summary = "编辑团队成员") @@ -71,7 +90,7 @@ public class CrmPermissionController { @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#updateReqVO.bizType", bizId = "#updateReqVO.bizId" , level = CrmPermissionLevelEnum.WRITE) public CommonResult updatePermission(@Valid @RequestBody CrmPermissionUpdateReqVO updateReqVO) { - crmPermissionService.updatePermission(CrmPermissionConvert.INSTANCE.convert(updateReqVO)); + permissionService.updatePermission(CrmPermissionConvert.INSTANCE.convert(updateReqVO)); return success(true); } @@ -88,7 +107,7 @@ public class CrmPermissionController { public CommonResult deletePermission(@RequestParam("bizType") Integer bizType, @RequestParam("bizId") Long bizId, @RequestParam("id") Long id) { - crmPermissionService.deletePermission(id); + permissionService.deletePermission(id); return success(true); } @@ -101,12 +120,16 @@ public class CrmPermissionController { @PreAuthorize("@ss.hasPermission('crm:permission:query')") public CommonResult> getPermissionList(@RequestParam("bizType") Integer bizType, @RequestParam("bizId") Long bizId) { - List permission = crmPermissionService.getPermissionByBizTypeAndBizId(bizType, bizId); + List permission = permissionService.getPermissionByBizTypeAndBizId(bizType, bizId); if (CollUtil.isEmpty(permission)) { return success(Collections.emptyList()); } // TODO @puhui999:池子的逻辑; - permission.removeIf(item -> ObjUtil.equal(item.getUserId(), CrmPermissionDO.POOL_USER_ID)); // 排除 + // 判断是否是公海数据 + Predicate filter = item -> ObjUtil.equal(item.getUserId(), CrmPermissionDO.POOL_USER_ID); + if (anyMatch(permission, filter)) { + permission.removeIf(filter); // 排除 + } // 拼接数据 List userList = adminUserApi.getUserList(convertSet(permission, CrmPermissionDO::getUserId)); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java index 9bb424305..8fbfafbe2 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java @@ -85,4 +85,22 @@ public interface CrmPermissionService { */ List getPermissionListByBizTypeAndUserId(Integer bizType, Long userId); + /** + * 领取公海数据 + * + * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} + * @param bizId 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() + * @param userId 用户编号,AdminUser#id + */ + void receiveBiz(Integer bizType, Long bizId, Long userId); + + /** + * 数据放入公海 + * + * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} + * @param bizId 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() + * @param userId 用户编号,AdminUser#id + */ + void putPool(Integer bizType, Long bizId, Long userId); + } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java index b24ae4156..a87608e1f 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java @@ -141,4 +141,24 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { return crmPermissionMapper.selectListByBizTypeAndUserId(bizType, userId); } + @Override + public void receiveBiz(Integer bizType, Long bizId, Long userId) { + CrmPermissionDO permission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(bizType, bizId, CrmPermissionDO.POOL_USER_ID); + if (permission == null) { // 不存在则模块数据也不存在 + throw exception(CRM_PERMISSION_MODEL_NOT_EXISTS, CrmBizTypeEnum.getNameByType(bizType)); + } + + crmPermissionMapper.updateById(new CrmPermissionDO().setId(permission.getId()).setUserId(userId)); + } + + @Override + public void putPool(Integer bizType, Long bizId, Long userId) { + CrmPermissionDO permission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(bizType, bizId, userId); + if (permission == null) { // 不存在则模块数据也不存在 + throw exception(CRM_PERMISSION_MODEL_NOT_EXISTS, CrmBizTypeEnum.getNameByType(bizType)); + } + + crmPermissionMapper.updateById(new CrmPermissionDO().setId(permission.getId()).setUserId(CrmPermissionDO.POOL_USER_ID)); + } + }