浏览代码

添加 自定义validator校验工具类,参考 家族相册api

luobo 4 年之前
父节点
当前提交
0ec4a2ed71

+ 208 - 0
ruoyi-app/src/main/java/com/ruoyi/app/controller/FamilyAlbumController.java

@@ -0,0 +1,208 @@
+package com.ruoyi.app.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.app.annotation.LoginAppUser;
+import com.ruoyi.app.controller.base.AppBaseController;
+import com.ruoyi.app.domain.vo.AppMemberVo;
+import com.ruoyi.app.family.album.domain.TbFamilyAlbum;
+import com.ruoyi.app.family.album.service.ITbFamilyAlbumService;
+import com.ruoyi.app.family.photo.domain.TbFamilyPhoto;
+import com.ruoyi.app.family.photo.service.ITbFamilyPhotoService;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.validator.ValidatorUtils;
+import com.ruoyi.common.validator.group.AddGroup;
+import com.ruoyi.common.validator.group.UpdateGroup;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 家族相簿
+ * 
+ * @author luobo
+ * @date 2020-10-12
+ */
+@Api(value = "家族相簿", tags = "家族相簿")
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/app/family/album" )
+public class FamilyAlbumController extends AppBaseController {
+
+    private final ITbFamilyAlbumService iTbFamilyAlbumService;
+
+    private final ITbFamilyPhotoService iTbFamilyPhotoService;
+    /**
+     * 查询家族相簿列表
+     */
+    @ApiOperation(value = "查询家族相簿列表",response = TbFamilyAlbum.class)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "familyId", value = "家族id",paramType="Long"),
+            @ApiImplicitParam(name = "pageNum", value = "当前页",paramType="int"),
+            @ApiImplicitParam(name = "pageSize", value = "每页行数",paramType="int")
+    })
+    @GetMapping("/list")
+    public TableDataInfo list(@ApiIgnore TbFamilyAlbum tbFamilyAlbum)
+    {
+        //校验数据是否为空,家族id不能为空
+        ValidatorUtils.validateEntity(tbFamilyAlbum);
+
+        startPage();
+        List<TbFamilyAlbum> list = iTbFamilyAlbumService.queryList(tbFamilyAlbum);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取家族相簿详细信息
+     */
+    @ApiOperation(value = "获取家族相簿详细信息",response = TbFamilyAlbum.class)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "相簿id",paramType="path,Long"),
+    })
+    @GetMapping(value = "/{id}" )
+    public AjaxResult getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTbFamilyAlbumService.getEntityById(id));
+    }
+
+    /**
+     * 新增家族相簿
+     */
+    @ApiOperation(value = "新增家族相簿",response =TbFamilyAlbum.class )
+    @PostMapping("/create")
+    public AjaxResult add(@ApiIgnore @LoginAppUser AppMemberVo memberVo, @RequestBody TbFamilyAlbum tbFamilyAlbum) {
+        //校验数据是否为空,家族id,title不能为空
+        ValidatorUtils.validateEntity(tbFamilyAlbum, AddGroup.class);
+        tbFamilyAlbum.setCreateBy(memberVo.getUserId());
+        tbFamilyAlbum.setCreateTime(new Date());
+        return toAjax(iTbFamilyAlbumService.save(tbFamilyAlbum) ? 1 : 0);
+    }
+
+    /**
+     * 修改家族相簿
+     */
+    @ApiOperation(value = "修改家族相簿",response =TbFamilyAlbum.class)
+    @PostMapping("/update")
+    public AjaxResult edit(@ApiIgnore @LoginAppUser AppMemberVo memberVo,@RequestBody TbFamilyAlbum tbFamilyAlbum) {
+        //校验数据是否为空,家族id,title不能为空
+        ValidatorUtils.validateEntity(tbFamilyAlbum, UpdateGroup.class);
+        tbFamilyAlbum.setUpdateBy(memberVo.getUserId());
+        tbFamilyAlbum.setUpdateTime(new Date());
+        return toAjax(iTbFamilyAlbumService.updateById(tbFamilyAlbum) ? 1 : 0);
+    }
+
+    /**
+     * 删除家族相簿
+     */
+    @ApiOperation("删除家族相簿")
+    @DeleteMapping("/{ids}" )
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(iTbFamilyAlbumService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+
+    /**
+     * 查询家族相簿照片列表
+     */
+    @ApiOperation(value = "查询家族相簿照片列表",response = TbFamilyPhoto.class)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "albumId", value = "相簿id",paramType="query"),
+            @ApiImplicitParam(name = "pageNum", value = "当前页",paramType="query"),
+            @ApiImplicitParam(name = "pageSize", value = "每页行数",paramType="query")
+    })
+    @GetMapping("/photo/list")
+    public TableDataInfo photoList(TbFamilyPhoto tbFamilyPhoto)
+    {
+        ValidatorUtils.validateEntity(tbFamilyPhoto);
+
+        startPage();
+        List<TbFamilyPhoto> list = iTbFamilyPhotoService.queryList(tbFamilyPhoto);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取家族相簿照片详细信息
+     */
+    @ApiOperation(value = "获取家族相簿照片详细信息",response = TbFamilyPhoto.class)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "照片id",paramType="path"),
+    })
+    @GetMapping(value = "/photo/{id}" )
+    public AjaxResult getPhotoInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTbFamilyPhotoService.getEntityById(id));
+    }
+
+    /**
+     * 新增家族相簿照片
+     */
+    @ApiOperation(value = "新增家族相簿照片",response =TbFamilyPhoto.class )
+    @PostMapping("/photo/create")
+    public AjaxResult addPhoto(@ApiIgnore @LoginAppUser AppMemberVo memberVo,@RequestBody TbFamilyPhoto tbFamilyPhoto) {
+        //校验数据是否为空,家族id,title不能为空
+        ValidatorUtils.validateEntity(tbFamilyPhoto, AddGroup.class);
+        tbFamilyPhoto.setCreateBy(memberVo.getUserId());
+        tbFamilyPhoto.setCreateTime(new Date());
+        return toAjax(iTbFamilyPhotoService.save(tbFamilyPhoto) ? 1 : 0);
+    }
+
+    /**
+     * 修改家族相簿照片
+     */
+    @ApiOperation(value = "修改家族相簿照片",response = TbFamilyPhoto.class)
+    @PostMapping("/photo/update")
+    public AjaxResult editPhoto(@ApiIgnore @LoginAppUser AppMemberVo memberVo,@RequestBody TbFamilyPhoto tbFamilyPhoto) {
+        ValidatorUtils.validateEntity(tbFamilyPhoto, UpdateGroup.class);
+        tbFamilyPhoto.setUpdateBy(memberVo.getUserId());
+        tbFamilyPhoto.setUpdateTime(new Date());
+        return toAjax(iTbFamilyPhotoService.updateById(tbFamilyPhoto) ? 1 : 0);
+    }
+
+    /**
+     * 删除家族相簿照片
+     */
+    @ApiOperation("删除家族相簿照片")
+    @DeleteMapping("/photo/{ids}" )
+    public AjaxResult removePhoto(@PathVariable Long[] ids) {
+        return toAjax(iTbFamilyPhotoService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+    }
+
+    /**
+     * 批量上传图片
+     * @return
+     */
+    @ApiOperation("批量上传家族相簿照片")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "files", value = "上传的文件数组",paramType="form"),
+            @ApiImplicitParam(name = "albumId", value = "相簿id",paramType="form"),
+            @ApiImplicitParam(name = "modName", value = "模块名称",paramType="form")
+    })
+    @PostMapping("/photo/batchUpload" )
+    public AjaxResult batchUpload(
+            @ApiIgnore @LoginAppUser AppMemberVo memberVo,
+            @RequestParam("files") MultipartFile[] files,
+            @RequestParam("albumId") Long albumId,
+            @RequestParam("modName") String modName) {
+        iTbFamilyPhotoService.batchUpload(memberVo.getUserId(),albumId,files,modName);
+        return AjaxResult.success();
+    }
+
+
+
+}

+ 40 - 0
ruoyi-common/src/main/java/com/ruoyi/common/validator/ValidatorUtils.java

@@ -0,0 +1,40 @@
+
+package com.ruoyi.common.validator;
+
+import com.ruoyi.common.exception.CustomException;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import java.util.Set;
+
+/**
+ * hibernate-validator校验工具类
+ *
+ * 参考文档:http://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/
+ */
+public class ValidatorUtils {
+    private static Validator validator;
+
+    static {
+        validator = Validation.buildDefaultValidatorFactory().getValidator();
+    }
+
+    /**
+     * 校验对象
+     * @param object        待校验对象
+     * @param groups        待校验的组
+     * @throws CustomException  校验不通过,则报CustomException异常
+     */
+    public static void validateEntity(Object object, Class<?>... groups)
+            throws CustomException {
+        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
+        if (!constraintViolations.isEmpty()) {
+            StringBuilder msg = new StringBuilder();
+            for(ConstraintViolation<Object> constraint:  constraintViolations){
+                msg.append(constraint.getMessage()).append("<br>");
+            }
+            throw new CustomException(msg.toString());
+        }
+    }
+}

+ 9 - 0
ruoyi-common/src/main/java/com/ruoyi/common/validator/group/AddGroup.java

@@ -0,0 +1,9 @@
+
+package com.ruoyi.common.validator.group;
+
+/**
+ * 新增数据 Group
+ *
+ */
+public interface AddGroup {
+}

+ 14 - 0
ruoyi-common/src/main/java/com/ruoyi/common/validator/group/Group.java

@@ -0,0 +1,14 @@
+
+
+package com.ruoyi.common.validator.group;
+
+import javax.validation.GroupSequence;
+
+/**
+ * 定义校验顺序,如果AddGroup组失败,则UpdateGroup组不会再校验
+ *
+ */
+@GroupSequence({AddGroup.class, UpdateGroup.class})
+public interface Group {
+
+}

+ 11 - 0
ruoyi-common/src/main/java/com/ruoyi/common/validator/group/UpdateGroup.java

@@ -0,0 +1,11 @@
+
+package com.ruoyi.common.validator.group;
+
+/**
+ * 更新数据 Group
+ *
+ */
+
+public interface UpdateGroup {
+
+}