Commit 794649ea8a55741e43c1e2ac15a687607c7360e9

Authored by puhui999
1 parent f4c92089

CRM-数据权限:完善团队成员相关操作

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java
@@ -28,17 +28,16 @@ import org.springframework.web.bind.annotation.*; @@ -28,17 +28,16 @@ import org.springframework.web.bind.annotation.*;
28 28
29 import javax.annotation.Resource; 29 import javax.annotation.Resource;
30 import javax.validation.Valid; 30 import javax.validation.Valid;
31 -import java.util.Collections;  
32 -import java.util.List;  
33 -import java.util.Map;  
34 -import java.util.Set; 31 +import java.util.*;
35 import java.util.function.Predicate; 32 import java.util.function.Predicate;
36 import java.util.stream.Collectors; 33 import java.util.stream.Collectors;
37 34
  35 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
38 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 36 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
39 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.anyMatch; 37 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.anyMatch;
40 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 38 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
41 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 39 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
  40 +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CRM_PERMISSION_NOT_EXISTS;
42 41
43 @Tag(name = "管理后台 - CRM 数据权限(数据团队成员操作)") 42 @Tag(name = "管理后台 - CRM 数据权限(数据团队成员操作)")
44 @RestController 43 @RestController
@@ -85,12 +84,12 @@ public class CrmPermissionController { @@ -85,12 +84,12 @@ public class CrmPermissionController {
85 } 84 }
86 85
87 @PutMapping("/update") 86 @PutMapping("/update")
88 - @Operation(summary = "编辑团队成员") 87 + @Operation(summary = "编辑团队成员权限")
89 @PreAuthorize("@ss.hasPermission('crm:permission:update')") 88 @PreAuthorize("@ss.hasPermission('crm:permission:update')")
90 @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#updateReqVO.bizType", bizId = "#updateReqVO.bizId" 89 @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#updateReqVO.bizType", bizId = "#updateReqVO.bizId"
91 - , level = CrmPermissionLevelEnum.WRITE) 90 + , level = CrmPermissionLevelEnum.OWNER)
92 public CommonResult<Boolean> updatePermission(@Valid @RequestBody CrmPermissionUpdateReqVO updateReqVO) { 91 public CommonResult<Boolean> updatePermission(@Valid @RequestBody CrmPermissionUpdateReqVO updateReqVO) {
93 - permissionService.updatePermission(CrmPermissionConvert.INSTANCE.convert(updateReqVO)); 92 + permissionService.updatePermission(updateReqVO);
94 return success(true); 93 return success(true);
95 } 94 }
96 95
@@ -99,15 +98,33 @@ public class CrmPermissionController { @@ -99,15 +98,33 @@ public class CrmPermissionController {
99 @Parameters({ 98 @Parameters({
100 @Parameter(name = "bizType", description = "CRM 类型", required = true, example = "2"), 99 @Parameter(name = "bizType", description = "CRM 类型", required = true, example = "2"),
101 @Parameter(name = "bizId", description = "CRM 类型数据编号", required = true, example = "1024"), 100 @Parameter(name = "bizId", description = "CRM 类型数据编号", required = true, example = "1024"),
102 - @Parameter(name = "id", description = "团队成员编号", required = true, example = "1024") 101 + @Parameter(name = "ids", description = "团队成员编号", required = true, example = "1024")
103 }) 102 })
104 @PreAuthorize("@ss.hasPermission('crm:permission:delete')") 103 @PreAuthorize("@ss.hasPermission('crm:permission:delete')")
105 @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#bizType", bizId = "#bizId" 104 @CrmPermission(bizType = CrmBizTypeEnum.CRM_PERMISSION, bizTypeValue = "#bizType", bizId = "#bizId"
106 - , level = CrmPermissionLevelEnum.OWNER) 105 + , level = CrmPermissionLevelEnum.OWNER) // 为了校验权限请求必须带上 bizType 和 bizId
107 public CommonResult<Boolean> deletePermission(@RequestParam("bizType") Integer bizType, 106 public CommonResult<Boolean> deletePermission(@RequestParam("bizType") Integer bizType,
108 @RequestParam("bizId") Long bizId, 107 @RequestParam("bizId") Long bizId,
109 - @RequestParam("id") Long id) {  
110 - permissionService.deletePermission(id); 108 + @RequestParam("ids") Collection<Long> ids) {
  109 + permissionService.deletePermission(ids);
  110 + return success(true);
  111 + }
  112 +
  113 + @DeleteMapping("/quit-team")
  114 + @Operation(summary = "退出团队")
  115 + @Parameters({
  116 + @Parameter(name = "id", description = "团队成员编号", required = true, example = "1024")
  117 + })
  118 + @PreAuthorize("@ss.hasPermission('crm:permission:delete')")
  119 + public CommonResult<Boolean> deletePermission(@RequestParam("id") Long id) {
  120 + // 校验数据存在且是自己
  121 + CrmPermissionDO permission = permissionService.getPermissionByIdAndUserId(id, getLoginUserId());
  122 + if (permission == null) {
  123 + throw exception(CRM_PERMISSION_NOT_EXISTS);
  124 + }
  125 +
  126 + // 删除
  127 + permissionService.deletePermission(Collections.singletonList(id));
111 return success(true); 128 return success(true);
112 } 129 }
113 130
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionRespVO.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.controller.admin.permission.vo; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.controller.admin.permission.vo;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
  6 +import java.time.LocalDateTime;
6 import java.util.Set; 7 import java.util.Set;
7 8
8 @Schema(description = "管理后台 - CRM 数据权限(团队成员) Response VO") 9 @Schema(description = "管理后台 - CRM 数据权限(团队成员) Response VO")
@@ -21,4 +22,7 @@ public class CrmPermissionRespVO extends CrmPermissionBaseVO { @@ -21,4 +22,7 @@ public class CrmPermissionRespVO extends CrmPermissionBaseVO {
21 @Schema(description = "岗位名称数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[BOOS,经理]") 22 @Schema(description = "岗位名称数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[BOOS,经理]")
22 private Set<String> postNames; 23 private Set<String> postNames;
23 24
  25 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2023-01-01 00:00:00")
  26 + private LocalDateTime createTime;
  27 +
24 } 28 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/vo/CrmPermissionUpdateReqVO.java
1 package cn.iocoder.yudao.module.crm.controller.admin.permission.vo; 1 package cn.iocoder.yudao.module.crm.controller.admin.permission.vo;
2 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;
3 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 7 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 8
8 import javax.validation.constraints.NotNull; 9 import javax.validation.constraints.NotNull;
  10 +import java.util.List;
9 11
10 @Schema(description = "管理后台 - CRM 数据权限更新 Request VO") 12 @Schema(description = "管理后台 - CRM 数据权限更新 Request VO")
11 @Data 13 @Data
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class CrmPermissionUpdateReqVO extends CrmPermissionBaseVO { 14 +public class CrmPermissionUpdateReqVO {
15 15
16 - @Schema(description = "数据权限编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563")  
17 - @NotNull(message = "数据权限编号不能为空")  
18 - private Long id; 16 + @Schema(description = "数据权限编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2]")
  17 + @NotNull(message = "数据权限编号列表不能为空")
  18 + private List<Long> ids;
19 19
20 - // TODO @puhui999:是不是只更新 permission??? 是的 20 + @Schema(description = "Crm 类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
  21 + @InEnum(CrmBizTypeEnum.class)
  22 + @NotNull(message = "Crm 类型不能为空")
  23 + private Integer bizType;
  24 +
  25 + @Schema(description = "Crm 类型数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  26 + @NotNull(message = "Crm 类型数据编号不能为空")
  27 + private Long bizId;
  28 +
  29 + @Schema(description = "权限级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
  30 + @InEnum(CrmPermissionLevelEnum.class)
  31 + @NotNull(message = "权限级别不能为空")
  32 + private Integer level;
21 33
22 } 34 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java
@@ -15,6 +15,7 @@ import com.google.common.collect.Multimaps; @@ -15,6 +15,7 @@ import com.google.common.collect.Multimaps;
15 import org.mapstruct.Mapper; 15 import org.mapstruct.Mapper;
16 import org.mapstruct.factory.Mappers; 16 import org.mapstruct.factory.Mappers;
17 17
  18 +import java.util.ArrayList;
18 import java.util.List; 19 import java.util.List;
19 import java.util.Map; 20 import java.util.Map;
20 21
@@ -54,4 +55,12 @@ public interface CrmPermissionConvert { @@ -54,4 +55,12 @@ public interface CrmPermissionConvert {
54 }); 55 });
55 } 56 }
56 57
  58 + default List<CrmPermissionDO> convertList(CrmPermissionUpdateReqVO updateReqVO) {
  59 + List<CrmPermissionDO> permissions = new ArrayList<>();
  60 + updateReqVO.getIds().forEach(id -> {
  61 + permissions.add(new CrmPermissionDO().setId(id).setLevel(updateReqVO.getLevel()));
  62 + });
  63 + return permissions;
  64 + }
  65 +
57 } 66 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/permission/CrmPermissionMapper.java
@@ -42,4 +42,9 @@ public interface CrmPermissionMapper extends BaseMapperX&lt;CrmPermissionDO&gt; { @@ -42,4 +42,9 @@ public interface CrmPermissionMapper extends BaseMapperX&lt;CrmPermissionDO&gt; {
42 .eq(CrmPermissionDO::getLevel, level)); 42 .eq(CrmPermissionDO::getLevel, level));
43 } 43 }
44 44
  45 + default CrmPermissionDO selectByIdAndUserId(Long id, Long userId) {
  46 + return selectOne(new LambdaQueryWrapperX<CrmPermissionDO>()
  47 + .eq(CrmPermissionDO::getId, id).eq(CrmPermissionDO::getUserId, userId));
  48 + }
  49 +
45 } 50 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java
1 package cn.iocoder.yudao.module.crm.service.permission; 1 package cn.iocoder.yudao.module.crm.service.permission;
2 2
3 3
  4 +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO;
4 import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; 5 import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
5 import cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum; 6 import cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum;
6 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; 7 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
7 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; 8 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
8 -import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateReqBO;  
9 9
10 import javax.validation.Valid; 10 import javax.validation.Valid;
11 import java.util.Collection; 11 import java.util.Collection;
@@ -29,16 +29,16 @@ public interface CrmPermissionService { @@ -29,16 +29,16 @@ public interface CrmPermissionService {
29 /** 29 /**
30 * 更新数据权限 30 * 更新数据权限
31 * 31 *
32 - * @param updateBO 更新信息 32 + * @param updateReqVO 更新信息
33 */ 33 */
34 - void updatePermission(@Valid CrmPermissionUpdateReqBO updateBO); 34 + void updatePermission(CrmPermissionUpdateReqVO updateReqVO);
35 35
36 /** 36 /**
37 * 删除数据权限 37 * 删除数据权限
38 * 38 *
39 - * @param id 编号 39 + * @param ids 编号
40 */ 40 */
41 - void deletePermission(Long id); 41 + void deletePermission(Collection<Long> ids);
42 42
43 /** 43 /**
44 * 获取用户数据权限通过 数据类型 x 某个数据 x 用户编号 44 * 获取用户数据权限通过 数据类型 x 某个数据 x 用户编号
@@ -51,6 +51,15 @@ public interface CrmPermissionService { @@ -51,6 +51,15 @@ public interface CrmPermissionService {
51 CrmPermissionDO getPermissionByBizTypeAndBizIdAndUserId(Integer bizType, Long bizId, Long userId); 51 CrmPermissionDO getPermissionByBizTypeAndBizIdAndUserId(Integer bizType, Long bizId, Long userId);
52 52
53 /** 53 /**
  54 + * 获取用户数据权限通过 权限编号 x 用户编号
  55 + *
  56 + * @param id 权限编号
  57 + * @param userId 用户编号
  58 + * @return 数据权限
  59 + */
  60 + CrmPermissionDO getPermissionByIdAndUserId(Long id, Long userId);
  61 +
  62 + /**
54 * 获取数据权限列表,通过 数据类型 x 某个数据 63 * 获取数据权限列表,通过 数据类型 x 某个数据
55 * 64 *
56 * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} 65 * @param bizType 数据类型,关联 {@link CrmBizTypeEnum}
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.service.permission; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.service.permission;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.util.ObjUtil; 4 import cn.hutool.core.util.ObjUtil;
  5 +import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO;
5 import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert; 6 import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert;
6 import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; 7 import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
7 import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper; 8 import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper;
@@ -9,7 +10,6 @@ import cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum; @@ -9,7 +10,6 @@ import cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum;
9 import cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum; 10 import cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum;
10 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; 11 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
11 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; 12 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
12 -import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateReqBO;  
13 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 13 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
14 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
15 import org.springframework.transaction.annotation.Transactional; 15 import org.springframework.transaction.annotation.Transactional;
@@ -53,25 +53,22 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -53,25 +53,22 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
53 53
54 @Override 54 @Override
55 @Transactional(rollbackFor = Exception.class) 55 @Transactional(rollbackFor = Exception.class)
56 - public void updatePermission(CrmPermissionUpdateReqBO updateBO) {  
57 - // 1.1 校验用户是否存在  
58 - adminUserApi.validateUserList(Collections.singletonList(updateBO.getUserId()));  
59 - // 1.2 校验存在  
60 - validateCrmPermissionExists(updateBO.getId());  
61 -  
62 - // 2. 更新操作  
63 - CrmPermissionDO updateDO = CrmPermissionConvert.INSTANCE.convert(updateBO);  
64 - crmPermissionMapper.updateById(updateDO); 56 + public void updatePermission(CrmPermissionUpdateReqVO updateReqVO) {
  57 + // 校验存在
  58 + validateCrmPermissionExists(updateReqVO.getIds());
  59 +
  60 + List<CrmPermissionDO> updateDO = CrmPermissionConvert.INSTANCE.convertList(updateReqVO);
  61 + crmPermissionMapper.updateBatch(updateDO);
65 } 62 }
66 63
67 @Override 64 @Override
68 @Transactional(rollbackFor = Exception.class) 65 @Transactional(rollbackFor = Exception.class)
69 - public void deletePermission(Long id) { 66 + public void deletePermission(Collection<Long> ids) {
70 // 校验存在 67 // 校验存在
71 - validateCrmPermissionExists(id); 68 + validateCrmPermissionExists(ids);
72 69
73 // 删除 70 // 删除
74 - crmPermissionMapper.deleteById(id); 71 + crmPermissionMapper.deleteBatchIds(ids);
75 } 72 }
76 73
77 @Override 74 @Override
@@ -80,6 +77,11 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -80,6 +77,11 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
80 } 77 }
81 78
82 @Override 79 @Override
  80 + public CrmPermissionDO getPermissionByIdAndUserId(Long id, Long userId) {
  81 + return crmPermissionMapper.selectByIdAndUserId(id, userId);
  82 + }
  83 +
  84 + @Override
83 public List<CrmPermissionDO> getPermissionByBizTypeAndBizId(Integer bizType, Long bizId) { 85 public List<CrmPermissionDO> getPermissionByBizTypeAndBizId(Integer bizType, Long bizId) {
84 return crmPermissionMapper.selectByBizTypeAndBizId(bizType, bizId); 86 return crmPermissionMapper.selectByBizTypeAndBizId(bizType, bizId);
85 } 87 }
@@ -89,13 +91,16 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -89,13 +91,16 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
89 return crmPermissionMapper.selectListByBizTypeAndBizIdsAndLevel(bizType, bizIds, level); 91 return crmPermissionMapper.selectListByBizTypeAndBizIdsAndLevel(bizType, bizIds, level);
90 } 92 }
91 93
92 - private void validateCrmPermissionExists(Long id) {  
93 - if (crmPermissionMapper.selectById(id) == null) { 94 + private void validateCrmPermissionExists(Collection<Long> ids) {
  95 + List<CrmPermissionDO> permissionList = crmPermissionMapper.selectBatchIds(ids);
  96 + // 校验存在
  97 + if (ObjUtil.notEqual(permissionList.size(), ids.size())) {
94 throw exception(CRM_PERMISSION_NOT_EXISTS); 98 throw exception(CRM_PERMISSION_NOT_EXISTS);
95 } 99 }
96 } 100 }
97 101
98 @Override 102 @Override
  103 + @Transactional(rollbackFor = Exception.class)
99 public void transferPermission(CrmPermissionTransferReqBO transferReqBO) { 104 public void transferPermission(CrmPermissionTransferReqBO transferReqBO) {
100 // 1. 校验数据权限-是否是负责人,只有负责人才可以转移 105 // 1. 校验数据权限-是否是负责人,只有负责人才可以转移
101 CrmPermissionDO oldPermission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(transferReqBO.getBizType(), 106 CrmPermissionDO oldPermission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(transferReqBO.getBizType(),
@@ -142,6 +147,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -142,6 +147,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
142 } 147 }
143 148
144 @Override 149 @Override
  150 + @Transactional(rollbackFor = Exception.class)
145 public void receiveBiz(Integer bizType, Long bizId, Long userId) { 151 public void receiveBiz(Integer bizType, Long bizId, Long userId) {
146 CrmPermissionDO permission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(bizType, bizId, CrmPermissionDO.POOL_USER_ID); 152 CrmPermissionDO permission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(bizType, bizId, CrmPermissionDO.POOL_USER_ID);
147 if (permission == null) { // 不存在则模块数据也不存在 153 if (permission == null) { // 不存在则模块数据也不存在
@@ -152,6 +158,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -152,6 +158,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
152 } 158 }
153 159
154 @Override 160 @Override
  161 + @Transactional(rollbackFor = Exception.class)
155 public void putPool(Integer bizType, Long bizId, Long userId) { 162 public void putPool(Integer bizType, Long bizId, Long userId) {
156 CrmPermissionDO permission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(bizType, bizId, userId); 163 CrmPermissionDO permission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(bizType, bizId, userId);
157 if (permission == null) { // 不存在则模块数据也不存在 164 if (permission == null) { // 不存在则模块数据也不存在