///*
// * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
// *
// * https://www.mall4j.com/
// *
// * 未经允许，不可做商业用途！
// *
// * 版权所有，侵权必究！
// */
//package com.mcwl.common.domain.response;
//
//import com.fasterxml.jackson.databind.annotation.JsonSerialize;
//import com.mcwl.common.config.serializer.SensitiveJsonSerializer;
//import io.swagger.v3.oas.annotations.media.Schema;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.Serializable;
//import java.util.Objects;
//
///**
// * 响应实体
// * @author mcwl
// */
//public class ServerResponseEntity<T> implements Serializable {
//
//    private static final Logger log = LoggerFactory.getLogger(ServerResponseEntity.class);
//
//    /**
//     * 状态码
//     */
//     @Schema(description = "状态码" ) private String code;
//
//    /**
//     * 信息
//     */
//     @Schema(description = "信息" ) private String msg;
//
//    /**
//     * 数据
//     */
//     @Schema(description = "数据" )
//     @JsonSerialize(using = SensitiveJsonSerializer.class)
//     private T data;
//
//    /**
//     * 版本
//     */
//    private String version;
//
//    /**
//     * 时间
//     */
//    private Long timestamp;
//
//    private String sign;
//
//    public String getSign() {
//        return sign;
//    }
//
//    public void setSign(String sign) {
//        this.sign = sign;
//    }
//
//    public String getCode() {
//        return code;
//    }
//
//    public void setCode(String code) {
//        this.code = code;
//    }
//
//    public String getMsg() {
//        return msg;
//    }
//
//    public void setMsg(String msg) {
//        this.msg = msg;
//    }
//
//    public T getData() {
//        return data;
//    }
//
//    public ServerResponseEntity setData(T data) {
//        this.data = data;
//        return this;
//    }
//
//    public Long getTimestamp() {
//        return timestamp;
//    }
//
//    public void setTimestamp(Long timestamp) {
//        this.timestamp = timestamp;
//    }
//
//    public String getVersion() {
//        return version;
//    }
//
//    public void setVersion(String version) {
//        this.version = version;
//    }
//
//    public boolean isSuccess() {
//        return Objects.equals(ResponseEnum.OK.value(), this.code);
//    }
//    public boolean isFail() {
//        return !Objects.equals(ResponseEnum.OK.value(), this.code);
//    }
//
//    public ServerResponseEntity() {
//        // 版本号
//        this.version = "mall4j.v231204";
//    }
//
//    public static <T> ServerResponseEntity<T> success(T data) {
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setData(data);
//        serverResponseEntity.setCode(ResponseEnum.OK.value());
//        return serverResponseEntity;
//    }
//
//    public static <T> ServerResponseEntity<T> success() {
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setCode(ResponseEnum.OK.value());
//        serverResponseEntity.setMsg(ResponseEnum.OK.getMsg());
//        return serverResponseEntity;
//    }
//
//    public static <T> ServerResponseEntity<T> success(Integer code, T data) {
//        return success(String.valueOf(code), data);
//    }
//
//    public static <T> ServerResponseEntity<T> success(String code, T data) {
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setCode(code);
//        serverResponseEntity.setData(data);
//        return serverResponseEntity;
//    }
//
//    /**
//     * 前端显示失败消息
//     * @param msg 失败消息
//     * @return
//     */
//    public static <T> ServerResponseEntity<T> showFailMsg(String msg) {
//        log.error(msg);
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setMsg(msg);
//        serverResponseEntity.setCode(ResponseEnum.SHOW_FAIL.value());
//        return serverResponseEntity;
//    }
//
//    public static <T> ServerResponseEntity<T> fail(ResponseEnum responseEnum) {
//        log.error(responseEnum.toString());
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setMsg(responseEnum.getMsg());
//        serverResponseEntity.setCode(responseEnum.value());
//        return serverResponseEntity;
//    }
//
//    public static <T> ServerResponseEntity<T> fail(ResponseEnum responseEnum, T data) {
//        log.error(responseEnum.toString());
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setMsg(responseEnum.getMsg());
//        serverResponseEntity.setCode(responseEnum.value());
//        serverResponseEntity.setData(data);
//        return serverResponseEntity;
//    }
//
//    public static <T> ServerResponseEntity<T> fail(String code, String msg, T data) {
//        log.error(msg);
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setMsg(msg);
//        serverResponseEntity.setCode(code);
//        serverResponseEntity.setData(data);
//        return serverResponseEntity;
//    }
//
//    public static <T> ServerResponseEntity<T> fail(String code, String msg) {
//        return fail(code, msg, null);
//    }
//
//    public static <T> ServerResponseEntity<T> fail(Integer code, T data) {
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setCode(String.valueOf(code));
//        serverResponseEntity.setData(data);
//        return serverResponseEntity;
//    }
//
//    @SuppressWarnings("unchecked")
//    public static <T> ServerResponseEntity<T> transform(ServerResponseEntity<?> oldServerResponseEntity) {
//        ServerResponseEntity<T> serverResponseEntity = new ServerResponseEntity<>();
//        serverResponseEntity.setMsg(oldServerResponseEntity.getMsg());
//        serverResponseEntity.setCode(oldServerResponseEntity.getCode());
//        serverResponseEntity.setData((T) oldServerResponseEntity.getData());
//        log.error(serverResponseEntity.toString());
//        return serverResponseEntity;
//    }
//
//    @Override
//    public String toString() {
//        return "ServerResponseEntity{" +
//                "code='" + code + '\'' +
//                ", msg='" + msg + '\'' +
//                ", data=" + data +
//                ", version='" + version + '\'' +
//                ", timestamp=" + timestamp +
//                ", sign='" + sign + '\'' +
//                '}';
//    }
//}
