From 9b2e1196b865af1bea41d9954ce67f4d222912a7 Mon Sep 17 00:00:00 2001 From: "yunhao.wang" Date: Thu, 3 Jan 2019 21:17:31 +0800 Subject: [PATCH] =?UTF-8?q?dashboard=E4=BC=98=E5=8C=96=20bug=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=20redis=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/busi/PersonnelController.java | 2 + .../controller/busi/SysDashboardController.java | 68 ++++++++++++++-------- .../controller/busi/SysFileController.java | 2 + 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 596e8fd..ca5f2cd 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -214,7 +214,9 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = personnelService.getSysUserInfoById(Long.parseLong(id)); + ValidatorBean.checkNotNull(info,"用户不存在"); SysUser user = personnelService.getSysUserById(info.getUserId()); + ValidatorBean.checkNotNull(user,"账号不存在"); List refUserInfoDepartmentList = personnelService.findSysRefUserInfoDepartmentById(info.getId()); List refUserPositionList = personnelService.findSysRefUserPositionById(info.getId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java index 7c4c700..7246954 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java @@ -14,6 +14,8 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +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; @@ -37,6 +39,7 @@ import java.util.Map; @Api(description = "Dashboard服务") @RequestMapping(PlatformConstWords.BASE_URL + "/dashboard") public class SysDashboardController extends CoreBaseController { + private static final Logger LOGGER = LoggerFactory.getLogger(SysDashboardController.class); @Autowired private ISysDashboardService sysDashboardService; @@ -51,11 +54,12 @@ public class SysDashboardController extends CoreBaseController { @ApiOperation(value = "获取基础数据", notes = "获取基础数据,用户,部门,组织等信息") public ResultBean getBasicInfo() { try { + LOGGER.info("getBasicInfo:{}",redisCore); // 保持时间,key统一 - Date nowDate = new Date(); - String redisKey = PlatformConstWords.REDIS_DASHBOARD_BASIC_INFO + "_" + nowDate.getTime(); + String redisKey = PlatformConstWords.REDIS_DASHBOARD_BASIC_INFO + "_" + TimeTool.getNowTime("yyyyMMddhhmmss"); Map dashboardData = redisCore.getHashMap(redisKey); + LOGGER.info("getBasicInforedisKey:{},dashboardData:{}",redisKey,dashboardData); if (dashboardData == null || dashboardData.size() == 0) { dashboardData = new HashMap<>(); dashboardData.put("orgNum", sysDashboardService.getSysOrganizeCount()); @@ -63,8 +67,7 @@ public class SysDashboardController extends CoreBaseController { dashboardData.put("onlineUser", webSessionManager.getSessionDAO().getActiveSessions().size()); dashboardData.put("userLoginLog", sysDashboardService.findSysUserLoginLog(10)); - - redisCore.putHashMap(redisKey, dashboardData, 180); + redisCore.putHashMap(redisKey, dashboardData, 500); } return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(dashboardData); } catch ( @@ -79,17 +82,18 @@ public class SysDashboardController extends CoreBaseController { @ApiOperation(value = "查询日志", notes = "最近操作,异常日志") public ResultBean getLogInfo() { try { + LOGGER.info("getLogInfo:{}",redisCore); // 保持时间,key统一 - Date nowDate = new Date(); - String redisKey = PlatformConstWords.REDIS_DASHBOARD_LOG_INFO + "_" + nowDate.getTime(); + String redisKey = PlatformConstWords.REDIS_DASHBOARD_LOG_INFO + "_" + TimeTool.getNowTime("yyyyMMddhhmmss"); Map dashboardData = redisCore.getHashMap(redisKey); + LOGGER.info("getLogInforedisKey:{},dashboardData:{}",redisKey,dashboardData); if (dashboardData == null || dashboardData.size() == 0) { dashboardData = new HashMap<>(); dashboardData.put("logOperate", sysDashboardService.findNewSysLogOperateSize(10)); dashboardData.put("logException", sysDashboardService.findNewSysLogExceptionSize(10)); - redisCore.putHashMap(redisKey, dashboardData, 180); + redisCore.putHashMap(redisKey, dashboardData, 500); } return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) @@ -105,20 +109,22 @@ public class SysDashboardController extends CoreBaseController { @GetMapping(value = "/get-avg-response-time") @ApiOperation(value = "获取平均响应时间", notes = "获取平均响应时间") public ResultBean getAvgResponseTime() { + LOGGER.info("getAvgResponseTime:{}",redisCore); try { // 保持时间,key统一 - Date nowDate = new Date(); - String redisKey = PlatformConstWords.REDIS_DASHBOARD_AVG_RESP_TIME + "_" + nowDate.getTime(); + String redisKey = PlatformConstWords.REDIS_DASHBOARD_AVG_RESP_TIME + "_" + TimeTool.getNowTime("yyyyMMddhhmmss"); Map dashboardData = redisCore.getHashMap(redisKey); + LOGGER.info("getAvgResponseTimeredisKey:{},dashboardData:{}",redisKey,dashboardData); if (dashboardData == null || dashboardData.size() == 0) { // 获取前5分钟时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date nowDate = new Date(); dashboardData = sysDashboardService.querySysLogSystemAvgExecuteTime( sdf.format(TimeTool.timeCalc(nowDate, Calendar.MINUTE, -3)),sdf.format(nowDate)); - redisCore.putHashMap(redisKey, dashboardData, 180); + redisCore.putHashMap(redisKey, dashboardData, 500); } return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultMap(dashboardData); @@ -130,20 +136,22 @@ public class SysDashboardController extends CoreBaseController { @GetMapping(value = "/get-level-log-num") @ApiOperation(value = "获取各等级日志数量", notes = "获取各等级日志数量") public ResultBean getLevelLogNum() { + LOGGER.info("getLevelLogNum:{}",redisCore); try { // 保持时间,key统一 - Date nowDate = new Date(); - String redisKey = PlatformConstWords.REDIS_DASHBOARD_LOG_NUM + "_" + nowDate.getTime(); + String redisKey = PlatformConstWords.REDIS_DASHBOARD_LOG_NUM + "_" + TimeTool.getNowTime("yyyyMMddhhmmss"); Map dashboardData = redisCore.getHashMap(redisKey); + LOGGER.info("getLevelLogNumredisKey:{},dashboardData:{}",redisKey,dashboardData); if (dashboardData == null || dashboardData.size() == 0) { // 获取前10分钟时间,日志数量 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date nowDate = new Date(); dashboardData = sysDashboardService.querySysLogSystemByLevel( - sdf.format(TimeTool.timeCalc(new Date(), Calendar.MINUTE, -10)), sdf.format(nowDate)); + sdf.format(TimeTool.timeCalc(nowDate, Calendar.MINUTE, -10)), sdf.format(nowDate)); - redisCore.putHashMap(redisKey, dashboardData, 180); + redisCore.putHashMap(redisKey, dashboardData, 500); } return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultMap(dashboardData); @@ -157,27 +165,41 @@ public class SysDashboardController extends CoreBaseController { @GetMapping(value = "/get-server-pressure") @ApiOperation(value = "获取服务压力情况", notes = "获取服务压力情况") public ResultBean getServerPressure() { + LOGGER.info("getServerPressure:{}",redisCore); try { // 保持时间,key统一 - Date nowDate = new Date(); - String redisKey = PlatformConstWords.REDIS_DASHBOARD_SERVER_PRESSURE + "_" + nowDate.getTime(); + String redisKey = PlatformConstWords.REDIS_DASHBOARD_SERVER_PRESSURE + "_" + TimeTool.getNowTime("yyyyMMddhhmmss"); Map dashboardData = redisCore.getHashMap(redisKey); + LOGGER.info("getServerPressureredisKey:{},dashboardData:{}",redisKey,dashboardData); if (dashboardData == null || dashboardData.size() == 0) { dashboardData = new HashMap<>(); //获取上一分钟,请求来源数据 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm"); - dashboardData.put("requestSource", redisCore.getHashMap( - CommonConstWords.REDIS_DASHBOARD_MINUTE_SOURCE + "_" + sdf.format(TimeTool.timeCalc(nowDate, Calendar.MINUTE, -1)))); + Date nowDate = new Date(); + Map dataMap = redisCore.getHashMap( + CommonConstWords.REDIS_DASHBOARD_MINUTE_SOURCE + "_" + sdf.format(TimeTool.timeCalc(nowDate, Calendar.MINUTE, -1))); + if(dataMap == null){ + dataMap = new HashMap<>(); + } + dashboardData.put("requestSource", dataMap); //获取上一秒,服务器压力数据 sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - - dashboardData.put("serverPressure", redisCore.getObject( - CommonConstWords.REDIS_DASHBOARD_SECOND_PRESSURE + "_" + sdf.format(TimeTool.timeCalc(nowDate, Calendar.SECOND, -1)))); - - redisCore.putHashMap(redisKey, dashboardData, 180); + Object pressureObj = redisCore.getObject( + CommonConstWords.REDIS_DASHBOARD_SECOND_PRESSURE + "_" + sdf.format(TimeTool.timeCalc(nowDate, Calendar.SECOND, -1))); + int pressure = 0; + if(pressureObj != null){ + try { + pressure = Integer.parseInt(pressureObj.toString()); + }catch (Exception e){ + LOGGER.error("【无法转换压力】data:{}",pressureObj); + } + } + dashboardData.put("serverPressure", pressure); + + redisCore.putHashMap(redisKey, dashboardData, 500); } return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultMap(dashboardData); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java index f01696d..7dfa895 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java @@ -121,6 +121,8 @@ public class SysFileController extends CoreBaseController{ @ApiOperation(value = "根据id查询文件资源",notes = "根据id查询文件资源") public ResultBean getSysFileById(@PathVariable("id") String id){ try { + ValidatorBean.checkIsNumber(id,"id必须为数字"); + SysFile sysFile = sysFileService.getSysFileById(Long.parseLong(id)); return ResultBean.success("查询成功") .setResultObject(sysFile)