ComplianceServer/oldcode/CoreService/PkgSms/InterfaceExec/TencentSms.cs

220 lines
9.5 KiB
C#

using CRM.Core.CoreService.PkgSms.InterfaceModel;
using Newtonsoft.Json;
using qcloudsms_csharp;
using System;
using WX.CRM.Common;
namespace CRM.Core.CoreService.PkgSms.InterfaceExec
{
public class TencentSms : IMsgSend
{
private readonly int _appId;
private readonly string _appKey;
public TencentSms(string appId = "", string appKey = "")
{
_appId = int.Parse(appId);
_appKey = appKey;
}
public ReturnResult Execute(string[] mobiles, string msg, string typeCode)
{
var mobilesStr = string.Join(",", mobiles);
var result = new ReturnResult
{
SendStr = mobilesStr,
ReturnStr = mobilesStr
};
try
{
// 短信应用SDK AppID
//int appid = 1400157076;
// 短信应用SDK AppKey
//string appkey = "7defb5fad78e9d28179d29d6a36896be";
LogHelper.Info(mobiles[0]);
if (mobiles[0].Contains(","))
{
var msender = new SmsMultiSender(_appId, _appKey);
var arr = mobiles[0].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var msgData = JsonConvert.DeserializeAnonymousType(msg, new { TemplateId = 0, SmsSign = string.Empty });
//LogHelper.Info("mobile:" + mobiles[0] + "--TemplateId:" + msgData.TemplateId.ToString());
var mrsp = msender.sendWithParam("86", arr, msgData.TemplateId, new string[] { }, msgData.SmsSign, "", "");
if (mrsp.result == 0)
{
result.submitStatus = SubmitStatus.success;
}
else
{
result.submitStatus = SubmitStatus.fail;
}
}
else
{
var ssender = new SmsSingleSender(_appId, _appKey);
SmsSingleSenderResult res = null;
if (typeCode == "ResetPwd")
{
var message = Utility.JSONToObject<ResetPwdMessageTemplate>(msg);
res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new[] { message.SoftUserName, message.PassWord }, message.SmsSign, "", "");
}
else if (typeCode == "OpenOrder")
{
var message = Utility.JSONToObject<OpenOrderMessageTemplate>(msg);
if (string.IsNullOrEmpty(message.DonateDays))
{
//res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new[] { message.SoftUserName, message.ProductName, GetQiXian(int.Parse(message.OpenDays)) }, message.SmsSign, "", "");
res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new[] { message.ProductName, GetQiXian(int.Parse(message.OpenDays)) }, message.SmsSign, "", "");
}
else
{
//res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new[] { message.SoftUserName, message.ProductName, GetQiXian(int.Parse(message.OpenDays)), GetQiXian(int.Parse(message.DonateDays)) }, message.SmsSign, "", "");
res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new[] { message.ProductName, GetQiXian(int.Parse(message.OpenDays)), GetQiXian(int.Parse(message.DonateDays)) }, message.SmsSign, "", "");
}
}
else if (typeCode == "HgMsg")
{
var message = Utility.JSONToObject<HgMessageTemplate>(msg);
res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new string[] { }, message.SmsSign, "", "");
}
else if (typeCode == "OnlinePay")
{
var message = Utility.JSONToObject<PayMessageTemplate>(msg);
res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new string[] { message.Price.ToString(), message.PayName }, message.SmsSign, "", "");
}
else if (typeCode == "SoftRegisterMsg")
{
var message = Utility.JSONToObject<SoftReisterTemplate>(msg);
res = ssender.sendWithParam("86", mobiles[0], message.TemplateId, new string[] { }, message.SmsSign, "", "");
}
else if (typeCode == "WebOrderHg")
{
//611622
var msgData = JsonConvert.DeserializeAnonymousType(msg, new { TemplateId = 0, SmsSign = string.Empty });
res = ssender.sendWithParam("86", mobiles[0], msgData.TemplateId, new string[] { }, msgData.SmsSign, "", "");
}
else if (typeCode == "SH_TIP01")
{
var msgData = JsonConvert.DeserializeAnonymousType(msg, new { TemplateId = 0, SmsSign = string.Empty, Para = string.Empty });
if (!string.IsNullOrEmpty(msgData.Para))
{
var paraArr = msgData.Para.Split(',');
var userName = paraArr[0];
var pwd = paraArr[1];
var product = paraArr[2];
//LogHelper.Info("mobile:" + mobiles[0] + "--TemplateId:" + msgData.TemplateId.ToString());
res = ssender.sendWithParam("86", mobiles[0], msgData.TemplateId, new string[] { userName, pwd, product }, msgData.SmsSign, "", "");
}
else
{
res = ssender.sendWithParam("86", mobiles[0], msgData.TemplateId, new string[] { }, msgData.SmsSign, "", "");
}
}
else
{
//LogHelper.Error("短信没有找到合适的发送类型,请确认!");
//默认发送类型
var msgData = JsonConvert.DeserializeAnonymousType(msg, new { TemplateId = 0, SmsSign = string.Empty });
//LogHelper.Info("mobile:" + mobiles[0] + "--TemplateId:" + msgData.TemplateId.ToString());
res = ssender.sendWithParam("86", mobiles[0], msgData.TemplateId, new string[] { }, msgData.SmsSign, "", "");
}
LogHelper.Info(res.ToJson());
if (res.result == 0)
result.submitStatus = SubmitStatus.success;
else
result.submitStatus = SubmitStatus.fail;
}
}
catch (Exception ex)
{
result.submitStatus = SubmitStatus.fail;
LogHelper.Error("TencentSms.Send:" + ex.Message + ex.StackTrace);
}
return result;
}
public decimal queryAmt()
{
throw new NotImplementedException();
}
private string GetQiXian(decimal day)
{
//var cc = Math.Round((day / 373), MidpointRounding.AwayFromZero);
//if (cc >= 1)
//{
// if (cc >= 50)
// return "永久";
// else
// return cc.ToString() + "年";
//}
//cc = Math.Round((day / 187), MidpointRounding.AwayFromZero);
//if (cc >= 1)
// return "半年";
//cc = Math.Round((day / 31), MidpointRounding.AwayFromZero);
//if (cc >= 1)
// return cc.ToString() + "个月";
return day.ToString() + "天";
}
private class ResetPwdMessageTemplate
{
public int TemplateId { get; set; }
public string SmsSign { get; set; }
public string SoftUserName { get; set; }
public string PassWord { get; set; }
}
private class OpenOrderMessageTemplate
{
public int TemplateId { get; set; }
public string SmsSign { get; set; }
public string SoftUserName { get; set; }
public string ProductName { get; set; }
public string OpenDays { get; set; }
public string DonateDays { get; set; }
}
private class HgMessageTemplate
{
public int TemplateId { get; set; }
public string SmsSign { get; set; }
public string Status { get; set; }
public string ResId { get; set; }
}
private class PayMessageTemplate
{
public int TemplateId { get; set; }
public string SmsSign { get; set; }
public decimal Price { get; set; }
public string PayName { get; set; }
}
public class SoftReisterTemplate
{
/// <summary>
/// 模板ID
/// </summary>
public int TemplateId { get; set; }
/// <summary>
/// 短信签名
/// </summary>
public string SmsSign { get; set; }
/// <summary>
/// 用户名
/// </summary>
public string SoftUserName { get; set; }
}
}
}