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 c35300e3..6b7d1a3f 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 @@ -97,6 +97,7 @@ public class OnlineController extends BaseController{ } map.put("startTimestamp", DateUtils.formatDateTime(session.getStartTimestamp())); map.put("lastAccessTime", DateUtils.formatDateTime(session.getLastAccessTime())); + map.put("timeoutLong", session.getTimeout()-(currentTime-session.getLastAccessTime().getTime())); map.put("timeout", TimeUtils.formatTime(session.getTimeout()-(currentTime-session.getLastAccessTime().getTime()))); map.put("userCode", session.getAttribute("userCode")); map.put("userName", session.getAttribute("userName")); @@ -109,18 +110,27 @@ public class OnlineController extends BaseController{ if (StringUtils.isBlank(orderBy)){ orderBy = "lastAccessTime desc"; } + orderBy = StringUtils.replace(orderBy, "timeout", "timeoutLong"); final String[] ss = orderBy.trim().split(" "); if (ss.length == 2){ list.sort((o1, o2) -> { - String s1 = (String) o1.get(ss[0]); - String s2 = (String) o2.get(ss[0]); + Object s1 = o1.get(ss[0]); + Object s2 = o2.get(ss[0]); if (s1 == null || s2 == null) { return -1; } - if ("asc".equals(ss[1])) { - return s1.compareTo(s2); - } else { - return s2.compareTo(s1); + if (StringUtils.endsWith(ss[0], "Long")) { + if ("asc".equals(ss[1])) { + return ((Long)s1).compareTo((Long)s2); + } else { + return ((Long)s2).compareTo((Long)s1); + } + }else{ + if ("asc".equals(ss[1])) { + return ((String)s1).compareTo((String)s2); + } else { + return ((String)s2).compareTo((String)s1); + } } }); }