feat: 优化参数校验

This commit is contained in:
曹鹏飞 2025-02-03 13:53:47 +08:00
parent 6d00705773
commit 4091e676d7
36 changed files with 91 additions and 46 deletions

View File

@ -58,8 +58,8 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>jakarta.validation</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>jakarta.validation-api</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -28,7 +28,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/adminuser") @RequestMapping("/adminuser")
public class AdminUserController { public class AdminUserController extends ControllerBase {
@Resource @Resource
private IAdminUserService adminUserService; private IAdminUserService adminUserService;

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**
@ -24,7 +25,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/appuser") @RequestMapping("/appuser")
public class AppUserController { public class AppUserController extends ControllerBase {
@Resource @Resource
private IAppUserService appUserService; private IAppUserService appUserService;
@ -86,7 +87,7 @@ public class AppUserController {
* @param id 审批id * @param id 审批id
*/ */
@GetMapping("getAppUserApplyfor") @GetMapping("getAppUserApplyfor")
public ApiResult<AppUserApplyforVO> getAppUserApplyfor(@Valid @RequestParam Integer id) { public ApiResult<AppUserApplyforVO> getAppUserApplyfor(@Valid @NotNull(message = "审批id不能为空") @RequestParam Integer id) {
return ApiResult.success(appUserApplyforService.getAppUserApplyfor(id)); return ApiResult.success(appUserApplyforService.getAppUserApplyfor(id));
} }

View File

@ -28,7 +28,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/baseArea") @RequestMapping("/baseArea")
public class BaseAreaController { public class BaseAreaController extends ControllerBase {
@Resource @Resource
ITBaseAreaService baseAreaService; ITBaseAreaService baseAreaService;

View File

@ -0,0 +1,10 @@
package com.nflg.mobilebroken.admin.controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
@Validated
@RestController
public class ControllerBase {
}

View File

@ -38,7 +38,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/customer") @RequestMapping("/customer")
public class CustomerController { public class CustomerController extends ControllerBase {
@Resource @Resource
ITBaseCustomerService baseCustomerService; ITBaseCustomerService baseCustomerService;

View File

@ -5,13 +5,10 @@ import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.admin.pojo.dto.DepartmentDTO; import com.nflg.mobilebroken.admin.pojo.dto.DepartmentDTO;
import com.nflg.mobilebroken.admin.pojo.query.DepartmentQuery; import com.nflg.mobilebroken.admin.pojo.query.DepartmentQuery;
import com.nflg.mobilebroken.admin.pojo.query.DeviceComponentQuery;
import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.nflg.mobilebroken.repository.entity.TBaseDepartment; import com.nflg.mobilebroken.repository.entity.TBaseDepartment;
import com.nflg.mobilebroken.repository.service.IDeviceComponentService;
import com.nflg.mobilebroken.repository.service.ITBaseDepartmentService; import com.nflg.mobilebroken.repository.service.ITBaseDepartmentService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -25,7 +22,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/department") @RequestMapping("/department")
public class DepartmentController { public class DepartmentController extends ControllerBase {
@Resource @Resource
ITBaseDepartmentService departmentService; ITBaseDepartmentService departmentService;

View File

@ -35,7 +35,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/deviceComponent") @RequestMapping("/deviceComponent")
public class DeviceComponentController { public class DeviceComponentController extends ControllerBase {
@Resource @Resource
IDeviceComponentService deviceComponentService; IDeviceComponentService deviceComponentService;

View File

@ -32,7 +32,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/device") @RequestMapping("/device")
public class DeviceController { public class DeviceController extends ControllerBase {
@Resource @Resource
IDeviceService deviceService; IDeviceService deviceService;

View File

@ -27,7 +27,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/deviceType") @RequestMapping("/deviceType")
public class DeviceTypeController { public class DeviceTypeController extends ControllerBase {
@Resource @Resource
ITBaseDeviceTypeService baseDeviceTypeService; ITBaseDeviceTypeService baseDeviceTypeService;

View File

@ -49,7 +49,7 @@ import java.util.Objects;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/dictionary") @RequestMapping("/dictionary")
public class DictionaryController { public class DictionaryController extends ControllerBase {
@Resource @Resource
private IDictionaryService dictionaryService; private IDictionaryService dictionaryService;

View File

@ -23,7 +23,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/menu") @RequestMapping("/menu")
public class MenuController { public class MenuController extends ControllerBase {
@Resource @Resource
private IAdminMenuService adminMenuService; private IAdminMenuService adminMenuService;

View File

@ -24,7 +24,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/message") @RequestMapping("/message")
public class MessageController { public class MessageController extends ControllerBase {
@Resource @Resource
private IAdminMessageService adminMessageService; private IAdminMessageService adminMessageService;

View File

@ -40,7 +40,7 @@ import java.util.*;
*/ */
@RestController @RestController
@RequestMapping("/multilingual") @RequestMapping("/multilingual")
public class MultilingualController { public class MultilingualController extends ControllerBase {
@Resource @Resource
private ILanguageService languageService; private ILanguageService languageService;

View File

@ -24,7 +24,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/paramconfig") @RequestMapping("/paramconfig")
public class ParamConfigController { public class ParamConfigController extends ControllerBase {
@Resource @Resource
private IParamConfigService paramConfigService; private IParamConfigService paramConfigService;

View File

@ -35,7 +35,7 @@ import java.util.stream.Collectors;
*/ */
@RestController @RestController
@RequestMapping("/position") @RequestMapping("/position")
public class PositionController { public class PositionController extends ControllerBase {
@Resource @Resource

View File

@ -2,16 +2,13 @@ package com.nflg.mobilebroken.admin.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.admin.pojo.query.DepartmentQuery;
import com.nflg.mobilebroken.admin.pojo.query.RequestLogQuery; import com.nflg.mobilebroken.admin.pojo.query.RequestLogQuery;
import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.vo.TBaseAreaVO;
import com.nflg.mobilebroken.repository.entity.TBaseRequestLog; import com.nflg.mobilebroken.repository.entity.TBaseRequestLog;
import com.nflg.mobilebroken.repository.entity.TBaseRequestLogDetail; import com.nflg.mobilebroken.repository.entity.TBaseRequestLogDetail;
import com.nflg.mobilebroken.repository.service.ITBaseRequestLogDetailService; import com.nflg.mobilebroken.repository.service.ITBaseRequestLogDetailService;
import com.nflg.mobilebroken.repository.service.ITBaseRequestLogService; import com.nflg.mobilebroken.repository.service.ITBaseRequestLogService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -23,7 +20,7 @@ import javax.annotation.Resource;
*/ */
@RestController @RestController
@RequestMapping("/requestLog") @RequestMapping("/requestLog")
public class RequestLogController { public class RequestLogController extends ControllerBase {
@Resource @Resource
ITBaseRequestLogService logService; ITBaseRequestLogService logService;

View File

@ -19,7 +19,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/role") @RequestMapping("/role")
public class RoleController { public class RoleController extends ControllerBase {
@Resource @Resource
private IAdminRoleService adminRoleService; private IAdminRoleService adminRoleService;

View File

@ -28,7 +28,7 @@ import java.util.List;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/ticket") @RequestMapping("/ticket")
public class TicketController { public class TicketController extends ControllerBase {
@Resource @Resource
private ITicketService ticketService; private ITicketService ticketService;

View File

@ -64,6 +64,10 @@
<artifactId>junit-jupiter</artifactId> <artifactId>junit-jupiter</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -10,7 +10,8 @@ import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication @SpringBootApplication
@MapperScan("com.nflg.mobilebroken.repository.mapper") @MapperScan("com.nflg.mobilebroken.repository.mapper")
@ComponentScan(basePackages = {"com.nflg.mobilebroken"}) @ComponentScan(basePackages = {"com.nflg.mobilebroken.repository.service", "com.nflg.mobilebroken.auth"
, "com.nflg.mobilebroken.starter"})
@EnableDiscoveryClient @EnableDiscoveryClient
@Slf4j @Slf4j
public class AuthApplication { public class AuthApplication {

View File

@ -13,12 +13,11 @@ import com.nflg.mobilebroken.repository.entity.AdminUser;
import com.nflg.mobilebroken.repository.service.IAdminRoleService; import com.nflg.mobilebroken.repository.service.IAdminRoleService;
import com.nflg.mobilebroken.repository.service.IAdminUserRoleMapService; import com.nflg.mobilebroken.repository.service.IAdminUserRoleMapService;
import com.nflg.mobilebroken.repository.service.IAdminUserService; import com.nflg.mobilebroken.repository.service.IAdminUserService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -28,7 +27,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/admin") @RequestMapping("/admin")
public class AdminController { public class AdminController extends ControllerBase {
@Resource @Resource
private IAdminUserService adminUserService; private IAdminUserService adminUserService;
@ -46,7 +45,8 @@ public class AdminController {
* @return token * @return token
*/ */
@GetMapping("login") @GetMapping("login")
public ApiResult<SaTokenInfo> login(String userName, String password) { public ApiResult<SaTokenInfo> login(@Valid @NotBlank(message = "用户名不能为空") @RequestParam("userName") String userName,
@Valid @NotBlank(message = "密码不能为空") @RequestParam("password") String password) {
AdminUser user=adminUserService.getUser(userName,password); AdminUser user=adminUserService.getUser(userName,password);
VUtils.trueThrow(Objects.isNull(user)).throwMessage(STATE.PassportErr,"用户名或密码错误"); VUtils.trueThrow(Objects.isNull(user)).throwMessage(STATE.PassportErr,"用户名或密码错误");
VUtils.trueThrow(!user.getEnable()).throwMessage(STATE.PassportErr, "用户被禁用,请联系管理员"); VUtils.trueThrow(!user.getEnable()).throwMessage(STATE.PassportErr, "用户被禁用,请联系管理员");

View File

@ -25,7 +25,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/app") @RequestMapping("/app")
public class AppController { public class AppController extends ControllerBase {
@Resource @Resource
IAppUserService appUserService; IAppUserService appUserService;

View File

@ -0,0 +1,10 @@
package com.nflg.mobilebroken.auth.controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
@Validated
@RestController
public class ControllerBase {
}

View File

@ -21,7 +21,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/test") @RequestMapping("/test")
public class TestController { public class TestController extends ControllerBase {
@Resource @Resource
private IAppUserService appUserService; private IAppUserService appUserService;

View File

@ -65,6 +65,10 @@
<groupId>com.nflg</groupId> <groupId>com.nflg</groupId>
<artifactId>nflg-mobilebroken-repository</artifactId> <artifactId>nflg-mobilebroken-repository</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -26,7 +26,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/area") @RequestMapping("/area")
//@SaUserCheckLogin //@SaUserCheckLogin
public class AreaController { public class AreaController extends ControllerBase {
@Resource @Resource
private IAppAreaService appAreaService; private IAppAreaService appAreaService;

View File

@ -0,0 +1,10 @@
package com.nflg.mobilebroken.cfs.controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
@Validated
@RestController
public class ControllerBase {
}

View File

@ -28,7 +28,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/file") @RequestMapping("/file")
//@SaUserCheckLogin //@SaUserCheckLogin
public class FileController { public class FileController extends ControllerBase {
@Resource @Resource
private FileUploadService fileUploadService; private FileUploadService fileUploadService;

View File

@ -27,7 +27,7 @@ import java.util.Map;
@RestController @RestController
@RequestMapping("/message") @RequestMapping("/message")
//@SaUserCheckLogin //@SaUserCheckLogin
public class MessageController { public class MessageController extends ControllerBase {
@Resource @Resource
private RedisTemplate<String, Object> redisTemplate; private RedisTemplate<String, Object> redisTemplate;

View File

@ -22,7 +22,7 @@ import java.io.IOException;
@Slf4j @Slf4j
@RequestMapping("/sse") @RequestMapping("/sse")
//@SaUserCheckLogin //@SaUserCheckLogin
public class SSEController { public class SSEController extends ControllerBase {
@Resource @Resource
private APPSSEManagerService sseManagerService; private APPSSEManagerService sseManagerService;

View File

@ -21,7 +21,7 @@ import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/system") @RequestMapping("/system")
//@SaUserCheckLogin //@SaUserCheckLogin
public class SystemController { public class SystemController extends ControllerBase {
@Resource @Resource
private ILanguageService languageService; private ILanguageService languageService;

View File

@ -14,7 +14,7 @@ import java.io.IOException;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("/test") @RequestMapping("/test")
public class TestController { public class TestController extends ControllerBase {
@Resource @Resource
private APPSSEManagerService sseManagerService; private APPSSEManagerService sseManagerService;

View File

@ -32,7 +32,7 @@ import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/ticket") @RequestMapping("/ticket")
//@SaUserCheckLogin //@SaUserCheckLogin
public class TiketController { public class TiketController extends ControllerBase {
@Resource @Resource
private IDeviceService deviceService; private IDeviceService deviceService;

View File

@ -37,7 +37,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/user") @RequestMapping("/user")
//@SaUserCheckLogin //@SaUserCheckLogin
public class UserController { public class UserController extends ControllerBase {
@Resource @Resource
private IAppUserService appUserService; private IAppUserService appUserService;

View File

@ -1,5 +1,6 @@
package com.nflg.mobilebroken.starter.advice; package com.nflg.mobilebroken.starter.advice;
import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.common.exception.NflgException;
import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.ApiResult;
@ -7,19 +8,29 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.stream.Collectors;
@RestControllerAdvice @RestControllerAdvice
@Slf4j @Slf4j
public class GlobalRestControllerAdvice { public class GlobalRestControllerAdvice {
@ExceptionHandler(Exception.class) @ExceptionHandler(Exception.class)
public ApiResult handleAllExceptions(Exception ex) { public ApiResult<Void> handleAllExceptions(Exception ex) {
log.error("服务器内部错误: ", ex); log.error("服务器内部错误: ", ex);
return ApiResult.error(STATE.BusinessError,"服务器内部错误: " + ex.getMessage()); return ApiResult.error(STATE.BusinessError,"服务器内部错误: " + ex.getMessage());
} }
@ExceptionHandler(NflgException.class) @ExceptionHandler(NflgException.class)
public ApiResult handleNflgException(NflgException ex) { public ApiResult<Void> handleNflgException(NflgException ex) {
log.error("业务错误: ", ex); log.error("业务错误: ", ex);
return ApiResult.error(STATE.BusinessError,ex.getMessage()); return ApiResult.error(STATE.BusinessError,ex.getMessage());
} }
}
@ExceptionHandler(ConstraintViolationException.class)
public ApiResult<Void> handleConstraintViolationException(ConstraintViolationException ex) {
log.error("数据校验失败: ", ex);
return ApiResult.error(STATE.ParamErr, "数据校验失败: " + StrUtil.join(",", ex.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.toList())));
}
}