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..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,18 +1,85 @@ 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.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; +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 void allCheckValidateThrow(T obj) { + Set> constraintViolations = validator.validate(obj); + if (constraintViolations.size() > 0) { + StringBuilder errorMsg = new StringBuilder(); + Iterator> iterator = constraintViolations.iterator(); + while (iterator.hasNext()) { + ConstraintViolation violation = iterator.next(); + //拼接异常信息 + 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 HashMap<>(); + } + //如果不是true,则抛异常 public static void isTrue(boolean expression, String msg) { if (!expression) { 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 2a0ebda..470df61 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 08dc7f2..d151e7d 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