Browse Source

新菜单

xiaochan 1 year ago
parent
commit
302bdb7ceb

+ 30 - 0
src/main/java/thyyxxk/webserver/controller/settings/MenuSettingsController.java

@@ -0,0 +1,30 @@
+package thyyxxk.webserver.controller.settings;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.settings.IntergrationMenu;
+import thyyxxk.webserver.service.settings.MenuSettingsService;
+import thyyxxk.webserver.utils.ResultVoUtil;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/menuSettings")
+public class MenuSettingsController {
+
+    private final MenuSettingsService service;
+
+    public MenuSettingsController(MenuSettingsService service) {
+        this.service = service;
+    }
+
+
+    @GetMapping("/getMenuSettings")
+    public ResultVo<List<IntergrationMenu>> getMenuSettings() {
+        return ResultVoUtil.success(service.getMenuSettings());
+    }
+
+
+}

+ 16 - 0
src/main/java/thyyxxk/webserver/dao/his/settings/MenuSettingsDao.java

@@ -0,0 +1,16 @@
+package thyyxxk.webserver.dao.his.settings;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import thyyxxk.webserver.entity.settings.IntergrationMenu;
+
+import java.util.List;
+
+@Mapper
+public interface MenuSettingsDao extends BaseMapper<IntergrationMenu> {
+
+    @Select("select * from t_intergration_menu ")
+    List<IntergrationMenu> getAll();
+
+}

+ 97 - 0
src/main/java/thyyxxk/webserver/entity/settings/IntergrationMenu.java

@@ -0,0 +1,97 @@
+package thyyxxk.webserver.entity.settings;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@Data
+@TableName(value = "t_intergration_menu")
+public class IntergrationMenu implements Serializable {
+
+    private static final long serialVersionUID = 8746238221084815528L;
+
+    /**
+     * id
+     */
+    @TableField(value = "id")
+    private Integer id;
+
+    /**
+     * type
+     */
+    @TableField(value = "type")
+    private Integer type;
+
+    /**
+     * path
+     */
+    @TableField(value = "path")
+    private String path;
+
+    /**
+     * icon
+     */
+    @TableField(value = "icon")
+    private String icon;
+
+    /**
+     * name
+     */
+    @TableField(value = "name")
+    private String name;
+
+    /**
+     * parentId
+     */
+    @TableField(value = "parent_id")
+    private Integer parentId;
+
+    /**
+     * metaTitle
+     */
+    @TableField(value = "meta_title")
+    private String metaTitle;
+
+    /**
+     * metaHideTabs
+     */
+    @TableField(value = "meta_hide_tabs")
+    private Boolean metaHideTabs;
+
+    /**
+     * metaPassRule
+     */
+    @TableField(value = "meta_pass_rule")
+    private Boolean metaPassRule;
+
+    /**
+     * sort
+     */
+    @TableField(value = "sort")
+    private Integer sort;
+
+    /**
+     * component
+     */
+    @TableField(value = "component")
+    private String component;
+
+    /**
+     * redirect
+     */
+    @TableField(value = "redirect")
+    private String redirect;
+
+    /**
+     * pathParams
+     */
+    @TableField(value = "path_params")
+    private String pathParams;
+
+    @TableField(exist = false)
+    private List<TIntergrationPlatformMenu> children;
+
+}

+ 112 - 0
src/main/java/thyyxxk/webserver/entity/settings/TIntergrationPlatformMenu.java

@@ -0,0 +1,112 @@
+package thyyxxk.webserver.entity.settings;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@Data
+@TableName(value = "t_intergration_platform_menu")
+public class TIntergrationPlatformMenu implements Serializable {
+
+    private static final long serialVersionUID = 6268520426212542886L;
+
+    /**
+     * type
+     */
+    @TableField(value = "type")
+    private Integer type;
+
+    /**
+     * path
+     */
+    @TableField(value = "path")
+    private String path;
+
+    /**
+     * metaTitle
+     */
+    @TableField(value = "meta_title")
+    private String metaTitle;
+
+    /**
+     * metaIcon
+     */
+    @TableField(value = "meta_icon")
+    private String metaIcon;
+
+    /**
+     * parent
+     */
+    @TableField(value = "parent")
+    private Integer parent;
+
+    /**
+     * hideTabs
+     */
+    @TableField(value = "hide_tabs")
+    private Boolean hideTabs;
+
+    /**
+     * hideMenu
+     */
+    @TableField(value = "hide_menu")
+    private Boolean hideMenu;
+
+    /**
+     * sort
+     */
+    @TableField(value = "sort")
+    private Integer sort;
+
+    /**
+     * id
+     */
+    @TableField(value = "id")
+    private Integer id;
+
+    /**
+     * 文件路径使用@开头
+     */
+    @TableField(value = "component")
+    private String component;
+
+    /**
+     * router meta 数据
+     */
+    @TableField(value = "meta")
+    private String meta;
+
+    /**
+     * router name 必须是唯一的数据
+     */
+    @TableField(value = "name")
+    private String name;
+
+    /**
+     * 重定向
+     */
+    @TableField(value = "redirect")
+    private String redirect;
+
+    /**
+     * 重定向
+     */
+    @TableField(value = "path_params")
+    private String pathParams;
+
+
+    @TableField(exist = false)
+    private List<TIntergrationPlatformMenu> children;
+
+
+    public Integer getParentId() {
+        if (parent != null) {
+            return parent == 0 ? null : parent;
+        }
+        return null;
+    }
+
+}

+ 1 - 2
src/main/java/thyyxxk/webserver/service/RedisServer.java

@@ -20,8 +20,7 @@ public class RedisServer {
         redisTemplate.opsForValue().set(key, value);
     }
 
-    public <T>T getData(String key, Class<T> tClass) {
-//        return redisTemplate.opsForValue().get(key);
+    public <T> T getData(String key) {
         Object o = redisTemplate.opsForValue().get(key);
         if (o == null) {
             return null;

+ 1 - 1
src/main/java/thyyxxk/webserver/service/redislike/RedisLikeService.java

@@ -272,7 +272,7 @@ public class RedisLikeService {
         if (StringUtil.invalidValue(code)) {
             return null;
         }
-        UserInfo userInfo = redisServer.getData(StrUtil.format(US_INFO_KEY, code), UserInfo.class);
+        UserInfo userInfo = redisServer.getData(StrUtil.format(US_INFO_KEY, code));
         if (null == userInfo) {
             userInfo = dbUserInfo(code);
             setUserInfo(userInfo);

+ 39 - 0
src/main/java/thyyxxk/webserver/service/settings/MenuSettingsService.java

@@ -0,0 +1,39 @@
+package thyyxxk.webserver.service.settings;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import thyyxxk.webserver.dao.his.settings.MenuSettingsDao;
+import thyyxxk.webserver.entity.settings.IntergrationMenu;
+import thyyxxk.webserver.service.RedisServer;
+import thyyxxk.webserver.utils.TreeUtil;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@Slf4j
+public class MenuSettingsService {
+
+    private final MenuSettingsDao dao;
+    private final RedisServer redisServer;
+
+    public MenuSettingsService(MenuSettingsDao dao, RedisServer redisServer) {
+        this.dao = dao;
+        this.redisServer = redisServer;
+    }
+
+    @PostConstruct
+    public void menuPushRedis() {
+        redisServer.setData("IntergrationPlatformMenu", getMenuSettings());
+    }
+
+    public List<IntergrationMenu> getMenuSettings() {
+        return TreeUtil.ObjectTree(dao.getAll(), "id", "parentId");
+    }
+
+    public List<IntergrationMenu> getRedisMenuByCode(String code) {
+        return new ArrayList<>();
+    }
+
+}

+ 24 - 0
src/main/java/thyyxxk/webserver/utils/StringUtil.java

@@ -247,6 +247,30 @@ public class StringUtil {
         return propertyPlaceholderHelper.replacePlaceholders(str, map::get);
     }
 
+    /**
+     * 首字母大写(进行字母的ascii编码前移,效率是最高的)
+     *
+     * @param fieldName 需要转化的字符串
+     */
+    public static String getMethodName(String fieldName) {
+        char[] chars = fieldName.toCharArray();
+        chars[0] = toUpperCase(chars[0]);
+        return String.valueOf(chars);
+    }
+
+    /**
+     * 字符转成大写
+     *
+     * @param c 需要转化的字符
+     */
+    public static char toUpperCase(char c) {
+        if (97 <= c && c <= 122) {
+            c ^= 32;
+        }
+        return c;
+    }
+
+
     public static void main(String[] args) {
         Map<String, String> map = new HashMap<>();
         map.put("id", "123123123");

+ 40 - 4
src/main/java/thyyxxk/webserver/utils/TreeUtil.java

@@ -1,13 +1,12 @@
 package thyyxxk.webserver.utils;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.formula.functions.T;
 import thyyxxk.webserver.entity.login.VueMenu;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @description: 层级菜单工具
@@ -46,4 +45,41 @@ public class TreeUtil {
         }
         return resultList;
     }
+
+
+    public static <T> List<T> ObjectTree(List<T> tempList, String id, String parentId) {
+        id = "get" + StringUtil.getMethodName(id);
+        parentId = "get" + StringUtil.getMethodName(parentId);
+
+        List<T> resultList = new LinkedList<>();
+        Map<Object, T> treeMap = new HashMap<>(tempList.size());
+
+        for (T item : tempList) {
+            Object key = ReflectUtil.invoke(item, id);
+            treeMap.put(key, item);
+            Object parent = ReflectUtil.invoke(item, parentId);
+            if (parent == null) {
+                resultList.add(item);
+            }
+        }
+
+        for (T item : tempList) {
+            Object key = ReflectUtil.invoke(item, parentId);
+            T tree = treeMap.get(key);
+            if (null != tree) {
+                List<T> child = ReflectUtil.invoke(tree, "getChildren");
+                if (null == child) {
+                    ReflectUtil.invoke(tree, "setChildren", new ArrayList<>());
+                } else {
+                    child.add(item);
+                }
+            }
+
+        }
+
+        return resultList;
+
+    }
+
+
 }

+ 1 - 1
src/main/resources/application-cytest.yml

@@ -15,7 +15,7 @@ spring:
     cache: false
   datasource:
     dynamic:
-      primary: dev
+      primary: his
       strict: false
       datasource:
         his: