Commit 4ce9271ecedf39e1f06e0213bd8bfb4c396b0c2c
1 parent
ba4f9207
CRM:【线索】创建、删除线索时同时创建、删除数据权限
Showing
1 changed file
with
31 additions
and
11 deletions
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 |