WXF 3 年 前
コミット
1e7315de36

+ 13 - 0
api-common/src/main/java/api/common/pojo/param/system/DictParam.java

@@ -0,0 +1,13 @@
+package api.common.pojo.param.system;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class DictParam {
+
+    @NotBlank(message = "参数dictTypes不能为空")
+    private String dictTypes;
+
+}

+ 22 - 0
api-common/src/main/java/api/common/pojo/po/system/DictPO.java

@@ -0,0 +1,22 @@
+package api.common.pojo.po.system;
+
+import api.common.pojo.common.CommonPO;
+import lombok.Data;
+
+@Data
+public class DictPO extends CommonPO {
+
+    //主键
+    private String id;
+    //父id
+    private String pid;
+    //字典类型
+    private String dictType;
+    //名称
+    private String dictName;
+    //编码
+    private String dictCode;
+    //序号
+    private String dictOrder;
+
+}

+ 87 - 0
api-common/src/main/java/api/common/util/ObjectUtil.java

@@ -0,0 +1,87 @@
+package api.common.util;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import java.util.*;
+
+public class ObjectUtil {
+
+    /**
+     * 空值判断
+     *
+     * @param obj
+     * @return
+     */
+    public static boolean isNull(Object obj) {
+        boolean isNullFlag = true;
+        if (obj != null) {
+            if (obj instanceof List) {
+                isNullFlag = isNull((List) obj);
+            } else if (obj instanceof Set) {
+                isNullFlag = isNull((Set) obj);
+            } else if (obj instanceof Object[]) {
+                isNullFlag = isNull((Object[]) ((Object[]) obj));
+            } else if (obj instanceof Map) {
+                isNullFlag = isNull((Map) obj);
+            } else if (obj instanceof String) {
+                isNullFlag = isNull((String) obj);
+            } else if (obj instanceof Integer) {
+                isNullFlag = isNull((Integer) obj);
+            } else if (obj instanceof Boolean) {
+                isNullFlag = isNull((Boolean) obj);
+            } else if (obj instanceof StringBuffer) {
+                isNullFlag = isNull((StringBuffer) obj);
+            } else if (obj instanceof JsonNode) {
+                isNullFlag = isNull((JsonNode) obj);
+            } else {
+                isNullFlag = false;
+            }
+        }
+        return isNullFlag;
+    }
+
+    public static boolean isNotNull(Object obj) {
+        return !isNull(obj);
+    }
+
+    public static boolean isNull(List<?> list) {
+        return list == null || list.size() == 0 || list.get(0) == null;
+    }
+
+    public static boolean isNull(Set<?> set) {
+        return set == null || set.size() == 0;
+    }
+
+    public static boolean isNull(Object[] objects) {
+        return objects == null || objects.length == 0;
+    }
+
+    public static boolean isNull(Map<?, ?> map) {
+        return map == null || map.isEmpty();
+    }
+
+    public static boolean isNull(String str) {
+        return str == null || "".equals(str.trim()) || "null".equalsIgnoreCase(str.trim()) || "undefined".equalsIgnoreCase(str.trim());
+    }
+
+    public static boolean isNull(Integer integer) {
+        return integer == null;
+    }
+
+    public static boolean isNull(Boolean bol) {
+        return bol == null;
+    }
+
+    public static boolean isNull(StringBuffer buffer) {
+        return buffer == null || buffer.length() == 0;
+    }
+
+    public static boolean isNull(JsonNode jsonNode) {
+        return jsonNode.isNull() || jsonNode.isEmpty();
+    }
+
+    public static String uuid() {
+        return UUID.randomUUID().toString().replace("-", "");
+    }
+
+}

+ 1 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/Application.java

@@ -8,5 +8,6 @@ public class Application {
 
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);
+        System.out.println("-------------启动成功----------------");
     }
 }

+ 36 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/config/GlobalExceptionHandler.java

@@ -0,0 +1,36 @@
+package com.css.simulation.resource.common.config;
+
+import api.common.pojo.common.ResponseBodyVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Scope;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.Objects;
+
+@ControllerAdvice
+@Slf4j
+@Scope("singleton")
+public class GlobalExceptionHandler {
+    /**
+     * 方法参数校验
+     */
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    @ResponseBody
+    public ResponseBodyVO<Object> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
+        log.error(e.getMessage(), e);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage());
+    }
+
+    /**
+     * 服务器错误异常统一处理
+     */
+    @ExceptionHandler(Exception.class)
+    @ResponseBody
+    public ResponseBodyVO<Object> handleException(Exception e) {
+        log.error(e.getMessage(), e);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "服务器错误!");
+    }
+}

+ 29 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/DictCtrl.java

@@ -0,0 +1,29 @@
+package com.css.simulation.resource.system.ctrl;
+
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.param.system.DictParam;
+import com.css.simulation.resource.system.service.DictService;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/dict")
+public class DictCtrl {
+
+    @Autowired
+    DictService dictService;
+
+    @RequestMapping("/refreshDicts")
+    @ResponseBody
+    public ResponseBodyVO refreshDicts(@RequestBody @Validated DictParam param) throws JsonProcessingException {
+        ResponseBodyVO<String> response = new ResponseBodyVO<String>(ResponseBodyVO.Response.SUCCESS);
+        response.setInfo(dictService.refreshDicts(param));
+        return response;
+    }
+
+}

+ 16 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/DictMapper.java

@@ -0,0 +1,16 @@
+package com.css.simulation.resource.system.mapper;
+
+import api.common.pojo.po.system.DictPO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface DictMapper {
+
+    List<DictPO> getDicts(List dictTypeList);
+
+}

+ 57 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/DictService.java

@@ -0,0 +1,57 @@
+package com.css.simulation.resource.system.service;
+
+import api.common.pojo.param.system.DictParam;
+import api.common.pojo.po.system.DictPO;
+import api.common.util.JsonUtil;
+import com.css.simulation.resource.system.mapper.DictMapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class DictService {
+
+    @Autowired
+    DictMapper dictMapper;
+
+    public String refreshDicts(DictParam param) throws JsonProcessingException {
+        String dictTypes = param.getDictTypes();
+        List<String> dictTypeList = Arrays.asList(dictTypes.split(","));
+        if(dictTypeList.size() == 0){//防止参数为","
+            dictTypeList = new ArrayList<String>();
+            dictTypeList.add("xxx");
+        }
+        if("all".equals(dictTypes)){//关键字all时刷新全部字典
+            dictTypeList = new ArrayList<String>();
+        }
+        //数据库取值
+        List<DictPO> DictPOlist = dictMapper.getDicts(dictTypeList);
+        //分组转换
+        Map<String, List<DictPO>> DictPOMap = DictPOlist.stream().collect(Collectors.groupingBy(DictPO::getDictType));
+        //放入缓存
+        Set<String> keySet = DictPOMap.keySet();
+        for (String key: keySet) {
+            List<DictPO> dictPOS = DictPOMap.get(key);
+            //list 字典
+            String dictList = JsonUtil.listToJson(dictPOS);
+            //放入缓存 TODO
+
+            //map 字典
+            Map<String, String> map = new HashMap();
+            for (DictPO dictPO: dictPOS) {
+                String code = dictPO.getDictCode();
+                String name = dictPO.getDictName();
+                map.put(code,name);
+            }
+            String dictMap = JsonUtil.beanToJson(map);
+            //放入缓存 TODO
+
+        }
+        //返回刷新成功的字典名称
+        return keySet.toString();
+    }
+}

+ 24 - 0
simulation-resource-server/src/main/resources/mapper/system/DictMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.css.simulation.resource.system.mapper.DictMapper" >
+
+
+    <select id="getDicts" parameterType="java.util.ArrayList" resultType="api.common.pojo.po.system.DictPO">
+        select
+          id,
+          pid,
+          dict_type,
+          dict_name,
+          dict_code,
+          dict_order
+        from system_dict d
+        where d.is_deleted = '0'
+        <foreach collection="list" item="item" index="index" open=" and d.dict_type in (" separator="," close=")">
+            <if test="item != null and item != ''">
+                #{item,jdbcType=VARCHAR}
+            </if>
+        </foreach>
+        order by d.dict_order
+    </select>
+
+</mapper>