From d526d032737002e15841d191f7389b1ba4305690 Mon Sep 17 00:00:00 2001 From: yanyujia <3406185119@qq.com> Date: Fri, 13 Jan 2023 16:30:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BC=98=E5=8C=96=EF=BC=9A?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E5=92=8C=E6=93=8D=E4=BD=9C=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/ISysLogRoleMenuChangeService.java | 23 ++++ .../core/api/iservice/busi/ISysRoleService.java | 9 ++ .../core/api/iservice/busi/ISysUserService.java | 2 +- .../controller/busi/SysRoleController.java | 60 +++++++++- .../controller/busi/SysUserController.java | 18 +-- .../serviceimpl/busi/PersonnelServiceService.java | 68 ++++++++++- .../busi/SysLogRoleMenuChangeService.java | 38 +++++++ .../serviceimpl/busi/SysRoleService.java | 125 ++++++++++++++++++++- .../serviceimpl/busi/SysUserService.java | 7 +- 9 files changed, 330 insertions(+), 20 deletions(-) create mode 100644 modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleMenuChangeService.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleMenuChangeService.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleMenuChangeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleMenuChangeService.java new file mode 100644 index 0000000..063ea30 --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleMenuChangeService.java @@ -0,0 +1,23 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleMenuChange; + +import java.util.List; + +/** + * @Description : 角色权限变更日志 + * @Reference : + * @Author : yujia + * @CreateDate : 2022-12-12 15:34 + * @Modify: + **/ +public interface ISysLogRoleMenuChangeService { + + /** + * 查询指定时间范围内的日志信息 + * @param startDatetime + * @param endDatetime + * @return + */ + List findLogsBetweenDatetime(String startDatetime, String endDatetime); +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java index b73d72b..b8bdedd 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java @@ -97,4 +97,13 @@ public interface ISysRoleService extends ICrudService { */ @ApiOperation(value = "新增用户角色变更日志通过描述") SysLogRoleOperate insertSysLogRoleOperate(SysRole sysRole, String statusDecription); + + /** + * sysLogRoleMenuChange 新增角色菜单权限变更日志 + * + * @param sysLogRoleMenuChange + * @return + */ + @ApiOperation(value = "新增角色菜单权限变更日志") + SysLogRoleMenuChange insertSysLogRoleMenuChange(SysLogRoleMenuChange sysLogRoleMenuChange); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 9aec445..2f49d22 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -493,5 +493,5 @@ public interface ISysUserService { * @return */ @ApiOperation(value = "获取批量长时间未登录账号信息", notes = "查询用户信息-批量根据登录名称查询") - List findUserNotLoginLongTime(String startDate, String endDate); + List findUserNotLoginLongTime(String startDate); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java index 9f2e01d..64bdae8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleMenuChangeService; import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleOperateService; import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -81,6 +82,9 @@ public class SysRoleController extends CrudBaseController { private ISysLogRoleOperateService sysLogRoleOperateService; @Autowired + private ISysLogRoleMenuChangeService sysLogRoleMenuChangeService; + + @Autowired private EntityManager entityManager; @Resource(name = CommonConstWords.IMPP_REDIS_RES) @@ -605,7 +609,61 @@ public class SysRoleController extends CrudBaseController { i = bis.read(buffer); } } catch (Exception e) { - LOGGER.error("用户长时间未登录日志导出异常", e); + LOGGER.error("角色操作变更日志导出异常", e); + } + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(list); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } finally { + if (file != null) { + FileUtils.deleteQuietly(file); + } + } + } + + @PostMapping(value = "/export/role-menu-change") + @ApiOperation(value = "导出角色权限变更日志", notes = "导出角色权限变更日志") + public ResultBean exportroleMenuChange(@RequestBody ExportDataModel model, HttpServletResponse response) { + File file = null; + + try { + ValidatorBean.checkNotNull("ColName", model.getExportCol()); + ValidatorBean.checkNotNull("startDate", model.getStartDate()); + ValidatorBean.checkNotNull("endDate", model.getEndDate()); + + final String ZERO_TIME = " 00:00:00"; + final String LAST_TIME = " 23:59:59"; + StringBuilder startTime = new StringBuilder(model.getStartDate()).append(ZERO_TIME); + StringBuilder endTime = new StringBuilder(model.getEndDate()).append(LAST_TIME); + + LinkedHashMap exportColMap = JSON.parseObject(model.getExportCol(), LinkedHashMap.class); + List list = sysLogRoleMenuChangeService.findLogsBetweenDatetime(startTime.toString(), endTime.toString()); + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "role-menu-change" + System.currentTimeMillis() + ".xls"; + file = new File(fileName); + file.createNewFile(); + excelTool.exportData(file, list, SysLogRoleMenuChange.class + , exportColMap); + + response.setContentType("application/force-download"); // 设置强制下载不打开 + response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名 + response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true))); + + // 设置文件名 + try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(file)))) { + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[1024]; + int i = bis.read(buffer); + while (i != -1) { + os.write(buffer, 0, i); + i = bis.read(buffer); + } + } catch (Exception e) { + LOGGER.error("角色权限变更日志导出异常", e); } return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 8c984c8..33dbee3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -51,6 +51,7 @@ import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; +import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -452,24 +453,23 @@ public class SysUserController extends CoreBaseController { try { ValidatorBean.checkNotNull("ColName", model.getExportCol()); ValidatorBean.checkNotNull("startDate", model.getStartDate()); - ValidatorBean.checkNotNull("endDate", model.getEndDate()); final String ZERO_TIME = " 00:00:00"; final String LAST_TIME = " 23:59:59"; StringBuilder startTime = new StringBuilder(model.getStartDate()).append(ZERO_TIME); - StringBuilder endTime = new StringBuilder(model.getEndDate()).append(LAST_TIME); LinkedHashMap exportColMap = JSON.parseObject(model.getExportCol(), LinkedHashMap.class); - List list = sysUserService.findUserNotLoginLongTime(startTime.toString(), endTime.toString()); + List list = sysUserService.findUserNotLoginLongTime(startTime.toString()); ExcelTool excelTool = new ExcelTool(entityManager, redisRes); - String fileName = "user-not-login-long-time" + System.currentTimeMillis() + ".xls"; + String fileName = "长时间未登录账号日志" + TimeTool.getDateTime() + ".xls"; file = new File(fileName); file.createNewFile(); excelTool.exportData(file, list, SysUser.class , exportColMap); response.setContentType("application/force-download"); // 设置强制下载不打开 - response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名 + response.setCharacterEncoding("UTF-8"); + response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); // 设置文件名 response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true))); // 设置文件名 @@ -511,14 +511,15 @@ public class SysUserController extends CoreBaseController { List sysUserList = sysUserService.findSysUserStatusRdd(list); ExcelTool excelTool = new ExcelTool(entityManager, redisRes); - String fileName = "all-account-number" + System.currentTimeMillis() + ".xls"; + String fileName = "所有账号信息" + TimeTool.getDateTime() + ".xls"; file = new File(fileName); file.createNewFile(); excelTool.exportData(file, sysUserList, SysUser.class , exportColMap); response.setContentType("applicatioref-menun/force-download"); // 设置强制下载不打开 - response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名 + response.setCharacterEncoding("UTF-8"); + response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); // 设置文件名 response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true))); // 设置文件名 @@ -827,7 +828,8 @@ public class SysUserController extends CoreBaseController { int numMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_RESET_PASSWORD, CommonConstWords.CONFIG_PWD_RESET_PASSWORD_DEFAULT); num = numMax - num; - userPasswordService.updatePasswordResetLastModifyTime(user.getId(), password, true); + //手动重置修改用户密码--true校验,false不校验(现设置为不校验) + userPasswordService.updatePasswordResetLastModifyTime(user.getId(), password, false); //手动重置密码是否需要用户首次登录修改密码 sysUserService.updateUserLoginNumByHeadResetPwd(user.getId(), 0); //密码管理员手动重置密码之后清空修改次数,重新计算 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 8a6be3c..378656e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -1018,6 +1018,8 @@ public class PersonnelServiceService implements IPersonnelService { SysUser user = userRDao.getById(userId); String previousRole = ""; String currentRole = ""; + String addRole = ""; + String delRole = ""; if (user != null) { // 根据IDS 查询所有的角色信息 List list = roleService.findByIdList(Arrays.asList(roleIds)); @@ -1048,6 +1050,13 @@ public class PersonnelServiceService implements IPersonnelService { } List roleRdds = refUserRoles.stream().map(SysRefUserRole::getRoleNameRdd).collect(Collectors.toList()); currentRole = StringUtils.join(roleRdds, ","); + + List addaListThanbList = getAddaListThanbList(roleRdds, rolesRdds); + List reduceaListThanbList = getReduceaListThanbList(roleRdds, rolesRdds); + addRole = StringUtils.join(addaListThanbList, ","); + delRole = StringUtils.join(reduceaListThanbList, ","); + StringBuilder changeDetail = new StringBuilder(); + changeDetail.append("新增:" + addRole + "\n" + "删除:" + delRole); SysLogRoleChange logRoleChange = new SysLogRoleChange(); logRoleChange.setUserName(user.getUserName()); logRoleChange.setUserId(userId); @@ -1055,8 +1064,12 @@ public class PersonnelServiceService implements IPersonnelService { logRoleChange.setCurrentRoles(currentRole); logRoleChange.setUserLoginName(user.getUserLoginName()); logRoleChange.setDepartmentNameRdd(user.getDepartmentNameRdd()); + logRoleChange.setChangeDetail(changeDetail.toString()); ConvertBean.serviceModelInitialize(logRoleChange, AuthUtil.getSessionUser().getUserName()); - logRoleChangeRepository.save(logRoleChange); + //当修改前和修改后的角色相同时不记录 + if (!previousRole.equals(currentRole)) { + logRoleChangeRepository.save(logRoleChange); + } refUserRoleRDao.saveAll(refUserRoles); userRDao.save(user); @@ -1064,6 +1077,59 @@ public class PersonnelServiceService implements IPersonnelService { } } + /** + * @param aList 本列表 + * @param bList 对照列表 + * @return 返回增加的元素组成的列表 + * @Description: 计算列表aList相对于bList的增加的情况,兼容任何类型元素的列表数据结构 + */ + private List getAddaListThanbList(List aList, List bList) { + List addList = new ArrayList(); + for (int i = 0; i < aList.size(); i++) { + if (!myListContains(bList, aList.get(i))) { + addList.add(aList.get(i)); + } + } + return addList; + } + + /** + * @param aList 本列表 + * @param bList 对照列表 + * @return 返回减少的元素组成的列表 + * @Description: 计算列表aList相对于bList的减少的情况,兼容任何类型元素的列表数据结构 + */ + private List getReduceaListThanbList(List aList, List bList) { + List reduceaList = new ArrayList(); + for (int i = 0; i < bList.size(); i++) { + if (!myListContains(aList, bList.get(i))) { + reduceaList.add(bList.get(i)); + } + } + return reduceaList; + } + + /** + * @param sourceList 源列表 + * @param element 待判断的包含元素 + * @return 包含返回 true,不包含返回 false + * @Description: 判断元素element是否是sourceList列表中的一个子元素 + */ + private boolean myListContains(List sourceList, E element) { + if (sourceList == null || element == null) { + return false; + } + if (sourceList.isEmpty()) { + return false; + } + for (E tip : sourceList) { + if (element.equals(tip)) { + return true; + } + } + return false; + } + @Override public void refreshUpdateRefSysUserInfoDepartment(Long userInfoId, Long[] departmentIds) { LOGGER.info("用户部门关系信息 SysUser userInfoId:{} departmentIds:{}", userInfoId, departmentIds); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleMenuChangeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleMenuChangeService.java new file mode 100644 index 0000000..6ed69e4 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleMenuChangeService.java @@ -0,0 +1,38 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleMenuChangeService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleMenuChange; +import cn.estsh.i3plus.pojo.platform.repository.SysLogRoleMenuChangeRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : + * @CreateDate : 2022-12-12 15:38 + * @Modify: + **/ +@Service +public class SysLogRoleMenuChangeService implements ISysLogRoleMenuChangeService { + + @Autowired + private SysLogRoleMenuChangeRepository sysLogRoleMenuChangeRepository; + + /** + * 根据时间区间查询角色权限变更日志 + * @param startDatetime + * @param endDatetime + * @return + */ + @Override + public List findLogsBetweenDatetime(String startDatetime, String endDatetime) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.timeBuilder(startDatetime, endDatetime, "createDatetime", true, true, packBean); + return sysLogRoleMenuChangeRepository.findByHqlWhere(packBean); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java index bb6115e..05048c0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java @@ -17,10 +17,7 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.platform.bean.*; -import cn.estsh.i3plus.pojo.platform.repository.SysLogRoleOperateRepository; -import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository; -import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository; -import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository; +import cn.estsh.i3plus.pojo.platform.repository.*; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.i3plus.pojo.wms.bean.WmsPart; import cn.estsh.impp.framework.base.service.CrudService; @@ -85,6 +82,9 @@ public class SysRoleService extends CrudService implements ISysRoleServ @Autowired private SysLogRoleOperateRepository sysLogRoleOperateRDao; + @Autowired + private SysLogRoleMenuChangeRepository sysLogRoleMenuChangeRDao; + @Override public BaseRepository getRepository() { return roleRDao; @@ -193,7 +193,8 @@ public class SysRoleService extends CrudService implements ISysRoleServ SysMenu menu = new SysMenu(); menu.setSoftType(softType); List menuList = menuService.findAllByBean(menu); - + //查询修改前角色对应的菜单 + List menus = refRoleMenuRDao.findByProperty(new String[]{"roleId", "softType"}, new Object[]{roleId, softType}); refRoleMenuRDao.deleteByProperties(new String[]{"roleId", "softType"}, new Object[]{roleId, softType}); if (CollectionUtils.isNotEmpty(idList)) { List refs = new ArrayList<>(); @@ -221,6 +222,43 @@ public class SysRoleService extends CrudService implements ISysRoleServ if (CollectionUtils.isNotEmpty(refs)) { refRoleMenuRDao.saveAll(refs); + //记录角色权限变更日志 + String newAuthority = ""; + String delAuthority = ""; + ArrayList menuIds = new ArrayList<>(); + menus.stream().forEach(m -> { + menuIds.add(m.getMenuId()); + }); + List newAuthorityList = getAddaListThanbList(idList,menuIds); + List delAuthorityList = getReduceaListThanbList(idList,menuIds); + if (newAuthorityList != null) { + for (Long id : newAuthorityList) { + String menuTreeName = ""; + List newAuthoritys = new ArrayList<>(); + getParentName(id, newAuthoritys); + if (newAuthoritys.get(0).length()>0) { + menuTreeName = newAuthoritys.get(0).substring(1); + } + newAuthority += menuTreeName + "\n"; + } + } + if (delAuthorityList != null) { + for (Long id : delAuthorityList) { + List delAuthoritys = new ArrayList<>(); + String menuTreeName = ""; + getParentName(id,delAuthoritys); + if (delAuthoritys.get(0).length()>0) { + menuTreeName = delAuthoritys.get(0).substring(1); + } + delAuthority += menuTreeName + "\n"; + } + } + SysLogRoleMenuChange sysLogRoleMenuChange = new SysLogRoleMenuChange(); + sysLogRoleMenuChange.setRoleId(roleId); + sysLogRoleMenuChange.setRoleName(role.getName()); + sysLogRoleMenuChange.setNewAuthority(newAuthority); + sysLogRoleMenuChange.setDelAuthority(delAuthority); + insertSysLogRoleMenuChange(sysLogRoleMenuChange); //更新角色 ConvertBean.serviceModelUpdate(role,AuthUtil.getSessionUser().getUserName()); roleRDao.update(role); @@ -228,6 +266,74 @@ public class SysRoleService extends CrudService implements ISysRoleServ } } + //递归获取菜单结点 + private void getParentName(Long id, List menuTreeName) { + SysMenu sysMenu = menuService.get(id); + String menuNames = ""; + if(menuNames != null && menuTreeName.size()>0){ + menuNames = menuTreeName.get(0); + } + //如果这个获取到的menu不是父节点 + if(!StringUtil.isEmpty(sysMenu) && sysMenu.getParentId() != CommonEnumUtil.PARENT.DEFAULT.getValue()){ + menuNames = "-"+sysMenu.getName() + menuNames; + menuTreeName.add(0,menuNames); + getParentName(sysMenu.getParentId(), menuTreeName); + } + } + + /** + * @param aList 本列表 + * @param bList 对照列表 + * @return 返回增加的元素组成的列表 + * @Description: 计算列表aList相对于bList的增加的情况,兼容任何类型元素的列表数据结构 + */ + private List getAddaListThanbList(List aList, List bList) { + List addList = new ArrayList(); + for (int i = 0; i < aList.size(); i++) { + if (!myListContains(bList, aList.get(i))) { + addList.add(aList.get(i)); + } + } + return addList; + } + + /** + * @param aList 本列表 + * @param bList 对照列表 + * @return 返回减少的元素组成的列表 + * @Description: 计算列表aList相对于bList的减少的情况,兼容任何类型元素的列表数据结构 + */ + private List getReduceaListThanbList(List aList, List bList) { + List reduceaList = new ArrayList(); + for (int i = 0; i < bList.size(); i++) { + if (!myListContains(aList, bList.get(i))) { + reduceaList.add(bList.get(i)); + } + } + return reduceaList; + } + + /** + * @param sourceList 源列表 + * @param element 待判断的包含元素 + * @return 包含返回 true,不包含返回 false + * @Description: 判断元素element是否是sourceList列表中的一个子元素 + */ + private boolean myListContains(List sourceList, E element) { + if (sourceList == null || element == null) { + return false; + } + if (sourceList.isEmpty()) { + return false; + } + for (E tip : sourceList) { + if (element.equals(tip)) { + return true; + } + } + return false; + } + @Override @ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系") public List findSysRefRoleMenuByRoleId(Long roleId) { @@ -350,6 +456,15 @@ public class SysRoleService extends CrudService implements ISysRoleServ return null; } + @Override + public SysLogRoleMenuChange insertSysLogRoleMenuChange(SysLogRoleMenuChange sysLogRoleMenuChange) { + if (StringUtil.isEmpty(sysLogRoleMenuChange)) { + return null; + } + LOGGER.debug("平台角色菜单权限变更操作记录 SysLogRoleOperate sysLogRoleOperate:{}", sysLogRoleMenuChange); + return sysLogRoleMenuChangeRDao.insert(sysLogRoleMenuChange); + } + // @Override // public void packAfterRefreshCache() { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 80384ae..eb9e7c0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -1229,11 +1229,10 @@ public class SysUserService implements ISysUserService { } @Override - public List findUserNotLoginLongTime(String startDate, String endDate) { + public List findUserNotLoginLongTime(String startDate) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(CommonEnumUtil.USER_STATUS.DISABLE.getValue(),"userStatus",ddlPackBean); - DdlPreparedPack.getNumEqualPack(CommonEnumUtil.LOCK_TYPE.NOT_LOGIN_A_LONG_TIME.getValue(),"lockType",ddlPackBean); - DdlPreparedPack.timeBuilder(startDate, endDate, "modifyDatetime", true, true, ddlPackBean); + DdlPreparedPack.timeBuilder(null, startDate, "userLoginLastDateTime", ddlPackBean, false); + DdlPreparedPack.getOrderByPack(new String[]{"1"}, new String[]{"userLoginLastDateTime"}, ddlPackBean); List userNotLoginLongTimeList = userRDao.findByHqlWhere(ddlPackBean); return userNotLoginLongTimeList; }