feat: 在线用户增加最后活跃时间显示

This commit is contained in:
2024-05-14 00:01:56 +08:00
parent fac7c866ee
commit 926497a18a
2 changed files with 18 additions and 1 deletions

View File

@@ -16,8 +16,11 @@
package top.continew.admin.auth.model.resp;
import cn.crane4j.annotation.Assemble;
import cn.crane4j.annotation.Mapping;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import top.continew.starter.extension.crud.constant.ContainerPool;
import java.io.Serial;
import java.io.Serializable;
@@ -40,6 +43,7 @@ public class OnlineUserResp implements Serializable {
* ID
*/
@Schema(description = "ID", example = "1")
@Assemble(container = ContainerPool.USER_NICKNAME, props = @Mapping(ref = "nickname"))
private Long id;
/**
@@ -89,4 +93,10 @@ public class OnlineUserResp implements Serializable {
*/
@Schema(description = "登录时间", example = "2023-08-08 08:08:08", type = "string")
private LocalDateTime loginTime;
/**
* 最后活跃时间
*/
@Schema(description = "最后活跃时间", example = "2023-08-08 08:08:08", type = "string")
private LocalDateTime lastActiveTime;
}

View File

@@ -16,6 +16,7 @@
package top.continew.admin.auth.service.impl;
import cn.crane4j.annotation.AutoOperate;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.stp.StpUtil;
@@ -49,11 +50,17 @@ import java.util.List;
public class OnlineUserServiceImpl implements OnlineUserService {
@Override
@AutoOperate(type = OnlineUserResp.class, on = "list")
public PageResp<OnlineUserResp> page(OnlineUserQuery query, PageQuery pageQuery) {
List<LoginUser> loginUserList = this.list(query);
List<OnlineUserResp> list = BeanUtil.copyToList(loginUserList, OnlineUserResp.class);
PageResp<OnlineUserResp> pageResp = PageResp.build(pageQuery.getPage(), pageQuery.getSize(), list);
pageResp.getList().forEach(u -> u.setNickname(LoginHelper.getNickname(u.getId())));
pageResp.getList().forEach(u -> {
long lastActiveTime = StpUtil.getStpLogic().getTokenLastActiveTime(u.getToken());
if (SaTokenDao.NOT_VALUE_EXPIRE != lastActiveTime) {
u.setLastActiveTime(DateUtil.toLocalDateTime(new Date(lastActiveTime)));
}
});
return pageResp;
}