工程唯一校验、valid注解参数校验、异常拦截器

This commit is contained in:
syruan 2024-08-14 15:56:20 +08:00
parent 49cbcb3036
commit 685fd8e14b
9 changed files with 77 additions and 20 deletions

View File

@ -10,6 +10,10 @@ import java.io.Serializable;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/** /**
* 工程管理信息表 * 工程管理信息表
* @author 阮世耀 * @author 阮世耀
@ -28,6 +32,7 @@ public class BmProject extends BaseEntity implements Serializable {
*/ */
@ApiModelProperty(value = "工程名称") @ApiModelProperty(value = "工程名称")
@Excel(name = "工程项目名称") @Excel(name = "工程项目名称")
@NotBlank(message = "工程名称不能为空")
private String name; private String name;
/** /**
@ -35,14 +40,15 @@ public class BmProject extends BaseEntity implements Serializable {
*/ */
@ApiModelProperty(value = "实施单位") @ApiModelProperty(value = "实施单位")
@Excel(name = "实施单位") @Excel(name = "实施单位")
@NotBlank(message = "实施单位不能为空")
private String impUnit; private String impUnit;
/** /**
* 项目类型 1线路工程2:变电工程3:业务工程4:其他工程 * 项目类型 1线路工程2:变电工程3:业务工程4:其他工程
*/ */
@ApiModelProperty(value = "项目类型。 1线路工程2:变电工程3:业务工程4:其他工程") @ApiModelProperty(value = "项目类型。 1线路工程2:变电工程3:业务工程4:其他工程")
@Excel(name = "工程类型") @Excel(name = "工程类型")
@Min(value = 1, message = "项目类型不能为空")
private Integer projectType; private Integer projectType;
/** /**
@ -102,6 +108,7 @@ public class BmProject extends BaseEntity implements Serializable {
* 工程状态 * 工程状态
*/ */
@ApiModelProperty(value = "工程状态") @ApiModelProperty(value = "工程状态")
@NotBlank(message = "工程状态不能为空")
@Excel(name = "工程状态") @Excel(name = "工程状态")
private String stats; private String stats;

View File

@ -13,7 +13,9 @@ import lombok.RequiredArgsConstructor;
*/ */
@Getter @Getter
@RequiredArgsConstructor @RequiredArgsConstructor
public final class ResultBean<T> { public final class ResultBean<T> implements java.io.Serializable{
private final static long serialVersionUID = 6674412622288634845L;
private final int code; private final int code;

View File

@ -36,8 +36,7 @@ public class GlobalExceptionHandler
* 权限码异常 * 权限码异常
*/ */
@ExceptionHandler(NotPermissionException.class) @ExceptionHandler(NotPermissionException.class)
public AjaxResult handleNotPermissionException(NotPermissionException e, HttpServletRequest request) public AjaxResult handleNotPermissionException(NotPermissionException e, HttpServletRequest request) {
{
String requestUri = request.getRequestURI(); String requestUri = request.getRequestURI();
log.error("请求地址'{}',权限码校验失败'{}'", requestUri, e.getMessage()); log.error("请求地址'{}',权限码校验失败'{}'", requestUri, e.getMessage());
return AjaxResult.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权"); return AjaxResult.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权");
@ -47,8 +46,7 @@ public class GlobalExceptionHandler
* 角色权限异常 * 角色权限异常
*/ */
@ExceptionHandler(NotRoleException.class) @ExceptionHandler(NotRoleException.class)
public AjaxResult handleNotRoleException(NotRoleException e, HttpServletRequest request) public AjaxResult handleNotRoleException(NotRoleException e, HttpServletRequest request) {
{
String requestUri = request.getRequestURI(); String requestUri = request.getRequestURI();
log.error("请求地址'{}',角色权限校验失败'{}'", requestUri, e.getMessage()); log.error("请求地址'{}',角色权限校验失败'{}'", requestUri, e.getMessage());
return AjaxResult.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权"); return AjaxResult.error(HttpStatus.FORBIDDEN, "没有访问权限,请联系管理员授权");
@ -69,8 +67,7 @@ public class GlobalExceptionHandler
* 业务异常 * 业务异常
*/ */
@ExceptionHandler(ServiceException.class) @ExceptionHandler(ServiceException.class)
public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) {
{
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
Integer code = e.getCode(); Integer code = e.getCode();
return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage()); return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage());
@ -102,8 +99,7 @@ public class GlobalExceptionHandler
* 拦截未知的运行时异常 * 拦截未知的运行时异常
*/ */
@ExceptionHandler(RuntimeException.class) @ExceptionHandler(RuntimeException.class)
public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) {
{
String msg=e.getMessage(); String msg=e.getMessage();
if (StringUtils.hasText(msg)) { if (StringUtils.hasText(msg)) {
if (msg.contains(BODY_ERROR)){ if (msg.contains(BODY_ERROR)){
@ -122,8 +118,7 @@ public class GlobalExceptionHandler
* 系统异常 * 系统异常
*/ */
@ExceptionHandler(Exception.class) @ExceptionHandler(Exception.class)
public AjaxResult handleException(Exception e, HttpServletRequest request) public AjaxResult handleException(Exception e, HttpServletRequest request) {
{
String requestUri = request.getRequestURI(); String requestUri = request.getRequestURI();
log.error("请求地址'{}',发生系统异常.", requestUri, e); log.error("请求地址'{}',发生系统异常.", requestUri, e);
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
@ -133,8 +128,7 @@ public class GlobalExceptionHandler
* 自定义验证异常 * 自定义验证异常
*/ */
@ExceptionHandler(BindException.class) @ExceptionHandler(BindException.class)
public AjaxResult handleBindException(BindException e) public AjaxResult handleBindException(BindException e) {
{
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
String message = e.getAllErrors().get(0).getDefaultMessage(); String message = e.getAllErrors().get(0).getDefaultMessage();
return AjaxResult.error(message); return AjaxResult.error(message);
@ -144,13 +138,21 @@ public class GlobalExceptionHandler
* 自定义验证异常 * 自定义验证异常
*/ */
@ExceptionHandler(MethodArgumentNotValidException.class) @ExceptionHandler(MethodArgumentNotValidException.class)
public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
{
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
String message = e.getBindingResult().getFieldError().getDefaultMessage(); String message = e.getBindingResult().getFieldError().getDefaultMessage();
return AjaxResult.error(message); return AjaxResult.error(message);
} }
/**
* 处理系统异常在其他异常拦截均未捕获时进行兜底处理
*/
@ExceptionHandler(value = Exception.class)
public AjaxResult defaultHandleException(Exception e) {
log.error(e.getMessage(), e);
return AjaxResult.error(e.getMessage());
}
/** /**
* 内部认证异常 * 内部认证异常
*/ */

View File

@ -3,6 +3,7 @@ package com.bonus.base.controller;
import com.bonus.base.api.domain.BmProject; import com.bonus.base.api.domain.BmProject;
import com.bonus.base.service.BmProjectService; import com.bonus.base.service.BmProjectService;
import com.bonus.common.core.domain.ResultBean; 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.utils.poi.ExcelUtil;
import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult; 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 io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; 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 org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Positive;
import java.util.List; import java.util.List;
/** /**
@ -64,7 +70,9 @@ public class BmProjectController extends BaseController {
*/ */
@GetMapping("{id}") @GetMapping("{id}")
@RequiresPermissions("base:project:query") @RequiresPermissions("base:project:query")
public ResultBean<BmProject> queryById(@PathVariable("id") Integer id) { public ResultBean<BmProject> queryById(@PathVariable("id")
@NotNull(message = "ID不能为空")
@Positive(message = "ID必须为正整数") Integer id) {
return ResultBean.success(this.bmProjectService.selectByPrimaryKey(id)); return ResultBean.success(this.bmProjectService.selectByPrimaryKey(id));
} }
@ -76,7 +84,9 @@ public class BmProjectController extends BaseController {
*/ */
@PostMapping(value = "/add") @PostMapping(value = "/add")
@RequiresPermissions("base:project:add") @RequiresPermissions("base:project:add")
public ResultBean<Boolean> add(@RequestBody BmProject obj) { public ResultBean<Boolean> add(@NotNull @Valid @RequestBody BmProject obj) {
ResultBean<Boolean> error = validRecord(obj);
if (error != null) return error;
int result = this.bmProjectService.insertSelective(obj); int result = this.bmProjectService.insertSelective(obj);
return result > 0 ? ResultBean.success(true) : ResultBean.error(0, "增加失败"); return result > 0 ? ResultBean.success(true) : ResultBean.error(0, "增加失败");
} }
@ -89,11 +99,25 @@ public class BmProjectController extends BaseController {
*/ */
@PutMapping(value = "/update") @PutMapping(value = "/update")
@RequiresPermissions("base:project:edit") @RequiresPermissions("base:project:edit")
public ResultBean<Boolean> edit(@RequestBody BmProject obj) { public ResultBean<Boolean> edit(@NotNull @RequestBody BmProject obj) {
ResultBean<Boolean> validResult = validRecord(obj);
if (validResult != null) return validResult;
this.bmProjectService.updateByPrimaryKeySelective(obj); this.bmProjectService.updateByPrimaryKeySelective(obj);
return ResultBean.success(true); return ResultBean.success(true);
} }
/**
* 参数校验检验新增修改的参数是否符合要求
* @param obj 请求对象
* @return 校验结果
*/
private ResultBean<Boolean> 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}") @DeleteMapping("/{id}")
@RequiresPermissions("base:project:remove") @RequiresPermissions("base:project:remove")
public ResultBean<String> deleteById(@PathVariable("id") Integer id) { public ResultBean<String> deleteById(@PathVariable("id")
@NotNull(message = "ID不能为空")
@Positive(message = "ID必须为正整数") Integer id) {
return ResultBean.toIsSuccess(this.bmProjectService.updateIsActive(id),"删除失败"); return ResultBean.toIsSuccess(this.bmProjectService.updateIsActive(id),"删除失败");
} }

View File

@ -1,4 +1,5 @@
package com.bonus.base.mapper; package com.bonus.base.mapper;
import org.apache.ibatis.annotations.Param;
import com.bonus.base.api.domain.BmProject; import com.bonus.base.api.domain.BmProject;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -46,6 +47,10 @@ public interface BmProjectMapper {
*/ */
BmProject selectByPrimaryKey(Integer id); BmProject selectByPrimaryKey(Integer id);
int selectByName(@Param("name")String name);
List<BmProject> selectAll(BmProject bmProject); List<BmProject> selectAll(BmProject bmProject);
/** /**

View File

@ -62,4 +62,9 @@ public class BmProjectService{
return bmProjectMapper.updateByPrimaryKey(record); return bmProjectMapper.updateByPrimaryKey(record);
} }
public int selectByName(String name){
return bmProjectMapper.selectByName(name);
}
} }

View File

@ -690,4 +690,10 @@
update bm_project set is_active = '0' where id = #{id,jdbcType=INTEGER} update bm_project set is_active = '0' where id = #{id,jdbcType=INTEGER}
</update> </update>
<!--by syruan on 2024-08-14-->
<select id="selectByName" resultType="java.lang.Integer">
select count(*)
from bm_project
where `name`= #{name,jdbcType=VARCHAR}
</select>
</mapper> </mapper>

View File

@ -1,4 +1,5 @@
package com.bonus.material.mapper; package com.bonus.material.mapper;
import org.apache.ibatis.annotations.Param;
import com.bonus.material.domain.MaHouseSet; import com.bonus.material.domain.MaHouseSet;
import java.util.List; import java.util.List;
@ -60,4 +61,6 @@ public interface MaHouseSetMapper {
int updateByPrimaryKey(MaHouseSet record); int updateByPrimaryKey(MaHouseSet record);
List<MaHouseSet> selectAll(MaHouseSet record); List<MaHouseSet> selectAll(MaHouseSet record);
} }

View File

@ -144,4 +144,5 @@
</trim> </trim>
</insert> </insert>
</mapper> </mapper>