|
@@ -20,6 +20,7 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
|
@@ -36,7 +37,7 @@ import static cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnu
|
|
|
public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
|
|
|
@Resource
|
|
|
- private CrmPermissionMapper crmPermissionMapper;
|
|
|
+ private CrmPermissionMapper permissionMapper;
|
|
|
|
|
|
@Resource
|
|
|
private AdminUserApi adminUserApi;
|
|
@@ -44,50 +45,59 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Long createPermission(CrmPermissionCreateReqBO createReqBO) {
|
|
|
- // TODO @puhui999:排重
|
|
|
+ validatePermissionNotExists(Collections.singletonList(createReqBO));
|
|
|
// 1. 校验用户是否存在
|
|
|
adminUserApi.validateUserList(Collections.singletonList(createReqBO.getUserId()));
|
|
|
|
|
|
// 2. 创建
|
|
|
CrmPermissionDO permission = CrmPermissionConvert.INSTANCE.convert(createReqBO);
|
|
|
- crmPermissionMapper.insert(permission);
|
|
|
+ permissionMapper.insert(permission);
|
|
|
return permission.getId();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void createPermissionBatch(List<CrmPermissionCreateReqBO> createReqBOs) {
|
|
|
- // TODO @puhui999:排重
|
|
|
+ validatePermissionNotExists(createReqBOs);
|
|
|
// 1. 校验用户是否存在
|
|
|
adminUserApi.validateUserList(convertSet(createReqBOs, CrmPermissionCreateReqBO::getUserId));
|
|
|
|
|
|
// 2. 创建
|
|
|
List<CrmPermissionDO> permissions = CrmPermissionConvert.INSTANCE.convertList(createReqBOs);
|
|
|
- crmPermissionMapper.insertBatch(permissions);
|
|
|
+ permissionMapper.insertBatch(permissions);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void updatePermission(CrmPermissionUpdateReqVO updateReqVO) {
|
|
|
- // TODO @puhui999:排重
|
|
|
// 1. 校验存在
|
|
|
- validateCrmPermissionExists(updateReqVO.getIds());
|
|
|
+ validatePermissionExists(updateReqVO.getIds());
|
|
|
// 2. 更新
|
|
|
List<CrmPermissionDO> updateDO = CrmPermissionConvert.INSTANCE.convertList(updateReqVO);
|
|
|
- crmPermissionMapper.updateBatch(updateDO);
|
|
|
+ permissionMapper.updateBatch(updateDO);
|
|
|
}
|
|
|
|
|
|
- private void validateCrmPermissionExists(Collection<Long> ids) {
|
|
|
- List<CrmPermissionDO> permissionList = crmPermissionMapper.selectBatchIds(ids);
|
|
|
+ private void validatePermissionExists(Collection<Long> ids) {
|
|
|
+ List<CrmPermissionDO> permissionList = permissionMapper.selectBatchIds(ids);
|
|
|
if (ObjUtil.notEqual(permissionList.size(), ids.size())) {
|
|
|
throw exception(CRM_PERMISSION_NOT_EXISTS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void validatePermissionNotExists(Collection<CrmPermissionCreateReqBO> createReqBOs) {
|
|
|
+ Set<Integer> bizTypes = convertSet(createReqBOs, CrmPermissionCreateReqBO::getBizType);
|
|
|
+ Set<Long> bizIds = convertSet(createReqBOs, CrmPermissionCreateReqBO::getBizId);
|
|
|
+ Set<Long> userIds = convertSet(createReqBOs, CrmPermissionCreateReqBO::getUserId);
|
|
|
+ Long count = permissionMapper.selectListByBiz(bizTypes, bizIds, userIds);
|
|
|
+ if (count > 0) {
|
|
|
+ throw exception(CRM_PERMISSION_CREATE_FAIL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void transferPermission(CrmPermissionTransferReqBO transferReqBO) {
|
|
|
// 1. 校验数据权限:是否是负责人,只有负责人才可以转移
|
|
|
- CrmPermissionDO oldPermission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(
|
|
|
+ CrmPermissionDO oldPermission = permissionMapper.selectByBizTypeAndBizIdByUserId(
|
|
|
transferReqBO.getBizType(), transferReqBO.getBizId(), transferReqBO.getUserId());
|
|
|
String bizTypeName = CrmBizTypeEnum.getNameByType(transferReqBO.getBizType());
|
|
|
if (oldPermission == null // 不是拥有者,并且不是超管
|
|
@@ -102,25 +112,25 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
adminUserApi.validateUserList(Collections.singletonList(transferReqBO.getNewOwnerUserId()));
|
|
|
|
|
|
// 2. 修改新负责人的权限
|
|
|
- List<CrmPermissionDO> permissions = crmPermissionMapper.selectByBizTypeAndBizId(
|
|
|
+ List<CrmPermissionDO> permissions = permissionMapper.selectByBizTypeAndBizId(
|
|
|
transferReqBO.getBizType(), transferReqBO.getBizId()); // 获得所有数据权限
|
|
|
CrmPermissionDO permission = CollUtil.findOne(permissions,
|
|
|
item -> ObjUtil.equal(item.getUserId(), transferReqBO.getNewOwnerUserId()));
|
|
|
if (permission == null) {
|
|
|
- crmPermissionMapper.insert(new CrmPermissionDO().setBizType(transferReqBO.getBizType())
|
|
|
+ permissionMapper.insert(new CrmPermissionDO().setBizType(transferReqBO.getBizType())
|
|
|
.setBizId(transferReqBO.getBizId()).setUserId(transferReqBO.getNewOwnerUserId())
|
|
|
.setLevel(CrmPermissionLevelEnum.OWNER.getLevel()));
|
|
|
} else {
|
|
|
- crmPermissionMapper.updateById(new CrmPermissionDO().setId(permission.getId())
|
|
|
+ permissionMapper.updateById(new CrmPermissionDO().setId(permission.getId())
|
|
|
.setLevel(CrmPermissionLevelEnum.OWNER.getLevel()));
|
|
|
}
|
|
|
|
|
|
// 3. 修改老负责人的权限
|
|
|
if (transferReqBO.getOldOwnerPermissionLevel() != null) {
|
|
|
- crmPermissionMapper.updateById(new CrmPermissionDO().setId(oldPermission.getId())
|
|
|
+ permissionMapper.updateById(new CrmPermissionDO().setId(oldPermission.getId())
|
|
|
.setLevel(transferReqBO.getOldOwnerPermissionLevel()));
|
|
|
} else {
|
|
|
- crmPermissionMapper.deleteById(oldPermission.getId());
|
|
|
+ permissionMapper.deleteById(oldPermission.getId());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -128,19 +138,19 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void deletePermission(Integer bizType, Long bizId, Integer level) {
|
|
|
// 校验存在
|
|
|
- List<CrmPermissionDO> permissions = crmPermissionMapper.selectListByBizTypeAndBizIdAndLevel(
|
|
|
+ List<CrmPermissionDO> permissions = permissionMapper.selectListByBizTypeAndBizIdAndLevel(
|
|
|
bizType, bizId, level);
|
|
|
if (CollUtil.isEmpty(permissions)) {
|
|
|
throw exception(CRM_PERMISSION_NOT_EXISTS);
|
|
|
}
|
|
|
|
|
|
// 删除数据权限
|
|
|
- crmPermissionMapper.deleteBatchIds(convertSet(permissions, CrmPermissionDO::getId));
|
|
|
+ permissionMapper.deleteBatchIds(convertSet(permissions, CrmPermissionDO::getId));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void deletePermission(Integer bizType, Long bizId) {
|
|
|
- int deletedCount = crmPermissionMapper.deletePermission(bizType, bizId);
|
|
|
+ int deletedCount = permissionMapper.deletePermission(bizType, bizId);
|
|
|
if (deletedCount == 0) {
|
|
|
throw exception(CRM_PERMISSION_NOT_EXISTS);
|
|
|
}
|
|
@@ -148,7 +158,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
|
|
|
@Override
|
|
|
public void deletePermissionBatch(Collection<Long> ids, Long userId) {
|
|
|
- List<CrmPermissionDO> permissions = crmPermissionMapper.selectBatchIds(ids);
|
|
|
+ List<CrmPermissionDO> permissions = permissionMapper.selectBatchIds(ids);
|
|
|
if (CollUtil.isEmpty(permissions)) {
|
|
|
throw exception(CRM_PERMISSION_NOT_EXISTS);
|
|
|
}
|
|
@@ -157,19 +167,19 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
throw exception(CRM_PERMISSION_DELETE_FAIL);
|
|
|
}
|
|
|
// 校验操作人是否为负责人
|
|
|
- CrmPermissionDO permission = crmPermissionMapper.selectByIdAndUserId(permissions.get(0).getBizId(), userId);
|
|
|
+ CrmPermissionDO permission = permissionMapper.selectByIdAndUserId(permissions.get(0).getBizId(), userId);
|
|
|
if (!CrmPermissionLevelEnum.isOwner(permission.getLevel())) {
|
|
|
throw exception(CRM_PERMISSION_DELETE_DENIED);
|
|
|
}
|
|
|
|
|
|
// 删除数据权限
|
|
|
- crmPermissionMapper.deleteBatchIds(ids);
|
|
|
+ permissionMapper.deleteBatchIds(ids);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void deleteSelfPermission(Long id, Long userId) {
|
|
|
// 校验数据存在且是自己
|
|
|
- CrmPermissionDO permission = crmPermissionMapper.selectByIdAndUserId(id, userId);
|
|
|
+ CrmPermissionDO permission = permissionMapper.selectByIdAndUserId(id, userId);
|
|
|
if (permission == null) {
|
|
|
throw exception(CRM_PERMISSION_NOT_EXISTS);
|
|
|
}
|
|
@@ -179,22 +189,22 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
|
|
}
|
|
|
|
|
|
// 删除
|
|
|
- crmPermissionMapper.deleteById(id);
|
|
|
+ permissionMapper.deleteById(id);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<CrmPermissionDO> getPermissionListByBiz(Integer bizType, Long bizId) {
|
|
|
- return crmPermissionMapper.selectByBizTypeAndBizId(bizType, bizId);
|
|
|
+ return permissionMapper.selectByBizTypeAndBizId(bizType, bizId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<CrmPermissionDO> getPermissionListByBiz(Integer bizType, Collection<Long> bizIds) {
|
|
|
- return crmPermissionMapper.selectByBizTypeAndBizIds(bizType, bizIds);
|
|
|
+ return permissionMapper.selectByBizTypeAndBizIds(bizType, bizIds);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<CrmPermissionDO> getPermissionListByBizTypeAndUserId(Integer bizType, Long userId) {
|
|
|
- return crmPermissionMapper.selectListByBizTypeAndUserId(bizType, userId);
|
|
|
+ return permissionMapper.selectListByBizTypeAndUserId(bizType, userId);
|
|
|
}
|
|
|
|
|
|
}
|