using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using GxPress.Common.Encrypt;
using GxPress.Common.Sms;
using GxPress.Service.Interface.Sms;
using Newtonsoft.Json;
using GxPress.Repository.Interface.SmsLog;
using System.Threading.Tasks;
namespace GxPress.Service.Implement.Sms
{
public class SmsService : ISmsService
{
private readonly ISmsLogRepository smsLogRepository;
public SmsService(ISmsLogRepository smsLogRepository)
{
this.smsLogRepository = smsLogRepository;
}
///
/// 广西短信模板
///
///
///
///
public async Task SendSmsTemplate(List phones, string templateId, int sourceId=0, int sourceType=0)
{
var smsLogs = new List();
foreach (var item in phones)
{
smsLogs.Add(new Entity.SmsLog
{
Phone = item,
IsSend = false,
SourceId = sourceId,
SourceType = sourceType,
Message = "发送中"
});
}
await smsLogRepository.InsertAsync(smsLogs);
var url = "http://112.35.10.201:5992/sms/tmpsubmit";
try
{
var ecName = "广西出版传媒集团有限公司";
var appId = "gxcbcm";
var sign = "FOdugjqlG";
var secretKey = "gxcbcm";
var phone = Common.Tools.StringUtils.ObjectCollectionToString(phones);
var paramsValue = "[\\\"\\\"]";
var paramsValueMd5 = "[\"\"]";
var addSerial = "";
var md5 = EncryptProvider.Md5($"{ecName}{appId}{secretKey}{templateId}{phone}{paramsValueMd5}{sign}{addSerial}").ToLower();
var json = "{\"ecName\":\"" + ecName + "\", \"apId\":\"" + appId + "\", \"templateId\":\"" + templateId + "\", \"mobiles\":\"" + phone + "\",\"params\":\"" + paramsValue + "\", \"sign\":\"" + sign + "\", \"addSerial\":\"\", \"mac\":\"" + md5 + "\"}";
var base64Encode = EncryptProvider.Base64Encode(json);
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(base64Encode); //转化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(url));
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
//webReq.ContentType = "application/json";
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
var ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();
var success = JsonConvert.DeserializeObject(ret);
smsLogs = new List();
foreach (var item in phones)
{
smsLogs.Add(new Entity.SmsLog
{
Phone = item,
IsSend = success.Success,
SourceId = sourceId,
SourceType = sourceType,
Message = "发送成功"
});
}
await smsLogRepository.InsertAsync(smsLogs);
return success.Success;
}
catch (Exception ex)
{
smsLogs = new List();
foreach (var item in phones)
{
smsLogs.Add(new Entity.SmsLog
{
Phone = item,
IsSend = false,
SourceId = sourceId,
SourceType = sourceType,
Message = "发送失败"
});
}
await smsLogRepository.InsertAsync(smsLogs);
throw new Common.Exceptions.BusinessException(ex.Message);
}
}
}
}