From 86050d411b47d8c08d46e684def21e89c2c901ea Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 18 Nov 2023 23:45:24 +0800 Subject: [PATCH] =?UTF-8?q?code=20review=EF=BC=9A=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crm/enums/customer/CrmCustomerSceneEnum.java | 1 + .../admin/business/vo/CrmBusinessTransferReqVO.java | 3 ++- .../admin/contact/vo/CrmContactTransferReqVO.java | 3 ++- .../admin/contract/vo/CrmContractTransferReqVO.java | 3 ++- .../admin/customer/CrmCustomerController.java | 4 +++- .../admin/customer/vo/CrmCustomerPageReqVO.java | 4 +++- .../admin/customer/vo/CrmCustomerTransferReqVO.java | 3 ++- .../admin/permission/CrmPermissionController.java | 12 ++++++++++-- .../admin/permission/vo/CrmPermissionBaseVO.java | 8 ++++---- .../admin/permission/vo/CrmPermissionRespVO.java | 6 +++--- .../crm/convert/customer/CrmCustomerConvert.java | 1 + .../crm/convert/permission/CrmPermissionConvert.java | 1 + .../dal/dataobject/permission/CrmPermissionDO.java | 1 + .../crm/dal/mysql/business/CrmBusinessMapper.java | 1 + .../framework/core/annotations/CrmPermission.java | 11 ++++++----- .../crm/framework/core/aop/CrmPermissionAspect.java | 2 ++ .../module/crm/framework/core/config/SpelConfig.java | 1 + .../module/crm/framework/enums/CrmBizTypeEnum.java | 1 + .../crm/service/business/CrmBusinessServiceImpl.java | 1 + .../crm/service/customer/CrmCustomerServiceImpl.java | 1 + .../service/permission/CrmPermissionServiceImpl.java | 9 +++++---- .../permission/bo/CrmPermissionTransferReqBO.java | 5 +++-- .../permission/bo/CrmPermissionUpdateReqBO.java | 2 +- 23 files changed, 57 insertions(+), 27 deletions(-) diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/customer/CrmCustomerSceneEnum.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/customer/CrmCustomerSceneEnum.java index 1bb374081..81cb674eb 100644 --- a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/customer/CrmCustomerSceneEnum.java +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/customer/CrmCustomerSceneEnum.java @@ -7,6 +7,7 @@ import lombok.Getter; import java.util.Arrays; +// TODO @puhui999:这个应该是 crm 全局的,不仅仅属于 customer 客户哈; /** * CRM 客户等级 * diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/CrmBusinessTransferReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/CrmBusinessTransferReqVO.java index db24abcf8..b5a1153f7 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/CrmBusinessTransferReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/CrmBusinessTransferReqVO.java @@ -17,12 +17,13 @@ public class CrmBusinessTransferReqVO { /** * 新负责人的用户编号 */ - @NotNull(message = "新负责人的用户编号不能为空") @Schema(description = "新负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10430") + @NotNull(message = "新负责人的用户编号不能为空") private Long newOwnerUserId; /** * 老负责人加入团队后的权限级别。如果 null 说明移除 + * * 关联 {@link CrmPermissionLevelEnum} */ @Schema(description = "老负责人加入团队后的权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/CrmContactTransferReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/CrmContactTransferReqVO.java index 32bdcd754..2acc26a97 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/CrmContactTransferReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/CrmContactTransferReqVO.java @@ -17,12 +17,13 @@ public class CrmContactTransferReqVO { /** * 新负责人的用户编号 */ - @NotNull(message = "新负责人的用户编号不能为空") @Schema(description = "新负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10430") + @NotNull(message = "新负责人的用户编号不能为空") private Long newOwnerUserId; /** * 老负责人加入团队后的权限级别。如果 null 说明移除 + * * 关联 {@link CrmPermissionLevelEnum} */ @Schema(description = "老负责人加入团队后的权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/CrmContractTransferReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/CrmContractTransferReqVO.java index 95691b5a8..4ebef5943 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/CrmContractTransferReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/CrmContractTransferReqVO.java @@ -17,12 +17,13 @@ public class CrmContractTransferReqVO { /** * 新负责人的用户编号 */ - @NotNull(message = "新负责人的用户编号不能为空") @Schema(description = "新负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10430") + @NotNull(message = "新负责人的用户编号不能为空") private Long newOwnerUserId; /** * 老负责人加入团队后的权限级别。如果 null 说明移除 + * * 关联 {@link CrmPermissionLevelEnum} */ @Schema(description = "老负责人加入团队后的权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") 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 43d1007b0..103e2c34e 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 @@ -106,6 +106,7 @@ public class CrmCustomerController { return success(CrmCustomerConvert.INSTANCE.convert(customer, ownerMap, userMap, deptMap)); } + // TODO @puhui999:可以在 CrmCustomerPageReqVO 里面加个 pool 参数,为 true 时,代表来自公海客户的分页 @GetMapping("/page") @Operation(summary = "获得客户分页") @PreAuthorize("@ss.hasPermission('crm:customer:query')") @@ -115,7 +116,7 @@ public class CrmCustomerController { return success(PageResult.empty(pageResult.getTotal())); } // 拼接数据 - // TODO 芋艿:需要 review 下; + // TODO @puhui999:这块的拼接逻辑,可以和 convertPage 合并下; // Map userMap = adminUserApi.getUserMap( // convertSetByFlatMap(pageResult.getList(), user -> Stream.of(NumberUtil.parseLong(user.getCreator()), user.getOwnerUserId()))); // Map deptMap = deptApi.getDeptMap( @@ -123,6 +124,7 @@ public class CrmCustomerController { return convertPage(customerService.getCustomerPage(pageVO, getLoginUserId())); } + // TODO @puhui999: @GetMapping("/pool-page") @Operation(summary = "获得公海客户分页") @PreAuthorize("@ss.hasPermission('crm:customer:query')") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPageReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPageReqVO.java index 5f8b9f28e..fafe3d770 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPageReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPageReqVO.java @@ -29,7 +29,9 @@ public class CrmCustomerPageReqVO extends PageParam { private Integer source; /** - * 场景类型,关联 {@link CrmCustomerSceneEnum} + * 场景类型 + * + * 关联 {@link CrmCustomerSceneEnum} */ @Schema(description = "场景类型", example = "1") private Integer sceneType; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerTransferReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerTransferReqVO.java index 23df716c2..ed7cfb5c5 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerTransferReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerTransferReqVO.java @@ -17,12 +17,13 @@ public class CrmCustomerTransferReqVO { /** * 新负责人的用户编号 */ - @NotNull(message = "新负责人的用户编号不能为空") @Schema(description = "新负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10430") + @NotNull(message = "新负责人的用户编号不能为空") private Long newOwnerUserId; /** * 老负责人加入团队后的权限级别。如果 null 说明移除 + * * 关联 {@link CrmPermissionLevelEnum} */ @Schema(description = "老负责人加入团队后的权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") 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 a13694e1a..75e8ad658 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 @@ -55,16 +55,18 @@ public class CrmPermissionController { @Resource private PostApi postApi; + // TODO @puhui999:保持统一,create 噢;然后是 PostMapping @PutMapping("/add") @Operation(summary = "添加团队成员") @PreAuthorize("@ss.hasPermission('crm:permission:create')") - @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#reqVO.bizType", bizId = "#reqVO.bizId" - , level = CrmPermissionLevelEnum.OWNER) + @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#reqVO.bizType", bizId = "#reqVO.bizId", + level = CrmPermissionLevelEnum.OWNER) public CommonResult addPermission(@Valid @RequestBody CrmPermissionCreateReqVO reqVO) { permissionService.createPermission(CrmPermissionConvert.INSTANCE.convert(reqVO)); return success(true); } + // TODO @puhui999:领取公海客户,是不是放到客户那更合适哈? @PutMapping("/receive") @Operation(summary = "领取公海数据") @PreAuthorize("@ss.hasPermission('crm:permission:update')") @@ -73,6 +75,7 @@ public class CrmPermissionController { return success(true); } + // TODO @puhui999:是不是放到客户那更合适哈? @PutMapping("/put-pool") @Operation(summary = "数据放入公海") @PreAuthorize("@ss.hasPermission('crm:permission:update')") @@ -93,6 +96,7 @@ public class CrmPermissionController { return success(true); } + // TODO @puhui999:bizType 和 bizId 是不是不用啦;因为参数校验需要 bizType 和 bizId,可以先查询下,在直接调用方法;不一定都要注解哈; @DeleteMapping("/delete") @Operation(summary = "移除团队成员") @Parameters({ @@ -110,9 +114,11 @@ public class CrmPermissionController { return success(true); } + // TODO @puhui999:deleteSelfPermission;尽量归成 crud 这样的操作哈; @DeleteMapping("/quit-team") @Operation(summary = "退出团队") @Parameters({ + // TODO @puhui999:这个可以拿出来,不用包在 @Parameters 里,在只有一个参数时哈; @Parameter(name = "id", description = "团队成员编号", required = true, example = "1024") }) @PreAuthorize("@ss.hasPermission('crm:permission:delete')") @@ -143,6 +149,7 @@ public class CrmPermissionController { } // TODO @puhui999:池子的逻辑; // 判断是否是公海数据 + // TODO @puhui999:这段逻辑,可以删除么? Predicate filter = item -> ObjUtil.equal(item.getUserId(), CrmPermissionDO.POOL_USER_ID); if (anyMatch(permission, filter)) { permission.removeIf(filter); // 排除 @@ -151,6 +158,7 @@ public class CrmPermissionController { // 拼接数据 List userList = adminUserApi.getUserList(convertSet(permission, CrmPermissionDO::getUserId)); Map deptMap = deptApi.getDeptMap(convertSet(userList, AdminUserRespDTO::getDeptId)); + // TODO @puhui999:CollectionUtils.convertSetByFlatMap() 看看可以不 Set postIds = userList.stream().flatMap(item -> item.getPostIds().stream()).collect(Collectors.toSet()); Map postMap = postApi.getPostMap(postIds); return success(CrmPermissionConvert.INSTANCE.convert(permission, userList, deptMap, postMap)); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionBaseVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionBaseVO.java index 4ad70859f..595b8f9f2 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionBaseVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionBaseVO.java @@ -21,13 +21,13 @@ public class CrmPermissionBaseVO { @NotNull(message = "用户编号不能为空") private Long userId; - @Schema(description = "Crm 类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @Schema(description = "CRM 类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @InEnum(CrmBizTypeEnum.class) - @NotNull(message = "Crm 类型不能为空") + @NotNull(message = "CRM 类型不能为空") private Integer bizType; - @Schema(description = "Crm 类型数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @NotNull(message = "Crm 类型数据编号不能为空") + @Schema(description = "CRM 类型数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "CRM 类型数据编号不能为空") private Long bizId; @Schema(description = "权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionRespVO.java index acd7003a0..9440a949f 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionRespVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionRespVO.java @@ -13,12 +13,12 @@ public class CrmPermissionRespVO extends CrmPermissionBaseVO { @Schema(description = "数据权限编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") private Long id; - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部") - private String deptName; - @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") private String nickname; + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部") + private String deptName; + @Schema(description = "岗位名称数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[BOOS,经理]") private Set postNames; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerConvert.java index 83e75610d..732a59f84 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerConvert.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerConvert.java @@ -81,6 +81,7 @@ public interface CrmCustomerConvert { PageResult convertPage(PageResult page); + // TODO @puhui999:两个 convertPage 的逻辑,合并下; default PageResult convertPage(PageResult pageResult, Map ownerMap, Map userMap, Map deptMap) { PageResult result = convertPage(pageResult); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java index 2b8e321d6..42f784ba7 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java @@ -56,6 +56,7 @@ public interface CrmPermissionConvert { } default List convertList(CrmPermissionUpdateReqVO updateReqVO) { + // TODO @puhui999:CollectionUtils.convert List permissions = new ArrayList<>(); updateReqVO.getIds().forEach(id -> { permissions.add(new CrmPermissionDO().setId(id).setLevel(updateReqVO.getLevel())); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/permission/CrmPermissionDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/permission/CrmPermissionDO.java index aa3b1e64f..55d583597 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/permission/CrmPermissionDO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/permission/CrmPermissionDO.java @@ -24,6 +24,7 @@ import lombok.*; public class CrmPermissionDO extends BaseDO { // TODO puhui999:是不是公海的数据,就不插入了;这样方便获取公海数据鸭 + // TODO @puhui999:每个数据那的负责人,我想了下,还是存储的; /** * 当数据变为公海数据时,也就是数据团队成员中没有负责人的时候,将原本的负责人 userId 设置为 POOL_USER_ID 方便查询公海数据。 * 也就是说每条数据到最后都有一个负责人,如果有人领取则 userId 为领取人 diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java index f8f856104..760a52593 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java @@ -26,6 +26,7 @@ public interface CrmBusinessMapper extends BaseMapperX { .orderByDesc(CrmBusinessDO::getId)); } + // TODO @puhui999:selectList 噢; default List selectPage(CrmBusinessExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .likeIfPresent(CrmBusinessDO::getName, reqVO.getName()) diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/annotations/CrmPermission.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/annotations/CrmPermission.java index 5ef382b74..09526e070 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/annotations/CrmPermission.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/annotations/CrmPermission.java @@ -12,7 +12,7 @@ import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.METHOD; /** - * Crm 数据操作权限校验 AOP 注解 + * CRM 数据操作权限校验 AOP 注解 * * @author HUIHUI */ @@ -22,18 +22,19 @@ import static java.lang.annotation.ElementType.METHOD; public @interface CrmPermission { /** - * crm 类型 + * CRM 类型 */ CrmBizTypeEnum bizType(); /** - * crm 类型扩展 - * 用于 CrmPermissionController 团队权限校验 + * CRM 类型扩展,通过 Spring EL 表达式获取到 {@link #bizType()} + * + * 目的:用于 CrmPermissionController 团队权限校验 */ String bizTypeValue() default ""; /** - * 数据编号,通过 spring el 表达式获取 + * 数据编号,通过 Spring EL 表达式获取 * TODO 数据权限完成后去除 default "" */ String bizId() default ""; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/aop/CrmPermissionAspect.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/aop/CrmPermissionAspect.java index 251a921ff..d1d30dca4 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/aop/CrmPermissionAspect.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/aop/CrmPermissionAspect.java @@ -108,6 +108,8 @@ public class CrmPermissionAspect { throw exception(CRM_PERMISSION_DENIED, crmPermission.bizType().getName()); } + + // TODO @puhui999:这块看看能不能用 SpringExpressionUtils 工具类; private KeyValue getBizIdAndBizType(JoinPoint joinPoint, CrmPermission crmPermission) throws NoSuchMethodException { Method method = getMethod(joinPoint); // 1. 获取方法的参数值 diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/config/SpelConfig.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/config/SpelConfig.java index 2bdfcbe8b..efbf5d1d5 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/config/SpelConfig.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/config/SpelConfig.java @@ -4,6 +4,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.expression.spel.standard.SpelExpressionParser; +// TODO @puhui999:SpringExpressionUtils /** * 注册 Spel 所需 Bean * diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/CrmBizTypeEnum.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/CrmBizTypeEnum.java index 553121243..e4fc3dbbf 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/CrmBizTypeEnum.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/CrmBizTypeEnum.java @@ -17,6 +17,7 @@ import java.util.Arrays; @Getter public enum CrmBizTypeEnum implements IntArrayValuable { + // TODO @puhui999:如果类似 CrmBizPermission 的 bizType 需要为空,可以设置它是数组,参考 Telephone 的 payload CRM_PERMISSION(0, "团队"), // CrmPermissionController 中使用 CRM_LEADS(1, "线索"), CRM_CUSTOMER(2, "客户"), diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java index bb154d056..fc322fac5 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java @@ -103,6 +103,7 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { @Override public PageResult getBusinessPage(CrmBusinessPageReqVO pageReqVO, Long userId) { // 1. 获取当前用户能看的分页数据 + // TODO @puhui999:如果业务的数据量比较大,in 太多可能有性能问题噢;看看是不是搞成 join 连表了;可以微信讨论下; List permissions = crmPermissionService.getPermissionListByBizTypeAndUserId( CrmBizTypeEnum.CRM_BUSINESS.getType(), userId); Set ids = convertSet(permissions, CrmPermissionDO::getBizId); 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 5d56211d6..a461440e0 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 @@ -100,6 +100,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { return customerMapper.selectPage(pageReqVO, Collections.emptyList()); } // 1.2 获取当前用户能看的分页数据 + // TODO @puhui999:如果业务的数据量比较大,in 太多可能有性能问题噢;看看是不是搞成 join 连表了;可以微信讨论下; List permissions = crmPermissionService.getPermissionListByBizTypeAndUserId( CrmBizTypeEnum.CRM_CUSTOMER.getType(), userId); // 1.3 TODO 场景数据过滤 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 e7efd1284..681c1654b 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 @@ -24,8 +24,9 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum.isOwner; +// TODO @puhui999:尽量规避用“团队”这个词哈;这个只是我们给前端展示用的; /** - * crm 数据权限 Service 接口实现类 + * CRM 数据权限 Service 接口实现类 * * @author HUIHUI */ @@ -117,6 +118,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { // 1.2 校验新负责人是否存在 adminUserApi.validateUserList(Collections.singletonList(transferReqBO.getNewOwnerUserId())); + // TODO @puhui999:2. 和 2.1 合并成 2;2.2 单独成 3;说白了,就是 2. 修改新负责人的权限;3. 修改老负责人的权限;这样整体注释会简洁一点,也清晰一点; // 2. 权限转移 List permissions = crmPermissionMapper.selectByBizTypeAndBizId( transferReqBO.getBizType(), transferReqBO.getBizId()); // 获取所有团队成员 @@ -127,7 +129,6 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { crmPermissionMapper.insert(new CrmPermissionDO().setBizType(transferReqBO.getBizType()) .setBizId(transferReqBO.getBizId()).setUserId(transferReqBO.getNewOwnerUserId()) .setLevel(CrmPermissionLevelEnum.OWNER.getLevel())); - } else { // 存在则修改权限级别 crmPermissionMapper.updateById(new CrmPermissionDO().setId(permission.getId()) .setLevel(CrmPermissionLevelEnum.OWNER.getLevel())); @@ -138,7 +139,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { .setLevel(transferReqBO.getOldOwnerPermissionLevel())); // 设置加入团队后的级别 return; } - crmPermissionMapper.deleteById(oldPermission.getId()); // 移除 + crmPermissionMapper.deleteById(oldPermission.getId()); } @Override @@ -164,7 +165,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { 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)); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionTransferReqBO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionTransferReqBO.java index 23da43daf..3e3873b47 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionTransferReqBO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionTransferReqBO.java @@ -22,7 +22,7 @@ public class CrmPermissionTransferReqBO { private Long userId; /** - * Crm 类型 + * CRM 类型 */ @NotNull(message = "Crm 类型不能为空") @InEnum(CrmBizTypeEnum.class) @@ -30,7 +30,7 @@ public class CrmPermissionTransferReqBO { /** * 数据编号 */ - @NotNull(message = "Crm 数据编号不能为空") + @NotNull(message = "CRM 数据编号不能为空") private Long bizId; /** @@ -41,6 +41,7 @@ public class CrmPermissionTransferReqBO { /** * 老负责人加入团队后的权限级别。如果 null 说明移除 + * * 关联 {@link CrmPermissionLevelEnum} */ private Integer oldOwnerPermissionLevel; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionUpdateReqBO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionUpdateReqBO.java index 38eff3ef5..9cd198cdf 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionUpdateReqBO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionUpdateReqBO.java @@ -17,7 +17,7 @@ public class CrmPermissionUpdateReqBO { /** * 数据权限编号 */ - @NotNull(message = "Crm 数据权限编号不能为空") + @NotNull(message = "数据权限编号不能为空") private Long id; /**