tsurumure 8 mesi fa
parent
commit
a52b6ac43f

+ 1 - 1
src/main/java/com/backendsys/entity/Cms/CmsArticleTranslationsDTO.java

@@ -14,7 +14,7 @@ public class CmsArticleTranslationsDTO {
     @NotNull(message="article_id 不能为空")
     private Long article_id;
 
-    @NotEmpty(message="语言不能为空")
+    @NotEmpty(message="language 不肥为空")
     private String language;
 
     @Size(max = 100, message = "资讯标题长度不超过 {max} 字符")

+ 1 - 1
src/main/java/com/backendsys/entity/Cms/CmsPageTranslationsDTO.java

@@ -14,7 +14,7 @@ public class CmsPageTranslationsDTO {
     @NotNull(message="page_id 不能为空")
     private Long page_id;
 
-    @NotEmpty(message="语言不能为空")
+    @NotEmpty(message="language 不肥为空")
     private String language;
 
     @Size(max = 100, message = "内容标题长度不超过 {max} 字符")

+ 2 - 2
src/main/java/com/backendsys/modules/cms/article/entity/ArticleCategory.java

@@ -41,8 +41,8 @@ public class ArticleCategory {
     @NotEmpty(message="内容不能为空", groups = { Create.class, Update.class})
     private List<ArticleCategoryI18n> translations;
 
-    @Range(min = 1, max = 9999, message = "排序必须在 {min} 到 {max} 之间", groups = {CmsArticleCategoryDTO.Create.class, CmsArticleCategoryDTO.Update.class})
+    @Range(min = 1, max = 9999, message = "排序必须在 {min} 到 {max} 之间", groups = { Create.class, Update.class })
     private Integer sort;
-    @RangeArray(message="状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = {CmsArticleCategoryDTO.Create.class, CmsArticleCategoryDTO.Update.class})
+    @RangeArray(message="状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = { Create.class, Update.class })
     private Integer status;
 }

+ 5 - 8
src/main/java/com/backendsys/modules/cms/article/entity/ArticleCategoryI18n.java

@@ -1,7 +1,5 @@
 package com.backendsys.modules.cms.article.entity;
 
-import com.backendsys.entity.Cms.CmsArticleCategoryDTO;
-import com.backendsys.entity.validator.RangeArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -11,7 +9,6 @@ import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
-import org.hibernate.validator.constraints.Range;
 
 @Data
 @TableName("cms_article_category_i18n")
@@ -26,14 +23,14 @@ public class ArticleCategoryI18n {
     private Long id;
 
     @TableField("id")
-    @NotNull(message="article_category_id 不能为空", groups = { Detail.class, Update.class })
+    @NotNull(message="(translations) article_category_id 不能为空", groups = { Detail.class, Update.class })
     private Long article_category_id;
-    @NotEmpty(message="语言不能为空")
+    @NotEmpty(message="(translations) language 不能为空")
     private String language;
 
-    @Size(max = 20, message = "资讯分类名称长度不超过 {max} 字符", groups = {CmsArticleCategoryDTO.Create.class, CmsArticleCategoryDTO.Update.class})
-    @NotBlank(message="资讯分类名称不能为空", groups = {CmsArticleCategoryDTO.Create.class, CmsArticleCategoryDTO.Update.class, })
+    @Size(max = 20, message = "资讯分类名称长度不超过 {max} 字符", groups = { Create.class, Update.class})
+    @NotBlank(message="(translations) 资讯分类名称不能为空", groups = { Create.class, Update.class, })
     private String category_name;
-    @Size(max = 200, message = "资讯分类描述长度不超过 {max} 字符", groups = {CmsArticleCategoryDTO.Create.class, CmsArticleCategoryDTO.Update.class})
+    @Size(max = 200, message = "(translations) 资讯分类描述长度不超过 {max} 字符", groups = { Create.class, Update.class})
     private String category_description;
 }

+ 1 - 1
src/main/java/com/backendsys/modules/cms/article/entity/ArticleI18n.java

@@ -16,7 +16,7 @@ public class ArticleI18n {
 
     @NotNull(message="article_id 不能为空")
     private Long article_id;
-    @NotEmpty(message="语言不能为空")
+    @NotEmpty(message="language 不肥为空")
     private String language;
 
     @Size(max = 100, message = "资讯标题长度不超过 {max} 字符")

+ 16 - 1
src/main/java/com/backendsys/modules/cms/article/service/impl/ArticleCategoryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.backendsys.modules.cms.article.service.impl;
 
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.cms.article.dao.ArticleCategoryDao;
 import com.backendsys.modules.cms.article.dao.ArticleCategoryDao;
@@ -10,17 +11,23 @@ import com.backendsys.modules.cms.article.entity.ArticleCategory;
 import com.backendsys.modules.cms.article.entity.ArticleCategoryI18n;
 import com.backendsys.modules.cms.article.service.ArticleCategoryService;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
+import com.backendsys.modules.common.utils.ValidationUtil;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service
@@ -65,7 +72,15 @@ public class ArticleCategoryServiceImpl implements ArticleCategoryService {
 
         // 批量插入 (翻译字段)
         List<ArticleCategoryI18n> translations = articleCategory.getTranslations().stream()
-            .map(t -> { t.setArticle_category_id(article_category_id); return t; })
+//            .peek(item -> {
+//                // 参数校验
+//                Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
+//                Set<ConstraintViolation<ArticleCategoryI18n>> violations = validator.validate(item);
+//                if (!violations.isEmpty()) throw new CustException(violations.iterator().next().getMessage());
+//            })
+//            .peek(ValidationUtil::validateObject)
+            .peek(item -> { ValidationUtil.validateObject(item, ArticleCategoryI18n.Create.class); })
+            .map(item -> { item.setArticle_category_id(article_category_id); return item; })
             .collect(Collectors.toList());
         articleCategoryI18nDao.insertBatch(translations);
 

+ 13 - 1
src/main/java/com/backendsys/modules/cms/article/service/impl/ArticleServiceImpl.java

@@ -12,12 +12,16 @@ import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service
@@ -67,9 +71,17 @@ public class ArticleServiceImpl implements ArticleService {
 
         Long article_id = article.getId();
 
+
+
         // 批量插入 (翻译字段)
         List<ArticleI18n> translations = article.getTranslations().stream()
-            .map(t -> { t.setArticle_id(article_id); return t; })
+            .peek(item -> {
+                // 参数校验
+                Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
+                Set<ConstraintViolation<ArticleI18n>> violations = validator.validate(item);
+                if (!violations.isEmpty()) throw new CustException(violations.iterator().next().getMessage());
+            })
+            .map(item -> { item.setArticle_id(article_id); return item; })
             .collect(Collectors.toList());
         articleI18nDao.insertBatch(translations);
 

+ 1 - 1
src/main/java/com/backendsys/modules/cms/navigation/entity/NavigationI18n.java

@@ -18,7 +18,7 @@ public class NavigationI18n {
     @Size(max = 20, message = "菜单名称长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private Long navigation_id;
 
-    @NotEmpty(message="语言不能为空")
+    @NotEmpty(message="language 不肥为空")
     private String language;
     @Size(max = 20, message = "菜单名称长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private String navigation_name;

+ 27 - 0
src/main/java/com/backendsys/modules/common/utils/ValidationUtil.java

@@ -0,0 +1,27 @@
+package com.backendsys.modules.common.utils;
+
+import com.backendsys.exception.CustException;
+import com.backendsys.modules.cms.article.entity.ArticleCategory;
+import com.backendsys.modules.cms.article.entity.ArticleCategoryI18n;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class ValidationUtil {
+
+    private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
+
+    public static <T> void validateObject(T object, Class<?>... groups) {
+        Set<ConstraintViolation<T>> violations = validator.validate(object, groups);
+        if (!violations.isEmpty()) {
+            String errorMessage = violations.stream()
+                    .map(ConstraintViolation::getMessage)
+                    .collect(Collectors.joining(", "));
+            throw new CustException(errorMessage);
+        }
+    }
+
+}