febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/FieldInfo.java
New file @@ -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 ""; } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/annotation/ResponseResult.java
New file @@ -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; } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/enums/ResultCodeEnum.java
New file @@ -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()); } } } } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/IResult.java
New file @@ -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 { } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/response/ReturnResult.java
New file @@ -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(); } } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateDeSerializer.java
New file @@ -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(); } } } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateSerializer.java
New file @@ -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)); } } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeDeserializer.java
New file @@ -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(); } } } febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/DateTimeSerializer.java
New file @@ -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)); } }