From 685fd8e14b4cd489297b48ea3b388fac8461eb91 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Wed, 14 Aug 2024 15:56:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=94=AF=E4=B8=80=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E3=80=81valid=E6=B3=A8=E8=A7=A3=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E3=80=81=E5=BC=82=E5=B8=B8=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/base/api/domain/BmProject.java | 9 ++++- .../bonus/common/core/domain/ResultBean.java | 4 ++- .../handler/GlobalExceptionHandler.java | 30 ++++++++-------- .../base/controller/BmProjectController.java | 34 ++++++++++++++++--- .../bonus/base/mapper/BmProjectMapper.java | 5 +++ .../bonus/base/service/BmProjectService.java | 5 +++ .../main/resources/mapper/BmProjectMapper.xml | 6 ++++ .../material/mapper/MaHouseSetMapper.java | 3 ++ .../resources/mapper/MaHouseSetMapper.xml | 1 + 9 files changed, 77 insertions(+), 20 deletions(-) diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmProject.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmProject.java index ed7545d..c0afcca 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmProject.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmProject.java @@ -10,6 +10,10 @@ import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + /** * 工程管理信息表 * @author 阮世耀 @@ -28,6 +32,7 @@ public class BmProject extends BaseEntity implements Serializable { */ @ApiModelProperty(value = "工程名称") @Excel(name = "工程项目名称") + @NotBlank(message = "工程名称不能为空") private String name; /** @@ -35,14 +40,15 @@ public class BmProject extends BaseEntity implements Serializable { */ @ApiModelProperty(value = "实施单位") @Excel(name = "实施单位") + @NotBlank(message = "实施单位不能为空") private String impUnit; - /** * 项目类型。 1:线路工程;2:变电工程;3:业务工程;4:其他工程 */ @ApiModelProperty(value = "项目类型。 1:线路工程;2:变电工程;3:业务工程;4:其他工程") @Excel(name = "工程类型") + @Min(value = 1, message = "项目类型不能为空") private Integer projectType; /** @@ -102,6 +108,7 @@ public class BmProject extends BaseEntity implements Serializable { * 工程状态 */ @ApiModelProperty(value = "工程状态") + @NotBlank(message = "工程状态不能为空") @Excel(name = "工程状态") private String stats; diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/domain/ResultBean.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/domain/ResultBean.java index 9570f3e..ffb17e7 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/domain/ResultBean.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/domain/ResultBean.java @@ -13,7 +13,9 @@ import lombok.RequiredArgsConstructor; */ @Getter @RequiredArgsConstructor -public final class ResultBean { +public final class ResultBean implements java.io.Serializable{ + + private final static long serialVersionUID = 6674412622288634845L; private final int code; diff --git a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/handler/GlobalExceptionHandler.java b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/handler/GlobalExceptionHandler.java index fd8146e..799f793 100644 --- a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/handler/GlobalExceptionHandler.java +++ b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/handler/GlobalExceptionHandler.java @@ -36,8 +36,7 @@ public class GlobalExceptionHandler * 权限码异常 */ @ExceptionHandler(NotPermissionException.class) - public AjaxResult handleNotPermissionException(NotPermissionException e, HttpServletRequest request) - { + public AjaxResult handleNotPermissionException(NotPermissionException e, HttpServletRequest request) { String requestUri = request.getRequestURI(); log.error("请求地址'{}',权限码校验失败'{}'", requestUri, e.getMessage()); return AjaxResult.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权"); @@ -47,8 +46,7 @@ public class GlobalExceptionHandler * 角色权限异常 */ @ExceptionHandler(NotRoleException.class) - public AjaxResult handleNotRoleException(NotRoleException e, HttpServletRequest request) - { + public AjaxResult handleNotRoleException(NotRoleException e, HttpServletRequest request) { String requestUri = request.getRequestURI(); log.error("请求地址'{}',角色权限校验失败'{}'", requestUri, e.getMessage()); return AjaxResult.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权"); @@ -69,8 +67,7 @@ public class GlobalExceptionHandler * 业务异常 */ @ExceptionHandler(ServiceException.class) - public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) - { + public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) { log.error(e.getMessage(), e); Integer code = e.getCode(); return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage()); @@ -102,8 +99,7 @@ public class GlobalExceptionHandler * 拦截未知的运行时异常 */ @ExceptionHandler(RuntimeException.class) - public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) - { + public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) { String msg=e.getMessage(); if (StringUtils.hasText(msg)) { if (msg.contains(BODY_ERROR)){ @@ -122,8 +118,7 @@ public class GlobalExceptionHandler * 系统异常 */ @ExceptionHandler(Exception.class) - public AjaxResult handleException(Exception e, HttpServletRequest request) - { + public AjaxResult handleException(Exception e, HttpServletRequest request) { String requestUri = request.getRequestURI(); log.error("请求地址'{}',发生系统异常.", requestUri, e); return AjaxResult.error(e.getMessage()); @@ -133,8 +128,7 @@ public class GlobalExceptionHandler * 自定义验证异常 */ @ExceptionHandler(BindException.class) - public AjaxResult handleBindException(BindException e) - { + public AjaxResult handleBindException(BindException e) { log.error(e.getMessage(), e); String message = e.getAllErrors().get(0).getDefaultMessage(); return AjaxResult.error(message); @@ -144,13 +138,21 @@ public class GlobalExceptionHandler * 自定义验证异常 */ @ExceptionHandler(MethodArgumentNotValidException.class) - public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) - { + public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { log.error(e.getMessage(), e); String message = e.getBindingResult().getFieldError().getDefaultMessage(); return AjaxResult.error(message); } + /** + * 处理系统异常,在其他异常拦截均未捕获时进行兜底处理 + */ + @ExceptionHandler(value = Exception.class) + public AjaxResult defaultHandleException(Exception e) { + log.error(e.getMessage(), e); + return AjaxResult.error(e.getMessage()); + } + /** * 内部认证异常 */ diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmProjectController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmProjectController.java index be8c55c..fff49a5 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmProjectController.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmProjectController.java @@ -3,6 +3,7 @@ package com.bonus.base.controller; import com.bonus.base.api.domain.BmProject; import com.bonus.base.service.BmProjectService; import com.bonus.common.core.domain.ResultBean; +import com.bonus.common.core.utils.StringHelper; import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; @@ -11,9 +12,14 @@ import com.bonus.common.security.annotation.RequiresPermissions; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + import org.springframework.beans.factory.annotation.Autowired; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.Positive; import java.util.List; /** @@ -64,7 +70,9 @@ public class BmProjectController extends BaseController { */ @GetMapping("{id}") @RequiresPermissions("base:project:query") - public ResultBean queryById(@PathVariable("id") Integer id) { + public ResultBean queryById(@PathVariable("id") + @NotNull(message = "ID不能为空") + @Positive(message = "ID必须为正整数") Integer id) { return ResultBean.success(this.bmProjectService.selectByPrimaryKey(id)); } @@ -76,7 +84,9 @@ public class BmProjectController extends BaseController { */ @PostMapping(value = "/add") @RequiresPermissions("base:project:add") - public ResultBean add(@RequestBody BmProject obj) { + public ResultBean add(@NotNull @Valid @RequestBody BmProject obj) { + ResultBean error = validRecord(obj); + if (error != null) return error; int result = this.bmProjectService.insertSelective(obj); return result > 0 ? ResultBean.success(true) : ResultBean.error(0, "增加失败"); } @@ -89,11 +99,25 @@ public class BmProjectController extends BaseController { */ @PutMapping(value = "/update") @RequiresPermissions("base:project:edit") - public ResultBean edit(@RequestBody BmProject obj) { + public ResultBean edit(@NotNull @RequestBody BmProject obj) { + ResultBean validResult = validRecord(obj); + if (validResult != null) return validResult; this.bmProjectService.updateByPrimaryKeySelective(obj); return ResultBean.success(true); } + /** + * 参数校验,检验新增、修改的参数是否符合要求 + * @param obj 请求对象 + * @return 校验结果 + */ + private ResultBean validRecord(BmProject obj) { + if (this.bmProjectService.selectByName(obj.getName()) != 0) { + return ResultBean.error("工程名称重复"); + } + return null; + } + /** * 逻辑删除 * @@ -102,7 +126,9 @@ public class BmProjectController extends BaseController { */ @DeleteMapping("/{id}") @RequiresPermissions("base:project:remove") - public ResultBean deleteById(@PathVariable("id") Integer id) { + public ResultBean deleteById(@PathVariable("id") + @NotNull(message = "ID不能为空") + @Positive(message = "ID必须为正整数") Integer id) { return ResultBean.toIsSuccess(this.bmProjectService.updateIsActive(id),"删除失败"); } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmProjectMapper.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmProjectMapper.java index 8f417e8..80e8fdb 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmProjectMapper.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmProjectMapper.java @@ -1,4 +1,5 @@ package com.bonus.base.mapper; +import org.apache.ibatis.annotations.Param; import com.bonus.base.api.domain.BmProject; import org.apache.ibatis.annotations.Mapper; @@ -46,6 +47,10 @@ public interface BmProjectMapper { */ BmProject selectByPrimaryKey(Integer id); + int selectByName(@Param("name")String name); + + + List selectAll(BmProject bmProject); /** diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/BmProjectService.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/BmProjectService.java index 547c68d..0c329c2 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/BmProjectService.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/BmProjectService.java @@ -62,4 +62,9 @@ public class BmProjectService{ return bmProjectMapper.updateByPrimaryKey(record); } + + public int selectByName(String name){ + return bmProjectMapper.selectByName(name); + } + } diff --git a/bonus-modules/bonus-base/src/main/resources/mapper/BmProjectMapper.xml b/bonus-modules/bonus-base/src/main/resources/mapper/BmProjectMapper.xml index 140cb46..ae6378d 100644 --- a/bonus-modules/bonus-base/src/main/resources/mapper/BmProjectMapper.xml +++ b/bonus-modules/bonus-base/src/main/resources/mapper/BmProjectMapper.xml @@ -690,4 +690,10 @@ update bm_project set is_active = '0' where id = #{id,jdbcType=INTEGER} + + diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/mapper/MaHouseSetMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/mapper/MaHouseSetMapper.java index 35b66b6..e5a483b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/mapper/MaHouseSetMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/mapper/MaHouseSetMapper.java @@ -1,4 +1,5 @@ package com.bonus.material.mapper; +import org.apache.ibatis.annotations.Param; import com.bonus.material.domain.MaHouseSet; import java.util.List; @@ -60,4 +61,6 @@ public interface MaHouseSetMapper { int updateByPrimaryKey(MaHouseSet record); List selectAll(MaHouseSet record); + + } \ No newline at end of file diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/MaHouseSetMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/MaHouseSetMapper.xml index ea2df25..330f4a7 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/MaHouseSetMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/MaHouseSetMapper.xml @@ -144,4 +144,5 @@ + \ No newline at end of file