From f0b134801f297894cc6159270be54b4def7cf11d Mon Sep 17 00:00:00 2001
From: luoyb <412940104@qq.com>
Date: 星期二, 26 一月 2021 00:35:34 +0800
Subject: [PATCH] feat(人力资源微服务、通用工具包): 不良记录管理接口完善、通用工具增加

---
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/FieldInfo.java       |   34 ++++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/ReturnResult.java      |  142 +++++++++++++++++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/IResult.java           |   16 ++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/ResponseResult.java  |   23 ++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateSerializer.java       |   26 +++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/enums/ResultCodeEnum.java       |  111 +++++++++++++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeDeserializer.java |   34 ++++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateDeSerializer.java     |   35 ++++
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeSerializer.java   |   26 +++
 9 files changed, 447 insertions(+), 0 deletions(-)

diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/FieldInfo.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/FieldInfo.java
new file mode 100644
index 0000000..d7d88e5
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/FieldInfo.java
@@ -0,0 +1,34 @@
+package cc.mrbird.febs.common.core.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * name: FieldInfo
+ * package: cc.mrbird.febs.common.core.annotation
+ * description: 实体属性说明注解
+ * date: 2021-01-25 23:01
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+@Documented
+public @interface FieldInfo {
+    /**
+     * 字段名称
+     */
+    String name() default "";
+
+    /**
+     * 字段类型
+     */
+
+    String type() default "";
+
+    /**
+     * 字段说明
+     */
+    String explain() default "";
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/ResponseResult.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/ResponseResult.java
new file mode 100644
index 0000000..d79e402
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/ResponseResult.java
@@ -0,0 +1,23 @@
+package cc.mrbird.febs.common.core.annotation;
+
+import cc.mrbird.febs.common.core.response.IResult;
+import cc.mrbird.febs.common.core.response.ReturnResult;
+
+import java.lang.annotation.*;
+
+/**
+ * name: ResponseResult
+ * package: cc.mrbird.febs.common.core.annotation
+ * description: 统一返回结果注解
+ * date: 2021-01-25 23:29
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@Target({ ElementType.TYPE, ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface ResponseResult {
+    Class<? extends IResult> value() default ReturnResult.class;
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/enums/ResultCodeEnum.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/enums/ResultCodeEnum.java
new file mode 100644
index 0000000..ce001f3
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/enums/ResultCodeEnum.java
@@ -0,0 +1,111 @@
+package cc.mrbird.febs.common.core.enums;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * name: ResultCodeEnum
+ * package: cc.mrbird.febs.common.core.enums
+ * description: 统一返回结果码枚举
+ * date: 2021-01-25 23:12
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public enum ResultCodeEnum {
+    /* 成功状态码 */
+    SUCCESS(200, "请求成功"),
+
+    /* 参数错误:10001-19999 */
+    PARAM_IS_INVALID(10001, "参数无效"),
+    PARAM_IS_BLANK(10002, "参数为空"),
+    PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
+    PARAM_NOT_COMPLETE(10004, "参数缺失"),
+
+    /* 用户错误:20001-29999*/
+    USER_NOT_LOGGED_IN(20001, "用户未登录"),
+    USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
+    USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
+    USER_NOT_EXIST(20004, "用户不存在"),
+    USER_HAS_EXISTED(20005, "用户已存在"),
+    LOGIN_CREDENTIAL_EXISTED(20006, "凭证已存在"),
+
+    /* 业务错误:30001-39999 */
+    SPECIFIED_QUESTIONED_USER_NOT_EXIST(30001, "业务错误"),
+
+    /* 系统错误:40001-49999 */
+    SYSTEM_INNER_ERROR(40001, "系统繁忙,请稍后重试"),
+    BANK_NO_ANSWER(49999, "银行服务器应答超时"),
+
+    /* 数据错误:50001-599999 */
+    RESULT_DATA_NONE(50001, "数据未找到"),
+    DATA_IS_WRONG(50002, "数据有误"),
+    DATA_ALREADY_EXISTED(50003, "数据已存在"),
+
+    /* 接口错误:60001-69999 */
+    INTERFACE_INNER_INVOKE_ERROR(60001, "内部系统接口调用异常"),
+    INTERFACE_OUTTER_INVOKE_ERROR(60002, "外部系统接口调用异常"),
+    INTERFACE_FORBID_VISIT(60003, "该接口禁止访问"),
+    INTERFACE_ADDRESS_INVALID(60004, "接口地址无效"),
+    INTERFACE_REQUEST_TIMEOUT(60005, "接口请求超时"),
+    INTERFACE_EXCEED_LOAD(60006, "接口负载过高"),
+
+    /* 权限错误:70001-79999 */
+    PERMISSION_NO_ACCESS(70001, "无访问权限"),
+    RESOURCE_EXISTED(70002, "资源已存在"),
+    RESOURCE_NOT_EXISTED(70003, "资源不存在");
+
+    private final Integer code;
+
+    private final String message;
+
+    ResultCodeEnum(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer code() {
+        return this.code;
+    }
+
+    public String message() {
+        return this.message;
+    }
+
+    public static String getMessage(String name) {
+        for (ResultCodeEnum item : ResultCodeEnum.values()) {
+            if (item.name().equals(name)) {
+                return item.message;
+            }
+        }
+        return name;
+    }
+
+    public static Integer getCode(String name) {
+        for (ResultCodeEnum item : ResultCodeEnum.values()) {
+            if (item.name().equals(name)) {
+                return item.code;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return this.name();
+    }
+
+    /***
+     * 校验重复的code值
+     */
+    static void main(String[] args) {
+        ResultCodeEnum[] apiResultCodeEnums = ResultCodeEnum.values();
+        List<Integer> codeList = new ArrayList<>();
+        for (ResultCodeEnum apiResultCodeEnum : apiResultCodeEnums) {
+            if (!codeList.contains(apiResultCodeEnum.code)) {
+                codeList.add(apiResultCodeEnum.code());
+            }
+        }
+    }    
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/IResult.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/IResult.java
new file mode 100644
index 0000000..06435c1
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/IResult.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.common.core.response;
+
+import java.io.Serializable;
+
+/**
+ * name: IResult
+ * package: cc.mrbird.febs.common.core.response
+ * description: 统一响应返回结果接口
+ * date: 2021-01-25 23:18
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public interface IResult extends Serializable {
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/ReturnResult.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/ReturnResult.java
new file mode 100644
index 0000000..493162c
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/ReturnResult.java
@@ -0,0 +1,142 @@
+package cc.mrbird.febs.common.core.response;
+
+import cc.mrbird.febs.common.core.enums.ResultCodeEnum;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * name: ResponseResult
+ * package: cc.mrbird.febs.common.core.response
+ * description: 统一响应返回结果
+ * date: 2021-01-25 23:20
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ReturnResult implements IResult {
+
+    private static final long serialVersionUID = 6027404969238507190L;
+    /**
+     * 请求是否成功
+     */
+    private boolean success;
+
+    /**
+     * 请求成功或失败的结果码
+     */
+    private Integer code;
+
+    /**
+     * 请求成功或失败的提示消息
+     */
+    private String message;
+
+    /**
+     * 成功时返回的数据,失败时返回具体的异常信息
+     */
+    private Object data;
+
+    /**
+     * 返回成功
+     * <p>
+     * date 2020-06-18 23:38
+     *
+     * @return com.zd.api.standard.core.web.result.ReturnResult
+     * @author: luoyibo
+     */
+    public static ReturnResult success() {
+        ReturnResult result = new ReturnResult();
+        result.setResultCode(ResultCodeEnum.SUCCESS);
+        result.setMessage(ResultCodeEnum.SUCCESS.message());
+        result.setSuccess(true);
+        return result;
+    }
+
+    /**
+     * 返回成功,同时设置返回数据对象
+     * <p>
+     * date 2020-06-18 23:39
+     *
+     * @param data 返回数据对象
+     * @return com.zd.api.standard.core.web.result.ResponseResult
+     * @author: luoyibo
+     */
+    public static ReturnResult success(Object data) {
+        ReturnResult result = new ReturnResult();
+        result.setResultCode(ResultCodeEnum.SUCCESS);
+        result.setMessage(ResultCodeEnum.SUCCESS.message());
+        result.setSuccess(true);
+        result.setData(data);
+        return result;
+    }
+    /**
+     *
+     * 返回失败
+     *
+     * date 2021-01-25 23:25
+     * @author: luoyibo
+     * @param resultCodeEnum 结果码
+     * @return cc.mrbird.febs.common.core.response.ResponseResult
+     */
+    public static ReturnResult failure(ResultCodeEnum resultCodeEnum) {
+        ReturnResult result = new ReturnResult();
+        result.setResultCode(resultCodeEnum);
+        result.setSuccess(false);
+        return result;
+    }
+/**
+ *
+ * 返回失败
+ *
+ * date 2021-01-25 23:26
+ * @author: luoyibo
+ * @param resultCodeEnum 结果码
+ * @param data 返回数据
+ * @return cc.mrbird.febs.common.core.response.ResponseResult
+ */
+    public static ReturnResult failure(ResultCodeEnum resultCodeEnum, Object data) {
+        ReturnResult result = new ReturnResult();
+        result.setResultCode(resultCodeEnum);
+        result.setData(data);
+        result.setSuccess(false);
+        return result;
+    }
+    /**
+     *
+     * 返回失败
+     *
+     * date 2021-01-25 23:27
+     * @author: luoyibo
+     * @param resultCodeEnum 结果码
+     * @param message 提示消息
+     * @return cc.mrbird.febs.common.core.response.ResponseResult
+     */
+    public static ReturnResult failure(ResultCodeEnum resultCodeEnum, String message) {
+        ReturnResult result = new ReturnResult();
+        result.setCode(resultCodeEnum.code());
+        result.setMessage(message);
+        result.setSuccess(false);
+        return result;
+    }
+
+    /**
+     *
+     * 设置结果码
+     *
+     * date 2021-01-25 23:28
+     * @author: luoyibo
+     * @param code 1
+     * @return void
+     */
+    private void setResultCode(ResultCodeEnum code) {
+        this.code = code.code();
+        this.message = code.message();
+    }
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateDeSerializer.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateDeSerializer.java
new file mode 100644
index 0000000..9518e4a
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateDeSerializer.java
@@ -0,0 +1,35 @@
+package cc.mrbird.febs.common.core.utils;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * name: DateDeSerializer
+ * package: cc.mrbird.febs.common.core.utils
+ * description: 日期反序列化工具
+ * date: 2021-01-25 22:26
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public class DateDeSerializer extends JsonDeserializer<Date> {
+
+    @Override
+    public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
+        String date=jsonParser.getText();
+        try{
+            return format.parse(date);
+        } catch (ParseException e) {
+            throw new RuntimeException();
+        }
+    }
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateSerializer.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateSerializer.java
new file mode 100644
index 0000000..e3e7677
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateSerializer.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.common.core.utils;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * name: DateSerializer
+ * package: cc.mrbird.febs.common.core.utils
+ * description: 日期json序列化工具
+ * date: 2021-01-25 22:30
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public class DateSerializer extends JsonSerializer<Date> {
+    private static final String DATE_FORMAT = "yyyy-MM-dd";
+    @Override
+    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        jsonGenerator.writeString(DateUtil.getDateFormat(date, DATE_FORMAT));
+    }
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeDeserializer.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeDeserializer.java
new file mode 100644
index 0000000..be7cec1
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeDeserializer.java
@@ -0,0 +1,34 @@
+package cc.mrbird.febs.common.core.utils;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * name: DateTimeDeserializer
+ * package: cc.mrbird.febs.common.core.utils
+ * description: 日期时间json反序列化工具
+ * date: 2021-01-25 22:36
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public class DateTimeDeserializer extends JsonDeserializer<Date> {
+    @Override
+    public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String date=jsonParser.getText();
+        try{
+            return format.parse(date);
+        } catch (ParseException e) {
+            throw new RuntimeException();
+        }
+    }
+}
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeSerializer.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeSerializer.java
new file mode 100644
index 0000000..eeedc40
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeSerializer.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.common.core.utils;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * name: DateTimeSerializer
+ * package: cc.mrbird.febs.common.core.utils
+ * description: 日期时间格式json序列化工具
+ * date: 2021-01-25 22:34
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public class DateTimeSerializer extends JsonSerializer<Date> {
+    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
+    @Override
+    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        jsonGenerator.writeString(DateUtil.getDateFormat(date, DATE_FORMAT));
+    }
+}

--
Gitblit v1.8.0