mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-27 01:32:03 +08:00
将阿里云、云片的短信错误码,进行翻译
This commit is contained in:
parent
a432b303e6
commit
47ac6fd6f5
@ -9,6 +9,8 @@ import static cn.iocoder.dashboard.framework.sms.core.enums.SmsFrameworkErrorCod
|
|||||||
/**
|
/**
|
||||||
* 阿里云的 SmsCodeMapping 实现类
|
* 阿里云的 SmsCodeMapping 实现类
|
||||||
*
|
*
|
||||||
|
* 参见 https://help.aliyun.com/document_detail/101346.htm 文档
|
||||||
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
public class AliyunSmsCodeMapping implements SmsCodeMapping {
|
public class AliyunSmsCodeMapping implements SmsCodeMapping {
|
||||||
@ -17,11 +19,23 @@ public class AliyunSmsCodeMapping implements SmsCodeMapping {
|
|||||||
public ErrorCode apply(String apiCode) {
|
public ErrorCode apply(String apiCode) {
|
||||||
switch (apiCode) {
|
switch (apiCode) {
|
||||||
case "OK": return GlobalErrorCodeConstants.SUCCESS;
|
case "OK": return GlobalErrorCodeConstants.SUCCESS;
|
||||||
case "MissingAccessKeyId": return SMS_CHANNEL_API_KEY_MISSING;
|
case "isv.ACCOUNT_NOT_EXISTS":
|
||||||
case "isp.RAM_PERMISSION_DENY": return SMS_CHANNEL_PERMISSION_DENY;
|
case "isv.ACCOUNT_ABNORMAL":
|
||||||
|
case "MissingAccessKeyId": return SMS_ACCOUNT_INVALID;
|
||||||
|
case "isp.RAM_PERMISSION_DENY": return SMS_PERMISSION_DENY;
|
||||||
|
case "isv.INVALID_JSON_PARAM":
|
||||||
case "isv.INVALID_PARAMETERS": return SMS_API_PARAM_ERROR;
|
case "isv.INVALID_PARAMETERS": return SMS_API_PARAM_ERROR;
|
||||||
case "isv.BUSINESS_LIMIT_CONTROL": return SMS_SEND_LIMIT_CONTROL;
|
case "isv.BUSINESS_LIMIT_CONTROL": return SMS_SEND_BUSINESS_LIMIT_CONTROL;
|
||||||
case "isv.SMS_TEMPLATE_ILLEGAL": return SMS_TEMPLATE_NOT_EXISTS;
|
case "isv.DAY_LIMIT_CONTROL": return SMS_SEND_DAY_LIMIT_CONTROL;
|
||||||
|
case "isv.SMS_CONTENT_ILLEGAL": return SMS_SEND_CONTENT_INVALID;
|
||||||
|
case "isv.SMS_TEMPLATE_ILLEGAL": return SMS_TEMPLATE_INVALID;
|
||||||
|
case "isv.SMS_SIGNATURE_ILLEGAL":
|
||||||
|
case "isv.SIGN_NAME_ILLEGAL":
|
||||||
|
case "isv.SMS_SIGN_ILLEGAL": return SMS_SIGN_INVALID;
|
||||||
|
case "isv.AMOUNT_NOT_ENOUGH":
|
||||||
|
case "isv.OUT_OF_SERVICE": return SMS_ACCOUNT_MONEY_NOT_ENOUGH;
|
||||||
|
case "isv.MOBILE_NUMBER_ILLEGAL": return SMS_MOBILE_INVALID;
|
||||||
|
case "isv.TEMPLATE_MISSING_PARAMETERS": return SMS_TEMPLATE_PARAM_ERROR;
|
||||||
}
|
}
|
||||||
return SMS_UNKNOWN;
|
return SMS_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@ import static com.yunpian.sdk.constant.Code.*;
|
|||||||
/**
|
/**
|
||||||
* 云片的 SmsCodeMapping 实现类
|
* 云片的 SmsCodeMapping 实现类
|
||||||
*
|
*
|
||||||
|
* 参见 https://www.yunpian.com/official/document/sms/zh_CN/returnvalue_common 文档
|
||||||
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
public class YunpianSmsCodeMapping implements SmsCodeMapping {
|
public class YunpianSmsCodeMapping implements SmsCodeMapping {
|
||||||
@ -21,8 +23,21 @@ public class YunpianSmsCodeMapping implements SmsCodeMapping {
|
|||||||
case OK: return SUCCESS;
|
case OK: return SUCCESS;
|
||||||
case ARGUMENT_MISSING: return SMS_API_PARAM_ERROR;
|
case ARGUMENT_MISSING: return SMS_API_PARAM_ERROR;
|
||||||
case BAD_ARGUMENT_FORMAT: return SMS_TEMPLATE_PARAM_ERROR;
|
case BAD_ARGUMENT_FORMAT: return SMS_TEMPLATE_PARAM_ERROR;
|
||||||
case TPL_NOT_FOUND: return SMS_TEMPLATE_NOT_EXISTS;
|
case TPL_NOT_FOUND:
|
||||||
case TPL_NOT_VALID: return SMS_TEMPLATE_INVALID;
|
case TPL_NOT_VALID: return SMS_TEMPLATE_INVALID;
|
||||||
|
case MONEY_NOT_ENOUGH: return SMS_ACCOUNT_MONEY_NOT_ENOUGH;
|
||||||
|
case BLACK_WORD: return SMS_SEND_CONTENT_INVALID;
|
||||||
|
case DUP_IN_SHORT_TIME:
|
||||||
|
case TOO_MANY_TIME_IN_5:
|
||||||
|
case DAY_LIMIT_PER_MOBILE:
|
||||||
|
case HOUR_LIMIT_PER_MOBILE: return SMS_SEND_BUSINESS_LIMIT_CONTROL;
|
||||||
|
case BLACK_PHONE_FILTER: return SMS_MOBILE_BLACK;
|
||||||
|
case SIGN_NOT_MATCH:
|
||||||
|
case BAD_SIGN_FORMAT:
|
||||||
|
case SIGN_NOT_VALID: return SMS_SIGN_INVALID;
|
||||||
|
case BAD_API_KEY: return SMS_ACCOUNT_INVALID;
|
||||||
|
case API_NOT_ALLOWED: return SMS_PERMISSION_DENY;
|
||||||
|
case IP_NOT_ALLOWED: return SMS_IP_DENY;
|
||||||
}
|
}
|
||||||
return SMS_UNKNOWN;
|
return SMS_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
@ -11,21 +11,37 @@ import cn.iocoder.dashboard.common.exception.ErrorCode;
|
|||||||
*/
|
*/
|
||||||
public interface SmsFrameworkErrorCodeConstants {
|
public interface SmsFrameworkErrorCodeConstants {
|
||||||
|
|
||||||
// ========== 渠道相关 2001000100 ==========
|
ErrorCode SMS_UNKNOWN = new ErrorCode(2001000000, "未知错误,需要解析");
|
||||||
ErrorCode SMS_CHANNEL_API_KEY_MISSING = new ErrorCode(2001000101, "API Key 不存在");
|
|
||||||
ErrorCode SMS_CHANNEL_PERMISSION_DENY = new ErrorCode(2001000102, "没有发送短信的权限");
|
|
||||||
|
|
||||||
// ========== 模板相关(2001000200 开头) ==========
|
// ========== 权限 / 限流等相关 2001000100 ==========
|
||||||
ErrorCode SMS_TEMPLATE_NOT_EXISTS = new ErrorCode(2001000200, "短信模板不存在");
|
|
||||||
ErrorCode SMS_TEMPLATE_DISABLE = new ErrorCode(2001000201, "短信模板被禁用"); // 例如说,我们在管理后台禁用了
|
|
||||||
ErrorCode SMS_TEMPLATE_INVALID = new ErrorCode(2001000202, "短信模板不可用"); // 例如说,短信模板正在审核中
|
|
||||||
ErrorCode SMS_TEMPLATE_PARAM_ERROR = new ErrorCode(2001000203, "模板参数不正确");
|
|
||||||
|
|
||||||
// ========== 其它相关(2001000900 开头) ==========
|
ErrorCode SMS_PERMISSION_DENY = new ErrorCode(2001000100, "没有发送短信的权限");
|
||||||
|
// 云片:可以配置 IP 白名单,只有在白名单中才可以发送短信
|
||||||
|
ErrorCode SMS_IP_DENY = new ErrorCode(2001000100, "IP 不允许发送短信");
|
||||||
|
|
||||||
|
// 阿里云:将短信发送频率限制在正常的业务限流范围内。默认短信验证码:使用同一签名,对同一个手机号验证码,支持 1 条 / 分钟,5 条 / 小时,累计 10 条 / 天。
|
||||||
|
ErrorCode SMS_SEND_BUSINESS_LIMIT_CONTROL = new ErrorCode(2001000102, "指定手机的发送限流");
|
||||||
|
// 阿里云:已经达到您在控制台设置的短信日发送量限额值。在国内消息设置 > 安全设置,修改发送总量阈值。
|
||||||
|
ErrorCode SMS_SEND_DAY_LIMIT_CONTROL = new ErrorCode(2001000103, "每天的发送限流");
|
||||||
|
|
||||||
|
ErrorCode SMS_SEND_CONTENT_INVALID = new ErrorCode(2001000104, "短信内容有敏感词");
|
||||||
|
|
||||||
|
// ========== 模板相关 2001000200 ==========
|
||||||
|
ErrorCode SMS_TEMPLATE_INVALID = new ErrorCode(2001000200, "短信模板不合法"); // 包括短信模板不存在
|
||||||
|
ErrorCode SMS_TEMPLATE_PARAM_ERROR = new ErrorCode(2001000201, "模板参数不正确");
|
||||||
|
|
||||||
|
// ========== 签名相关 2001000300 ==========
|
||||||
|
ErrorCode SMS_SIGN_INVALID = new ErrorCode(2001000300, "短信签名不可用");
|
||||||
|
|
||||||
|
// ========== 账户相关 2001000400 ==========
|
||||||
|
ErrorCode SMS_ACCOUNT_MONEY_NOT_ENOUGH = new ErrorCode(2001000400, "账户余额不足");
|
||||||
|
ErrorCode SMS_ACCOUNT_INVALID = new ErrorCode(2001000401, "apiKey 不存在");
|
||||||
|
|
||||||
|
// ========== 其它相关 2001000900 开头 ==========
|
||||||
ErrorCode SMS_API_PARAM_ERROR = new ErrorCode(2001000900, "请求参数缺失");
|
ErrorCode SMS_API_PARAM_ERROR = new ErrorCode(2001000900, "请求参数缺失");
|
||||||
|
ErrorCode SMS_MOBILE_INVALID = new ErrorCode(2001000901, "手机格式不正确");
|
||||||
|
ErrorCode SMS_MOBILE_BLACK = new ErrorCode(2001000902, "手机号在黑名单中");
|
||||||
|
|
||||||
ErrorCode SMS_SEND_LIMIT_CONTROL = new ErrorCode(2001000997, "业务限流"); // 将短信发送频率限制在正常的业务限流范围内。默认短信验证码:使用同一签名,对同一个手机号验证码,支持 1 条 / 分钟,5 条 / 小时,累计 10 条 / 天。
|
ErrorCode EXCEPTION = new ErrorCode(2001000999, "调用异常");
|
||||||
ErrorCode EXCEPTION = new ErrorCode(2001000998, "调用异常");
|
|
||||||
ErrorCode SMS_UNKNOWN = new ErrorCode(2001000999, "未知错误,需要解析");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package cn.iocoder.dashboard.framework.sms.core.client.impl.aliyun;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.BaseMockitoUnitTest;
|
||||||
|
import cn.iocoder.dashboard.common.exception.enums.GlobalErrorCodeConstants;
|
||||||
|
import cn.iocoder.dashboard.framework.sms.core.enums.SmsFrameworkErrorCodeConstants;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link AliyunSmsCodeMapping} 的单元测试
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public class AliyunSmsCodeMappingTest extends BaseMockitoUnitTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private AliyunSmsCodeMapping codeMapping;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testApply() {
|
||||||
|
assertEquals(GlobalErrorCodeConstants.SUCCESS, codeMapping.apply("OK"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("MissingAccessKeyId"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("isv.ACCOUNT_NOT_EXISTS"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("isv.ACCOUNT_ABNORMAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_DAY_LIMIT_CONTROL, codeMapping.apply("isv.DAY_LIMIT_CONTROL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_CONTENT_INVALID, codeMapping.apply("isv.SMS_CONTENT_ILLEGAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("isv.SMS_SIGN_ILLEGAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("isv.SIGN_NAME_ILLEGAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply("isp.RAM_PERMISSION_DENY"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH, codeMapping.apply("isv.OUT_OF_SERVICE"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH, codeMapping.apply("isv.AMOUNT_NOT_ENOUGH"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID, codeMapping.apply("isv.SMS_TEMPLATE_ILLEGAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("isv.SMS_SIGNATURE_ILLEGAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR, codeMapping.apply("isv.INVALID_PARAMETERS"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR, codeMapping.apply("isv.INVALID_JSON_PARAM"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_MOBILE_INVALID, codeMapping.apply("isv.MOBILE_NUMBER_ILLEGAL"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR, codeMapping.apply("isv.TEMPLATE_MISSING_PARAMETERS"));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply("isv.BUSINESS_LIMIT_CONTROL"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package cn.iocoder.dashboard.framework.sms.core.client.impl.yunpian;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.BaseMockitoUnitTest;
|
||||||
|
import cn.iocoder.dashboard.common.exception.enums.GlobalErrorCodeConstants;
|
||||||
|
import cn.iocoder.dashboard.framework.sms.core.enums.SmsFrameworkErrorCodeConstants;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
|
||||||
|
import static com.yunpian.sdk.constant.Code.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link YunpianSmsCodeMapping} 的单元测试
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
class YunpianSmsCodeMappingTest extends BaseMockitoUnitTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private YunpianSmsCodeMapping codeMapping;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testApply() {
|
||||||
|
assertEquals(GlobalErrorCodeConstants.SUCCESS, codeMapping.apply(String.valueOf(OK)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR, codeMapping.apply(String.valueOf(ARGUMENT_MISSING)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR, codeMapping.apply(String.valueOf(BAD_ARGUMENT_FORMAT)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH, codeMapping.apply(String.valueOf(MONEY_NOT_ENOUGH)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID, codeMapping.apply(String.valueOf(TPL_NOT_FOUND)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID, codeMapping.apply(String.valueOf(TPL_NOT_VALID)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply(String.valueOf(DUP_IN_SHORT_TIME)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply(String.valueOf(TOO_MANY_TIME_IN_5)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply(String.valueOf(DAY_LIMIT_PER_MOBILE)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply(String.valueOf(HOUR_LIMIT_PER_MOBILE)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_MOBILE_BLACK, codeMapping.apply(String.valueOf(BLACK_PHONE_FILTER)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply(String.valueOf(SIGN_NOT_MATCH)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply(String.valueOf(SIGN_NOT_VALID)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply(String.valueOf(BAD_SIGN_FORMAT)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply(String.valueOf(BAD_API_KEY)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply(String.valueOf(API_NOT_ALLOWED)));
|
||||||
|
assertEquals(SmsFrameworkErrorCodeConstants.SMS_IP_DENY, codeMapping.apply(String.valueOf(IP_NOT_ALLOWED)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user