AbstractResponse.java 3.63 KB
Newer Older
xieshaojun's avatar
xieshaojun committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
package vc.thinker.response;

import com.fasterxml.jackson.annotation.JsonView;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.context.MessageSource;
import org.springframework.web.servlet.support.RequestContextUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.Locale;

/**
 * @author : xieshaojun
 * @date : 2023/1/3 17:59
 */
@Data
@Accessors(chain = true)
public abstract class AbstractResponse {

    @ApiModelProperty(hidden = true)
    private MessageSource messageSource;

    @ApiModelProperty(hidden = true)
    private Locale locale;

    @ApiModelProperty("请求是否成功")
    private boolean success = true;

    @ApiModelProperty("自定义异常code")
    private String code;

    @ApiModelProperty("消息提示")
    private String message;

    public AbstractResponse() {
    }

    public AbstractResponse(MessageSource messageSource, HttpServletRequest request) {
        this.messageSource = messageSource;
        this.locale = RequestContextUtils.getLocale(request);
    }

    /**
     * 设置错误信息
     *
     * @param code    自定义异常code
     * @param message 消息提示
     */
    public void setErrorInfo(String code, String message) {
        this.success = false;
        this.code = code;
        this.message = message;
    }

    /**
     * 设置错误信息
     *
     * @param code    自定义异常code
     * @param message 消息提示
     */
    public void setErrorInfo(int code, String message) {
        this.success = false;
        this.code = String.valueOf(code);
        this.message = message;
    }

    /**
     * 设置错误信息
     *
     * @param code           自定义异常code
     * @param messageCode    用于国际化的消息编号
     * @param defaultMessage 如果找不到对应的消息,返回默认的消息
     */
    public void setErrorInfo(String code, String messageCode, String defaultMessage) {
        if (messageSource == null) {
            throw new RuntimeException("未初始化 messageSource 字段");
        }
        this.success = false;
        this.code = code;
        this.message = messageSource.getMessage(messageCode, null, defaultMessage, locale);
    }

    /**
     * 设置错误信息
     *
     * @param code           自定义异常code
     * @param messageCode    用于国际化的消息编号
     * @param defaultMessage 如果找不到对应的消息,返回默认的消息
     */
    public void setErrorInfo(int code, String messageCode, String defaultMessage) {
        setErrorInfo(String.valueOf(code), messageCode, defaultMessage);
    }

    /**
     * 设置错误信息
     *
     * @param code           自定义异常code
     * @param messageCode    用于国际化的消息编号
     * @param args           消息参数列表
     * @param defaultMessage 如果找不到对应的消息,返回默认的消息
     */
    public void setErrorInfo(String code, String messageCode, Object[] args, String defaultMessage) {
        this.success = false;
        this.code = code;
        this.message = messageSource.getMessage(messageCode, args, defaultMessage, locale);
    }

    /**
     * 设置错误信息
     *
     * @param code           自定义异常code
     * @param messageCode    用于国际化的消息编号
     * @param args           消息参数列表
     * @param defaultMessage 如果找不到对应的消息,返回默认的消息
     */
    public void setErrorInfo(int code, String messageCode, Object[] args, String defaultMessage) {
        setErrorInfo(String.valueOf(code), messageCode, args, defaultMessage);
    }
}