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)); + } + }