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

角色为 ADMIN 的帐号可看到系统消息

reghao 2 лет назад
Родитель
Сommit
5361d28755

+ 17 - 1
manager/src/main/java/cn/reghao/devops/manager/account/controller/AccountAuthController.java

@@ -5,10 +5,12 @@ import cn.reghao.devops.common.util.NotAvailable;
 import cn.reghao.devops.common.util.jvm.JVM;
 import cn.reghao.devops.common.util.jvm.po.JvmInfo;
 import cn.reghao.devops.common.version.AppVersion;
+import cn.reghao.devops.manager.account.model.constant.RoleType;
 import cn.reghao.devops.manager.account.model.po.Menu;
 import cn.reghao.devops.manager.account.model.po.User;
 import cn.reghao.devops.manager.account.service.HomeService;
 import cn.reghao.devops.manager.account.service.UserContext;
+import cn.reghao.devops.manager.sys.db.repository.SysMessageRepository;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
@@ -30,12 +32,14 @@ public class AccountAuthController {
     private final Network network;
     private final AppVersion appVersion;
     private final HomeService homeService;
+    private final SysMessageRepository sysMessageRepository;
 
-    public AccountAuthController(HomeService homeService) {
+    public AccountAuthController(HomeService homeService, SysMessageRepository sysMessageRepository) {
         this.jvm = new JVM();
         this.network = new Network();
         this.appVersion = AppVersion.getVersion();
         this.homeService = homeService;
+        this.sysMessageRepository = sysMessageRepository;
     }
     
     @GetMapping("/login")
@@ -51,6 +55,18 @@ public class AccountAuthController {
             throw new Exception("未登录");
         }
 
+        boolean isAdmin = user.getRole().contains(RoleType.ROLE_ADMIN.name());
+        if (isAdmin) {
+            int unreadTotal = sysMessageRepository.countByUnread(true);
+            String unreadMessage;
+            if (unreadTotal > 9) {
+                unreadMessage = "9+";
+            } else {
+                unreadMessage = String.valueOf(unreadTotal);
+            }
+            model.addAttribute("unreadMessage", unreadMessage);
+        }
+
         List<Menu> menus = homeService.userMenus(user.getRole());
         Map<Integer, Menu> treeMenu = homeService.treeMenu(menus);
         model.addAttribute("user", user);

+ 8 - 2
manager/src/main/java/cn/reghao/devops/manager/config/spring/AppLifecycle.java

@@ -10,6 +10,8 @@ import cn.reghao.devops.manager.app.service.config.BuildDirService;
 import cn.reghao.devops.manager.log.Appenders;
 import cn.reghao.devops.manager.log.LoggerConfig;
 import cn.reghao.devops.manager.machine.service.MachineService;
+import cn.reghao.devops.manager.sys.db.repository.SysMessageRepository;
+import cn.reghao.devops.manager.sys.model.po.SysMessage;
 import cn.reghao.devops.manager.ws.handler.LogHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.DisposableBean;
@@ -35,10 +37,11 @@ public class AppLifecycle implements ApplicationRunner, DisposableBean {
     private final FileService fileService;
     private final RoleService roleService;
     private final AccountService accountService;
+    private final SysMessageRepository sysMessageRepository;
 
     public AppLifecycle(BuildDirService buildDirService, MachineService machineService, LogHandler logHandler,
                         CompilerConfigRepository compilerConfigRepository, FileService fileService,
-                        RoleService roleService, AccountService accountService) {
+                        RoleService roleService, AccountService accountService, SysMessageRepository sysMessageRepository) {
         this.buildDirService = buildDirService;
         this.machineService = machineService;
         this.logHandler = logHandler;
@@ -46,6 +49,7 @@ public class AppLifecycle implements ApplicationRunner, DisposableBean {
         this.fileService = fileService;
         this.roleService = roleService;
         this.accountService = accountService;
+        this.sysMessageRepository = sysMessageRepository;
     }
 
     @Override
@@ -117,7 +121,9 @@ public class AppLifecycle implements ApplicationRunner, DisposableBean {
             String homePath = compilerConfig.getHomePath();
             File file = new File(homePath);
             if (!file.exists()) {
-                log.error("编译配置 {} 的编译器 {} 不存在", name, homePath);
+                String errMsg = String.format("编译配置 %s 的编译器 %s 不存在", name, homePath);
+                SysMessage sysMessage = new SysMessage("系统异常", errMsg);
+                sysMessageRepository.save(sysMessage);
             }
         }
     }

+ 4 - 3
manager/src/main/resources/templates/main.html

@@ -16,11 +16,12 @@
             <i class="layui-icon layui-icon-spread-left"></i>
         </a>
         <ul class="layui-nav layui-layout-right">
-            <!--<li class="layui-nav-item">
-                <a href="#">
+            <li th:if="${unreadMessage != null}" class="layui-nav-item">
+                <a href="/#/sys/message">
                     <i class="fa fa-bell-o fa-lg"></i>
+                    <div class="layui-badge" th:text="${unreadMessage}"></div>
                 </a>
-            </li>-->
+            </li>
             <li class="layui-nav-item">
                 <a class="timo-screen-full" href="#">
                     <i class="fa layui-icon layui-icon-screen-full"></i>