大屏配置

This commit is contained in:
pengjie 2024-12-21 15:43:05 +08:00
parent e3c376f4ee
commit 242d0b4c7d
8 changed files with 724 additions and 0 deletions

View File

@ -0,0 +1,233 @@
package com.zhgd.xmgl.modules.basicdata.controller;
import com.zhgd.annotation.OperLog;
import com.zhgd.xmgl.modules.basicdata.entity.dto.ScreenAuthDto;
import com.zhgd.xmgl.modules.basicdata.entity.vo.ScreenAuthVo;
import com.zhgd.xmgl.util.PageUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.jeecg.common.util.oConvertUtils;
import com.zhgd.xmgl.modules.basicdata.entity.ScreenAuth;
import com.zhgd.xmgl.modules.basicdata.service.IScreenAuthService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import springfox.documentation.annotations.ApiIgnore;
/**
* @Title: Controller
* @Description: 大屏权限配置
* @author pengj
* @date 2024-12-18
* @version V1.0
*/
@RestController
@RequestMapping("/xmgl/screenAuth")
@Slf4j
@Api(tags = "大屏权限配置管理")
public class ScreenAuthController {
@Autowired
private IScreenAuthService screenAuthService;
/**
* 分页列表查询
*
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "分页查询", operDesc = "分页列表查询大屏权限配置信息")
@ApiOperation(value = " 分页列表查询大屏权限配置信息", notes = "分页列表查询大屏权限配置信息", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "页数", paramType = "body", required = true, defaultValue = "1", dataType = "Integer"),
@ApiImplicitParam(name = "size", value = "每页条数", paramType = "body", required = true, defaultValue = "10", dataType = "Integer")
})
@PostMapping(value = "/page")
public Result<IPage<ScreenAuth>> queryPageList(@ApiIgnore @RequestBody Map<String, Object> map) {
QueryWrapper<ScreenAuth> queryWrapper = QueryGenerator.initPageQueryWrapper(ScreenAuth.class, map);
Page<ScreenAuth> page = PageUtil.getPage(map);
IPage<ScreenAuth> pageList = screenAuthService.page(page, queryWrapper);
return Result.success(pageList);
}
/**
* 列表查询
*
* @param screenAuth
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "列表查询", operDesc = "列表查询大屏权限配置信息")
@ApiOperation(value = " 列表查询大屏权限配置信息", notes = "列表查询大屏权限配置信息", httpMethod = "POST")
@PostMapping(value = "/list")
public Result<List<ScreenAuth>> queryList(@RequestBody ScreenAuth screenAuth) {
QueryWrapper<ScreenAuth> queryWrapper = QueryGenerator.initQueryWrapper(screenAuth);
List<ScreenAuth> list = screenAuthService.list(queryWrapper);
return Result.success(list);
}
@OperLog(operModul = "大屏权限配置管理", operType = "列表查询", operDesc = "管理员查询模块菜单树")
@ApiOperation(value = " 管理员查询模块菜单树", notes = "管理员查询模块菜单树", httpMethod = "GET")
@GetMapping(value = "/moduleAndMenuTree")
public Result<List<ScreenAuthDto>> moduleAndMenuTree() {
List<ScreenAuthDto> list = screenAuthService.moduleAndMenuTree();
return Result.success(list);
}
/**
* 列表查询
*
* @param screenAuth
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "列表查询", operDesc = "树形查询大屏权限配置信息")
@ApiOperation(value = " 树形查询大屏权限配置信息", notes = "树形查询大屏权限配置信息", httpMethod = "POST")
@PostMapping(value = "/tree")
public Result<List<ScreenAuthDto>> treeList(@RequestBody ScreenAuth screenAuth) {
QueryWrapper<ScreenAuth> queryWrapper = QueryGenerator.initQueryWrapper(screenAuth);
queryWrapper.lambda().orderByAsc(ScreenAuth::getSortIndex);
List<ScreenAuthDto> list = screenAuthService.treeList(queryWrapper);
return Result.success(list);
}
// /**
// * 添加
// *
// * @param screenAuthVo
// * @return
// */
// @OperLog(operModul = "大屏权限配置管理", operType = "新增", operDesc = "模版添加大屏权限配置信息")
// @ApiOperation(value = "模版添加大屏权限配置信息", notes = "模版添加大屏权限配置信息", httpMethod = "POST")
// @PostMapping(value = "/templateAdd")
// public Result<Object> templateAdd(@RequestBody ScreenAuthVo screenAuthVo) {
// screenAuthService.saveInfo(screenAuthVo, 0L);
// return Result.success("添加成功!");
// }
/**
* 添加
*
* @param screenAuthVo
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "新增", operDesc = "添加大屏权限配置信息")
@ApiOperation(value = " 添加大屏权限配置信息", notes = "添加大屏权限配置信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<Object> add(@RequestBody ScreenAuthVo screenAuthVo) {
screenAuthService.saveInfo(screenAuthVo);
return Result.success("添加成功!");
}
/**
* 编辑
*
* @param screenAuth
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "修改", operDesc = "编辑大屏权限配置信息")
@ApiOperation(value = "编辑大屏权限配置信息", notes = "编辑大屏权限配置信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<ScreenAuth> edit(@RequestBody ScreenAuth screenAuth) {
Result<ScreenAuth> result = new Result<ScreenAuth>();
ScreenAuth screenAuthEntity = screenAuthService.getById(screenAuth.getId());
if (screenAuthEntity == null) {
result.error500("未找到对应实体");
} else {
boolean ok = screenAuthService.updateById(screenAuth);
if (ok) {
result.success("修改成功!");
} else {
result.success("操作失败!");
}
}
return result;
}
/**
* 通过id删除
*
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "删除", operDesc = "删除大屏权限配置信息")
@ApiOperation(value = "删除大屏权限配置信息", notes = "删除大屏权限配置信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "大屏权限配置ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/delete")
public Result<ScreenAuth> delete(@ApiIgnore @RequestBody ScreenAuth screenAuth) {
Result<ScreenAuth> result = new Result<ScreenAuth>();
ScreenAuth screenAuthEntity = screenAuthService.getById(screenAuth.getId());
if (screenAuthEntity == null) {
result.error500("未找到对应实体");
} else {
boolean ok = screenAuthService.delInfo(screenAuth.getId().toString());
if (ok) {
result.success("删除成功!");
} else {
result.success("操作失败!");
}
}
return result;
}
/**
* 通过id查询
*
* @return
*/
@OperLog(operModul = "大屏权限配置管理", operType = "查询", operDesc = "通过id查询大屏权限配置信息")
@ApiOperation(value = "通过id查询大屏权限配置信息", notes = "通过id查询大屏权限配置信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "大屏权限配置ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/queryById")
public Result<ScreenAuth> queryById(@ApiIgnore @RequestBody ScreenAuth screenAuthVo) {
Result<ScreenAuth> result = new Result<ScreenAuth>();
ScreenAuth screenAuth = screenAuthService.getById(screenAuthVo.getId());
if (screenAuth == null) {
result.error500("未找到对应实体");
} else {
result.setResult(screenAuth);
result.setSuccess(true);
}
return result;
}
/**
* 查询
*
*/
@OperLog(operModul = "大屏权限配置管理", operType = "新增", operDesc = "获取当前账号大屏权限配置信息")
@ApiOperation(value = "获取当前账号大屏权限配置信息", notes = "获取当前账号大屏权限配置信息", httpMethod = "GET")
@GetMapping(value = "/getModuleAndMenu")
public Result<Object> getModuleAndMenu() {
return Result.success(screenAuthService.getModuleAndMenu());
}
}

View File

@ -0,0 +1,89 @@
package com.zhgd.xmgl.modules.basicdata.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @Description: 大屏权限配置
* @author pengj
* @date 2024-12-18
* @version V1.0
*/
@Data
@TableName("screen_auth")
@ApiModel(value = "ScreenAuth实体类", description = "ScreenAuth")
public class ScreenAuth implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 大屏权限ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "大屏权限ID")
private Long id;
/**
* 祖级列表
*/
@Excel(name = "祖级列表", width = 15)
@ApiModelProperty(value = "祖级列表")
private String ancestors;
/**
* 权限ID
*/
@Excel(name = "权限ID", width = 15)
@ApiModelProperty(value = "权限ID")
private Long authId;
/**
* 模块名称
*/
@Excel(name = "模块名称", width = 15)
@ApiModelProperty(value = "模块名称")
private String name;
/**
* 路由路径
*/
@Excel(name = "路由路径", width = 15)
@ApiModelProperty(value = "路由路径")
private String routePath;
/**
* 下标排序
*/
@Excel(name = "下标排序", width = 15)
@ApiModelProperty(value = "下标排序")
private Integer sortIndex;
/**
* 父级ID
*/
@Excel(name = "父级ID", width = 15)
@ApiModelProperty(value = "父级ID")
private Long parentId;
/**
* 权限归属类型(1企业;2项目3企业子账号4项目角色)
*/
@Excel(name = "权限归属类型(1企业;2项目3企业子账号4项目角色)", width = 15)
@ApiModelProperty(value = "权限归属类型(1企业;2项目3企业子账号4项目角色)")
private Integer authType;
/**
* 对应唯一标识
*/
@Excel(name = "对应唯一标识", width = 15)
@ApiModelProperty(value = "对应唯一标识")
private String uniqueFlag;
/**
* 权限类型(1模版菜单;2自定义菜单)
*/
@Excel(name = "权限类型(1模版菜单;2自定义菜单)", width = 15)
@ApiModelProperty(value = "权限类型(1模版菜单;2自定义菜单)")
private Integer type;
}

View File

@ -0,0 +1,52 @@
package com.zhgd.xmgl.modules.basicdata.entity.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zhgd.xmgl.modules.basicdata.entity.ScreenAuth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.util.List;
@Data
public class ScreenAuthDto {
@ApiModelProperty(value = "大屏权限ID")
private Long id;
@ApiModelProperty(value = "权限ID")
private Long authId;
@ApiModelProperty(value = "祖级列表")
private String ancestors;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "路由路径")
private String routePath;
@ApiModelProperty(value = "下标排序")
private String sortIndex;
@ApiModelProperty(value = "父级ID")
private Long parentId;
@ApiModelProperty(value = "权限归属类型(1企业;2项目3企业子账号4项目角色)")
private Integer authType;
@ApiModelProperty(value = "对应唯一标识")
private String uniqueFlag;
@ApiModelProperty(value = "权限类型(1模版菜单;2自定义菜单)")
private Integer type;
@ApiModelProperty(value = "子级菜单")
private List<ScreenAuthDto> children;
}

View File

@ -0,0 +1,20 @@
package com.zhgd.xmgl.modules.basicdata.entity.vo;
import com.zhgd.xmgl.modules.basicdata.entity.dto.ScreenAuthDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class ScreenAuthVo {
@ApiModelProperty(value = "权限归属类型(1企业;2项目3企业子账号4项目角色)")
private Integer authType;
@ApiModelProperty(value = "对应唯一标识")
private String uniqueFlag;
@ApiModelProperty(value = "菜单信息")
List<ScreenAuthDto> screenAuth;
}

View File

@ -0,0 +1,23 @@
package com.zhgd.xmgl.modules.basicdata.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.zhgd.xmgl.modules.basicdata.entity.dto.ScreenAuthDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.zhgd.xmgl.modules.basicdata.entity.ScreenAuth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 大屏权限配置
* @author pengj
* @date 2024-12-18
* @version V1.0
*/
@Mapper
public interface ScreenAuthMapper extends BaseMapper<ScreenAuth> {
List<ScreenAuthDto> list(@Param(Constants.WRAPPER)Wrapper<ScreenAuth> wrapper);
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.basicdata.mapper.ScreenAuthMapper">
<select id="list" resultType="com.zhgd.xmgl.modules.basicdata.entity.dto.ScreenAuthDto">
select * from screen_auth
${ew.customSqlSegment}
</select>
</mapper>

View File

@ -0,0 +1,28 @@
package com.zhgd.xmgl.modules.basicdata.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.zhgd.xmgl.modules.basicdata.entity.ScreenAuth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.basicdata.entity.dto.ScreenAuthDto;
import com.zhgd.xmgl.modules.basicdata.entity.vo.ScreenAuthVo;
import java.util.List;
/**
* @Description: 大屏权限配置
* @author pengj
* @date 2024-12-18
* @version V1.0
*/
public interface IScreenAuthService extends IService<ScreenAuth> {
List<ScreenAuthDto> moduleAndMenuTree();
List<ScreenAuthDto> treeList(Wrapper<ScreenAuth> wrapper);
boolean saveInfo(ScreenAuthVo screenAuthVo);
boolean delInfo(String id);
List<ScreenAuthDto> getModuleAndMenu();
}

View File

@ -0,0 +1,270 @@
package com.zhgd.xmgl.modules.basicdata.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sun.glass.ui.Screen;
import com.zhgd.xmgl.modules.basicdata.entity.*;
import com.zhgd.xmgl.modules.basicdata.entity.dto.ScreenAuthDto;
import com.zhgd.xmgl.modules.basicdata.entity.vo.ScreenAuthVo;
import com.zhgd.xmgl.modules.basicdata.mapper.ScreenAuthMapper;
import com.zhgd.xmgl.modules.basicdata.service.*;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo;
import com.zhgd.xmgl.modules.project.service.IProjectService;
import com.zhgd.xmgl.security.entity.UserInfo;
import com.zhgd.xmgl.security.util.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @Description: 大屏权限配置
* @author pengj
* @date 2024-12-18
* @version V1.0
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ScreenAuthServiceImpl extends ServiceImpl<ScreenAuthMapper, ScreenAuth> implements IScreenAuthService {
@Autowired
private IBaseModuleService baseModuleService;
@Autowired
private IBaseMenuService baseMenuService;
@Autowired
private IProjectService projectService;
@Autowired
private ICompanyService companyService;
@Autowired
private IBaseRoleService baseRoleService;
@Autowired
private ISystemUserService systemUserService;
@Autowired
private IBaseRoleUserService baseRoleUserService;
@Override
public List<ScreenAuthDto> moduleAndMenuTree() {
List<BaseModule> baseModuleList = baseModuleService.list(Wrappers.<BaseModule>lambdaQuery().eq(BaseModule::getModuleType, 8));
List<ScreenAuthDto> resultList = moduleToScreen(baseModuleList);
if (baseModuleList.size() > 0) {
List<BaseMenu> baseMenuList = baseMenuService.list(Wrappers.<BaseMenu>lambdaQuery().eq(BaseMenu::getStatus, 1)
.in(BaseMenu::getModuleId, baseModuleList.stream().map(b -> b.getModuleId()).collect(Collectors.toList())));
for (ScreenAuthDto screenAuthDto : resultList) {
List<BaseMenu> menuList = baseMenuList.stream().filter(b -> b.getModuleId().toString().equals(screenAuthDto.getId().toString())).collect(Collectors.toList());
screenAuthDto.setChildren(menuToScreen(menuList));
}
}
return resultList;
}
@Override
public List<ScreenAuthDto> treeList(Wrapper<ScreenAuth> wrapper) {
List<ScreenAuthDto> allList = baseMapper.list(wrapper);
List<ScreenAuthDto> delList = new ArrayList<>();
Set<Long> authIds = new HashSet<>();
for (ScreenAuthDto screenAuthDto : allList) {
boolean add = authIds.add(screenAuthDto.getAuthId());
if (!add) {
delList.add(screenAuthDto);
}
}
allList.removeAll(delList);
List<ScreenAuthDto> treeList = new ArrayList<>();
if (allList.size() > 0) {
treeList.addAll(allList.stream().filter(a -> a.getParentId().toString().equals("0")).collect(Collectors.toList()));
}
getChildren(allList, treeList);
return treeList;
}
@Override
public boolean saveInfo(ScreenAuthVo screenAuthVo) {
return saveOrUpdate(screenAuthVo.getScreenAuth(), screenAuthVo.getAuthType(), screenAuthVo.getUniqueFlag());
}
@Override
public boolean delInfo(String id) {
this.remove(Wrappers.<ScreenAuth>lambdaQuery().eq(ScreenAuth::getParentId, id));
return this.removeById(id);
}
@Override
public List<ScreenAuthDto> getModuleAndMenu() {
UserInfo user = SecurityUtils.getUser();
SystemUser systemUser = systemUserService.getById(user.getUserId());
List<String> roleIds = baseRoleUserService.list(Wrappers.<BaseRoleUser>lambdaQuery().eq(BaseRoleUser::getUserId, systemUser.getUserId()))
.stream().map(u -> u.getRoleId().toString()).collect(Collectors.toList());
Project project = projectService.getOne(Wrappers.<Project>lambdaQuery().eq(Project::getProjectSn, systemUser.getSn()));
Company company = new Company();
if (project != null) {
company = companyService.getOne(Wrappers.<Company>lambdaQuery().eq(Company::getCompanySn, project.getCompanySn()));
} else {
company = companyService.getOne(Wrappers.<Company>lambdaQuery().eq(Company::getCompanySn, systemUser.getSn()));
}
LambdaQueryWrapper<ScreenAuth> wrapper = Wrappers.<ScreenAuth>lambdaQuery();
if (systemUser.getAccountType() == 2) {
wrapper.eq(ScreenAuth::getUniqueFlag, company.getHeadquartersSn()).eq(ScreenAuth::getAuthType, 1);
} else if (systemUser.getAccountType() == 7 || systemUser.getAccountType() == 4 || systemUser.getAccountType() == 3) {
wrapper.eq(ScreenAuth::getUniqueFlag, systemUser.getUserId()).eq(ScreenAuth::getAuthType, 3);
} else if (systemUser.getAccountType() == 5 || systemUser.getAccountType() == 10) {
wrapper.eq(ScreenAuth::getUniqueFlag, project.getProjectSn()).eq(ScreenAuth::getAuthType, 2);
} else if (systemUser.getAccountType() == 6) {
wrapper.in(ScreenAuth::getUniqueFlag, roleIds).eq(ScreenAuth::getAuthType, 4);
}
wrapper.orderByAsc(ScreenAuth::getSortIndex);
return treeList(wrapper);
}
private boolean saveOrUpdate(List<ScreenAuthDto> screenAuthDtoList, Integer authType, String uniqueFlag) {
String ancestors = getAncestors(authType, uniqueFlag);
List<ScreenAuth> uniqueList = this.list(Wrappers.<ScreenAuth>lambdaQuery().eq(ScreenAuth::getAuthType, authType)
.eq(ScreenAuth::getUniqueFlag, uniqueFlag));
List<ScreenAuth> updateId = new ArrayList<>();
List<ScreenAuth> delId = new ArrayList<>();
List<ScreenAuth> allId = new ArrayList<>();
getList(screenAuthDtoList, 0L, ancestors, updateId, allId, uniqueList);
for (ScreenAuth screenAuth : uniqueList) {
List<String> stringList = allId.stream().map(s -> s.getId().toString()).collect(Collectors.toList());
if (!stringList.contains(screenAuth.getId().toString())) {
delId.add(screenAuth);
}
}
if (delId.size() > 0) {
this.removeByIds(delId.stream().map(d -> d.getId()).collect(Collectors.toList()));
}
List<ScreenAuth> childrenList = new ArrayList<>();
if (authType == 1) {
// 调整企业角色项目项目人员的权限
childrenList = this.list(Wrappers.<ScreenAuth>lambdaQuery().gt(ScreenAuth::getAuthType, 1).apply("find_in_set({0}, ancestors)", ancestors));
}
if (authType == 2) {
// 调整项目的权限
childrenList = this.list(Wrappers.<ScreenAuth>lambdaQuery().eq(ScreenAuth::getAuthType, 4).apply("find_in_set({0}, ancestors)", ancestors));
}
List<Long> childrenIdList = childrenList.stream().map(c -> c.getId()).collect(Collectors.toList());
// 删除
if (delId.size() > 0 && childrenIdList.size() > 0) {
this.remove(Wrappers.<ScreenAuth>lambdaQuery().in(ScreenAuth::getAuthId, delId.stream().map(d -> d.getAuthId()).collect(Collectors.toList()))
.in(ScreenAuth::getId, childrenIdList));
}
// 修改
if (childrenList.size() > 0) {
long count = childrenList.stream().filter(c -> c.getAuthType() == 2 && c.getType() == 2).count();
if (count > 0) {
return true;
}
List<ScreenAuth> updateList = new ArrayList<>();
for (ScreenAuth screenAuth : updateId) {
List<ScreenAuth> childrenList1 = childrenList.stream().filter(c -> c.getType() == 1 && c.getAuthId().toString().equals(screenAuth.getAuthId()))
.collect(Collectors.toList());
for (ScreenAuth auth : childrenList1) {
auth.setAuthId(screenAuth.getAuthId());
auth.setName(screenAuth.getName());
auth.setRoutePath(screenAuth.getRoutePath());
auth.setSortIndex(screenAuth.getSortIndex());
updateList.add(auth);
}
}
this.updateBatchById(updateList);
}
return true;
}
private void getList(List<ScreenAuthDto> screenAuthDtoList, Long parentId, String ancestors, List<ScreenAuth> updateId, List<ScreenAuth> allId, List<ScreenAuth> uniqueList) {
for (ScreenAuthDto screenAuthDto : screenAuthDtoList) {
List<ScreenAuth> collect = uniqueList.stream().filter(u -> u.getUniqueFlag().equals(screenAuthDto.getUniqueFlag()) &&
u.getAuthId().toString().equals(screenAuthDto.getAuthId().toString()) && u.getAuthType() == screenAuthDto.getAuthType()
&& u.getType() == screenAuthDto.getType()).collect(Collectors.toList());
if (collect.size() > 0) {
screenAuthDto.setId(collect.get(0).getId());
} else {
screenAuthDto.setId(null);
}
ScreenAuth screenAuth = new ScreenAuth();
BeanUtils.copyProperties(screenAuthDto, screenAuth);
screenAuth.setParentId(parentId);
screenAuth.setAncestors(ancestors);
if (screenAuth.getId() != null) {
updateId.add(screenAuth);
allId.add(screenAuth);
}
this.saveOrUpdate(screenAuth);
if (screenAuthDto.getChildren() != null && screenAuthDto.getChildren().size() > 0) {
getList(screenAuthDto.getChildren(), screenAuth.getId(), ancestors, updateId, allId, uniqueList);
}
}
}
private String getAncestors(Integer authType, String uniqueFlag) {
if (authType == 1 || authType == 3) {
return uniqueFlag;
} else if (authType == 2) {
Project project = projectService.getOne(Wrappers.<Project>lambdaQuery().eq(Project::getProjectSn, uniqueFlag));
Company company = companyService.getOne(Wrappers.<Company>lambdaQuery().eq(Company::getCompanySn, project.getCompanySn()));
return company.getHeadquartersSn() + "," + uniqueFlag;
} else {
BaseRole baseRole = baseRoleService.getById(uniqueFlag);
Project project = projectService.getOne(Wrappers.<Project>lambdaQuery().eq(Project::getProjectSn, baseRole.getProjectSn()));
Company company = companyService.getOne(Wrappers.<Company>lambdaQuery().eq(Company::getCompanySn, project.getCompanySn()));
return company.getHeadquartersSn() + "," + project.getProjectSn() + "," + uniqueFlag;
}
}
private void getChildren(List<ScreenAuthDto> allList, List<ScreenAuthDto> treeList) {
for (ScreenAuthDto screenAuthDto : treeList) {
List<ScreenAuthDto> childrenList = allList.stream().filter(a -> a.getParentId().toString().equals(screenAuthDto.getId().toString()))
.collect(Collectors.toList());
if (childrenList.size() > 0) {
getChildren(allList, childrenList);
}
screenAuthDto.setChildren(childrenList);
}
}
private List<ScreenAuthDto> moduleToScreen(List<BaseModule> moduleList) {
List<ScreenAuthDto> screenAuthList = new ArrayList<>();
for (BaseModule baseModule : moduleList) {
ScreenAuthDto screenAuthDto = new ScreenAuthDto();
screenAuthDto.setId(baseModule.getModuleId());
screenAuthDto.setAuthId(baseModule.getModuleId());
screenAuthDto.setName(baseModule.getModuleName());
screenAuthDto.setRoutePath(baseModule.getModulePath());
screenAuthDto.setSortIndex(baseModule.getSortIndex());
screenAuthDto.setParentId(0L);
screenAuthList.add(screenAuthDto);
}
return screenAuthList;
}
private List<ScreenAuthDto> menuToScreen(List<BaseMenu> menuList) {
List<ScreenAuthDto> screenAuthList = new ArrayList<>();
for (BaseMenu baseMenu : menuList) {
ScreenAuthDto screenAuthDto = new ScreenAuthDto();
screenAuthDto.setId(baseMenu.getMenuId());
screenAuthDto.setAuthId(baseMenu.getMenuId());
screenAuthDto.setName(baseMenu.getMenuName());
screenAuthDto.setRoutePath(baseMenu.getPath());
screenAuthDto.setSortIndex(baseMenu.getPriority().toString());
screenAuthDto.setParentId(baseMenu.getModuleId());
screenAuthList.add(screenAuthDto);
}
return screenAuthList;
}
}