From e1e80b57bd2716a54e23947810b3aa78c05b87a4 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Sat, 12 Mar 2022 09:49:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=92=8C=E6=9C=AA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=9A=84session=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=88=86=E5=BC=80=EF=BC=9BdeviceType=20=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=EF=BC=8C=E9=BB=98=E8=AE=A4=20pc=20=EF=BC=9B?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=A4=E7=AB=8B=E4=BC=9A=E8=AF=9D=E9=9B=86?= =?UTF-8?q?=E7=BE=A4=E6=A8=A1=E5=BC=8FQuartz=E6=B8=85=E7=90=86=EF=BC=9B?= =?UTF-8?q?=E5=BE=AE=E6=9C=8D=E5=8A=A1=E6=83=85=E5=86=B5=E4=B8=8B=E5=8F=AF?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=AD=A4=E7=AB=8B=E4=BC=9A=E8=AF=9D=E6=B8=85?= =?UTF-8?q?=E7=90=86=E4=BB=BB=E5=8A=A1=EF=BC=8C=E5=8F=AA=E9=9C=80=E5=BC=80?= =?UTF-8?q?=E5=90=AFcore=E6=9C=8D=E5=8A=A1=E5=8D=B3=E5=8F=AF=EF=BC=9B?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=94=A8=E6=88=B7=E6=B8=B8=E5=AE=A2=E5=88=97?= =?UTF-8?q?=E8=A1=A8=EF=BC=8C=E5=88=A0=E9=99=A4=E8=BF=98=E6=9C=AA=E6=9D=A5?= =?UTF-8?q?=E5=BE=97=E5=8F=8A=E6=B8=85=E7=90=86=E7=9A=84=E5=B7=B2=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E4=BC=9A=E8=AF=9D=EF=BC=9B=E5=9C=A8=E7=BA=BF=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E7=BB=9F=E8=AE=A1=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=BC=93?= =?UTF-8?q?=E5=AD=983=E5=88=86=E9=92=9F=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=EF=BC=8C=E8=8A=82=E7=9C=81=E6=9C=8D=E5=8A=A1=E5=99=A8=E8=B5=84?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jeesite/common/lang/ObjectUtils.java | 3 +++ .../modules/sys/web/OnlineController.java | 7 ++++--- .../src/main/resources/config/jeesite-core.yml | 18 ++++++++++-------- .../views/modules/sys/onlineList.html | 2 +- .../src/main/resources/config/application.yml | 16 +++++++++------- web/src/main/resources/config/application.yml | 16 +++++++++------- 6 files changed, 36 insertions(+), 26 deletions(-) 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中的名称。