|
@@ -0,0 +1,141 @@ |
|
|
|
|
|
using System; |
|
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
|
using System.Linq; |
|
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
|
using Learun.Util; |
|
|
|
|
|
using Newtonsoft.Json; |
|
|
|
|
|
using Newtonsoft.Json.Linq; |
|
|
|
|
|
|
|
|
|
|
|
namespace Quanjiang.DigitalScholl.SendSms |
|
|
|
|
|
{ |
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 一信通短信平台 |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
public class YixintongSms:ISms |
|
|
|
|
|
{ |
|
|
|
|
|
private static readonly string SpCode = ConfigManager.AppSettings["SpCode"].Value;//企业编号 |
|
|
|
|
|
private static readonly string LoginName = ConfigManager.AppSettings["LoginName"].Value;//用户名 |
|
|
|
|
|
private static readonly string Password = ConfigManager.AppSettings["Password"].Value;//接口密钥 |
|
|
|
|
|
|
|
|
|
|
|
public async Task<(string code, string randomNum, string message, string errorType)> SendSmsToSingle(string phoneNumber, SmsType st, List<string> sendParams = null) |
|
|
|
|
|
{ |
|
|
|
|
|
(string code, string randomNum, string message, string errorType) result; |
|
|
|
|
|
var (templatecode, templateparam, randomNum) = GetSmsTemplateBySmsType(st); |
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
|
|
|
// 按照协议组织 post 请求包体 |
|
|
|
|
|
JObject data = new JObject(); |
|
|
|
|
|
data.Add("SpCode", SpCode); |
|
|
|
|
|
data.Add("LoginName", LoginName); |
|
|
|
|
|
data.Add("Password", Password); |
|
|
|
|
|
data.Add("MessageContent", sendParams.FirstOrDefault()); |
|
|
|
|
|
data.Add("UserNumber", phoneNumber); |
|
|
|
|
|
data.Add("templateId", templatecode); |
|
|
|
|
|
data.Add("SerialNumber", DateTime.Now.ToString("yyyyMMddHHmmssffffff")); |
|
|
|
|
|
data.Add("ScheduleTime", ""); |
|
|
|
|
|
data.Add("f", "1"); |
|
|
|
|
|
data.Add("signCode", ""); |
|
|
|
|
|
|
|
|
|
|
|
string pushresult = Learun.Util.HttpMethods.HttpPost("https://api.ums86.com:9600/sms/Api/Send.do", JsonConvert.SerializeObject(data)); |
|
|
|
|
|
var objresult = JsonConvert.DeserializeObject<SmsResult>(pushresult); |
|
|
|
|
|
result = objresult.result == 0 ? ("OK", randomNum, "", "") : (objresult.result.ToString(), "", objresult.description, objresult.faillist); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
catch (Exception e) |
|
|
|
|
|
{ |
|
|
|
|
|
result = ("", "", e.Message, e.GetType().ToString()); |
|
|
|
|
|
} |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public async Task<(string code, string randomNum, string message, string errorType)> SendSmsToMulti(List<string> phoneNumbers, SmsType st, List<string> sendParams = null) |
|
|
|
|
|
{ |
|
|
|
|
|
(string code, string randomNum, string message, string errorType) result; |
|
|
|
|
|
var (templatecode, templateparam, randomNum) = GetSmsTemplateBySmsType(st); |
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
|
|
|
// 按照协议组织 post 请求包体 |
|
|
|
|
|
JObject data = new JObject(); |
|
|
|
|
|
data.Add("SpCode", SpCode); |
|
|
|
|
|
data.Add("LoginName", LoginName); |
|
|
|
|
|
data.Add("Password", Password); |
|
|
|
|
|
data.Add("MessageContent", sendParams.FirstOrDefault()); |
|
|
|
|
|
data.Add("UserNumber", string.Join(",", phoneNumbers.ToArray())); |
|
|
|
|
|
data.Add("templateId", templatecode); |
|
|
|
|
|
data.Add("SerialNumber", DateTime.Now.ToString("yyyyMMddHHmmssffffff")); |
|
|
|
|
|
data.Add("ScheduleTime", ""); |
|
|
|
|
|
data.Add("f", "1"); |
|
|
|
|
|
data.Add("signCode", ""); |
|
|
|
|
|
|
|
|
|
|
|
string pushresult = Learun.Util.HttpMethods.HttpPost("https://api.ums86.com:9600/sms/Api/Send.do", JsonConvert.SerializeObject(data)); |
|
|
|
|
|
var objresult = JsonConvert.DeserializeObject<SmsResult>(pushresult); |
|
|
|
|
|
result = objresult.result == 0 ? ("OK", randomNum, "", "") : (objresult.result.ToString(), "", objresult.description, objresult.faillist); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
catch (Exception e) |
|
|
|
|
|
{ |
|
|
|
|
|
result = ("", "", e.Message, e.GetType().ToString()); |
|
|
|
|
|
} |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 根据短信通知类型获取短信模板 |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
/// <param name="st"></param> |
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
private (string templateCode, string templateParam, string randomNum) GetSmsTemplateBySmsType(SmsType st) |
|
|
|
|
|
{ |
|
|
|
|
|
(string templateCode, string templateParam,string randomNum) result; |
|
|
|
|
|
var randomNum = CommonHelper.RandNum(6); |
|
|
|
|
|
switch (st) |
|
|
|
|
|
{ |
|
|
|
|
|
case SmsType.Register: |
|
|
|
|
|
result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum); |
|
|
|
|
|
break; |
|
|
|
|
|
case SmsType.LoginBind: |
|
|
|
|
|
result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum); |
|
|
|
|
|
break; |
|
|
|
|
|
case SmsType.ForgetPassWord: |
|
|
|
|
|
result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum); |
|
|
|
|
|
break; |
|
|
|
|
|
case SmsType.LessionNotification: |
|
|
|
|
|
result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum); |
|
|
|
|
|
break; |
|
|
|
|
|
case SmsType.LeaveNotification: |
|
|
|
|
|
result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum); |
|
|
|
|
|
break; |
|
|
|
|
|
case SmsType.MakeUpMissedLessonsNotification: |
|
|
|
|
|
result = ("SMS_137485060", JsonConvert.SerializeObject(new { code = randomNum }), randomNum); |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(st), st, null); |
|
|
|
|
|
} |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 发送短信返回内容 |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
public class SmsResult { |
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 错误代码(0:发送短信成功,0-34,) |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
public int result { get; set; } |
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 错误描述 |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
public string description { get; set; } |
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 任务编号 |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
public string taskid { get; set; } |
|
|
|
|
|
/// <summary> |
|
|
|
|
|
/// 失败号码列表(可多个) |
|
|
|
|
|
/// </summary> |
|
|
|
|
|
public string faillist { get; set; } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |