use of io.nerv.web.sys.module.entity.ModuleResources in project EVA-API by PKAQ-LAB.
the class ModuleService method editModule.
/**
* 新增/编辑一条模块信息
* @param module 要 新增/编辑 得模块对象
* @return 重新查询模块列表
*/
public void editModule(ModuleEntity module) {
String moduleId = module.getId();
ModuleEntity originModule = this.getById(moduleId);
// 获取上级节点
String pid = module.getParentId();
if (StrUtil.isNotBlank(moduleId)) {
// 是否启用的逻辑
if (StrUtil.isNotBlank(module.getStatus()) && LockEnumm.UNLOCK.getIndex().equals(module.getStatus())) {
if (!isDisable(module)) {
// 如果父节点状态为禁用,则子节点状态也只能为禁用
throw new BizException(BizCodeEnum.PARENT_NOT_AVAILABLE);
}
}
// 是否禁用的逻辑
disableChild(module);
} else {
// 新增设置orders为同级模块中最大的orders+1
module.setIsleaf(true);
module.setOrders(this.mapper.listOrder(pid) + 1);
}
String root = "0";
// 当前编辑节点为子节点
if (!root.equals(pid) && StrUtil.isNotBlank(pid)) {
// 查询新父节点信息
ModuleEntity parentModule = this.getModule(pid);
// 设置当前节点信息
module.setPathId(StrUtil.isNotBlank(parentModule.getPathId()) ? parentModule.getPathId() + "," + parentModule.getId() : parentModule.getId());
// pathName
String pathName = StrUtil.format("{}/{}", parentModule.getName(), module.getName());
String oldFatherPath = null;
if (moduleId != null && originModule != null && StrUtil.isNotBlank(originModule.getParentId())) {
// 得到原来父节点的path路径
ModuleEntity oldParent = this.mapper.selectById(originModule.getParentId());
oldFatherPath = oldParent != null ? oldParent.getPath() : null;
}
module.setPath(TreeHelper.assemblePath(parentModule.getPath(), module.getPath(), oldFatherPath));
module.setPathName(pathName);
module.setParentName(parentModule.getName());
}
// 如果更换了父节点 重新确定原父节点的 leaf属性,以及所修改节点的orders属性
if (null != originModule && this.parentChanged(originModule.getParentId(), pid)) {
// 更新原节点
// 检查原父节点是否还存在子节点 来重新确定原始父节点得isleaf属性
// 由于数据还未提交 节点仍然挂载在原始节点上 所以这里要 -1
int originParentChilds = this.mapper.countPrantLeaf(originModule.getParentId()) - 1;
if (originParentChilds < 1) {
ModuleEntity originParentModule = new ModuleEntity();
originParentModule.setIsleaf(true);
originParentModule.setId(originModule.getParentId());
this.mapper.updateById(originParentModule);
}
// 更新新节点 isleaf属性
int newParentChilds = this.mapper.countPrantLeaf(pid);
ModuleEntity newParentModule = new ModuleEntity();
newParentModule.setIsleaf(false);
newParentModule.setId(pid);
this.mapper.updateById(newParentModule);
// 重新设置节点顺序
module.setOrders(newParentChilds + 1);
}
// 持久化
if (StrUtil.isBlank(moduleId)) {
moduleId = IdWorker.getIdStr();
module.setId(moduleId);
this.mapper.insert(module);
} else {
this.mapper.updateById(module);
}
/**
* 写入资源信息, 先删除
* 有id 更新
* 无id 新增
*/
List<ModuleResources> resources = module.getResources();
if (CollUtil.isNotEmpty(resources)) {
List<String> ids = new ArrayList<>(resources.size());
for (ModuleResources item : resources) {
if (StrUtil.isNotBlank(item.getId())) {
this.moduleResourceMapper.updateById(item);
} else {
item.setId(IdWorker.getIdStr());
item.setModuleId(moduleId);
this.moduleResourceMapper.insert(item);
}
ids.add(item.getId());
}
// 移除被删除的
if (StrUtil.isNotBlank(moduleId)) {
QueryWrapper<ModuleResources> deleteWrapper = new QueryWrapper();
deleteWrapper.notIn("id", ids);
deleteWrapper.eq("module_id", moduleId);
try {
this.moduleResourceMapper.delete(deleteWrapper);
} catch (Exception e) {
throw new BizException(BizCodeEnum.RESOURCE_USED);
}
}
}
// 刷新所有子节点的 path parent_name path_name 当修改状态的时候不用刷新子节点信息
if (StrUtil.isNotBlank(module.getId()) && null != originModule) {
this.refreshChild(module, originModule);
}
}
use of io.nerv.web.sys.module.entity.ModuleResources in project EVA-API by PKAQ-LAB.
the class ModuleService method getModule.
/**
* 根据ID获取一条模块信息
* @param id 模块ID
* @return 模块信息
*/
public ModuleEntity getModule(String id) {
ModuleEntity module = this.getById(id);
// 获取资源信息
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("module_id", id);
List<ModuleResources> resourceList = this.moduleResourceMapper.selectList(queryWrapper);
module.setResources(resourceList);
return module;
}
use of io.nerv.web.sys.module.entity.ModuleResources in project EVA-API by PKAQ-LAB.
the class ModuleService method deleteModule.
/**
* 根据ID批量删除
* @param ids
* @return
*/
public void deleteModule(ArrayList<String> ids) {
// 检查是否存在子节点,存在子节点不允许删除
QueryWrapper<ModuleEntity> oew = new QueryWrapper<>();
oew.setEntity(new ModuleEntity());
oew.in("parent_ID", ids);
List<ModuleEntity> leafList = this.mapper.selectList(oew);
if (CollectionUtil.isNotEmpty(leafList)) {
// 获取存在子节点的节点名称
List<Object> list = CollectionUtil.getFieldValues(leafList, "parentName");
// 拼接名称
String name = CollectionUtil.join(list, ",");
throw new BizException(BizCodeEnum.CHILD_EXIST.getIndex(), StrUtil.format(BizCodeEnum.CHILD_EXIST.getName(), name));
} else {
try {
// 删除相关资源
QueryWrapper<ModuleResources> deleteWrapper = new QueryWrapper<>();
deleteWrapper.in("module_id", ids);
this.moduleResourceMapper.delete(deleteWrapper);
// 删除模块
this.mapper.deleteBatchIds(ids);
} catch (Exception e) {
throw new BizException(BizCodeEnum.MODULE_RESOURCE_USED);
}
}
}
Aggregations