提交 194512d9 编写于 作者: 武汉红喜's avatar 武汉红喜

Controller ResultHelper

上级 4ee8bb63
package org.hongxi.whatsmars.common.result;
/**
* Created by shenhongxi on 2018/5/18.
*/
public class Result<T> {
private int code;
private String message;
private T data; // T代替Object的好处是可以限定类型
public Result() {}
public Result(int code, String message) {
this.code = code;
this.message = message;
}
public Result(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
package org.hongxi.whatsmars.common.result;
/**
* Created by shenhongxi on 2018/5/18.
*/
public class ResultHelper {
public static Result newSuccessResult() {
return newResult(true);
}
public static <T> Result newSuccessResult(T data) {
Result result = newSuccessResult();
result.setData(data);
return result;
}
public static Result newErrorResult() {
return newResult(false);
}
public static Result newResult(boolean success) {
return newResult(success, null);
}
public static Result newResult(boolean success, String message) {
if (success) {
return new Result(200, message == null ? "操作成功" : message);
} else {
return new Result(500, message == null ? "系统繁忙,请稍后再试" : message);
}
}
}
package org.hongxi.whatsmars.common.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class ReturnItem<T> {
/* 请求状态 */
private int status;
/* 查询结果 */
private T item;
@JsonIgnore
private String[] ignoreFields = new String[]{};
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public T getItem() {
return item;
}
public void setItem(T item) {
this.item = item;
}
public String[] getIgnoreFields() {
return ignoreFields;
}
public void setIgnoreFields(String[] ignoreFields) {
this.ignoreFields = ignoreFields;
}
public ReturnItem() {
super();
}
public ReturnItem(int status, T item) {
super();
this.status = status;
this.item = item;
}
public ReturnItem(int status, T item, String[] ignoreFields) {
this.status = status;
this.item = item;
this.ignoreFields = ignoreFields;
}
}
package org.hongxi.whatsmars.common.result;
import java.util.List;
/**
* Created by shenhongxi on 2017/11/27.
*/
public abstract class ReturnItemUtils {
public static ReturnItem newSuccessReturnItem() {
return newReturnItem(true);
}
public static <T> ReturnItems newSuccessReturnItems(List<T> messages, Long total) {
ReturnItems<T> items = new ReturnItems();
items.setItems(messages);
items.setTotal(total);
items.setStatus(200);
return items;
}
public static <T> ReturnItem newSuccessReturnItem(T message) {
return newReturnItem(true, message);
}
public static ReturnItem newErrorReturnItem() {
return newReturnItem(false);
}
public static ReturnItem newReturnItem(Boolean isSuccess) {
return newReturnItem(isSuccess, null);
}
public static <T> ReturnItem<T> newReturnItem(Boolean isSuccess, T message) {
if (Boolean.TRUE.equals(isSuccess)) {
return new ReturnItem(200, returnItemMsg(message, ReturnMessage.Message.OPERATION_SUCCESS.getValue()));
} else {
return new ReturnItem(400, returnItemMsg(message, ReturnMessage.Message.OPERATION_SUCCESS.getValue()));
}
}
private static Object returnItemMsg(Object message, String defaultMsg) {
return null == message ? defaultMsg : message;
}
}
package org.hongxi.whatsmars.common.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
public class ReturnItems<T> {
/**
* 请求状态
*/
private int status;
/**
* 总条数
*/
private Long total;
/**
* 查询结果集
*/
private List<T> items;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date serverDateTime = new Date();
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public long getTotal() {
if(total == null){
return items != null ? items.size() : 0;
}
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getItems() {
return items;
}
public void setItems(List<T> items) {
this.items = items;
}
public Date getServerDateTime() {
return serverDateTime;
}
public void setServerDateTime(Date serverDateTime) {
this.serverDateTime = serverDateTime;
}
public ReturnItems() {
super();
}
public ReturnItems(int status, long total, List<T> items) {
super();
this.status = status;
this.total = total;
this.items = items;
}
public ReturnItems(List<T> items) {
super();
this.items = items;
}
}
package org.hongxi.whatsmars.common.result;
public class ReturnMessage {
private int status = 200;
private String message = "操作成功";
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public ReturnMessage() {
super();
}
public ReturnMessage(int status) {
super();
this.status = status;
}
public ReturnMessage(int status, String message) {
super();
this.status = status;
this.message = message;
}
public enum Message{
/**
* 操作成功
*/
OPERATION_SUCCESS("操作成功"),
/**
* 操作失败
*/
OPERATION_ERROR("操作失败"),
/**
* 操作异常
*/
OPERATION_ABNORMAL("操作异常"),
/**
* 更新异常
*/
UPDATE_ANOMALIES("更新异常"),
/**
* 参数错误
*/
PARAMETER_ERROR("参数错误"),
/**
* 非法请求
*/
ILLEGAL_REQUEST("非法请求"),
/**
* 登陆超时
*/
LOGIN_TIMEOUT("登陆超时"),
/**
* 未登录
*/
NOT_LOGGED_IN("未登录"),
/**
* 登陆失败
*/
FAIL_LOGIN("登陆失败"),
/**
* 存在
*/
EXIST("存在"),
/**
* 不存在
*/
NOT_EXIST("不存在");
String value;
public String getValue() {
return value;
}
private Message(String value) {
this.value = value;
}
}
}
package org.hongxi.whatsmars.earth.web.controller;
import org.apache.log4j.Logger;
import org.hongxi.whatsmars.common.result.ReturnItem;
import org.hongxi.whatsmars.common.result.ReturnItemUtils;
import org.hongxi.whatsmars.common.result.Result;
import org.hongxi.whatsmars.common.result.ResultHelper;
import org.hongxi.whatsmars.earth.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -27,10 +26,10 @@ public class NewController {
// localhost:8080/test/add.jhtml
@RequestMapping(value = "/add", method = RequestMethod.POST)
public ReturnItem<String> add(@RequestParam(name = "name") String username,
@RequestParam(required = false) String nickname,
@RequestParam(required = false, defaultValue = "1") Integer gender,
@RequestParam Integer age) {
public Result add(@RequestParam(name = "name") String username,
@RequestParam(required = false) String nickname,
@RequestParam(required = false, defaultValue = "1") Integer gender,
@RequestParam Integer age) {
try {
User user = new User();
user.setUsername(username);
......@@ -40,10 +39,10 @@ public class NewController {
userService.add(user);
} catch (Exception e) {
logger.error("##########test add error", e);
return ReturnItemUtils.newErrorReturnItem();
return ResultHelper.newErrorResult();
}
return ReturnItemUtils.newSuccessReturnItem();
return ResultHelper.newSuccessResult();
}
}
......
package org.hongxi.whatsmars.spring.boot.common.result;
/**
* Created by shenhongxi on 2018/5/18.
*/
public class Result<T> {
private int code;
private String message;
private T data; // T代替Object的好处是可以限定类型
public Result() {}
public Result(int code, String message) {
this.code = code;
this.message = message;
}
public Result(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
package org.hongxi.whatsmars.spring.boot.common.result;
/**
* Created by shenhongxi on 2018/5/18.
*/
public class ResultHelper {
public static Result newSuccessResult() {
return newResult(true);
}
public static <T> Result newSuccessResult(T data) {
Result result = newSuccessResult();
result.setData(data);
return result;
}
public static Result newErrorResult() {
return newResult(false);
}
public static Result newResult(boolean success) {
return newResult(success, null);
}
public static Result newResult(boolean success, String message) {
if (success) {
return new Result(200, message == null ? "操作成功" : message);
} else {
return new Result(500, message == null ? "系统繁忙,请稍后再试" : message);
}
}
}
......@@ -3,8 +3,9 @@ package org.hongxi.whatsmars.spring.boot.controller;
import com.github.pagehelper.Page;
import org.apache.logging.log4j.LogManager;
import org.hongxi.whatsmars.spring.boot.common.ReturnItemUtils;
import org.hongxi.whatsmars.spring.boot.common.pojo.ReturnItem;
import org.hongxi.whatsmars.spring.boot.common.pojo.ReturnItems;
import org.hongxi.whatsmars.spring.boot.common.result.Result;
import org.hongxi.whatsmars.spring.boot.common.result.ResultHelper;
import org.hongxi.whatsmars.spring.boot.exception.AppException;
import org.hongxi.whatsmars.spring.boot.model.User;
import org.hongxi.whatsmars.spring.boot.service.UserService;
......@@ -28,13 +29,13 @@ public class UserController {
private UserService userService;
@GetMapping("/find/{username}")
public ReturnItem<User> find(@PathVariable("username") String username) {
public Result<User> find(@PathVariable("username") String username) {
User user = userService.findByUsername(username);
return ReturnItemUtils.newSuccessReturnItem(user);
return ResultHelper.newSuccessResult(user);
}
@PostMapping("/add")
public ReturnItem<String> add(@RequestParam(name = "name") String username,
public Result add(@RequestParam(name = "name") String username,
@RequestParam(required = false) String nickname,
@RequestParam(required = false, defaultValue = "1") Integer gender,
@RequestParam Integer age) {
......@@ -44,19 +45,19 @@ public class UserController {
user.setGender(gender);
user.setAge(age);
userService.add(user);
return ReturnItemUtils.newSuccessReturnItem();
return ResultHelper.newSuccessResult();
}
@PutMapping("/update")
public ReturnItem<String> update(@RequestBody User user) { // 以json格式接收参数, RequestBody也可省略
public Result update(@RequestBody User user) { // 以json格式接收参数, RequestBody也可省略
userService.update(user);
return ReturnItemUtils.newSuccessReturnItem();
return ResultHelper.newSuccessResult();
}
@DeleteMapping("/delete")
public ReturnItem<String> delete(@RequestParam Long id) {
public Result delete(@RequestParam Long id) {
userService.delete(id);
return ReturnItemUtils.newSuccessReturnItem();
return ResultHelper.newSuccessResult();
}
@RequestMapping(value = "/e", method = RequestMethod.GET)
......@@ -82,15 +83,15 @@ public class UserController {
}
@PostMapping("/addBatch")
public ReturnItem<String> addBatch() {
public Result addBatch() {
try {
userService.testTransaction(buildUsers());
} catch (Exception e) {
logger.error("#########user addBatch error", e);
return ReturnItemUtils.newErrorReturnItem();
return ResultHelper.newErrorResult();
}
return ReturnItemUtils.newSuccessReturnItem();
return ResultHelper.newSuccessResult();
}
private List<User> buildUsers() {
......
package org.hongxi.whatsmars.spring.boot.exception;
import org.hongxi.whatsmars.spring.boot.common.pojo.ReturnItem;
import org.hongxi.whatsmars.spring.boot.common.result.Result;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
......@@ -55,13 +55,13 @@ public class AppException extends RuntimeException {
return this;
}
public ReturnItem<String> toResultItem() {
return new ReturnItem<String>(getErrorCode().value, getErrorMsg());
public Result toResult() {
return new Result(getErrorCode().value, getErrorMsg());
}
public enum Code {
SUCCESS(200),
ERROR(400);
ERROR(500);
private int value;
Code(int code) {
......
......@@ -3,8 +3,7 @@ package org.hongxi.whatsmars.spring.boot.exception;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;
import org.hongxi.whatsmars.spring.boot.common.ProfileUtils;
import org.hongxi.whatsmars.spring.boot.common.pojo.ReturnItem;
import org.hongxi.whatsmars.spring.boot.common.pojo.ReturnMessage;
import org.hongxi.whatsmars.spring.boot.common.result.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.logging.LogLevel;
......@@ -31,18 +30,18 @@ public class AppExceptionHandler {
* 业务异常处理,直接返回异常信息提示
*/
@ExceptionHandler(AppException.class)
public ResponseEntity<ReturnItem> businessExceptionHandle(AppException exception, HttpServletRequest request) {
public ResponseEntity<Result> businessExceptionHandle(AppException exception, HttpServletRequest request) {
logError(exception, request, LogLevel.WARN);
return new ResponseEntity<ReturnItem>(exception.toResultItem(), HttpStatus.OK);
return new ResponseEntity<Result>(exception.toResult(), HttpStatus.OK);
}
/**
* 其他为定义异常,统一返回默认错误信息,避免打印出异常堆栈
*/
@ExceptionHandler(Exception.class)
public ResponseEntity<ReturnItem> defaultExceptionHandle(Exception exception, HttpServletRequest request) {
public ResponseEntity<Result> defaultExceptionHandle(Exception exception, HttpServletRequest request) {
logError(exception, request, LogLevel.ERROR);
return new ResponseEntity<ReturnItem>(new ReturnItem(AppException.Code.ERROR.getValue(), ProfileUtils.isDev() ? exception.getMessage() : ReturnMessage.Message.OPERATION_ERROR.getValue()), HttpStatus.OK);
return new ResponseEntity<Result>(new Result(AppException.Code.ERROR.getValue(), ProfileUtils.isDev() ? exception.getMessage() : "操作失败"), HttpStatus.OK);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册