All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sophon.module.sms.integration.client.dto.SmsInvokeResult Maven / Gradle / Ivy

There is a newer version: 1.0.4
Show newest version
package org.sophon.module.sms.integration.client.dto;

import java.io.Serializable;

import org.apache.commons.lang3.StringUtils;
import org.sophon.commons.exception.ErrorCodeMapping;
import org.sophon.commons.exception.SophonException;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 短信的 调用结果包装类
 *
 * 考虑到不同的平台,返回的 code 和 msg 是不同的,所以统一额外返回 {@link #apiCode} 和 {@link #apiMsg} 字段
 *
 * 另外,一些短信平台(例如说阿里云、腾讯云)会返回一个请求编号,用于排查请求失败的问题,我们设置到 {@link #apiRequestId} 字段
 *
 * @author moushaokun
 * @since time: 2023-03-13 10:53
 */
@Data
@ToString
@Accessors(chain = true)
public class SmsInvokeResult implements Serializable {
    private static final long serialVersionUID = 5477428092949269543L;

    /**
     * API 返回错误码
     *
     * 由于第三方的错误码可能是字符串,所以使用 String 类型
     */
    private String            apiCode;
    /**
     * API 返回提示
     */
    private String            apiMsg;
    /**
     * API 请求编号
     */
    private String            apiRequestId;
    /**
     * 请求结果
     */
    private T                 data;
    /**
     * 是否成功过
     */
    private boolean           success;
    /**
     * 异常信息
     */
    private SophonException   exception;

    private SmsInvokeResult() {
    }

    public static  SmsInvokeResult build(boolean success, String apiCode, String apiMsg,
                                               String apiRequestId, T data,
                                               ErrorCodeMapping errorCodeMapping) {
        SmsInvokeResult result = new SmsInvokeResult<>();
        result.setSuccess(success);
        result.setApiCode(apiCode);
        result.setApiMsg(apiMsg);
        result.setApiRequestId(apiRequestId);
        result.setData(data);
        if (!success && StringUtils.isNotBlank(apiCode) && errorCodeMapping != null) {
            result.setException(new SophonException(errorCodeMapping.apply(apiCode)));
        }
        return result;
    }

    public static  SmsInvokeResult error(SophonException exception) {
        SmsInvokeResult result = new SmsInvokeResult<>();
        result.setSuccess(false);
        result.setException(exception);
        return result;
    }

    public static  SmsInvokeResult success(T data) {
        SmsInvokeResult result = new SmsInvokeResult<>();
        result.setSuccess(true);
        result.setData(data);
        return result;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy