package com.ruoyi.message; import java.io.Serializable; /** * 统一发送结果。 *

* 各站点原始实现用字符串标记(如 {@code "true"} / {@code "success"} / {@code Boolean})表示成败, * 调用方各自解析第三方返回格式,容易出错。本类把「是否成功 + 渠道 + 第三方原始码 + 原始响应」统一收口。 *

* 注意:{@link #ok} 为 false 时,{@link #message} 已经包含可直接写入随访子任务 remark 的中文描述, * 但为了保持各站点线上行为不变,调用方仍可沿用原有 remark 文案。 */ public class SendResult implements Serializable { private static final long serialVersionUID = 1L; /** * 是否发送成功 */ private boolean ok; /** * 渠道类型:短信 / 微信公众号 */ private MessageChannel channelType; /** * 具体发送方 key,例如 xh / ls / sltd / nhfy / hzszlyy */ private String senderKey; /** * 第三方返回的业务码(有就带上,没有为 null),例如丽水的 Code、市一的 code */ private String code; /** * 失败原因 / 补充说明 */ private String message; /** * 第三方原始响应,便于排查 */ private String rawResponse; public SendResult() { } /** * 构造成功结果 */ public static SendResult success(String senderKey, MessageChannel channelType, String rawResponse) { SendResult result = new SendResult(); result.ok = true; result.senderKey = senderKey; result.channelType = channelType; result.rawResponse = rawResponse; return result; } /** * 构造失败结果 */ public static SendResult fail(String senderKey, MessageChannel channelType, String message, String rawResponse) { SendResult result = new SendResult(); result.ok = false; result.senderKey = senderKey; result.channelType = channelType; result.message = message; result.rawResponse = rawResponse; return result; } /** * 补充第三方业务码,返回自身便于链式调用 */ public SendResult withCode(String code) { this.code = code; return this; } /** * 补充说明信息,返回自身便于链式调用 */ public SendResult withMessage(String message) { this.message = message; return this; } /** * 返回与旧代码等价的布尔标记,便于渐进式替换 * * @return 成功返回 "true",失败返回 "false" */ public String asLegacyFlag() { return ok ? "true" : "false"; } public boolean isOk() { return ok; } public void setOk(boolean ok) { this.ok = ok; } public MessageChannel getChannelType() { return channelType; } public void setChannelType(MessageChannel channelType) { this.channelType = channelType; } public String getSenderKey() { return senderKey; } public void setSenderKey(String senderKey) { this.senderKey = senderKey; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getRawResponse() { return rawResponse; } public void setRawResponse(String rawResponse) { this.rawResponse = rawResponse; } @Override public String toString() { return "SendResult{ok=" + ok + ", channelType=" + channelType + ", senderKey='" + senderKey + '\'' + ", code='" + code + '\'' + ", message='" + message + '\'' + ", rawResponse='" + rawResponse + '\'' + '}'; } }