diff --git a/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java b/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java index f86a33c7..9e138092 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java @@ -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; } diff --git a/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java index acadc394..e14b2f16 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java @@ -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 page(OnlineUserQuery query, PageQuery pageQuery) { List loginUserList = this.list(query); List list = BeanUtil.copyToList(loginUserList, OnlineUserResp.class); PageResp 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; }