Commit 23cfbfe4912fd02b06283615dd343cd059a54ca5
1 parent
7a8ffd9c
CRM-数据权限:完善数据团队操作-添加、编辑、移除团队成员,退出团队
Showing
12 changed files
with
312 additions
and
27 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
| ... | ... | @@ -38,7 +38,6 @@ public interface ErrorCodeConstants { |
| 38 | 38 | ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在"); |
| 39 | 39 | ErrorCode CRM_PERMISSION_DENIED = new ErrorCode(1_020_007_001, "{}操作失败,原因:没有权限"); |
| 40 | 40 | ErrorCode CRM_PERMISSION_MODEL_NOT_EXISTS = new ErrorCode(1_020_007_002, "{}不存在"); |
| 41 | - ErrorCode CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_NOT_EXISTS = new ErrorCode(1_020_007_003, "{}操作失败,原因:负责人不存在"); | |
| 42 | - ErrorCode CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_EXISTS = new ErrorCode(1_020_007_004, "{}操作失败,原因:转移对象已经是该负责人"); | |
| 41 | + ErrorCode CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_EXISTS = new ErrorCode(1_020_007_003, "{}操作失败,原因:转移对象已经是该负责人"); | |
| 43 | 42 | |
| 44 | 43 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.controller.admin.permission; | |
| 2 | + | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 4 | +import cn.hutool.core.util.ObjUtil; | |
| 5 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | |
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionCreateReqVO; | |
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionRespVO; | |
| 8 | +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | |
| 9 | +import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert; | |
| 10 | +import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | |
| 11 | +import cn.iocoder.yudao.module.crm.framework.core.service.CrmPermissionValidateService; | |
| 12 | +import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; | |
| 13 | +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | |
| 14 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | |
| 15 | +import io.swagger.v3.oas.annotations.Operation; | |
| 16 | +import io.swagger.v3.oas.annotations.Parameter; | |
| 17 | +import io.swagger.v3.oas.annotations.Parameters; | |
| 18 | +import io.swagger.v3.oas.annotations.tags.Tag; | |
| 19 | +import org.springframework.security.access.prepost.PreAuthorize; | |
| 20 | +import org.springframework.validation.annotation.Validated; | |
| 21 | +import org.springframework.web.bind.annotation.*; | |
| 22 | + | |
| 23 | +import javax.annotation.Resource; | |
| 24 | +import javax.validation.Valid; | |
| 25 | +import java.util.Collections; | |
| 26 | +import java.util.List; | |
| 27 | + | |
| 28 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | |
| 29 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | |
| 30 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | |
| 31 | +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | |
| 32 | +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CRM_PERMISSION_DENIED; | |
| 33 | +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CRM_PERMISSION_MODEL_NOT_EXISTS; | |
| 34 | +import static cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum.getNameByType; | |
| 35 | +import static cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum.isOwner; | |
| 36 | + | |
| 37 | +@Tag(name = "管理后台 - CRM 数据权限(数据团队成员操作)") | |
| 38 | +@RestController | |
| 39 | +@RequestMapping("/crm/permission") | |
| 40 | +@Validated | |
| 41 | +public class CrmPermissionController { | |
| 42 | + | |
| 43 | + @Resource | |
| 44 | + private CrmPermissionService crmPermissionService; | |
| 45 | + | |
| 46 | + @Resource | |
| 47 | + private AdminUserApi adminUserApi; | |
| 48 | + @Resource | |
| 49 | + private List<CrmPermissionValidateService> permissionValidateServices; | |
| 50 | + | |
| 51 | + private void validatePermission(Integer bizType, Long bizId) { | |
| 52 | + // 1. TODO 校验是否为超级管理员 | |
| 53 | + // 2. 防御一手,如果是超级管理员不校验权限还是得校验一下数据是否存在 | |
| 54 | + permissionValidateServices.forEach(item -> { | |
| 55 | + if (!item.validateBizIdExists(bizType, bizId)) { | |
| 56 | + throw exception(CRM_PERMISSION_MODEL_NOT_EXISTS, getNameByType(bizType)); | |
| 57 | + } | |
| 58 | + }); | |
| 59 | + // 3. 校验数据权限 (如果存在则表示 bizId 也存在) | |
| 60 | + CrmPermissionDO permission = crmPermissionService.getPermissionByBizTypeAndBizIdAndUserId( | |
| 61 | + bizType, bizId, getLoginUserId()); | |
| 62 | + if (isOwner(permission.getPermissionLevel())) { // 只有负责人才可以操作团队成员 | |
| 63 | + return; | |
| 64 | + } | |
| 65 | + throw exception(CRM_PERMISSION_DENIED, getNameByType(bizType)); | |
| 66 | + } | |
| 67 | + | |
| 68 | + @PutMapping("/add") | |
| 69 | + @Operation(summary = "添加团队成员") | |
| 70 | + @PreAuthorize("@ss.hasPermission('crm:permission:create')") | |
| 71 | + public CommonResult<Boolean> addPermission(@Valid @RequestBody CrmPermissionCreateReqVO reqVO) { | |
| 72 | + // 1. 前置校验 | |
| 73 | + validatePermission(reqVO.getBizType(), reqVO.getBizId()); | |
| 74 | + | |
| 75 | + // 2. 加入成员 | |
| 76 | + crmPermissionService.createPermission(CrmPermissionConvert.INSTANCE.convert(reqVO)); | |
| 77 | + return success(true); | |
| 78 | + } | |
| 79 | + | |
| 80 | + | |
| 81 | + @PutMapping("/update") | |
| 82 | + @Operation(summary = "编辑团队成员") | |
| 83 | + @PreAuthorize("@ss.hasPermission('crm:permission:update')") | |
| 84 | + public CommonResult<Boolean> updatePermission(@Valid @RequestBody CrmPermissionUpdateReqVO updateReqVO) { | |
| 85 | + // 1. 前置校验 | |
| 86 | + validatePermission(updateReqVO.getBizType(), updateReqVO.getBizId()); | |
| 87 | + | |
| 88 | + // 2. 编辑团队成员 | |
| 89 | + crmPermissionService.updatePermission(CrmPermissionConvert.INSTANCE.convert(updateReqVO)); | |
| 90 | + return success(true); | |
| 91 | + } | |
| 92 | + | |
| 93 | + @GetMapping("/delete") | |
| 94 | + @Operation(summary = "移除团队成员") | |
| 95 | + @Parameter(name = "id", description = "团队成员编号", required = true) | |
| 96 | + @PreAuthorize("@ss.hasPermission('crm:permission:delete')") | |
| 97 | + public CommonResult<Boolean> deletePermission(@RequestParam("bizType") Integer bizType, | |
| 98 | + @RequestParam("bizId") Long bizId, | |
| 99 | + @RequestParam("id") Long id) { | |
| 100 | + // 1. 前置校验 | |
| 101 | + validatePermission(bizType, bizId); | |
| 102 | + | |
| 103 | + // 2. 移除团队成员 | |
| 104 | + crmPermissionService.deletePermission(id); | |
| 105 | + return success(true); | |
| 106 | + } | |
| 107 | + | |
| 108 | + @GetMapping("/quit") | |
| 109 | + @Operation(summary = "退出团队") | |
| 110 | + @Parameters({ | |
| 111 | + @Parameter(name = "bizType", description = "CRM 类型", required = true, example = "2"), | |
| 112 | + @Parameter(name = "bizId", description = "CRM 类型数据编号", required = true, example = "1024") | |
| 113 | + }) | |
| 114 | + @PreAuthorize("@ss.hasPermission('crm:permission:delete')") | |
| 115 | + public CommonResult<Boolean> quitPermission(@RequestParam("bizType") Integer bizType, | |
| 116 | + @RequestParam("bizId") Long bizId) { | |
| 117 | + CrmPermissionDO permission = crmPermissionService.getPermissionByBizTypeAndBizIdAndUserId( | |
| 118 | + bizType, bizId, getLoginUserId()); | |
| 119 | + if (permission == null) { // 没有就不是团队成员 | |
| 120 | + return success(false); | |
| 121 | + } | |
| 122 | + crmPermissionService.deletePermission(permission.getId()); | |
| 123 | + return success(true); | |
| 124 | + } | |
| 125 | + | |
| 126 | + @GetMapping("/list") | |
| 127 | + @Operation(summary = "获取团队成员") | |
| 128 | + @Parameters({ | |
| 129 | + @Parameter(name = "bizType", description = "CRM 类型", required = true, example = "2"), | |
| 130 | + @Parameter(name = "bizId", description = "CRM 类型数据编号", required = true, example = "1024") | |
| 131 | + }) | |
| 132 | + @PreAuthorize("@ss.hasPermission('crm:permission:query')") | |
| 133 | + public CommonResult<List<CrmPermissionRespVO>> getPermissionList(@RequestParam("bizType") Integer bizType, | |
| 134 | + @RequestParam("bizId") Long bizId) { | |
| 135 | + List<CrmPermissionDO> permission = crmPermissionService.getPermissionByBizTypeAndBizId(bizType, bizId); | |
| 136 | + if (CollUtil.isEmpty(permission)) { | |
| 137 | + return success(Collections.emptyList()); | |
| 138 | + } | |
| 139 | + permission.removeIf(item -> ObjUtil.equal(item.getUserId(), CrmPermissionDO.POOL_USER_ID)); // 排除 | |
| 140 | + | |
| 141 | + // 拼接数据 | |
| 142 | + List<AdminUserRespDTO> userList = adminUserApi.getUserList(convertSet(permission, CrmPermissionDO::getUserId)); | |
| 143 | + return success(CrmPermissionConvert.INSTANCE.convert(permission, userList)); | |
| 144 | + } | |
| 145 | + | |
| 146 | +} | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.controller.admin.permission.vo; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.validation.InEnum; | |
| 4 | +import cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum; | |
| 5 | +import cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum; | |
| 6 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 7 | +import lombok.Data; | |
| 8 | + | |
| 9 | +import javax.validation.constraints.NotNull; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * 数据权限(团队成员) Base VO,提供给添加、修改、详细的子 VO 使用 | |
| 13 | + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | |
| 14 | + * | |
| 15 | + * @author HUIHUI | |
| 16 | + */ | |
| 17 | +@Data | |
| 18 | +public class CrmPermissionBaseVO { | |
| 19 | + | |
| 20 | + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456") | |
| 21 | + @NotNull(message = "用户编号不能为空") | |
| 22 | + private Long userId; | |
| 23 | + | |
| 24 | + @Schema(description = "Crm 类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | |
| 25 | + @InEnum(CrmBizTypeEnum.class) | |
| 26 | + @NotNull(message = "Crm 类型不能为空") | |
| 27 | + private Integer bizType; | |
| 28 | + | |
| 29 | + @Schema(description = "Crm 类型数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | |
| 30 | + @NotNull(message = "Crm 类型数据编号不能为空") | |
| 31 | + private Long bizId; | |
| 32 | + | |
| 33 | + @Schema(description = "权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | |
| 34 | + @InEnum(CrmPermissionLevelEnum.class) | |
| 35 | + @NotNull(message = "权限级别不能为空") | |
| 36 | + private Integer permissionLevel; | |
| 37 | + | |
| 38 | +} | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionCreateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.controller.admin.permission.vo; | |
| 2 | + | |
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 4 | +import lombok.Data; | |
| 5 | +import lombok.EqualsAndHashCode; | |
| 6 | +import lombok.ToString; | |
| 7 | + | |
| 8 | +@Schema(description = "管理后台 - CRM 数据权限创建 Request VO") | |
| 9 | +@Data | |
| 10 | +@EqualsAndHashCode(callSuper = true) | |
| 11 | +@ToString(callSuper = true) | |
| 12 | +public class CrmPermissionCreateReqVO extends CrmPermissionBaseVO { | |
| 13 | + | |
| 14 | +} | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.controller.admin.permission.vo; | |
| 2 | + | |
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 4 | +import lombok.Data; | |
| 5 | + | |
| 6 | +import java.util.Set; | |
| 7 | + | |
| 8 | +@Schema(description = "管理后台 - CRM 数据权限(团队成员) Response VO") | |
| 9 | +@Data | |
| 10 | +public class CrmPermissionRespVO extends CrmPermissionBaseVO { | |
| 11 | + | |
| 12 | + @Schema(description = "数据权限编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") | |
| 13 | + private Long id; | |
| 14 | + | |
| 15 | + @Schema(description = "团队级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "负责人") | |
| 16 | + private String permissionLevelName; | |
| 17 | + | |
| 18 | + @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 19 | + private Long deptId; | |
| 20 | + | |
| 21 | + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") | |
| 22 | + private String nickname; | |
| 23 | + | |
| 24 | + @Schema(description = "岗位编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2,3]") | |
| 25 | + private Set<Long> postIds; | |
| 26 | + | |
| 27 | +} | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionUpdateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.controller.admin.permission.vo; | |
| 2 | + | |
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 4 | +import lombok.Data; | |
| 5 | +import lombok.EqualsAndHashCode; | |
| 6 | +import lombok.ToString; | |
| 7 | + | |
| 8 | +@Schema(description = "管理后台 - CRM 数据权限更新 Request VO") | |
| 9 | +@Data | |
| 10 | +@EqualsAndHashCode(callSuper = true) | |
| 11 | +@ToString(callSuper = true) | |
| 12 | +public class CrmPermissionUpdateReqVO extends CrmPermissionBaseVO { | |
| 13 | + | |
| 14 | + @Schema(description = "数据权限编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") | |
| 15 | + private Long id; | |
| 16 | + | |
| 17 | +} | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java
| 1 | 1 | package cn.iocoder.yudao.module.crm.convert.permission; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | |
| 4 | +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | |
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionCreateReqVO; | |
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionRespVO; | |
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | |
| 3 | 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; |
| 4 | 9 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; |
| 5 | 10 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateReqBO; |
| 11 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | |
| 6 | 12 | import org.mapstruct.Mapper; |
| 7 | 13 | import org.mapstruct.factory.Mappers; |
| 8 | 14 | |
| 15 | +import java.util.List; | |
| 16 | +import java.util.Map; | |
| 17 | + | |
| 18 | +import static cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum.getNameByLevel; | |
| 19 | + | |
| 9 | 20 | /** |
| 10 | 21 | * Crm 数据权限 Convert |
| 11 | 22 | * |
| ... | ... | @@ -20,4 +31,21 @@ public interface CrmPermissionConvert { |
| 20 | 31 | |
| 21 | 32 | CrmPermissionDO convert(CrmPermissionUpdateReqBO updateBO); |
| 22 | 33 | |
| 34 | + CrmPermissionCreateReqBO convert(CrmPermissionCreateReqVO reqVO); | |
| 35 | + | |
| 36 | + CrmPermissionUpdateReqBO convert(CrmPermissionUpdateReqVO updateReqVO); | |
| 37 | + | |
| 38 | + List<CrmPermissionRespVO> convert(List<CrmPermissionDO> permission); | |
| 39 | + | |
| 40 | + default List<CrmPermissionRespVO> convert(List<CrmPermissionDO> permission, List<AdminUserRespDTO> userList) { | |
| 41 | + Map<Long, AdminUserRespDTO> userMap = CollectionUtils.convertMap(userList, AdminUserRespDTO::getId); | |
| 42 | + return CollectionUtils.convertList(convert(permission), item -> { | |
| 43 | + MapUtils.findAndThen(userMap, item.getId(), user -> { | |
| 44 | + item.setNickname(user.getNickname()).setDeptId(user.getDeptId()).setPostIds(user.getPostIds()) | |
| 45 | + .setPermissionLevelName(getNameByLevel(item.getPermissionLevel())); | |
| 46 | + }); | |
| 47 | + return item; | |
| 48 | + }); | |
| 49 | + } | |
| 50 | + | |
| 23 | 51 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/permission/CrmPermissionMapper.java
| ... | ... | @@ -46,19 +46,6 @@ public interface CrmPermissionMapper extends BaseMapperX<CrmPermissionDO> { |
| 46 | 46 | .eq(CrmPermissionDO::getBizId, bizId)); |
| 47 | 47 | } |
| 48 | 48 | |
| 49 | - /** | |
| 50 | - * 获取数据权限列表通过 数据类型 x 用户编号。如果 | |
| 51 | - * | |
| 52 | - * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} | |
| 53 | - * @param userId | |
| 54 | - * @return Crm 数据权限列表 | |
| 55 | - */ | |
| 56 | - default List<CrmPermissionDO> selectByBizTypeAndUserId(Integer bizType, Long userId) { | |
| 57 | - return selectList(new LambdaQueryWrapperX<CrmPermissionDO>() | |
| 58 | - .eq(CrmPermissionDO::getBizType, bizType) | |
| 59 | - .eq(CrmPermissionDO::getUserId, userId)); | |
| 60 | - } | |
| 61 | - | |
| 62 | 49 | default PageResult<CrmPermissionDO> selectPage(CrmPermissionPageReqBO pageReqBO) { |
| 63 | 50 | return selectPage(pageReqBO, new LambdaQueryWrapperX<CrmPermissionDO>() |
| 64 | 51 | .eq(CrmPermissionDO::getBizType, pageReqBO.getBizType()) | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/service/CrmPermissionValidateService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.framework.core.service; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * 校验数据是否存在 service 接口 | |
| 5 | + * TODO 需要使用团队成员相关操作的业务接口都需要继承此接口 | |
| 6 | + * | |
| 7 | + * @author HUIHUI | |
| 8 | + */ | |
| 9 | +public interface CrmPermissionValidateService { | |
| 10 | + | |
| 11 | + /** | |
| 12 | + * 校验数据是否存在 | |
| 13 | + * | |
| 14 | + * @param bizType CRM 类型 | |
| 15 | + * @param bizId 数据编号 | |
| 16 | + * @return 是/否 | |
| 17 | + */ | |
| 18 | + boolean validateBizIdExists(Integer bizType, Long bizId); | |
| 19 | + | |
| 20 | +} | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/CrmPermissionLevelEnum.java
| ... | ... | @@ -47,4 +47,13 @@ public enum CrmPermissionLevelEnum implements IntArrayValuable { |
| 47 | 47 | return ObjUtil.equal(WRITE.level, level); |
| 48 | 48 | } |
| 49 | 49 | |
| 50 | + public static String getNameByLevel(Integer level) { | |
| 51 | + for (CrmPermissionLevelEnum levelEnum : CrmPermissionLevelEnum.values()) { | |
| 52 | + if (ObjUtil.equal(levelEnum.level, level)) { | |
| 53 | + return levelEnum.name; | |
| 54 | + } | |
| 55 | + } | |
| 56 | + return ""; | |
| 57 | + } | |
| 58 | + | |
| 50 | 59 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java
| ... | ... | @@ -13,12 +13,12 @@ import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionPageReqBO; |
| 13 | 13 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateReqBO; |
| 14 | 14 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmTransferPermissionReqBO; |
| 15 | 15 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| 16 | -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | |
| 17 | 16 | import org.springframework.stereotype.Service; |
| 18 | 17 | import org.springframework.transaction.annotation.Transactional; |
| 19 | 18 | import org.springframework.validation.annotation.Validated; |
| 20 | 19 | |
| 21 | 20 | import javax.annotation.Resource; |
| 21 | +import java.util.Collections; | |
| 22 | 22 | import java.util.List; |
| 23 | 23 | |
| 24 | 24 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| ... | ... | @@ -43,6 +43,10 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { |
| 43 | 43 | @Override |
| 44 | 44 | @Transactional(rollbackFor = Exception.class) |
| 45 | 45 | public Long createPermission(CrmPermissionCreateReqBO createBO) { |
| 46 | + // 1. 校验用户是否存在 | |
| 47 | + adminUserApi.validateUserList(Collections.singletonList(createBO.getUserId())); | |
| 48 | + | |
| 49 | + // 2. 创建 | |
| 46 | 50 | CrmPermissionDO permission = CrmPermissionConvert.INSTANCE.convert(createBO); |
| 47 | 51 | crmPermissionMapper.insert(permission); |
| 48 | 52 | return permission.getId(); |
| ... | ... | @@ -51,7 +55,11 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { |
| 51 | 55 | @Override |
| 52 | 56 | @Transactional(rollbackFor = Exception.class) |
| 53 | 57 | public void updatePermission(CrmPermissionUpdateReqBO updateBO) { |
| 58 | + // 1. 校验用户是否存在 | |
| 59 | + adminUserApi.validateUserList(Collections.singletonList(updateBO.getUserId())); | |
| 60 | + // 2. 校验存在 | |
| 54 | 61 | validateCrmPermissionExists(updateBO.getId()); |
| 62 | + | |
| 55 | 63 | // 更新操作 |
| 56 | 64 | CrmPermissionDO updateDO = CrmPermissionConvert.INSTANCE.convert(updateBO); |
| 57 | 65 | crmPermissionMapper.updateById(updateDO); |
| ... | ... | @@ -60,7 +68,9 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { |
| 60 | 68 | @Override |
| 61 | 69 | @Transactional(rollbackFor = Exception.class) |
| 62 | 70 | public void deletePermission(Long id) { |
| 71 | + // 校验存在 | |
| 63 | 72 | validateCrmPermissionExists(id); |
| 73 | + | |
| 64 | 74 | // 删除 |
| 65 | 75 | crmPermissionMapper.deleteById(id); |
| 66 | 76 | } |
| ... | ... | @@ -75,11 +85,6 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { |
| 75 | 85 | return crmPermissionMapper.selectByBizTypeAndBizId(bizType, bizId); |
| 76 | 86 | } |
| 77 | 87 | |
| 78 | - @Override | |
| 79 | - public List<CrmPermissionDO> getPermissionByBizTypeAndUserId(Integer bizType, Long userId) { | |
| 80 | - return crmPermissionMapper.selectByBizTypeAndUserId(bizType, userId); | |
| 81 | - } | |
| 82 | - | |
| 83 | 88 | private void validateCrmPermissionExists(Long id) { |
| 84 | 89 | if (crmPermissionMapper.selectById(id) == null) { |
| 85 | 90 | throw exception(CRM_PERMISSION_NOT_EXISTS); |
| ... | ... | @@ -103,11 +108,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { |
| 103 | 108 | throw exception(CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_EXISTS, crmName); |
| 104 | 109 | } |
| 105 | 110 | // 2.1 校验新负责人是否存在 |
| 106 | - AdminUserRespDTO user = adminUserApi.getUser(transferReqBO.getNewOwnerUserId()); | |
| 107 | - if (user == null) { | |
| 108 | - throw exception(CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_NOT_EXISTS, crmName); | |
| 109 | - } | |
| 110 | - | |
| 111 | + adminUserApi.validateUserList(Collections.singletonList(transferReqBO.getNewOwnerUserId())); | |
| 111 | 112 | // 3. 权限转移 |
| 112 | 113 | List<CrmPermissionDO> permissions = crmPermissionMapper.selectByBizTypeAndBizId( |
| 113 | 114 | transferReqBO.getBizType(), transferReqBO.getBizId()); // 获取所有团队成员 | ... | ... |