From 0beaca750a6c297f60c30a1a90bdba4b26df65d0 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Mon, 21 Jun 2021 14:51:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E6=B4=A5it=E5=AE=A1=E6=A0=B8=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iservice/busi/ISysLogRoleChangeService.java | 17 ++ .../api/iservice/busi/ISysPojoVersionService.java | 4 + .../core/api/iservice/busi/ISysRoleService.java | 17 +- .../core/api/iservice/busi/ISysUserService.java | 23 +++ .../busi/SysLogRoleChangeController.java | 117 ++++++++++++++ .../controller/busi/SysLogUserLoginController.java | 75 ++++++++- .../controller/busi/SysPojoVersionController.java | 71 ++++++++- .../controller/busi/SysRoleController.java | 171 +++++++++++++++------ .../controller/busi/SysUserController.java | 56 +++++++ .../serviceimpl/busi/SysLogRoleChangeService.java | 33 ++++ .../serviceimpl/busi/SysPojoVersionService.java | 27 +++- .../serviceimpl/busi/SysRoleService.java | 20 ++- .../serviceimpl/busi/SysUserService.java | 23 +++ 13 files changed, 592 insertions(+), 62 deletions(-) create mode 100644 modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleChangeService.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogRoleChangeController.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleChangeService.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleChangeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleChangeService.java new file mode 100644 index 0000000..6230765 --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogRoleChangeService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleChange; + +import java.util.List; + +/** + * @Description : 用户登录日志 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-08-31 11:47 + * @Modify: + **/ +public interface ISysLogRoleChangeService { + + List findLogsBetweenDatetime(String startDatetime, String endDatetime); +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionService.java index 2c1824b..1502a0f 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionService.java @@ -3,6 +3,8 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; import cn.estsh.impp.framework.base.service.ICrudService; +import java.util.List; + /** * @Description : * @Reference : @@ -14,4 +16,6 @@ public interface ISysPojoVersionService extends ICrudService { SysPojoVersion getPojoVersion(SysPojoVersion bean); + List findPojoVersionByUserBetweenTime(String userName, String startDate, String endDate); + } 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 a3d034a..af5caf2 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 @@ -31,19 +31,22 @@ public interface ISysRoleService extends ICrudService { void refreshSysRoleRef(Long roleId,Integer softType,List idList,String userName); - @ApiOperation(value = "查信角色菜单关系",notes = "查询 ID 查询角色菜单关系") + @ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系") List findSysRefRoleMenuByRoleId(Long roleId); - @ApiOperation(value = "查信角色菜单关系",notes = "查询 ID 查询角色菜单关系") - List findSysRefRoleMenuByRoleId(Long roleId,Integer softType); + @ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系") + List findSysRefRoleMenuByRoleId(Long roleId, Integer softType); - @ApiOperation(value = "查信角色信息",notes = "根据ID + 角色状态查询角色信息") - List findSysRoleByInIdAndStatus(Long[] ids,Integer status); + @ApiOperation(value = "查信角色信息", notes = "根据ID + 角色状态查询角色信息") + List findSysRoleByInIdAndStatus(Long[] ids, Integer status); - @ApiOperation(value = "查信用户的所有角色信息",notes = "查信用户的所有角色信息") + @ApiOperation(value = "查有效的角色信息", notes = "根据ID + 查有效的角色信息") + List findValidSysRole(); + + @ApiOperation(value = "查信用户的所有角色信息", notes = "查信用户的所有角色信息") List findSysRoleByUser(SysUser user); - @ApiOperation(value = "查信角色信息",notes = "查询角色信息(分页/组合)") + @ApiOperation(value = "查信角色信息", notes = "查询角色信息(分页/组合)") ListPager querySysRole(SysRole role, List idList, Pager pager); /*** 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 fd221f5..2230688 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 @@ -105,6 +105,26 @@ public interface ISysUserService { SysLogUserLogin insertSysLogUserLogin(SysLogUserLogin sysLogUserLogin); /** + * 查询用户登录日志 + * + * @param startTime 开始日期 + * @param endTime 结束日期 + * @return + */ + @ApiOperation(value = "查询用户登录日志") + List queryUserMonthlyLoginLog(String startTime, String endTime); + + /** + * 查询用户登录失败日志 + * + * @param startTime 开始日期 + * @param endTime 结束日期 + * @return + */ + @ApiOperation(value = "查询用户登录失败日志") + List queryUserMonthlyFailedLoginLog(String startTime, String endTime); + + /** * 刷新账号角色关系 * * @param sysUser @@ -317,4 +337,7 @@ public interface ISysUserService { */ @ApiOperation(value = "根据用户名查询密码是否正确") SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password); + + @ApiOperation(value = "查询有效的用户与角色关系") + List findValidUserRoleRef(); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogRoleChangeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogRoleChangeController.java new file mode 100644 index 0000000..3c2fa07 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogRoleChangeController.java @@ -0,0 +1,117 @@ +package cn.estsh.i3plus.core.apiservice.controller.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleChangeService; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; +import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleChange; +import cn.estsh.impp.framework.base.controller.CoreBaseController; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.LinkedHashMap; +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-08-31 11:45 + * @Modify: + **/ +@RestController +@Api(tags = "用户登录日志") +@RequestMapping(PlatformConstWords.BASE_URL + "/sys-log-role-change") +public class SysLogRoleChangeController extends CoreBaseController { + + private static final Logger LOGGER = LoggerFactory.getLogger(SysLogRoleChangeController.class); + + @Autowired + private ISysLogRoleChangeService logRoleChangeService; + + @Autowired + private EntityManager entityManager; + + @Resource(name = CommonConstWords.IMPP_REDIS_RES) + private ImppRedis redisRes; + + @GetMapping(value = "/export/user-role-change") + @ApiOperation(value = "导出用户角色变更记录") + public ResultBean exportUserRoleChangedLog(HttpServletResponse response, String startDate, String endDate) { + try { + final String ZERO_TIME = " 00:00:00"; + // 获取当月第一天和最后一天 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String firstDay, nextMonthFirstDay; + // 获取前月的第一天 + Calendar cale = Calendar.getInstance(); + cale.setTime(format.parse(startDate)); + cale.add(Calendar.MONTH, 0); + cale.set(Calendar.DAY_OF_MONTH, 1); + firstDay = format.format(cale.getTime()); + // 获取前月的最后一天 + cale = Calendar.getInstance(); + cale.setTime(format.parse(endDate)); + cale.add(Calendar.MONTH, 1); + cale.set(Calendar.DAY_OF_MONTH, 1); + nextMonthFirstDay = format.format(cale.getTime()); + + firstDay += ZERO_TIME; + nextMonthFirstDay += ZERO_TIME; + + List logRoleChanges = logRoleChangeService.findLogsBetweenDatetime(firstDay, nextMonthFirstDay); + + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "user-role-changed-" + System.currentTimeMillis() + ".xls"; + File file = new File(fileName); + file.createNewFile(); + File excel = excelTool.exportData(file, logRoleChanges, SysLogRoleChange.class + , (LinkedHashMap) ExcelTool.getColName(SysLogRoleChange.class)); + + 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(excel)))) { + 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().setResultList(logRoleChanges); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogUserLoginController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogUserLoginController.java index 9a017b3..0a9cd7c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogUserLoginController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogUserLoginController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysLogUserLoginService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.tool.ExcelTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; @@ -18,6 +19,8 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -26,7 +29,13 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.servlet.http.HttpServletResponse; -import java.io.*; +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.LinkedHashMap; import java.util.List; @@ -42,13 +51,18 @@ import java.util.List; @RequestMapping(PlatformConstWords.BASE_URL + "/sys-log-user-login") public class SysLogUserLoginController extends CoreBaseController { + private static final Logger LOGGER = LoggerFactory.getLogger(SysLogUserLoginController.class); + + @Autowired + private ISysUserService userService; + @Autowired private ISysLogUserLoginService sysLogUserLoginService; @Autowired private EntityManager entityManager; - @Resource(name= CommonConstWords.IMPP_REDIS_RES) + @Resource(name = CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; @GetMapping("/query") @@ -98,4 +112,61 @@ public class SysLogUserLoginController extends CoreBaseController { } } + @GetMapping(value = "/export/month/user-fail-login") + @ApiOperation(value = "根据语言代码查询资源") + public ResultBean exportMonthlyUserFailLoginReport(HttpServletResponse response, String date) { + try { + final String ZERO_TIME = " 00:00:00"; + // 获取当月第一天和最后一天 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String firstDay, nextMonthFirstDay; + // 获取前月的第一天 + Calendar cale = Calendar.getInstance(); + cale.setTime(format.parse(date)); + cale.add(Calendar.MONTH, 0); + cale.set(Calendar.DAY_OF_MONTH, 1); + firstDay = format.format(cale.getTime()); + // 获取前月的最后一天 + cale = Calendar.getInstance(); + cale.setTime(format.parse(date)); + cale.add(Calendar.MONTH, 1); + cale.set(Calendar.DAY_OF_MONTH, 1); + nextMonthFirstDay = format.format(cale.getTime()); + + firstDay += ZERO_TIME; + nextMonthFirstDay += ZERO_TIME; + + List sysLogUserLogins = userService.queryUserMonthlyFailedLoginLog(firstDay, nextMonthFirstDay); + + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "user-login-log-" + System.currentTimeMillis() + ".xls"; + File file = new File(fileName); + file.createNewFile(); + File excel = excelTool.exportData(file, sysLogUserLogins, SysLogUserLogin.class + , (LinkedHashMap) ExcelTool.getColName(SysLogUserLogin.class)); + + 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(excel)))) { + 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().setResultList(sysLogUserLogins); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java index 63e70ad..c3f07fb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java @@ -1,7 +1,10 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.common.CloudPagerModel; @@ -10,15 +13,30 @@ import cn.estsh.impp.framework.base.controller.CrudBaseController; import cn.estsh.impp.framework.base.service.ICrudService; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; +import java.util.LinkedHashMap; +import java.util.List; + /** * @Description : * @Reference : @@ -28,11 +46,19 @@ import org.springframework.web.bind.annotation.RestController; **/ @RestController @Api(tags = "对象历史记录") -@RequestMapping(CommonConstWords.BASE_URL_CORE+"/pojo-version") +@RequestMapping(CommonConstWords.BASE_URL_CORE + "/pojo-version") public class SysPojoVersionController extends CrudBaseController { + private static final Logger LOGGER = LoggerFactory.getLogger(SysPojoVersionController.class); + @Autowired private ISysPojoVersionService pojoVersionService; + @Autowired + private EntityManager entityManager; + + @Resource(name = CommonConstWords.IMPP_REDIS_RES) + private ImppRedis redisRes; + @Override public ICrudService getCrudService() { return pojoVersionService; @@ -40,7 +66,7 @@ public class SysPojoVersionController extends CrudBaseController @PostMapping("/cloud-query") @ApiOperation(value = "查询数据", notes = "复杂查询,分页,排序") - BaseResultBean queryPojoVersionByPagerCloud(@RequestBody CloudPagerModel model){ + BaseResultBean queryPojoVersionByPagerCloud(@RequestBody CloudPagerModel model) { try { SysPojoVersion bean = packQueryPager(model.getObj()); @@ -53,4 +79,45 @@ public class SysPojoVersionController extends CrudBaseController return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + @GetMapping("/export-user-operation") + @ApiOperation(value = "导出用户操作数据", notes = "导出用户操作数据") + BaseResultBean exportUserOperation(HttpServletResponse response, String userName, String startDate, String endDate) { + try { + final String ZERO_TIME = " 00:00:00"; + startDate += ZERO_TIME; + endDate += ZERO_TIME; + + List pojoVersions = pojoVersionService.findPojoVersionByUserBetweenTime(userName, startDate, endDate); + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "user-operation-" + System.currentTimeMillis() + ".xls"; + + File file = new File(fileName); + file.createNewFile(); + File excel = excelTool.exportData(file, pojoVersions, SysPojoVersion.class + , (LinkedHashMap) ExcelTool.getColName(SysPojoVersion.class)); + + 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(excel)))) { + 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().setResultList(pojoVersions); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } 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 6b0c08d..ca8378b 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 @@ -4,8 +4,12 @@ import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -18,17 +22,35 @@ import cn.estsh.impp.framework.base.service.ICrudService; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.stream.Collectors; /** * @Description : 系统角色对外接口 @@ -50,6 +72,12 @@ public class SysRoleController extends CrudBaseController { @Autowired private IPersonnelService personnelService; + @Autowired + private EntityManager entityManager; + + @Resource(name = CommonConstWords.IMPP_REDIS_RES) + private ImppRedis redisRes; + @Override public ICrudService getCrudService() { return sysRoleService; @@ -89,7 +117,7 @@ public class SysRoleController extends CrudBaseController { @ApiOperation(value = "查询角色", notes = "查询用户所拥有的角色信息") public ResultBean findSysRoleByUser() { try { - if(!AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ + if (!AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) { List result = personnelService.findSysRoleByUserId(getSessionUser().getUser().getId()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultList(result); @@ -99,13 +127,14 @@ public class SysRoleController extends CrudBaseController { .setResultList(sysRoleService.findAll()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - } catch (Exception e) { + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 查询所有角色 + * * @param ids 角色id数组 * @return 处理结果 */ @@ -117,13 +146,14 @@ public class SysRoleController extends CrudBaseController { return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - } catch (Exception e) { + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 查询角色的所有角色权限关系 + * * @param roleId 角色id * @return 处理结果 */ @@ -144,17 +174,64 @@ public class SysRoleController extends CrudBaseController { } } + @GetMapping(value = "/export/ref-role-menu") + @ApiOperation(value = "导出角色菜单关系", notes = "导出角色菜单关系") + public ResultBean exportRoleMenu(HttpServletResponse response) { + try { + List roleIds = sysRoleService.findValidSysRole().stream().map(BaseBean::getId).collect(Collectors.toList()); + List list = new ArrayList<>(); + for (Long roleId : roleIds) { + list.addAll(sysRoleService.findSysRefRoleMenuByRoleId(roleId)); + } + + if (CollectionUtils.isEmpty(list)) { + return ResultBean.success("系统中不存在角色与菜单的关系。"); + } + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "role-menu-ref-" + System.currentTimeMillis() + ".xls"; + File file = new File(fileName); + file.createNewFile(); + File excel = excelTool.exportData(file, list, SysRefRoleMenu.class + , (LinkedHashMap) ExcelTool.getColName(SysRefRoleMenu.class)); + + 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(excel)))) { + 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()) + .setResultList(list); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @Override - @GetMapping(value="/query") - @ApiOperation(value="查询角色",notes="组合查询角色,外带分页功能") + @GetMapping(value = "/query") + @ApiOperation(value = "查询角色", notes = "组合查询角色,外带分页功能") public ResultBean queryPager(SysRole bean, Pager pager) { - try{ + try { ListPager result = null; - if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ - result = sysRoleService.findPager(bean,pager); - }else { + if (AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) { + result = sysRoleService.findPager(bean, pager); + } else { List refList = personnelService.findSysRefUserRole(getSessionUser().getUser().getId()); - if(refList != null && refList.size() > 0){ + if (refList != null && refList.size() > 0) { List idList = new ArrayList<>(refList.size()); refList.forEach(ref -> idList.add(ref.getRoleId())); @@ -162,16 +239,17 @@ public class SysRoleController extends CrudBaseController { } } return ResultBean.success("操作成功").setListPager(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 修改角色状态 - * @param id 角色id + * + * @param id 角色id * @param status 状态 * @return 处理结果 */ @@ -184,9 +262,9 @@ public class SysRoleController extends CrudBaseController { ValidatorBean.checkNotZero(status, "角色状态不能为空"); SysRole role = sysRoleService.get(id); - ValidatorBean.checkNotNull(role,"不存在的角色信息"); + ValidatorBean.checkNotNull(role, "不存在的角色信息"); role.setRoleStatus(status); - ConvertBean.modelUpdate(role,getSessionUser()); + ConvertBean.modelUpdate(role, getSessionUser()); sysRoleService.update(role); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); @@ -199,24 +277,25 @@ public class SysRoleController extends CrudBaseController { /** * 批量修改系统角色状态 - * @param ids 系统角色ids数组 + * + * @param ids 系统角色ids数组 * @param status 状态 * @return 处理结果 */ @PutMapping(value = "/batch-status") @ApiOperation(value = "批量修改系统角色状态", notes = "根据ID修改系统角色状态") - public ResultBean updateBatchStatus(Long[] ids,int status) { + public ResultBean updateBatchStatus(Long[] ids, int status) { try { // 数据校验 ValidatorBean.checkNotNull(ids, "角色id 不能为空"); ValidatorBean.checkNotZero(status, "角色状态不能为空"); - sysRoleService.updateSysRoleStatusByIds(ids,status,AuthUtil.getSessionUser()); + sysRoleService.updateSysRoleStatusByIds(ids, status, AuthUtil.getSessionUser()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } @@ -230,21 +309,21 @@ public class SysRoleController extends CrudBaseController { */ @PutMapping(value = "/ref-menu/insert") @ApiOperation(value = "新增角色权限关系", notes = "新增角色权限关系") - public ResultBean insertRefMenu(Long roleId,String[] refIds) { + public ResultBean insertRefMenu(Long roleId, String[] refIds) { try { startMultiService(); // 数据校验 ValidatorBean.checkNotNull(roleId, "角色roleId 不能为空"); - ConvertBean.modelSafeArrayNumber(refIds,true); + ConvertBean.modelSafeArrayNumber(refIds, true); - sysRoleService.refreshSysRoleRef(roleId,StringTool.getArrayLong(refIds),AuthUtil.getSessionUser().getUserName()); + sysRoleService.refreshSysRoleRef(roleId, StringTool.getArrayLong(refIds), AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } @@ -256,16 +335,16 @@ public class SysRoleController extends CrudBaseController { try { // 数据校验 ValidatorBean.beginValid(refRoleMenu) - .notNull("roleId",refRoleMenu.getRoleId()) - .notNull("softType",refRoleMenu.getSoftType()); + .notNull("roleId", refRoleMenu.getRoleId()) + .notNull("softType", refRoleMenu.getSoftType()); - sysRoleService.refreshSysRoleRef(refRoleMenu.getRoleId(),refRoleMenu.getSoftType(),refRoleMenu.getMenuIdList() - ,AuthUtil.getSessionUser().getUserName()); + sysRoleService.refreshSysRoleRef(refRoleMenu.getRoleId(), refRoleMenu.getSoftType(), refRoleMenu.getMenuIdList() + , AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } @@ -273,7 +352,8 @@ public class SysRoleController extends CrudBaseController { /** * 新增角色权限关系 - * @param roleId 角色id + * + * @param roleId 角色id * @param softType 产品类型ID * @return 处理结果 */ @@ -290,32 +370,33 @@ public class SysRoleController extends CrudBaseController { return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultList(sysRefRoleMenuList); - } catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 批量新增角色权限关系 + * * @param roleIds 角色id 集合 * @param menuIds 功能id * @return 处理结果 */ @PutMapping(value = "/ref-menu/batch-insert") @ApiOperation(value = "批量新增角色权限关系", notes = "批量新增角色权限关系") - public ResultBean insertBatchRefMenu(String[] roleIds,String[] menuIds) { + public ResultBean insertBatchRefMenu(String[] roleIds, String[] menuIds) { try { startMultiService(); - roleIds = ConvertBean.modelSafeArrayNumber(roleIds,true); - menuIds = ConvertBean.modelSafeArrayNumber(menuIds,true); + roleIds = ConvertBean.modelSafeArrayNumber(roleIds, true); + menuIds = ConvertBean.modelSafeArrayNumber(menuIds, true); // 数据校验 ValidatorBean.checkNotNull(roleIds, "角色roleIds 不能为空"); - if(roleIds.length == 0){ + if (roleIds.length == 0) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) @@ -324,21 +405,21 @@ public class SysRoleController extends CrudBaseController { } List roleList = sysRoleService.findSysRoleByInIdAndStatus(StringTool.getArrayLong(roleIds), CommonEnumUtil.DATA_STATUS.DISABLE.getValue()); - if(roleList != null && roleList.size() > 0){ + if (roleList != null && roleList.size() > 0) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) - .setErrorDetail("["+roleList.get(0).getName()+"]角色已禁用,不允许操作") + .setErrorDetail("[" + roleList.get(0).getName() + "]角色已禁用,不允许操作") .setErrorSolution("请重新操作") .build(); } - sysRoleService.refreshBatchSysRoleRef(StringTool.getArrayLong(roleIds),StringTool.getArrayLong(menuIds), + sysRoleService.refreshBatchSysRoleRef(StringTool.getArrayLong(roleIds), StringTool.getArrayLong(menuIds), AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } 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 584e7ad..803ea2e 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 @@ -9,9 +9,11 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -28,6 +30,7 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -44,7 +47,16 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; /** @@ -79,6 +91,12 @@ public class SysUserController extends CoreBaseController { @Autowired private ISysUserPasswordService userPasswordService; + @Autowired + private EntityManager entityManager; + + @Resource(name = CommonConstWords.IMPP_REDIS_RES) + private ImppRedis redisRes; + /** * 新增系统用户 * @@ -310,6 +328,44 @@ public class SysUserController extends CoreBaseController { } } + @GetMapping(value = "/export/ref-user-role") + @ApiOperation(value = "导出用户角色关系", notes = "导出用户角色关系") + public ResultBean exportUserRoleRef(HttpServletResponse response) { + try { + List list = sysUserService.findValidUserRoleRef(); + ExcelTool excelTool = new ExcelTool(entityManager, redisRes); + String fileName = "user-role-ref-" + System.currentTimeMillis() + ".xls"; + File file = new File(fileName); + file.createNewFile(); + File excel = excelTool.exportData(file, list, SysRefUserRole.class + , (LinkedHashMap) ExcelTool.getColName(SysRefUserRole.class)); + + 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(excel)))) { + 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()) + .setResultList(list); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + /** * 查询系统用户 * diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleChangeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleChangeService.java new file mode 100644 index 0000000..1a6ed10 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogRoleChangeService.java @@ -0,0 +1,33 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleChangeService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleChange; +import cn.estsh.i3plus.pojo.platform.repository.SysLogRoleChangeRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : 用户登录日志 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-08-31 11:51 + * @Modify: + **/ +@Service +public class SysLogRoleChangeService implements ISysLogRoleChangeService { + + @Autowired + private SysLogRoleChangeRepository logRoleChangeRepository; + + + @Override + public List findLogsBetweenDatetime(String startDatetime, String endDatetime) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.timeBuilder(startDatetime, endDatetime, "createDatetime", true, true, packBean); + return logRoleChangeRepository.findByHqlWhere(packBean); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionService.java index e6000d3..01e830f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionService.java @@ -4,15 +4,19 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionPlan; +import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionPlanRepository; import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.base.service.CrudService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Objects; +import java.util.Optional; /** * @Description : @@ -25,6 +29,9 @@ import java.util.Objects; public class SysPojoVersionService extends CrudService implements ISysPojoVersionService { @Autowired + private SysPojoVersionPlanRepository pojoVersionPlanRepository; + + @Autowired private SysPojoVersionRepository pojoVersionRDao; @Autowired @@ -42,8 +49,26 @@ public class SysPojoVersionService extends CrudService implement } @Override + public List findPojoVersionByUserBetweenTime(String userName, String startDate, String endDate) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(userName, "modifyUser", packBean); + DdlPreparedPack.timeBuilder(startDate, endDate, "modifyDatetime", true, false, packBean); + List pojoVersions = pojoVersionRDao.findByHqlWhere(packBean); + + DdlPackBean planPackBean = DdlPackBean.getDdlPackBean(); + List pojoVersionPlans = pojoVersionPlanRepository.findByHqlWhere(planPackBean); + + pojoVersions.stream().parallel().forEach(d -> { + Optional plan = pojoVersionPlans.stream().filter(p -> d.getPlanId().equals(p.getId())).findFirst(); + plan.ifPresent(c -> d.setPojoClassTitle(c.getRefClassTitle())); + }); + + return pojoVersions; + } + + @Override public SysPojoVersion packGetBean(SysPojoVersion bean) { - if(Objects.nonNull(bean)){ + if (Objects.nonNull(bean)) { bean.setVersionDetail(pojoVersionDetailService.get(bean.getPojoDetailId())); } return bean; 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 79c9ffd..3aba6ef 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 @@ -14,7 +14,11 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.HqlPack; -import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +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.i3plus.pojo.platform.bean.SysUser; import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository; @@ -234,15 +238,21 @@ public class SysRoleService extends CrudService implements ISysRoleServ @Override public List findSysRoleByInIdAndStatus(Long[] ids, Integer status) { - LOGGER.info("系统角色 SYS_ROLE findSysRoleByInIdAndStatus ids:{} , status:{}",ids,status); + LOGGER.info("系统角色 SYS_ROLE findSysRoleByInIdAndStatus ids:{} , status:{}", ids, status); StringBuffer findWhere = new StringBuffer(); - HqlPack.getInPack(StringUtils.join(ids,","),"id",findWhere); - HqlPack.getNumEqualPack(status,"roleStatus",findWhere); + HqlPack.getInPack(StringUtils.join(ids, ","), "id", findWhere); + HqlPack.getNumEqualPack(status, "roleStatus", findWhere); return roleRDao.findByHqlWhere(findWhere.toString()); } @Override - @ApiOperation(value = "查信用户的所有角色信息",notes = "查信用户的所有角色信息") + public List findValidSysRole() { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + return roleRDao.findByHqlWhere(packBean); + } + + @Override + @ApiOperation(value = "查信用户的所有角色信息", notes = "查信用户的所有角色信息") public List findSysRoleByUser(SysUser user) { LOGGER.info("系统角色 查询用户所有角色"); return userPermissionDao.findSysRoleByUser(user); 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 b763625..8523627 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 @@ -310,6 +310,23 @@ public class SysUserService implements ISysUserService { } @Override + public List queryUserMonthlyLoginLog(String startTime, String endTime) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.timeBuilder(startTime, endTime, "logLoginDateTime", true, false, packBean); + List loginLogs = logUserLoginRDao.findByHqlWhere(packBean); + return loginLogs; + } + + @Override + public List queryUserMonthlyFailedLoginLog(String startTime, String endTime) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.timeBuilder(startTime, endTime, "logLoginDateTime", true, false, packBean); + DdlPreparedPack.getNumNOEqualPack(CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), "logLoginStatus", packBean); + List loginLogs = logUserLoginRDao.findByHqlWhere(packBean); + return loginLogs; + } + + @Override @ApiOperation(value = "新增账号", notes = "新增账号信息") public void refreshSysRefUserRole(SysUser sysUser, Long[] roleIds, String userName) { LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser); @@ -772,6 +789,12 @@ public class SysUserService implements ISysUserService { return userDb; } + @Override + public List findValidUserRoleRef() { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + return refUserRoleRDao.findByHqlWhere(packBean); + } + /** * 账号数据排序 * 创建时间 角色升序