From a0183d12658d8c60651f34268b67fae29d8d47cc Mon Sep 17 00:00:00 2001 From: HandsomeNo2 <2935158192@qq.com> Date: Wed, 28 Jun 2023 23:53:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/common/utils/AssertUtil.java | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java index 77e5102..9424a6a 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java @@ -3,16 +3,63 @@ package com.abin.mallchat.common.common.utils; import cn.hutool.core.util.ObjectUtil; import com.abin.mallchat.common.common.exception.BusinessErrorEnum; import com.abin.mallchat.common.common.exception.BusinessException; +import com.abin.mallchat.common.common.exception.CommonErrorEnum; import com.abin.mallchat.common.common.exception.ErrorEnum; +import org.hibernate.validator.HibernateValidator; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; import java.text.MessageFormat; -import java.util.Objects; +import java.util.*; /** * 校验工具类 */ public class AssertUtil { + /** + * 校验到失败就结束 + */ + private static Validator failFastValidator = Validation.byProvider(HibernateValidator.class) + .configure() + .failFast(true) + .buildValidatorFactory().getValidator(); + + /** + * 全部校验 + */ + private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); + + /** + * 注解验证参数(校验到失败就结束) + * @param obj + */ + public static void fastFailValidate(T obj) { + Set> constraintViolations = failFastValidator.validate(obj); + if (constraintViolations.size() > 0) { + throwException(CommonErrorEnum.PARAM_VALID,constraintViolations.iterator().next().getMessage()); + } + } + + /** + * 注解验证参数(全部校验,返回异常信息集合) + * @param obj + */ + public static List allCheckValidate(T obj) { + Set> constraintViolations = validator.validate(obj); + if (constraintViolations.size() > 0) { + List errorMessages = new LinkedList(); + Iterator> iterator = constraintViolations.iterator(); + while (iterator.hasNext()) { + ConstraintViolation violation = iterator.next(); + errorMessages.add(violation.getMessage()); + } + return errorMessages; + } + return new LinkedList(); + } + //如果不是true,则抛异常 public static void isTrue(boolean expression, String msg) { if (!expression) { From c602c6abc68f85514a48cb9ab534e0891b5e8384 Mon Sep 17 00:00:00 2001 From: HandsomeNo2 <2935158192@qq.com> Date: Fri, 30 Jun 2023 14:56:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/common/utils/AssertUtil.java | 38 ++++++++++++++----- .../domain/vo/request/msg/TextMsgReq.java | 5 ++- .../service/strategy/msg/FileMsgHandler.java | 3 ++ .../service/strategy/msg/ImgMsgHandler.java | 3 ++ .../service/strategy/msg/SoundMsgHandler.java | 3 ++ .../service/strategy/msg/TextMsgHandler.java | 3 +- .../service/strategy/msg/VideoMsgHandler.java | 3 ++ 7 files changed, 46 insertions(+), 12 deletions(-) diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java index 9424a6a..81956cf 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/AssertUtil.java @@ -1,11 +1,11 @@ package com.abin.mallchat.common.common.utils; import cn.hutool.core.util.ObjectUtil; -import com.abin.mallchat.common.common.exception.BusinessErrorEnum; -import com.abin.mallchat.common.common.exception.BusinessException; -import com.abin.mallchat.common.common.exception.CommonErrorEnum; -import com.abin.mallchat.common.common.exception.ErrorEnum; +import com.abin.mallchat.common.common.exception.*; +import lombok.SneakyThrows; import org.hibernate.validator.HibernateValidator; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; import javax.validation.ConstraintViolation; import javax.validation.Validation; @@ -43,21 +43,41 @@ public class AssertUtil { } /** - * 注解验证参数(全部校验,返回异常信息集合) + * 注解验证参数(全部校验,抛出异常) * @param obj */ - public static List allCheckValidate(T obj) { + public static void allCheckValidateThrow(T obj) { Set> constraintViolations = validator.validate(obj); if (constraintViolations.size() > 0) { - List errorMessages = new LinkedList(); + StringBuilder errorMsg = new StringBuilder(); Iterator> iterator = constraintViolations.iterator(); while (iterator.hasNext()) { ConstraintViolation violation = iterator.next(); - errorMessages.add(violation.getMessage()); + //拼接异常信息 + errorMsg.append(violation.getPropertyPath().toString()).append(":").append(violation.getMessage()).append(","); + } + //去掉最后一个逗号 + throwException(errorMsg.toString().substring(0,errorMsg.length()-1)); + } + } + + + /** + * 注解验证参数(全部校验,返回异常信息集合) + * @param obj + */ + public static Map allCheckValidate(T obj) { + Set> constraintViolations = validator.validate(obj); + if (constraintViolations.size() > 0) { + Map errorMessages= new HashMap<>(); + Iterator> iterator = constraintViolations.iterator(); + while (iterator.hasNext()) { + ConstraintViolation violation = iterator.next(); + errorMessages.put(violation.getPropertyPath().toString(),violation.getMessage()); } return errorMessages; } - return new LinkedList(); + return new HashMap<>(); } //如果不是true,则抛异常 diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/msg/TextMsgReq.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/msg/TextMsgReq.java index a58d6b8..05d9abf 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/msg/TextMsgReq.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/msg/TextMsgReq.java @@ -5,7 +5,8 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; - +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.util.List; /** @@ -19,6 +20,8 @@ import java.util.List; @NoArgsConstructor public class TextMsgReq { + @NotBlank(message = "内容不能为空") + @Size(max = 5,message = "消息内容过长,服务器扛不住啊,兄dei") @ApiModelProperty("消息内容") private String content; diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/FileMsgHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/FileMsgHandler.java index 529c3bf..0ce1c21 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/FileMsgHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/FileMsgHandler.java @@ -6,6 +6,7 @@ import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.msg.FileMsgDTO; import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra; import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum; +import com.abin.mallchat.common.common.utils.AssertUtil; import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -29,6 +30,8 @@ public class FileMsgHandler extends AbstractMsgHandler { @Override public void checkMsg(ChatMessageReq request, Long uid) { + FileMsgDTO body = BeanUtil.toBean(request.getBody(), FileMsgDTO.class); + AssertUtil.allCheckValidateThrow(body); } @Override diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/ImgMsgHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/ImgMsgHandler.java index 91ae4f9..6e2cf98 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/ImgMsgHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/ImgMsgHandler.java @@ -6,6 +6,7 @@ import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.msg.ImgMsgDTO; import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra; import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum; +import com.abin.mallchat.common.common.utils.AssertUtil; import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -29,6 +30,8 @@ public class ImgMsgHandler extends AbstractMsgHandler { @Override public void checkMsg(ChatMessageReq request, Long uid) { + ImgMsgDTO body = BeanUtil.toBean(request.getBody(), ImgMsgDTO.class); + AssertUtil.allCheckValidateThrow(body); } @Override diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/SoundMsgHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/SoundMsgHandler.java index 84aae0d..4cbcf3d 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/SoundMsgHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/SoundMsgHandler.java @@ -6,6 +6,7 @@ import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra; import com.abin.mallchat.common.chat.domain.entity.msg.SoundMsgDTO; import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum; +import com.abin.mallchat.common.common.utils.AssertUtil; import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -29,6 +30,8 @@ public class SoundMsgHandler extends AbstractMsgHandler { @Override public void checkMsg(ChatMessageReq request, Long uid) { + SoundMsgDTO body = BeanUtil.toBean(request.getBody(), SoundMsgDTO.class); + AssertUtil.allCheckValidateThrow(body); } @Override diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/TextMsgHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/TextMsgHandler.java index 461ed88..0578521 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/TextMsgHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/TextMsgHandler.java @@ -57,8 +57,7 @@ public class TextMsgHandler extends AbstractMsgHandler { @Override public void checkMsg(ChatMessageReq request, Long uid) { TextMsgReq body = BeanUtil.toBean(request.getBody(), TextMsgReq.class); - AssertUtil.isNotEmpty(body.getContent(), "内容不能为空"); - AssertUtil.isTrue(body.getContent().length() < 500, "消息内容过长,服务器扛不住啊,兄dei"); + AssertUtil.allCheckValidateThrow(body); //校验下回复消息 if (Objects.nonNull(body.getReplyMsgId())) { Message replyMsg = messageDao.getById(body.getReplyMsgId()); diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/VideoMsgHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/VideoMsgHandler.java index ae967c7..f2bef5f 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/VideoMsgHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/strategy/msg/VideoMsgHandler.java @@ -6,6 +6,7 @@ import com.abin.mallchat.common.chat.domain.entity.Message; import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra; import com.abin.mallchat.common.chat.domain.entity.msg.VideoMsgDTO; import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum; +import com.abin.mallchat.common.common.utils.AssertUtil; import com.abin.mallchat.custom.chat.domain.vo.request.ChatMessageReq; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -29,6 +30,8 @@ public class VideoMsgHandler extends AbstractMsgHandler { @Override public void checkMsg(ChatMessageReq request, Long uid) { + VideoMsgDTO body = BeanUtil.toBean(request.getBody(), VideoMsgDTO.class); + AssertUtil.allCheckValidateThrow(body); } @Override