refactor(权限点): 增加层级校验逻辑;增加删除产品关联
This commit is contained in:
parent
4f43435c0d
commit
abf3bd7c0a
@ -2,9 +2,13 @@ package cn.axzo.tyr.server.repository.dao;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasProductModuleFeatureRelationMapper;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 产品-菜单关联关系(SaasProductModuleFeatureRelation)表服务实现类
|
||||
*
|
||||
@ -14,5 +18,12 @@ import org.springframework.stereotype.Repository;
|
||||
@Repository
|
||||
public class SaasProductModuleFeatureRelationDao extends ServiceImpl<SaasProductModuleFeatureRelationMapper, SaasProductModuleFeatureRelation> {
|
||||
|
||||
public void removeByPermissionPointIds(List<Long> permissionPointIds) {
|
||||
if (CollectionUtil.isEmpty(permissionPointIds)) {
|
||||
return;
|
||||
}
|
||||
this.remove(new LambdaQueryWrapper<SaasProductModuleFeatureRelation>()
|
||||
.in(SaasProductModuleFeatureRelation::getFeatureId, permissionPointIds));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,8 @@ import cn.axzo.tyr.client.model.permission.PermissionPointMoveRequest;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointVO;
|
||||
import cn.axzo.tyr.server.common.util.Throws;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasProductModuleFeatureRelationDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationDao;
|
||||
@ -36,6 +38,8 @@ import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.tyr.client.model.enums.FeatureType.BUTTON;
|
||||
import static cn.axzo.tyr.client.model.enums.FeatureType.MODULE;
|
||||
import static cn.axzo.tyr.server.common.constants.PermissionConstant.*;
|
||||
|
||||
/**
|
||||
@ -53,6 +57,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
private final SaasFeatureDao saasFeatureDao;
|
||||
private final SaasBasicDictService saasBasicDictService;
|
||||
private final SaasPgroupPermissionRelationDao saasPgroupPermissionRelationDao;
|
||||
private final SaasProductModuleFeatureRelationDao saasProductModuleFeatureRelationDao;
|
||||
|
||||
@Override
|
||||
public List<PermissionPointTreeNode> listTreeNodes(PermissionPointTreeQueryReq request) {
|
||||
@ -330,7 +335,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
SaasFeature saasFeature = BeanMapper.copyBean(dto, SaasFeature.class);
|
||||
saasFeature.setFitOuTypeBit(dto.mergeFitOuTypeBit());
|
||||
saasFeature.setFitOuNodeTypeBit(dto.mergeFitOuNodeTypeBit());
|
||||
SaasFeature parent;
|
||||
SaasFeature parent = null;
|
||||
if (dto.getParentId() == null || dto.getParentId() < 1) {
|
||||
saasFeature.setParentId(0L);
|
||||
saasFeature.setPath(FEATURE_TOP_PATH);
|
||||
@ -340,6 +345,8 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
saasFeature.setPath(parent.getPath() + parent.getId() + FEATURE_PATH_DELIMITER);
|
||||
saasFeature.setParentBusinessNo(parent.getBusinessNo());
|
||||
}
|
||||
FeatureType featureType = FeatureType.apply(dto.getFeatureType());
|
||||
checkParentType(featureType, parent);
|
||||
|
||||
//生成biz_no
|
||||
saasFeature.setBusinessNo(FEATURE_BIZ_NO_PREFIX + System.currentTimeMillis());
|
||||
@ -351,6 +358,34 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
return dto;
|
||||
}
|
||||
|
||||
private void checkParentType(FeatureType featureType, SaasFeature parent) {
|
||||
//检查父级元素类型
|
||||
switch (featureType) {
|
||||
case MODULE:
|
||||
if (parent != null) {
|
||||
Throws.paramException(BaseCode.BAD_REQUEST, "菜单必须为顶级");
|
||||
}
|
||||
break;
|
||||
case MENU:
|
||||
//MENU PAGE相同逻辑
|
||||
case PAGE:
|
||||
if (parent == null
|
||||
|| FeatureType.apply(parent.getFeatureType()) == BUTTON) {
|
||||
Throws.paramException(BaseCode.BAD_REQUEST, "页面层级错误");
|
||||
}
|
||||
break;
|
||||
case BUTTON:
|
||||
if (parent == null
|
||||
|| FeatureType.apply(parent.getFeatureType()) == MODULE
|
||||
|| FeatureType.apply(parent.getFeatureType()) == BUTTON) {
|
||||
Throws.paramException(BaseCode.BAD_REQUEST, "按钮层级错误");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Throws.paramException(BaseCode.BAD_REQUEST, "不支持的元素类型");
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Throwable.class)
|
||||
@Override
|
||||
public List<String> delete(Long permissionPointId) {
|
||||
@ -360,7 +395,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
//删除自己
|
||||
this.saasFeatureDao.removeById(permissionPointId);
|
||||
delIds.add(feature.getId());
|
||||
if (feature.getFeatureType().equals(FeatureType.BUTTON.getCode())) {
|
||||
if (feature.getFeatureType().equals(BUTTON.getCode())) {
|
||||
//bizNo返回用于删除路由
|
||||
bizNoList.add(feature.getBusinessNo());
|
||||
}
|
||||
@ -371,12 +406,14 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
this.saasFeatureDao.removeByIds(childrenIds);
|
||||
delIds.addAll(childrenIds);
|
||||
List<String> buttonBizNoList = children.stream()
|
||||
.filter(x -> x.getFeatureType().equals(FeatureType.BUTTON.getCode()))
|
||||
.filter(x -> x.getFeatureType().equals(BUTTON.getCode()))
|
||||
.map(SaasFeature::getBusinessNo)
|
||||
.collect(Collectors.toList());
|
||||
bizNoList.addAll(buttonBizNoList);
|
||||
}
|
||||
//删除关联数据
|
||||
this.saasPgroupPermissionRelationDao.removeByPermissionPointIds(delIds);
|
||||
this.saasProductModuleFeatureRelationDao.removeByPermissionPointIds(delIds);
|
||||
return bizNoList;
|
||||
}
|
||||
|
||||
@ -458,6 +495,9 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
throw new BizException(BaseCode.BAD_REQUEST, "不允许移到子级");
|
||||
}
|
||||
}
|
||||
//检查元素类型层级
|
||||
FeatureType featureType = FeatureType.apply(feature.getFeatureType());
|
||||
checkParentType(featureType, parent);
|
||||
|
||||
//当前节点更新
|
||||
SaasFeature entity = new SaasFeature();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user