feat:功能权限数据清洗

yun-zuoyi
汪云昊 5 years ago
parent 2a7f0294b8
commit b87304c27f

@ -0,0 +1,22 @@
package cn.estsh.i3plus.core.api.iservice.base;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-04 11:29
* @Modify:
**/
public interface IBackstageService {
/**
*
*/
void updateCleanMenuSoftType();
/**
*
*/
void updateRefRoleMenu();
}

@ -23,9 +23,6 @@ public interface ISysMenuService extends ICrudService<SysMenu> {
@ApiOperation(value = "更新内存语言缓存",notes = "更新内存语言缓存") @ApiOperation(value = "更新内存语言缓存",notes = "更新内存语言缓存")
void refreshMemSysMenuLanguage(); void refreshMemSysMenuLanguage();
@ApiOperation(value = "刷新权限关系",notes = "刷新角色权限关系SoftType 字段")
void refreshRefSysMenuBySoftType();
@ApiOperation(value = "国际化功能权限",notes = "国际化功能权限") @ApiOperation(value = "国际化功能权限",notes = "国际化功能权限")
List<SysMenu> setLanguageSysMenuName(String languageCode, List<SysMenu> menuList); List<SysMenu> setLanguageSysMenuName(String languageCode, List<SysMenu> menuList);

@ -1,17 +1,12 @@
package cn.estsh.i3plus.core.apiservice.controller.base; package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.base.IBackstageService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.license.ImppLicense; import cn.estsh.i3plus.pojo.model.license.ImppLicense;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -20,15 +15,12 @@ import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder;
import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.*; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @Description : * @Description :
@ -54,10 +46,7 @@ public class BackstageController extends CoreBaseController {
private ICoreMemTreeService memTreeService; private ICoreMemTreeService memTreeService;
@Autowired @Autowired
private ISysRoleService sysRoleService; private IBackstageService backstageService;
@Autowired
private IPersonnelService penfindSysRefUserRole;
@GetMapping(value = "/redis-put-all") @GetMapping(value = "/redis-put-all")
@ApiOperation(value = "重新加载所有缓存数据",notes = "重新加载所有缓存数据") @ApiOperation(value = "重新加载所有缓存数据",notes = "重新加载所有缓存数据")
@ -125,51 +114,6 @@ public class BackstageController extends CoreBaseController {
} }
} }
@GetMapping(value = "/reset/menu/soft-type")
@ApiOperation(value = "重置菜单产品类型属性",notes = "重新加载授权数据")
public ResultBean restSysMenuSoftType(){
try {
List<SysMenu> menuList = menuService.findAll();
if(CollectionUtils.isNotEmpty(menuList)){
/** 设置功能权限 softType 默认值*/
Map<Long,SysMenu> menuMap = new HashMap<>();
for (SysMenu menu : menuList) {
menu.setSoftType(CommonEnumUtil.SOFT_TYPE.IMPP.getValue());
menuMap.put(menu.getId(),menu);
}
List<SysMenu> treeMenus = memTreeService.packTreeSysMenu(menuList, CommonEnumUtil.SOFT_TYPE.IMPP.getMenuRootId());
if(CollectionUtils.isNotEmpty(treeMenus)){
for (SysMenu menu : treeMenus) {
CommonEnumUtil.SOFT_TYPE softType = CommonEnumUtil.SOFT_TYPE.valueOfMenuRootId(menu.getId());
if(Objects.nonNull(softType)){
menu.setSoftType(softType.getValue());
List<Long> childMenus = memTreeService.findChildSysMenu(menu);
if(CollectionUtils.isNotEmpty(childMenus)){
for (Long key : childMenus) {
if(menuMap.containsKey(key)){
menuMap.get(key).setSoftType(softType.getValue());
}
}
}
}
}
}
menuService.saveBatch(new ArrayList<>(menuMap.values()));
}
menuService.refreshRefSysMenuBySoftType();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/reset/task-log-level") @GetMapping(value = "/reset/task-log-level")
@ApiOperation(value = "重置定时任务日志等级",notes = "重置定时任务日志等级") @ApiOperation(value = "重置定时任务日志等级",notes = "重置定时任务日志等级")
public ResultBean restTaskLogLevel(){ public ResultBean restTaskLogLevel(){
@ -205,20 +149,8 @@ public class BackstageController extends CoreBaseController {
@ApiOperation(value = "更新并清理功能软件模块数据", notes = "更新并清理功能软件模块数据") @ApiOperation(value = "更新并清理功能软件模块数据", notes = "更新并清理功能软件模块数据")
public ResultBean updateCleanMenuSoftType(){ public ResultBean updateCleanMenuSoftType(){
try { try {
SysMenu sysMenu = new SysMenu(); backstageService.updateCleanMenuSoftType();
sysMenu.setMenuType(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()); return ResultBean.success("操作成功");
List<SysMenu> list = menuService.findAllByBean(sysMenu).stream()
.filter(menu -> menu.getId() != 100000000L)
.collect(Collectors.toList());
List<SysMenu> allList = menuService.findAll();
Map<Long, List<SysMenu>> ds = allList.stream().collect(Collectors.groupingBy(SysMenu::getParentId));
packSysMenuTree(list, ds, null);
for (List<SysMenu> sysMenuList : ListUtils.partition(allList, 100)) {
new Thread(() -> menuService.saveBatch(sysMenuList)).start();
}
return ResultBean.success("操作成功").setResultList(list);
} catch (ImppBusiException busExcep) { } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
} catch (Exception e) { } catch (Exception e) {
@ -226,42 +158,11 @@ public class BackstageController extends CoreBaseController {
} }
} }
public void packSysMenuTree(List<SysMenu> sysMenuList, Map<Long, List<SysMenu>> ds,Integer softType) {
if (CollectionUtils.isEmpty(sysMenuList)) {
return;
}
for (SysMenu sysMenu : sysMenuList) {
if (softType != null) {
sysMenu.setSoftType(softType);
}
if (ds.containsKey(sysMenu.getId())) {
sysMenu.setChildList(ds.get(sysMenu.getId()));
packSysMenuTree(sysMenu.getChildList(), ds, sysMenu.getSoftType());
}
}
}
@GetMapping(value = "/update-clean-ref-role-menu") @GetMapping(value = "/update-clean-ref-role-menu")
@ApiOperation(value = "更新并清理角色功能数据", notes = "更新并清理角色功能数据") @ApiOperation(value = "更新并清理角色功能数据", notes = "更新并清理角色功能数据")
public ResultBean updateRefRoleMenu(){ public ResultBean updateRefRoleMenu(){
try { try {
List<Long> roleIdList = sysRoleService.findAll().stream().map(SysRole::getId).collect(Collectors.toList()); backstageService.updateRefRoleMenu();
Map<Long,Set<Long>> roleMenuMap = new HashMap<>();
for (SysRefRoleMenu refRoleMenu : penfindSysRefUserRole.findSysRefRoleMenuByRoleIds(roleIdList)) {
if (!roleMenuMap.containsKey(refRoleMenu.getRoleId())) {
roleMenuMap.put(refRoleMenu.getRoleId(), new HashSet<>());
}
roleMenuMap.get(refRoleMenu.getRoleId()).add(refRoleMenu.getMenuId());
}
for (Map.Entry<Long, Set<Long>> longSetEntry : roleMenuMap.entrySet()) {
sysRoleService.refreshSysRoleRef(
longSetEntry.getKey(),
longSetEntry.getValue().toArray(new Long[longSetEntry.getValue().size()]),
"清理垃圾数据"
);
}
return ResultBean.success("操作成功"); return ResultBean.success("操作成功");
} catch (ImppBusiException busExcep) { } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);

@ -57,22 +57,6 @@ public class PressureTestController extends CoreBaseController {
@Autowired @Autowired
private ITestTransService testTransService; private ITestTransService testTransService;
@GetMapping("/s-redis-put")
@ApiOperation(value = "redisPut", notes = "redisPut")
public ResultBean sredisPut(){
try {
testTransService.insertRedis();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/test-aspect") @GetMapping("/test-aspect")
@ApiOperation(value = "testAspect", notes = "testAspect") @ApiOperation(value = "testAspect", notes = "testAspect")
public ResultBean testAspect(){ public ResultBean testAspect(){
@ -99,95 +83,22 @@ public class PressureTestController extends CoreBaseController {
} }
} }
@GetMapping("/s-redis-put-test")
@ApiOperation(value = "redisPutTest", notes = "redisPutTest")
public ResultBean sredisPutTest(){
try {
testTransService.selectRedis();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/redis-put")
@ApiOperation(value = "redisPut", notes = "redisPut")
public ResultBean redisPut(){
try {
for (int i = 0; i < 1000; i++) {
imppRedis.putObject(i + "", i);
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/redis-get")
@ApiOperation(value = "redisGet", notes = "redisGet")
public ResultBean redisGet(){
try {
for (int i = 0; i < 1000; i++) {
imppRedis.getObject(i + "");
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/redis-put-test")
@ApiOperation(value = "redisPutTest", notes = "redisPutTest")
public ResultBean redisPutTest(){
try {
for (int i = 0; i < 1000; i++) {
// imppRedis.putObjectTest(i + "", i);
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/redis-put-run")
@ApiOperation(value = "redisPutThread", notes = "redisPutThread")
public ResultBean redisPutThread(Boolean isTest){
try {
RedisTest.setImppRedis(imppRedis);
RedisTest.setTest(isTest);
for (int i = 0; i < 10; i++) {
new RedisTest().run();
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
static class RedisTest implements Runnable{ static class RedisTest implements Runnable{
@Setter @Setter
public static ImppRedis imppRedis; public static ImppRedis imppRedis;
@Setter @Setter
public static boolean isTest; public static boolean isPut;
public static String STR = "";
@Override @Override
public void run() { public void run() {
for (int i = 0; i < 200; i++) { for (int i = 0; i < 10; i++) {
if(isTest) { String value = "REDIS-TEST:" + String.valueOf(Math.random() * 10000000);
imppRedis.putObject("runnable" + i, i); if (isPut) {
}else{ imppRedis.putObject(value, value);
// imppRedis.putObjectTest("runnable" + i, i); } else {
imppRedis.getObject(value);
} }
} }
} }
@ -325,4 +236,26 @@ public class PressureTestController extends CoreBaseController {
} }
} }
@GetMapping("/redis-test")
@ApiOperation(value = "查询Opc订阅", notes = "查询Opc订阅")
@AnnoIgnoreLog
public ResultBean redisRead(boolean isPut){
try {
RedisTest.setImppRedis(imppRedis);
RedisTest.setPut(isPut);
for (int i = 0; i < 10; i++) {
new Thread(new RedisTest()).start();
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
} }

@ -0,0 +1,95 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.base;
import cn.estsh.i3plus.core.api.iservice.base.IBackstageService;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-04 11:31
* @Modify:
**/
@Service
public class BackstageService implements IBackstageService {
@Autowired
private ISysMenuService menuService;
@Autowired
private ISysRoleService sysRoleService;
@Autowired
private IPersonnelService penfindSysRefUserRole;
/**
*
*/
@Override
public void updateCleanMenuSoftType() {
SysMenu sysMenu = new SysMenu();
sysMenu.setMenuType(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue());
List<SysMenu> list = menuService.findAllByBean(sysMenu).stream()
.filter(menu -> menu.getId() != 100000000L)
.collect(Collectors.toList());
List<SysMenu> allList = menuService.findAll();
Map<Long, List<SysMenu>> ds = allList.stream().collect(Collectors.groupingBy(SysMenu::getParentId));
packSysMenuTree(list, ds, null);
for (List<SysMenu> sysMenuList : ListUtils.partition(allList, 100)) {
new Thread(() -> menuService.saveBatch(sysMenuList)).start();
}
}
public void packSysMenuTree(List<SysMenu> sysMenuList, Map<Long, List<SysMenu>> ds, Integer softType) {
if (CollectionUtils.isEmpty(sysMenuList)) {
return;
}
for (SysMenu sysMenu : sysMenuList) {
if (softType != null) {
sysMenu.setSoftType(softType);
}
if (ds.containsKey(sysMenu.getId())) {
sysMenu.setChildList(ds.get(sysMenu.getId()));
packSysMenuTree(sysMenu.getChildList(), ds, sysMenu.getSoftType());
}
}
}
/**
*
*/
@Override
public void updateRefRoleMenu() {
List<Long> roleIdList = sysRoleService.findAll().stream().map(SysRole::getId).collect(Collectors.toList());
Map<Long, Set<Long>> roleMenuMap = new HashMap<>();
for (SysRefRoleMenu refRoleMenu : penfindSysRefUserRole.findSysRefRoleMenuByRoleIds(roleIdList)) {
if (!roleMenuMap.containsKey(refRoleMenu.getRoleId())) {
roleMenuMap.put(refRoleMenu.getRoleId(), new HashSet<>());
}
roleMenuMap.get(refRoleMenu.getRoleId()).add(refRoleMenu.getMenuId());
}
for (Map.Entry<Long, Set<Long>> longSetEntry : roleMenuMap.entrySet()) {
sysRoleService.refreshSysRoleRef(
longSetEntry.getKey(),
longSetEntry.getValue().toArray(new Long[longSetEntry.getValue().size()]),
"清理垃圾数据"
);
}
}
}

@ -37,7 +37,7 @@ public class SysLogUserLoginService implements ISysLogUserLoginService {
public ListPager<SysLogUserLogin> querySysLogUserLoginByPager(SysLogUserLogin sysLogUserLogin, Pager pager) { public ListPager<SysLogUserLogin> querySysLogUserLoginByPager(SysLogUserLogin sysLogUserLogin, Pager pager) {
DdlPackBean ddlPackBean = CoreHqlPack.packHqlQuerySysLogUserLogin(sysLogUserLogin); DdlPackBean ddlPackBean = CoreHqlPack.packHqlQuerySysLogUserLogin(sysLogUserLogin);
int count = sysLogUserLoginRDao.findByHqlWhereCount(ddlPackBean); int count = sysLogUserLoginRDao.findByHqlWhereCount(ddlPackBean);
PagerHelper.getPager(pager, count); pager = PagerHelper.getPager(pager, count);
return new ListPager<>(sysLogUserLoginRDao.findByHqlWherePage(ddlPackBean, pager), pager); return new ListPager<>(sysLogUserLoginRDao.findByHqlWherePage(ddlPackBean, pager), pager);
} }

@ -17,14 +17,16 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService; import cn.estsh.impp.framework.base.service.CrudService;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU; import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU;
@ -107,33 +109,6 @@ public class SysMenuService extends CrudService<SysMenu> implements ISysMenuServ
} }
@Override @Override
public void refreshRefSysMenuBySoftType() {
List<SysMenu> list = findAll();
if (CollectionUtils.isNotEmpty(list)) {
Map<Integer, List<Long>> refMap = new HashMap<>();
for (SysMenu menu : list) {
if (Objects.nonNull(menu.getSoftType())) {
List<Long> ids = refMap.get(menu.getSoftType());
if (CollectionUtils.isEmpty(ids)) {
ids = new ArrayList<>();
}
ids.add(menu.getId());
refMap.put(menu.getSoftType(), ids);
}
}
if (MapUtils.isNotEmpty(refMap)) {
DdlPackBean packBean = null;
for (Integer softType : refMap.keySet()) {
packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getInPackList(refMap.get(softType), "menuId", packBean);
refRoleMenuRDao.updateByProperties("softType", softType, packBean);
}
}
}
}
@Override
public List<SysMenu> setLanguageSysMenuName(String languageCode, List<SysMenu> menuList) { public List<SysMenu> setLanguageSysMenuName(String languageCode, List<SysMenu> menuList) {
languageCode = StringUtils.isNotBlank(languageCode) ? languageCode : CommonConstWords.DEFAULT_LANGUAGE; languageCode = StringUtils.isNotBlank(languageCode) ? languageCode : CommonConstWords.DEFAULT_LANGUAGE;
Map<String, String> localeResourceMap = MEM_CACHE_LANGAGE.get(languageCode); Map<String, String> localeResourceMap = MEM_CACHE_LANGAGE.get(languageCode);

@ -359,6 +359,17 @@ public class SysUserInfoService implements ISysUserInfoService {
return sysUserInfoRDao.findByHqlWhere(hqlPack); return sysUserInfoRDao.findByHqlWhere(hqlPack);
} }
/**
* (ID,ID,,)
*
* @param info
* @return
*/
@Override
public List<SysUserInfo> findSysUserInfoList(SysUserInfo info) {
return sysUserInfoRDao.findByHqlWhere(CoreHqlPack.packHqlSysUserInfo(info));
}
@Override @Override
public List<SysUserInfo> querySysUserInfoList(UserDetailModel model, List<Long> idList) { public List<SysUserInfo> querySysUserInfoList(UserDetailModel model, List<Long> idList) {
return null; return null;

Loading…
Cancel
Save