Prechádzať zdrojové kódy

【修复】修复在线用户排序bu

就是那个锅 4 rokov pred
rodič
commit
d08e5edd2d

+ 6 - 17
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/monitor/service/impl/SysOnlineUserServiceImpl.java

@ -26,8 +26,6 @@ package cn.stylefeng.guns.sys.modular.monitor.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.guns.core.context.constant.ConstantContextHolder;
import cn.stylefeng.guns.core.context.login.LoginContextHolder;
@ -41,8 +39,10 @@ import cn.stylefeng.guns.sys.modular.monitor.service.SysOnlineUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 系统组织机构service接口实现类
@ -59,28 +59,17 @@ public class SysOnlineUserServiceImpl implements SysOnlineUserService {
    @Override
    public List<SysOnlineUserResult> list(SysOnlineUserParam sysOnlineUserParam) {
        List<SysOnlineUserResult> resultList = CollectionUtil.newArrayList();
        //定义现在时间
        DateTime now = DateTime.now();
        // 获取缓存中的所有用户
        Map<String, SysLoginUser> allKeyValues = userCache.getAllKeyValues();
        for (Map.Entry<String, SysLoginUser> sysLoginUserEntry : allKeyValues.entrySet()) {
            SysOnlineUserResult sysOnlineUserResult = new SysOnlineUserResult();
            sysOnlineUserResult.setSessionId(sysLoginUserEntry.getKey());
            BeanUtil.copyProperties(sysLoginUserEntry.getValue(), sysOnlineUserResult);
            //获取登录日期
            String lastLoginTime = sysOnlineUserResult.getLastLoginTime();
            DateTime dateTime = DateUtil.parseDateTime(lastLoginTime);
            //获取两个比较结果
            int compare = DateUtil.compare(dateTime, now);
            //如果时间小于等于当前时间
            if(compare <= 0) {
                //则将其设为当前时间
                now = dateTime;
                //将其放入
                resultList.add(sysOnlineUserResult);
            }
            resultList.add(sysOnlineUserResult);
        }
        return resultList;
        return resultList.stream()
                .sorted(Comparator.comparing(SysOnlineUserResult::getLastLoginTime, Comparator.reverseOrder()))
                .collect(Collectors.toList());
    }
    @Override