Przeglądaj źródła

feat: 鉴权接口web功能按system分组,添加公告列表信息

weijianghai 2 lat temu
rodzic
commit
b286255527

+ 9 - 0
src/main/java/com/nokia/dao/NoticeDao.java

@@ -0,0 +1,9 @@
+package com.nokia.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nokia.pojo.Notice;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface NoticeDao extends BaseMapper<Notice> {
+}

+ 4 - 3
src/main/java/com/nokia/dao/UserDao.java

@@ -133,10 +133,11 @@ public interface UserDao extends BaseMapper<User> {
      * @param client 客户端
      * @return {@link List}<{@link WebFunctionVo}>
      */
-    @Select("select af.id, af.\"name\", af.web_url as url, af.web_icon, af.web_priority as priority"
+    @Select("select af.id, af.\"name\", af.web_url as url, af.web_icon, af.web_priority as priority, af.\"system\","
+            + " as2.system_name"
             + " from sqmdb_rpt.acl_function af"
-            + " inner join sqmdb_rpt.acl_user_function auf"
-            + " on af.id = auf.function_id"
+            + " inner join sqmdb_rpt.acl_user_function auf on af.id = auf.function_id"
+            + " inner join sqmdb_rpt.acl_system as2 on af.\"system\" = as2.\"system\""
             + " where auf.user_id = #{userId}"
             + " and (af.client = 0 or af.client = #{client})"
             + " order by af.web_priority desc")

+ 27 - 0
src/main/java/com/nokia/pojo/Notice.java

@@ -0,0 +1,27 @@
+package com.nokia.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@TableName("sqmdb_rpt.acl_notice")
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class Notice implements Serializable {
+    @Schema(description = "主键")
+    @TableId
+    private Integer id;
+    @Schema(description = "时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createTime;
+    @Schema(description = "内容")
+    private String content;
+}

+ 31 - 7
src/main/java/com/nokia/service/AclService.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.nokia.common.R;
 import com.nokia.common.exception.BizException;
 import com.nokia.constants.ClientEnum;
+import com.nokia.dao.NoticeDao;
 import com.nokia.dao.UserDao;
 import com.nokia.dao.UserRoleCityDao;
 import com.nokia.dao.VerificationLogDao;
+import com.nokia.pojo.Notice;
 import com.nokia.pojo.User;
 import com.nokia.pojo.UserRoleCity;
 import com.nokia.pojo.VerificationLog;
@@ -21,9 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpSession;
 import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 @Slf4j
@@ -48,11 +48,12 @@ public class AclService {
     private final RedisTemplate<String, Object> redisTemplate;
     private final VerificationLogDao verificationLogDao;
     private final UserRoleCityDao userRoleCityDao;
+    private final NoticeDao noticeDao;
 
     @Autowired
     public AclService(UserDao userDao, TopService topService, DopService dopService, WoyunweiService woyunweiService,
                       RedisTemplate<String, Object> redisTemplate, VerificationLogDao verificationLogDao,
-                      UserRoleCityDao userRoleCityDao) {
+                      UserRoleCityDao userRoleCityDao, NoticeDao noticeDao) {
         this.userDao = userDao;
         this.topService = topService;
         this.dopService = dopService;
@@ -60,6 +61,7 @@ public class AclService {
         this.redisTemplate = redisTemplate;
         this.verificationLogDao = verificationLogDao;
         this.userRoleCityDao = userRoleCityDao;
+        this.noticeDao = noticeDao;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -201,14 +203,36 @@ public class AclService {
                 }
                 return R.ok().data(appFunctions);
             case "web":
+                List<WebFunctionSystem> functions = new ArrayList<>();
+                // 查询用户功能列表
                 List<WebFunctionVo> webFunctions = userDao.listWebFunctions(userEntity.getUserId(), ClientEnum.WEB.value);
+                // 按system分组
+                Map<String, List<WebFunctionVo>> systemFunctionMap = new LinkedHashMap<>();
                 for (WebFunctionVo t : webFunctions) {
-                    t.setUrl(t.getUrl() + (t.getUrl().contains("?") ? "&" : "?")
-                            + "fromSystem=" + tokenEntity.getFromSystem() + "&token=" + tokenEntity.getToken());
+                    systemFunctionMap.putIfAbsent(t.getSystem(), new ArrayList<>());
+                    systemFunctionMap.get(t.getSystem()).add(t);
+                }
+                for (List<WebFunctionVo> t : systemFunctionMap.values()) {
+                    List<WebFunctionVo> webFunctionVos = new ArrayList<>();
+                    WebFunctionSystem webFunctionSystem = new WebFunctionSystem();
+                    webFunctionSystem.setList(webFunctionVos);
+                    functions.add(webFunctionSystem);
+                    for (WebFunctionVo tt : t) {
+                        webFunctionSystem.setSystem(tt.getSystem());
+                        webFunctionSystem.setSystemName(tt.getSystemName());
+                        tt.setUrl(tt.getUrl() + (tt.getUrl().contains("?") ? "&" : "?")
+                                + "fromSystem=" + tokenEntity.getFromSystem() + "&token=" + tokenEntity.getToken());
+                        webFunctionVos.add(tt);
+                    }
                 }
+                // 查询公告
+                QueryWrapper<Notice> noticeWrapper = new QueryWrapper<>();
+                noticeWrapper.orderByDesc("create_time");
+                List<Notice> notices = noticeDao.selectList(noticeWrapper);
                 WebVerificationVo webVo = new WebVerificationVo();
                 webVo.setUserName(userEntity.getUserName());
-                webVo.setList(webFunctions);
+                webVo.setNotices(notices);
+                webVo.setFunctions(functions);
                 return R.ok().data(webVo);
             case "permission":
                 return R.ok();

+ 1 - 0
src/main/java/com/nokia/vo/ListOperationLogVo.java

@@ -22,6 +22,7 @@ public class ListOperationLogVo {
     private String operationName;
     @Schema(description = "操作内容")
     private String operationContent;
+    @Schema(description = "操作时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime operationTime;
 }

+ 1 - 0
src/main/java/com/nokia/vo/ListVerificationLogVo.java

@@ -22,6 +22,7 @@ public class ListVerificationLogVo {
     private String cityName;
     @Schema(description = "系统名称", example = "流程")
     private String systemName;
+    @Schema(description = "登录时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime loginTime;
 }

+ 20 - 0
src/main/java/com/nokia/vo/WebFunctionSystem.java

@@ -0,0 +1,20 @@
+package com.nokia.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class WebFunctionSystem {
+    @Schema(description = "系统id", example = "flow")
+    private String system;
+    @Schema(description = "系统名称", example = "流程")
+    private String systemName;
+    @Schema(description = "功能列表")
+    private List<WebFunctionVo> list;
+}

+ 4 - 0
src/main/java/com/nokia/vo/WebFunctionVo.java

@@ -9,6 +9,10 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @Data
 public class WebFunctionVo {
+    @Schema(description = "系统id", example = "flow")
+    private String system;
+    @Schema(description = "系统名称", example = "流程")
+    private String systemName;
     @Schema(description = "功能id")
     private Integer id;
     @Schema(description = "功能名称")

+ 4 - 1
src/main/java/com/nokia/vo/WebVerificationVo.java

@@ -1,5 +1,6 @@
 package com.nokia.vo;
 
+import com.nokia.pojo.Notice;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -13,6 +14,8 @@ import java.util.List;
 public class WebVerificationVo {
     @Schema(description = "用户名", example = "张三")
     private String userName;
+    @Schema(description = "通知列表")
+    private List<Notice> notices;
     @Schema(description = "入口列表")
-    private List<WebFunctionVo> list;
+    private List<WebFunctionSystem> functions;
 }