Commit 4ce9271ecedf39e1f06e0213bd8bfb4c396b0c2c

Authored by min
1 parent ba4f9207

CRM:【线索】创建、删除线索时同时创建、删除数据权限

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
@@ -21,16 +21,21 @@ import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPerm @@ -21,16 +21,21 @@ import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPerm
21 import cn.iocoder.yudao.module.crm.service.clue.bo.CrmClueUpdateFollowUpReqBO; 21 import cn.iocoder.yudao.module.crm.service.clue.bo.CrmClueUpdateFollowUpReqBO;
22 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; 22 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
23 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; 23 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
  24 +import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
24 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 25 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
25 import jakarta.annotation.Resource; 26 import jakarta.annotation.Resource;
26 import org.springframework.stereotype.Service; 27 import org.springframework.stereotype.Service;
27 import org.springframework.transaction.annotation.Transactional; 28 import org.springframework.transaction.annotation.Transactional;
28 import org.springframework.validation.annotation.Validated; 29 import org.springframework.validation.annotation.Validated;
29 30
30 -import java.util.*; 31 +import java.util.Collection;
  32 +import java.util.List;
  33 +import java.util.Objects;
  34 +import java.util.Set;
31 35
32 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 36 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
33 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 37 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  38 +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
34 import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; 39 import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*;
35 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS; 40 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS;
36 41
@@ -56,15 +61,24 @@ public class CrmClueServiceImpl implements CrmClueService { @@ -56,15 +61,24 @@ public class CrmClueServiceImpl implements CrmClueService {
56 private AdminUserApi adminUserApi; 61 private AdminUserApi adminUserApi;
57 62
58 @Override 63 @Override
59 - // TODO @min:补充相关几个方法的操作日志; 64 + @Transactional(rollbackFor = Exception.class)
60 public Long createClue(CrmClueSaveReqVO createReqVO) { 65 public Long createClue(CrmClueSaveReqVO createReqVO) {
61 - // 校验关联数据 66 + // 1. 校验关联数据
62 validateRelationDataExists(createReqVO); 67 validateRelationDataExists(createReqVO);
63 68
64 - // 插入 69 + // 2. 插入
65 CrmClueDO clue = BeanUtils.toBean(createReqVO, CrmClueDO.class); 70 CrmClueDO clue = BeanUtils.toBean(createReqVO, CrmClueDO.class);
66 clueMapper.insert(clue); 71 clueMapper.insert(clue);
67 - // 返回 72 +
  73 + // 3. 创建数据权限
  74 + CrmPermissionCreateReqBO createReqBO = new CrmPermissionCreateReqBO()
  75 + .setBizType(CrmBizTypeEnum.CRM_LEADS.getType())
  76 + .setBizId(clue.getId())
  77 + // 设置当前操作的人为负责人
  78 + .setUserId(getLoginUserId())
  79 + .setLevel(CrmPermissionLevelEnum.OWNER.getLevel());
  80 + crmPermissionService.createPermission(createReqBO);
  81 +
68 return clue.getId(); 82 return clue.getId();
69 } 83 }
70 84
@@ -87,20 +101,26 @@ public class CrmClueServiceImpl implements CrmClueService { @@ -87,20 +101,26 @@ public class CrmClueServiceImpl implements CrmClueService {
87 } 101 }
88 102
89 @Override 103 @Override
  104 + @Transactional(rollbackFor = Exception.class)
90 @CrmPermission(bizType = CrmBizTypeEnum.CRM_LEADS, bizId = "#id", level = CrmPermissionLevelEnum.OWNER) 105 @CrmPermission(bizType = CrmBizTypeEnum.CRM_LEADS, bizId = "#id", level = CrmPermissionLevelEnum.OWNER)
91 public void deleteClue(Long id) { 106 public void deleteClue(Long id) {
92 - // 校验存在  
93 - validateClueExists(id);  
94 - // 删除 107 + // 1. 校验存在
  108 + CrmClueDO clue = validateClueExists(id);
  109 +
  110 + // 2. 删除
95 clueMapper.deleteById(id); 111 clueMapper.deleteById(id);
96 - // 删除数据权限 112 +
  113 + // 3. 删除数据权限
97 crmPermissionService.deletePermission(CrmBizTypeEnum.CRM_LEADS.getType(), id); 114 crmPermissionService.deletePermission(CrmBizTypeEnum.CRM_LEADS.getType(), id);
  115 +
98 } 116 }
99 117
100 - private void validateClueExists(Long id) {  
101 - if (clueMapper.selectById(id) == null) { 118 + private CrmClueDO validateClueExists(Long id) {
  119 + CrmClueDO crmClueDO = clueMapper.selectById(id);
  120 + if (crmClueDO == null) {
102 throw exception(CLUE_NOT_EXISTS); 121 throw exception(CLUE_NOT_EXISTS);
103 } 122 }
  123 + return crmClueDO;
104 } 124 }
105 125
106 @Override 126 @Override