diff --git a/common/src/main/java/com/jeesite/common/lang/ObjectUtils.java b/common/src/main/java/com/jeesite/common/lang/ObjectUtils.java index 72d1f900..1f6afd7d 100644 --- a/common/src/main/java/com/jeesite/common/lang/ObjectUtils.java +++ b/common/src/main/java/com/jeesite/common/lang/ObjectUtils.java @@ -42,6 +42,9 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils { } try { String str = val.toString(); + if (StringUtils.isBlank(str)) { + return 0D; + } if (StringUtils.contains(str, "*")) { Double number = null, d = null; for (String s : StringUtils.split(str, "*")) { diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java index cb47bb80..1a5b19c5 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java @@ -39,7 +39,7 @@ import com.jeesite.modules.sys.utils.UserUtils; /** * 在线用户Controller * @author ThinkGem - * @version 2016-8-31 + * @version 2022-3-10 */ @Controller @RequestMapping(value = "${adminPath}/sys/online") @@ -58,7 +58,8 @@ public class OnlineController extends BaseController{ @RequestMapping(value = "count") @ResponseBody public Integer count(HttpServletRequest request, HttpServletResponse response) { - return sessionDAO.getActiveSessions(true, true).size(); + // 在线人数统计,缓存3分钟的数据,要求高的业务可缩小间隔时间 + return sessionDAO.getActiveSessionsCount(false, false, 3); } /** @@ -156,7 +157,7 @@ public class OnlineController extends BaseController{ if (pp != null) { if (pp instanceof LoginInfo){ LoginInfo loginInfo = ((LoginInfo)pp); - String key = loginInfo.getId()+"_"+loginInfo.getParam("deviceType", "PC"); + String key = loginInfo.getId()+"_"+loginInfo.getParam("deviceType", "pc"); onlineTickOutMap.put(key, StringUtils.EMPTY); } } diff --git a/modules/core/src/main/resources/config/jeesite-core.yml b/modules/core/src/main/resources/config/jeesite-core.yml index ff393e6b..cb0a755b 100644 --- a/modules/core/src/main/resources/config/jeesite-core.yml +++ b/modules/core/src/main/resources/config/jeesite-core.yml @@ -280,7 +280,7 @@ job: isClustered: true dataSourceName: job clusterCheckinInterval: 1000 -# className: org.springframework.scheduling.quartz.LocalDataSourceJobStore + #className: org.springframework.scheduling.quartz.LocalDataSourceJobStore # 调度日志配置 log: @@ -443,17 +443,19 @@ shiro: # Session 相关 session: - # 全局会话超时,单位:毫秒, 20m=1200000ms, 30m=1800000ms, 60m=3600000ms, 12h=43200000ms, 1day=86400000ms + # 会话超时时间,单位:毫秒,10m=600000, 20m=1200000ms, 30m=1800000ms, 60m=3600000ms, 12h=43200000ms, 1day=86400000ms # 注意:如果超时超过30m,你还需要同步修改当前配置文件的属性:j2cache.caffeine.region.sessionCache 超时时间,大于这个值。 - sessionTimeout: 1800000 - # PC设备会话超时参数设置,登录请求参数加 param_deviceType=pc 时有效 - #pcSessionTimeout: 1800000 + # 游客会话超时时间:只访问了系统,但未登录系统的用户为游客,游客默认超时时间为10分钟,如:未登录系统时的图片验证码有效时间。 + sessionTimeout: 180000 - # 手机APP设备会话超时参数设置,登录请求参数加 param_deviceType=mobileApp 时有效 - #mobileAppSessionTimeout: 43200000 + # 登录系统后的用户超时时间(不明确 param_deviceType 参数的,默认设备为 pc 登录) + pcSessionTimeout: 1800000 - # 定时清理失效会话,清理用户直接关闭浏览器造成的孤立会话 + # 手机APP设备会话超时参数设置,登录请求参数加 param_deviceType=mobileApp 时有效,一般无需单独设置 + #mobileAppSessionTimeout: 1800000 + + # 定时清理失效会话,清理用户直接关闭浏览器造成的孤立会话(设置为 0 关闭,微服务下只开启 core 即可) sessionTimeoutClean: 1200000 # 会话唯一标识SessionId在Cookie中的名称。 diff --git a/modules/core/src/main/resources/views/modules/sys/onlineList.html b/modules/core/src/main/resources/views/modules/sys/onlineList.html index fb7f7a70..f146224c 100644 --- a/modules/core/src/main/resources/views/modules/sys/onlineList.html +++ b/modules/core/src/main/resources/views/modules/sys/onlineList.html @@ -59,7 +59,7 @@ $('#dataGrid').dataGrid({ return js.getDictLabel(${@DictUtils.getDictListJson('sys_user_type')}, val, '未知', true); }}, {header:'${text("设备类型")}', name:'deviceType', width:50, align:'center', formatter: function(val, obj, row, act){ - return js.getDictLabel(${@DictUtils.getDictListJson('sys_device_type')}, val, 'PC', true); + return js.getDictLabel(${@DictUtils.getDictListJson('sys_device_type')}, val, '未知', true); }} <% if(hasPermi('sys:online:edit')){ %> ,{header:'${text("操作")}', name:'actions', width:100, sortable:false, formatter: function(val, obj, row, act){ diff --git a/web-api/src/main/resources/config/application.yml b/web-api/src/main/resources/config/application.yml index bdbfdb0c..49554443 100644 --- a/web-api/src/main/resources/config/application.yml +++ b/web-api/src/main/resources/config/application.yml @@ -580,17 +580,19 @@ shiro: # Session 相关 #session: # -# # 全局会话超时,单位:毫秒, 20m=1200000ms, 30m=1800000ms, 60m=3600000ms, 12h=43200000ms, 1day=86400000ms +# # 会话超时时间,单位:毫秒,10m=600000, 20m=1200000ms, 30m=1800000ms, 60m=3600000ms, 12h=43200000ms, 1day=86400000ms # # 注意:如果超时超过30m,你还需要同步修改当前配置文件的属性:j2cache.caffeine.region.sessionCache 超时时间,大于这个值。 -# sessionTimeout: 1800000 # -# # PC设备会话超时参数设置,登录请求参数加 param_deviceType=pc 时有效 -# #pcSessionTimeout: 1800000 +# # 游客会话超时时间:只访问了系统,但未登录系统的用户为游客,游客默认超时时间为10分钟,如:未登录系统时的图片验证码有效时间。 +# sessionTimeout: 180000 # -# # 手机APP设备会话超时参数设置,登录请求参数加 param_deviceType=mobileApp 时有效 -# #mobileAppSessionTimeout: 43200000 +# # 登录系统后的用户超时时间(不明确 param_deviceType 参数的,默认设备为 pc 登录) +# pcSessionTimeout: 1800000 # -# # 定时清理失效会话,清理用户直接关闭浏览器造成的孤立会话 +# # 手机APP设备会话超时参数设置,登录请求参数加 param_deviceType=mobileApp 时有效,一般无需单独设置 +# #mobileAppSessionTimeout: 1800000 +# +# # 定时清理失效会话,清理用户直接关闭浏览器造成的孤立会话(设置为 0 关闭,微服务下只开启 core 即可) # sessionTimeoutClean: 1200000 # # # 会话唯一标识SessionId在Cookie中的名称。 diff --git a/web/src/main/resources/config/application.yml b/web/src/main/resources/config/application.yml index c9f71700..904694ec 100644 --- a/web/src/main/resources/config/application.yml +++ b/web/src/main/resources/config/application.yml @@ -580,17 +580,19 @@ shiro: # Session 相关 #session: # -# # 全局会话超时,单位:毫秒, 20m=1200000ms, 30m=1800000ms, 60m=3600000ms, 12h=43200000ms, 1day=86400000ms +# # 会话超时时间,单位:毫秒,10m=600000, 20m=1200000ms, 30m=1800000ms, 60m=3600000ms, 12h=43200000ms, 1day=86400000ms # # 注意:如果超时超过30m,你还需要同步修改当前配置文件的属性:j2cache.caffeine.region.sessionCache 超时时间,大于这个值。 -# sessionTimeout: 1800000 # -# # PC设备会话超时参数设置,登录请求参数加 param_deviceType=pc 时有效 -# #pcSessionTimeout: 1800000 +# # 游客会话超时时间:只访问了系统,但未登录系统的用户为游客,游客默认超时时间为10分钟,如:未登录系统时的图片验证码有效时间。 +# sessionTimeout: 180000 # -# # 手机APP设备会话超时参数设置,登录请求参数加 param_deviceType=mobileApp 时有效 -# #mobileAppSessionTimeout: 43200000 +# # 登录系统后的用户超时时间(不明确 param_deviceType 参数的,默认设备为 pc 登录) +# pcSessionTimeout: 1800000 # -# # 定时清理失效会话,清理用户直接关闭浏览器造成的孤立会话 +# # 手机APP设备会话超时参数设置,登录请求参数加 param_deviceType=mobileApp 时有效,一般无需单独设置 +# #mobileAppSessionTimeout: 1800000 +# +# # 定时清理失效会话,清理用户直接关闭浏览器造成的孤立会话(设置为 0 关闭,微服务下只开启 core 即可) # sessionTimeoutClean: 1200000 # # # 会话唯一标识SessionId在Cookie中的名称。