From 30338520cf46159f66f4d67af0107b9aff1d8457 Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Fri, 6 Dec 2024 16:01:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=B8=8E=E9=83=A8=E9=97=A8=E6=A8=A1=E5=9D=97):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97=E7=9A=84?= =?UTF-8?q?bug=E5=B9=B6=E4=BB=8E=E6=96=B0=E5=BB=BA=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=B8=AD=E7=8B=AC=E7=AB=8B=E5=87=BA=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=99=84=E4=BB=B6=E6=8E=A5=E5=8F=A3=EF=BC=8C=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E6=A8=A1=E5=9D=97=E6=96=B0=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E6=A0=91=E8=BF=94=E5=9B=9E=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/jackson/JacksonConfig.java | 25 ++ .../framework/response/HttpStatusEnum.java | 93 ++++++ .../framework/response/ResponseResult.java | 265 ++++++++++++++++++ .../modules/notice/mapper/MessageMapper.java | 14 + .../notice/query/AdminMessageQuery.java | 39 +++ .../modules/notice/vo/AdminMessageVo.java | 55 ++++ 6 files changed, 491 insertions(+) create mode 100644 src/main/java/com/zsc/edu/gateway/framework/jackson/JacksonConfig.java create mode 100644 src/main/java/com/zsc/edu/gateway/framework/response/HttpStatusEnum.java create mode 100644 src/main/java/com/zsc/edu/gateway/framework/response/ResponseResult.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/notice/mapper/MessageMapper.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/notice/query/AdminMessageQuery.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/notice/vo/AdminMessageVo.java diff --git a/src/main/java/com/zsc/edu/gateway/framework/jackson/JacksonConfig.java b/src/main/java/com/zsc/edu/gateway/framework/jackson/JacksonConfig.java new file mode 100644 index 0000000..e216f8b --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/framework/jackson/JacksonConfig.java @@ -0,0 +1,25 @@ +package com.zsc.edu.gateway.framework.jackson; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; + +import java.text.SimpleDateFormat; + +@Configuration +public class JacksonConfig { + + + @Bean + public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { + return builder -> builder.serializationInclusion(JsonInclude.Include.NON_NULL) + .serializationInclusion(JsonInclude.Include.NON_EMPTY); + } +} diff --git a/src/main/java/com/zsc/edu/gateway/framework/response/HttpStatusEnum.java b/src/main/java/com/zsc/edu/gateway/framework/response/HttpStatusEnum.java new file mode 100644 index 0000000..89c36af --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/framework/response/HttpStatusEnum.java @@ -0,0 +1,93 @@ +package com.zsc.edu.gateway.framework.response; + +import lombok.Getter; + +/** + * Http状态返回枚举 + * + * @author javadog + **/ +@Getter +public enum HttpStatusEnum { + + + /** + * 操作成功 + */ + SUCCESS(200, "操作成功"), + /** + * 对象创建成功 + */ + CREATED(201, "对象创建成功"), + /** + * 请求已经被接受 + */ + ACCEPTED(202, "请求已经被接受"), + /** + * 操作已经执行成功,但是没有返回数据 + */ + NO_CONTENT(204, "操作已经执行成功,但是没有返回数据"), + /** + * 资源已被移除 + */ + MOVED_PERM(301, "资源已被移除"), + /** + * 重定向 + */ + SEE_OTHER(303, "重定向"), + /** + * 资源没有被修改 + */ + NOT_MODIFIED(304, "资源没有被修改"), + /** + * 参数列表错误(缺少,格式不匹配) + */ + BAD_REQUEST(400, "参数列表错误(缺少,格式不匹配)"), + /** + * 未授权 + */ + UNAUTHORIZED(401, "未授权"), + /** + * 访问受限,授权过期 + */ + FORBIDDEN(403, "访问受限,授权过期"), + /** + * 资源,服务未找到 + */ + NOT_FOUND(404, "资源,服务未找!"), + /** + * 不允许的http方法 + */ + BAD_METHOD(405, "不允许的http方法"), + /** + * 资源冲突,或者资源被锁 + */ + CONFLICT(409, "资源冲突,或者资源被锁"), + /** + * 不支持的数据,媒体类型 + */ + UNSUPPORTED_TYPE(415, "不支持的数据,媒体类型"), + /** + * 系统内部错误 + */ + ERROR(500, "系统内部错误"), + /** + * 接口未实现 + */ + NOT_IMPLEMENTED(501, "接口未实现"), + /** + * 系统警告消息 + */ + WARN(601, "系统警告消息"); + + private final Integer code; + private final String message; + + HttpStatusEnum(Integer code, String message) { + + + this.code = code; + this.message = message; + } +} + diff --git a/src/main/java/com/zsc/edu/gateway/framework/response/ResponseResult.java b/src/main/java/com/zsc/edu/gateway/framework/response/ResponseResult.java new file mode 100644 index 0000000..0356316 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/framework/response/ResponseResult.java @@ -0,0 +1,265 @@ +package com.zsc.edu.gateway.framework.response; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 返回结果集 + * + * @author javadog + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ResponseResult { + + + /** + * 状态码 + */ + private Integer code; + + /** + * 状态信息 + */ + private Boolean status; + + /** + * 返回信息 + */ + private String message; + + /** + * 数据 + */ + private T data; + + /** + * 全参数方法 + * + * @param code 状态码 + * @param status 状态 + * @param message 返回信息 + * @param data 返回数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + private static ResponseResult response(Integer code, Boolean status, String message, T data) { + + + ResponseResult responseResult = new ResponseResult<>(); + responseResult.setCode(code); + responseResult.setStatus(status); + responseResult.setMessage(message); + responseResult.setData(data); + return responseResult; + } + + /** + * 全参数方法 + * + * @param code 状态码 + * @param status 状态 + * @param message 返回信息 + * @param 泛型 + * @return {@link ResponseResult} + */ + private static ResponseResult response(Integer code, Boolean status, String message) { + + + ResponseResult responseResult = new ResponseResult<>(); + responseResult.setCode(code); + responseResult.setStatus(status); + responseResult.setMessage(message); + return responseResult; + } + + /** + * 成功返回(无参) + * + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success() { + +// return response(HttpStatus.OK.value(), true, HttpStatus.OK.getReasonPhrase(), null); + return response(HttpStatusEnum.SUCCESS.getCode(), true, HttpStatusEnum.SUCCESS.getMessage(), null); + } + + /** + * 成功返回(枚举参数) + * + * @param httpResponseEnum 枚举参数 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success(HttpStatusEnum httpResponseEnum) { + + + return response(httpResponseEnum.getCode(), true, httpResponseEnum.getMessage()); + } + + /** + * 成功返回(状态码+返回信息) + * + * @param code 状态码 + * @param message 返回信息 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success(Integer code, String message) { + + + return response(code, true, message); + } + + /** + * 成功返回(返回信息 + 数据) + * + * @param message 返回信息 + * @param data 数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success(String message, T data) { + + + return response(HttpStatusEnum.SUCCESS.getCode(), true, message, data); + } + + /** + * 成功返回(状态码+返回信息+数据) + * + * @param code 状态码 + * @param message 返回信息 + * @param data 数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success(Integer code, String message, T data) { + + + return response(code, true, message, data); + } + + /** + * 成功返回(数据) + * + * @param data 数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success(T data) { + + + return response(HttpStatusEnum.SUCCESS.getCode(), true, HttpStatusEnum.SUCCESS.getMessage(), data); + } + + /** + * 成功返回(返回信息) + * + * @param message 返回信息 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult success(String message) { + + + return response(HttpStatusEnum.SUCCESS.getCode(), true, message, null); + } + + /** + * 失败返回(无参) + * + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail() { + + + return response(HttpStatusEnum.ERROR.getCode(), false, HttpStatusEnum.ERROR.getMessage(), null); + } + + /** + * 失败返回(枚举) + * + * @param httpResponseEnum 枚举 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail(HttpStatusEnum httpResponseEnum) { + + + return response(httpResponseEnum.getCode(), false, httpResponseEnum.getMessage()); + } + + /** + * 失败返回(状态码+返回信息) + * + * @param code 状态码 + * @param message 返回信息 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail(Integer code, String message) { + + + return response(code, false, message); + } + + /** + * 失败返回(返回信息+数据) + * + * @param message 返回信息 + * @param data 数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail(String message, T data) { + + + return response(HttpStatusEnum.ERROR.getCode(), false, message, data); + } + + /** + * 失败返回(状态码+返回信息+数据) + * + * @param code 状态码 + * @param message 返回消息 + * @param data 数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail(Integer code, String message, T data) { + + + return response(code, false, message, data); + } + + /** + * 失败返回(数据) + * + * @param data 数据 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail(T data) { + + + return response(HttpStatusEnum.ERROR.getCode(), false, HttpStatusEnum.ERROR.getMessage(), data); + } + + /** + * 失败返回(返回信息) + * + * @param message 返回信息 + * @param 泛型 + * @return {@link ResponseResult} + */ + public static ResponseResult fail(String message) { + + + return response(HttpStatusEnum.ERROR.getCode(), false, message, null); + } +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/mapper/MessageMapper.java b/src/main/java/com/zsc/edu/gateway/modules/notice/mapper/MessageMapper.java new file mode 100644 index 0000000..b6158fb --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/mapper/MessageMapper.java @@ -0,0 +1,14 @@ +package com.zsc.edu.gateway.modules.notice.mapper; + +import com.zsc.edu.gateway.common.mapstruct.BaseMapper; +import com.zsc.edu.gateway.modules.notice.dto.UserMessageDto; +import com.zsc.edu.gateway.modules.notice.entity.Message; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** + * @author zhuang + */ +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface MessageMapper extends BaseMapper { +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/query/AdminMessageQuery.java b/src/main/java/com/zsc/edu/gateway/modules/notice/query/AdminMessageQuery.java new file mode 100644 index 0000000..2619b19 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/query/AdminMessageQuery.java @@ -0,0 +1,39 @@ +package com.zsc.edu.gateway.modules.notice.query; + +import com.zsc.edu.gateway.modules.notice.entity.MessageType; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +/** + * @author zhuang + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AdminMessageQuery { + /** + * 用户ID + */ + public Long userId; + + /** + * 标题,模糊查询 + */ + public String title; + + /** + * 消息创建时间区间起始 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public LocalDateTime createAtBegin; + + /** + * 消息创建时间区间终止 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public LocalDateTime createAtEnd; +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/vo/AdminMessageVo.java b/src/main/java/com/zsc/edu/gateway/modules/notice/vo/AdminMessageVo.java new file mode 100644 index 0000000..b6ec4ee --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/vo/AdminMessageVo.java @@ -0,0 +1,55 @@ +package com.zsc.edu.gateway.modules.notice.vo; + +import com.zsc.edu.gateway.modules.notice.entity.MessageType; +import lombok.Data; + +/** + * @author zhuang + */ +@Data +public class AdminMessageVo { + /** + * 用户消息id + */ + private Long id; + /** + * 接受用户数 + */ + private Long userCount; + /** + * 已读用户数 + */ + private Long readCount; + /** + * 消息类型 + */ + public MessageType type = MessageType.other; + /** + * 是否系统消息 + */ + public Boolean system; + /** + * 是否邮件 + */ + public Boolean email; + /** + * 是否短信 + */ + public Boolean sms; + /** + * 是否html + */ + public Boolean html; + /** + * 标题 + */ + public String title; + /** + * 内容 + */ + public String content; + /** + * 备注 + */ + private String remark; +} \ No newline at end of file