Skip to content

Commit

Permalink
Result类新增泛型
Browse files Browse the repository at this point in the history
小修小改
  • Loading branch information
Jin1c-3 committed Apr 5, 2023
1 parent 938fdef commit 4ba9cde
Show file tree
Hide file tree
Showing 13 changed files with 230 additions and 136 deletions.
67 changes: 42 additions & 25 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package com.yutech.back.common.exception;

import com.yutech.back.common.utils.Result;
import com.yutech.back.entity.dto.ValidationErrorDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;

/**
* 全局异常处理类。
Expand Down Expand Up @@ -65,15 +66,15 @@ public Result handlerGlobalException(GlobalException e) {
* @return 处理结果
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public Result handlerValidException(MethodArgumentNotValidException e) {
public Result<List<ValidationErrorDTO>> handlerValidException(MethodArgumentNotValidException e) {
log.error(e.getMessage(), e);
BindingResult result = e.getBindingResult();
Map<String, String> map = new HashMap<>();
List<ValidationErrorDTO> v = new ArrayList<>();
// 获取校验结果,遍历获取捕获到的每个校验结果
result.getFieldErrors().forEach(item -> {
// 存储得到的校验结果
map.put(item.getField(), item.getDefaultMessage());
v.add(new ValidationErrorDTO(item.getField(), item.getDefaultMessage()));
});
return Result.error().message("数据校验不合法").data("items", map);
return Result.error(v).message("数据校验不合法");
}
}
100 changes: 61 additions & 39 deletions back/src/main/java/com/yutech/back/common/utils/Result.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
import lombok.Data;
import org.springframework.http.HttpStatus;

import java.util.HashMap;
import java.util.Map;
import java.io.Serializable;

/**
* 统一结果返回类。方法采用链式调用的写法(即返回类本身 return this)。
Expand All @@ -27,7 +26,7 @@
*/
@Data
@ApiModel(value = "统一结果返回类")
public class Result {
public class Result<T> implements Serializable {
/**
* 响应是否成功,true 为成功,false 为失败
*/
Expand Down Expand Up @@ -58,7 +57,7 @@ public class Result {
* 响应数据
*/
@ApiModelProperty(value = "响应数据")
private Map<String, Object> data = new HashMap<>();
private T data;

/**
* 默认私有构造器
Expand All @@ -72,7 +71,6 @@ private Result() {
* @param success 响应是否成功
* @param code 响应状态码
* @param message 响应消息
* <p>
* param 注释是生成文档的 javadoc 使用的特殊格式注释。
*/
private Result(Boolean success, Integer code, String message) {
Expand All @@ -81,13 +79,20 @@ private Result(Boolean success, Integer code, String message) {
this.message = message;
}

private Result(Boolean success, Integer code, String message, T data) {
this.success = success;
this.code = code;
this.message = message;
this.data = data;
}

/**
* 返回一个默认的 成功操作 的结果,默认响应状态码 200
*
* @return 成功操作的实例对象
*/
public static Result ok() {
return new Result(true, HttpStatus.OK.value(), "success");
public static <T> Result<T> ok() {
return new Result<>(true, HttpStatus.OK.value(), "success");
}

/**
Expand All @@ -98,17 +103,25 @@ public static Result ok() {
* @param message 响应消息
* @return 成功操作的实例对象
*/
public static Result ok(Boolean success, Integer code, String message) {
return new Result(success, code, message);
public static <T> Result<T> ok(Boolean success, Integer code, String message) {
return new Result<>(success, code, message);
}

public static <T> Result<T> ok(T data) {
return new Result<>(true, HttpStatus.OK.value(), "success", data);
}

public static <T> Result<T> ok(Boolean success, Integer code, String message, T data) {
return new Result<T>(success, code, message, data);
}

/**
* 返回一个默认的 失败操作 的结果,默认响应状态码为 500
*
* @return 失败操作的实例对象
*/
public static Result error() {
return new Result(false, HttpStatus.INTERNAL_SERVER_ERROR.value(), "error");
public static <T> Result<T> error() {
return new Result<>(false, HttpStatus.INTERNAL_SERVER_ERROR.value(), "error");
}

/**
Expand All @@ -119,8 +132,16 @@ public static Result error() {
* @param message 相应消息
* @return 失败操作的实例对象
*/
public static Result error(Boolean success, Integer code, String message) {
return new Result(success, code, message);
public static <T> Result<T> error(Boolean success, Integer code, String message) {
return new Result<>(success, code, message);
}

public static <T> Result<T> error(T data) {
return new Result<>(false, HttpStatus.INTERNAL_SERVER_ERROR.value(), "error", data);
}

public static <T> Result<T> error(Boolean success, Integer code, String message, T data) {
return new Result<>(success, code, message, data);
}

/**
Expand All @@ -129,7 +150,7 @@ public static Result error(Boolean success, Integer code, String message) {
* @param success 响应是否成功
* @return 当前实例对象
*/
public Result success(Boolean success) {
public Result<T> success(Boolean success) {
this.setSuccess(success);
return this;
}
Expand All @@ -140,7 +161,7 @@ public Result success(Boolean success) {
* @param code 响应状态码
* @return 当前实例对象
*/
public Result code(Integer code) {
public Result<T> code(Integer code) {
this.setCode(code);
return this;
}
Expand All @@ -151,31 +172,32 @@ public Result code(Integer code) {
* @param message 响应消息
* @return 当前实例对象
*/
public Result message(String message) {
public Result<T> message(String message) {
this.setMessage(message);
return this;
}

/**
* 自定义响应数据,一次设置一个 map 集合
*
* @param map 响应数据
* @return 当前实例对象
*/
public Result data(Map<String, Object> map) {
this.data.putAll(map);
return this;
}

/**
* 通用设置响应数据,一次设置一个 key - value 键值对
*
* @param key 键
* @param value 数据
* @return 当前实例对象
*/
public Result data(String key, Object value) {
this.data.put(key, value);
return this;
}
//
// /**
// * 自定义响应数据
// *
// * @param dataValue 响应数据
// * @return 当前实例对象
// */
// public Result<T> data(T dataValue) {
// this.setData(dataValue);
// return this;
// }

//该方法失效
// /**
// * 通用设置响应数据,一次设置一个 key - value 键值对
// *
// * @param key 键
// * @param value 数据
// * @return 当前实例对象
// */
// public Result data(String key, Object value) {
// this.data.put(key, value);
// return this;
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
* <p>
* 前端控制器
Expand All @@ -39,8 +40,9 @@ public class PassengerController {
@GetMapping("/findPagByUsrId")
@ApiOperation(value = "根据用户id查询乘客信息", notes = "用户id和PassengerID是互通的")
@ApiImplicitParam(name = "usrId", value = "用户id", required = true, dataType = "String")
public Result findPagByUsrId(String usrId) {
return Result.ok().message("查询成功").data("passenger", passengerService.findPagByUsrId(usrId));
public Result<List<Passenger>> findPagByUsrId(String usrId) {
log.debug("根据usrId查询乘客信息=======" + usrId);
return Result.ok(passengerService.list(new QueryWrapper<Passenger>().eq("usr_id", usrId))).message("查询成功");
}

@PostMapping("/addPassenger")
Expand All @@ -61,8 +63,8 @@ public Result addPassenger(@RequestBody Passenger passenger) {
@ApiImplicitParam(name = "passenger", value = "传入被删除的乘客对象,其中用户id和乘客身份证号是必须的", required = true, dataType = "Passenger对象")
public Result deletePassenger(@RequestBody Passenger passenger) {
if (passengerService.remove(new QueryWrapper<Passenger>().eq("passenger_ID", passenger.getPassengerId()).eq("usr_id", passenger.getUsrId()))) {
log.info("乘客删除成功=======" + passenger);
return Result.ok().message("删除成功,该乘客已被删除=======" + passenger.getPassengerId());
log.info("删除成功,该乘客已被删除=======" + passenger.getPassengerId());
return Result.ok().message("乘客删除成功");
}
log.debug("乘客删除失败,该乘客不存在或用户无此权限=======" + passenger);
return Result.error().message("删除失败");
Expand Down
Loading

0 comments on commit 4ba9cde

Please sign in to comment.