Просмотр исходного кода

帐号管理页面添加 最近访问 栏

reghao 2 лет назад
Родитель
Сommit
5e4e4da473

+ 15 - 12
manager/src/main/java/cn/reghao/devops/manager/account/controller/page/UserPageController.java

@@ -5,18 +5,20 @@ import cn.reghao.devops.manager.account.db.query.UserQuery;
 import cn.reghao.devops.manager.account.model.po.Role;
 import cn.reghao.devops.manager.account.model.po.User;
 import cn.reghao.devops.manager.account.model.vo.UserVO;
+import cn.reghao.devops.manager.account.service.AccountSessionService;
 import cn.reghao.devops.manager.account.service.UserContext;
 import cn.reghao.devops.manager.util.db.PageSort;
+import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
-import org.springframework.security.core.session.SessionRegistry;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -30,25 +32,17 @@ import java.util.stream.Collectors;
 public class UserPageController {
     private final UserQuery userQuery;
     private final RoleQuery roleQuery;
-    private SessionRegistry sessionRegistry;
+    private final AccountSessionService accountSessionService;
 
-    public UserPageController(UserQuery userQuery, RoleQuery roleQuery, SessionRegistry sessionRegistry) {
+    public UserPageController(UserQuery userQuery, RoleQuery roleQuery, AccountSessionService accountSessionService) {
         this.userQuery = userQuery;
         this.roleQuery = roleQuery;
-        this.sessionRegistry = sessionRegistry;
+        this.accountSessionService = accountSessionService;
     }
 
     @ApiOperation(value = "用户列表页面")
     @GetMapping
     public String userPage(@RequestParam(value = "screenName", required = false) String screenName, Model model) {
-        List<Object> users = sessionRegistry.getAllPrincipals();
-        List<User> userList = new ArrayList<>();
-        for (Object obj : users) {
-            if (obj instanceof User) {
-                userList.add((User) obj);
-            }
-        }
-
         Page<UserVO> page;
         if (screenName != null) {
             List<UserVO> list = userQuery.getByMatchScreenName(screenName);
@@ -58,6 +52,15 @@ public class UserPageController {
             page = userQuery.getUserVOByPage(pageRequest);
         }
 
+        Map<Integer, LocalDateTime> map = accountSessionService.getLastRequest();
+        page.getContent().forEach(userVO -> {
+            int userId = userVO.getUserId();
+            LocalDateTime lastAccess = map.get(userId);
+            if (lastAccess != null) {
+                userVO.setLastAccess(DateTimeConverter.format(lastAccess));
+            }
+        });
+
         model.addAttribute("page", page);
         model.addAttribute("list", page.getContent());
         return "/rbac/user/index";

+ 3 - 0
manager/src/main/java/cn/reghao/devops/manager/account/model/vo/UserVO.java

@@ -1,5 +1,6 @@
 package cn.reghao.devops.manager.account.model.vo;
 
+import cn.reghao.devops.common.util.NotAvailable;
 import cn.reghao.devops.manager.account.model.constant.UserGender;
 import cn.reghao.devops.manager.account.model.po.User;
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
@@ -18,6 +19,7 @@ public class UserVO {
     private String mobile;
     private String email;
     private String createTime;
+    private String lastAccess;
     private String status;
 
     public UserVO(User user) {
@@ -29,5 +31,6 @@ public class UserVO {
         this.email = user.getEmail();
         this.createTime = DateTimeConverter.format(user.getCreateTime());
         this.status = user.getEnabled() ? "启用" : "禁用";
+        this.lastAccess = NotAvailable.na.getDesc();
     }
 }

+ 2 - 0
manager/src/main/resources/templates/rbac/user/index.html

@@ -45,6 +45,7 @@
                     <th data-field="username">登录名</th>
                     <th data-field="screenName">用户名</th>
                     <th data-field="createDate">创建时间</th>
+                    <th data-field="lastAccess">最近访问</th>
                     <th>状态</th>
                     <th>分配角色</th>
                     <th>修改密码</th>
@@ -56,6 +57,7 @@
                     <td th:text="${item.username}">登录名</td>
                     <td th:text="${item.screenName}">用户名</td>
                     <td th:text="${item.createTime}">创建时间</td>
+                    <td th:text="${item.lastAccess}">最近访问</td>
                     <td th:text="${item.status}">状态</td>
                     <td>
                         <a class="open-popup" data-title="分配角色"