Browse Source

Merge remote-tracking branch 'origin/dev/one' into dev/one

bijl 6 years ago
parent
commit
a333d3040f

+ 117 - 0
common/src/main/java/com/diagbot/util/EnumEntriesBuilder.java

@@ -0,0 +1,117 @@
+package com.diagbot.util;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2018/9/19 14:21
+ */
+public class EnumEntriesBuilder {
+    private Map<String, List<Entry>> json;
+
+    public EnumEntriesBuilder() {
+        json = new HashMap<>();
+    }
+
+    /**
+     * 按照enum值来封装options
+     */
+    public <E extends Enum<E> & KeyedNamed> EnumEntriesBuilder addEnums(String name, E... enums) {
+        return addEnums(name, build(enums));
+    }
+
+    public <E extends Enum<E>> EnumEntriesBuilder addEnums(String name, KeyedNamedAdapter<E> adapter, E... enums) {
+        List<Entry> entries = new ArrayList<>();
+        for (E e : enums) {
+            KeyedNamed keyedNamed = adapter.from(e);
+            entries.add(new Entry(keyedNamed.getName(), keyedNamed.getKey()));
+        }
+        return addEnums(name, entries);
+    }
+
+    /**
+     * 转换任意类型
+     */
+    public <E> EnumEntriesBuilder addEnums(String name, KeyedNamedAdapter<E> adapter, Iterable<E> iterable) {
+        List<Entry> entries = new ArrayList<>();
+        for (E t : iterable) {
+            KeyedNamed keyedNamed = adapter.from(t);
+            entries.add(new Entry(keyedNamed.getName(), keyedNamed.getKey()));
+        }
+        return addEnums(name, entries);
+    }
+
+
+    /**
+     * 按照key值来封装options
+     * <p/>
+     * 不建议使用该方法,以免传入一个不存在的key值
+     */
+    @Deprecated
+    public <E extends Enum<E> & KeyedNamed> EnumEntriesBuilder addEnums(String name, Class<E> clz, Integer... keys) {
+
+        List<Entry> entries = new ArrayList<>();
+        for (Integer key : keys) {
+            E e = EnumUtil.getEnum(key, clz);
+            if (e == null) {
+                throw new IllegalArgumentException(name + "对应的key:" + key + "不存在");
+            }
+            entries.add(new Entry(e.getName(), e.getKey()));
+        }
+        return addEnums(name, entries);
+    }
+
+    public EnumEntriesBuilder addEnums(String name, List<Entry> entries) {
+        json.put(name, entries);
+        return this;
+    }
+
+    public static <E extends Enum<E> & KeyedNamed> List<Entry> build(E... enums) {
+        List<Entry> enumEntries = new ArrayList<>();
+        for (E e : enums) {
+            enumEntries.add(new Entry(e.getName(), e.getKey()));
+        }
+        return enumEntries;
+    }
+
+    public Map<String, List<Entry>> build() {
+        return json;
+    }
+
+    /**
+     * 下拉框的option数据封装
+     *
+     * @author youmoo
+     */
+    @Data
+    public static class Entry<E> {
+        /**
+         * option text
+         */
+        private String name;
+        /**
+         * option value
+         */
+        private E key;
+
+        public Entry(String name, E key) {
+            this.name = name;
+            this.key = key;
+        }
+
+        public Entry() {
+
+        }
+    }
+
+    public interface KeyedNamedAdapter<E> {
+        KeyedNamed from(E e);
+    }
+}

+ 218 - 0
common/src/main/java/com/diagbot/util/EnumUtil.java

@@ -0,0 +1,218 @@
+package com.diagbot.util;
+
+import com.diagbot.core.KeyedNamed;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @Description: 工具类,主要用来根据状态的key获取对应的name以供显示
+ * @author: gaodm
+ * @time: 2018/9/19 14:21
+ */
+public class EnumUtil {
+    private EnumUtil() {
+    }
+
+    /**
+     * 根据key找到对应的Enum值
+     */
+    public static <T extends Enum<T> & KeyedNamed> T getEnum(int key, Class<T> clz) {
+        T[] values = clz.getEnumConstants();
+        for (T value : values) {
+            if (value.getKey() == key) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 根据key找到对应的name值
+     */
+    public static <T extends Enum<T> & KeyedNamed> String getName(int key, Class<T> clz) {
+        T t = getEnum(key, clz);
+        if (t != null) {
+            return t.getName();
+        }
+        return null;
+    }
+
+    /**
+     * 获取key值列表
+     *
+     * @param clz enum类
+     * @param <T>
+     * @return
+     */
+    public static <T extends Enum<T> & KeyedNamed> List<Integer> getKeys(Class<T> clz) {
+        List<Integer> keys = new LinkedList<>();
+        T[] values = clz.getEnumConstants();
+        for (T value : values) {
+            keys.add(value.getKey());
+        }
+        return keys;
+    }
+
+    /**
+     * 获取value值列表
+     *
+     * @param clz enum类
+     * @param <T>
+     * @return
+     */
+    public static <T extends Enum<T> & KeyedNamed> List<Integer> getValues(Class<T> clz) {
+        List<Integer> keys = new LinkedList<>();
+        T[] values = clz.getEnumConstants();
+        for (T value : values) {
+            keys.add(value.getKey());
+        }
+        return keys;
+    }
+
+    /**
+     * 获取enum列表
+     *
+     * @param clz enum类
+     * @param <T>
+     * @return
+     */
+    public static <T extends Enum<T> & KeyedNamed> List<T> getEnumList(Class<T> clz) {
+        return new ArrayList<>(Arrays.asList(clz.getEnumConstants()));
+    }
+
+    /**
+     * @param key     要判断的值
+     * @param enumObj 要比较的枚举
+     * @param <T>
+     * @return 如果key等于enumObj的key值则返回true
+     */
+    public static <T extends Enum<T> & KeyedNamed> boolean keyEquals(Integer key, T enumObj) {
+        return key != null && key == enumObj.getKey();
+    }
+
+    /**
+     * @param key 要判断的值
+     * @param e1  要判断的第一个枚举
+     * @param e2  要判断的第二个枚举
+     * @return 如果key等于e1或e2的key则返回true
+     */
+    public static <T extends Enum<T> & KeyedNamed> boolean keyIn(Integer key, T e1, T e2) {
+        if (key == null) {
+            return false;
+        }
+        return key == e1.getKey() || key == e2.getKey();
+    }
+
+    /**
+     * @param key 要判断的值
+     * @param e1  要判断的第一个枚举
+     * @param e2  要判断的第二个枚举
+     * @param e3  要判断的第三个枚举
+     * @return 如果key等于e1或e2或e3的key则返回true
+     */
+    public static <T extends Enum<T> & KeyedNamed> boolean keyIn(Integer key, T e1, T e2, T e3) {
+        if (key == null) {
+            return false;
+        }
+        return key == e1.getKey() || key == e2.getKey() || key == e3.getKey();
+    }
+
+    /**
+     * @param key 要判断的值
+     * @param e1  要判断的第一个枚举
+     * @param e2  要判断的第二个枚举
+     * @param e3  要判断的第三个枚举
+     * @param e4  要判断的第四个枚举
+     * @return 如果key等于e1或e2或e3或e4的key则返回true
+     */
+    public static <T extends Enum<T> & KeyedNamed> boolean keyIn(Integer key, T e1, T e2, T e3, T e4) {
+        if (key == null) {
+            return false;
+        }
+        return key == e1.getKey() || key == e2.getKey() || key == e3.getKey() || key == e4.getKey();
+    }
+
+    /**
+     * @param key   要判断的值
+     * @param enums 要判断的枚举
+     * @return 如果key等于e1的key或者在enums的key值列表里则返回true
+     */
+    public static <T extends Enum<T> & KeyedNamed> boolean keyIn(Integer key, T... enums) {
+        if (key == null) {
+            return false;
+        }
+        for (T enumObj : enums) {
+            if (key == enumObj.getKey()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * @param key   要判断的值
+     * @param enums 要判断的枚举
+     * @param <T>
+     * @return 如果key在enums的key值列表里则返回true
+     */
+    public static <T extends Enum<T> & KeyedNamed> boolean keyIn(Integer key, Collection<T> enums) {
+        if (key == null) {
+            return false;
+        }
+        for (T enumObj : enums) {
+            if (key == enumObj.getKey()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 返回name列表
+     *
+     * @param enums 枚举集合
+     * @param <T>
+     * @return 返回name列表
+     */
+    public static <T extends Enum<T> & KeyedNamed> List<String> getNames(Collection<T> enums) {
+        List<String> list = new ArrayList<>();
+        for (T enumObj : enums) {
+            list.add(enumObj.getName());
+        }
+        return list;
+    }
+
+    /**
+     * 返回key列表
+     *
+     * @param enums
+     * @param <T>
+     * @return 返回key列表
+     */
+    public static <T extends Enum<T> & KeyedNamed> List<Integer> getKeys(T... enums) {
+        List<Integer> list = new ArrayList<>();
+        for (T enumObj : enums) {
+            list.add(enumObj.getKey());
+        }
+        return list;
+    }
+
+    /**
+     * 返回key列表
+     *
+     * @param enums 枚举集合
+     * @param <T>
+     * @return 返回key列表
+     */
+    public static <T extends Enum<T> & KeyedNamed> List<Integer> getKeys(Collection<T> enums) {
+        List<Integer> list = new ArrayList<>();
+        for (T enumObj : enums) {
+            list.add(enumObj.getKey());
+        }
+        return list;
+    }
+}

+ 1 - 0
diagbotman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -27,6 +27,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*",".*v2.*",".*webjars.*","/druid.*","/actuator.*","/hystrix.*"
                 .regexMatchers(".*swagger.*",".*v2.*",".*webjars.*","/druid.*","/actuator.*","/hystrix.*"
                         ,"/service_filter/getAll", "/serviceToken/hasPermission").permitAll()
                         ,"/service_filter/getAll", "/serviceToken/hasPermission").permitAll()
+                .antMatchers("/getDiagbotManEnumsData").permitAll()
                 .antMatchers("/**").authenticated();
                 .antMatchers("/**").authenticated();
 //        .antMatchers("/**").permitAll();
 //        .antMatchers("/**").permitAll();
     }
     }

+ 1 - 0
diagbotman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -34,6 +34,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                     || matchers("/druid/**", request)
                     || matchers("/druid/**", request)
                     || matchers("/actuator/**", request)
                     || matchers("/actuator/**", request)
                     || matchers("/hystrix/**", request)
                     || matchers("/hystrix/**", request)
+                    || matchers("/getDiagbotManEnumsData", request)
                     || matchers("/service_filter/getAll", request)
                     || matchers("/service_filter/getAll", request)
                     || matchers("/serviceToken/hasPermission", request)
                     || matchers("/serviceToken/hasPermission", request)
                     || matchers("/", request)){
                     || matchers("/", request)){

+ 25 - 0
diagbotman-service/src/main/java/com/diagbot/facade/EnumsDataFacade.java

@@ -0,0 +1,25 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.EnumsDataService;
+import com.diagbot.util.EnumEntriesBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据装饰类
+ * @author: gaodm
+ * @time: 2018/9/19 14:28
+ */
+@Component
+public class EnumsDataFacade {
+    @Autowired
+    private EnumsDataService enumsDataService;
+
+    public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData(){
+        return enumsDataService.getEnumsData();
+    }
+
+}

+ 15 - 0
diagbotman-service/src/main/java/com/diagbot/service/EnumsDataService.java

@@ -0,0 +1,15 @@
+package com.diagbot.service;
+
+import com.diagbot.util.EnumEntriesBuilder;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据接口类
+ * @author: gaodm
+ * @time: 2018/9/19 14:25
+ */
+public interface EnumsDataService {
+    Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData();
+}

+ 27 - 0
diagbotman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java

@@ -0,0 +1,27 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.enums.StatusEnum;
+import com.diagbot.enums.TokenTypeEnum;
+import com.diagbot.service.EnumsDataService;
+import com.diagbot.util.EnumEntriesBuilder;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据接口是实现类
+ * @author: gaodm
+ * @time: 2018/9/19 14:27
+ */
+@Service
+public class EnumsDataServiceImpl implements EnumsDataService {
+    @Override
+    public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData(){
+        Map<String, List<EnumEntriesBuilder.Entry>> enumMap = new EnumEntriesBuilder()
+                .addEnums("statusEnum", StatusEnum.values())
+                .addEnums("tokenTypeEnum", TokenTypeEnum.values())
+                .build();
+        return enumMap;
+    }
+}

+ 34 - 0
diagbotman-service/src/main/java/com/diagbot/web/EnumsController.java

@@ -0,0 +1,34 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.EnumsDataFacade;
+import com.diagbot.util.EnumEntriesBuilder;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 产品中心枚举数据获取类
+ * @author: gaodm
+ * @time: 2018/9/19 14:32
+ */
+@RestController
+@Api(value="产品中心枚举数据获取API", tags={"产品中心枚举数据获取API"})
+public class EnumsController {
+    @Autowired
+    private EnumsDataFacade enumsDataFacade;
+
+    @ApiOperation(value = "产品中心枚举数据获取",
+            notes = "产品中心枚举数据获取")
+    @PostMapping("/getDiagbotManEnumsData")
+    @SysLogger("getDiagbotManEnumsData")
+    public RespDTO<Map<String, List<EnumEntriesBuilder.Entry>>> getEnumsData(){
+        return RespDTO.onSuc(enumsDataFacade.getEnumsData());
+    }
+}

+ 1 - 0
user-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -32,6 +32,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/userver/getSmsWithResetPassword").permitAll()
                 .antMatchers("/userver/getSmsWithResetPassword").permitAll()
                 .antMatchers("/userver/verifySmsVerification").permitAll()
                 .antMatchers("/userver/verifySmsVerification").permitAll()
                 .antMatchers("/user/resetPassword").permitAll()
                 .antMatchers("/user/resetPassword").permitAll()
+                .antMatchers("/getUserEnumsData").permitAll()
                 .antMatchers("/userInfo/getUserInfoPag").permitAll()
                 .antMatchers("/userInfo/getUserInfoPag").permitAll()
                 .antMatchers("/user/getPermission").permitAll()
                 .antMatchers("/user/getPermission").permitAll()
                 .antMatchers("/userInfo/updateUserInfoAll").permitAll()
                 .antMatchers("/userInfo/updateUserInfoAll").permitAll()

+ 1 - 0
user-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -46,6 +46,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/userver/getSmsWithRegister", request)
                 || matchers("/userver/getSmsWithRegister", request)
                 || matchers("/userver/getSmsWithResetPassword", request)
                 || matchers("/userver/getSmsWithResetPassword", request)
                 || matchers("/userver/verifySmsVerification", request)
                 || matchers("/userver/verifySmsVerification", request)
+                || matchers("/getUserEnumsData", request)
                 || matchers("/userInfo/getUserInfoPag", request)
                 || matchers("/userInfo/getUserInfoPag", request)
                 || matchers("/user/getPermission", request)
                 || matchers("/user/getPermission", request)
                 || matchers("/userInfo/updateUserInfoAll", request)
                 || matchers("/userInfo/updateUserInfoAll", request)

+ 25 - 0
user-service/src/main/java/com/diagbot/facade/EnumsDataFacade.java

@@ -0,0 +1,25 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.EnumsDataService;
+import com.diagbot.util.EnumEntriesBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据装饰类
+ * @author: gaodm
+ * @time: 2018/9/19 14:28
+ */
+@Component
+public class EnumsDataFacade {
+    @Autowired
+    private EnumsDataService enumsDataService;
+
+    public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData(){
+        return enumsDataService.getEnumsData();
+    }
+
+}

+ 15 - 0
user-service/src/main/java/com/diagbot/service/EnumsDataService.java

@@ -0,0 +1,15 @@
+package com.diagbot.service;
+
+import com.diagbot.util.EnumEntriesBuilder;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据接口类
+ * @author: gaodm
+ * @time: 2018/9/19 14:25
+ */
+public interface EnumsDataService {
+    Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData();
+}

+ 28 - 0
user-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java

@@ -0,0 +1,28 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.RespDTO;
+import com.diagbot.enums.AuthStatusEnum;
+import com.diagbot.enums.OrganizationTypeEnum;
+import com.diagbot.service.EnumsDataService;
+import com.diagbot.util.EnumEntriesBuilder;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据接口是实现类
+ * @author: gaodm
+ * @time: 2018/9/19 14:27
+ */
+@Service
+public class EnumsDataServiceImpl implements EnumsDataService {
+    @Override
+    public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData(){
+        Map<String, List<EnumEntriesBuilder.Entry>> enumMap = new EnumEntriesBuilder()
+                .addEnums("authStatusEnum", AuthStatusEnum.values())
+                .addEnums("organizationTypeEnum", OrganizationTypeEnum.values())
+                .build();
+        return enumMap;
+    }
+}

+ 34 - 0
user-service/src/main/java/com/diagbot/web/EnumsController.java

@@ -0,0 +1,34 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.EnumsDataFacade;
+import com.diagbot.util.EnumEntriesBuilder;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 用户枚举数据获取类
+ * @author: gaodm
+ * @time: 2018/9/19 14:32
+ */
+@RestController
+@Api(value="用户枚举数据获取API", tags={"用户枚举数据获取API"})
+public class EnumsController {
+    @Autowired
+    private EnumsDataFacade enumsDataFacade;
+
+    @ApiOperation(value = "用户枚举数据获取",
+            notes = "用户枚举数据获取")
+    @PostMapping("/getUserEnumsData")
+    @SysLogger("getUserEnumsData")
+    public RespDTO<Map<String, List<EnumEntriesBuilder.Entry>>> getEnumsData(){
+        return RespDTO.onSuc(enumsDataFacade.getEnumsData());
+    }
+}