private bool frMo_ReceiveMessage(RabbitMQHelper mq, string message) { try { var mo = JsonConvert.DeserializeObject <MOSMS>(message); //找到给发短信的记录 var sms = StatusReportDB.GetSMSForMO(mo.Gateway, mo.ReceiveTime, mo.UserNumber); if (sms != null) { if (string.IsNullOrWhiteSpace(mo.SPNumber)) { mo.SPNumber = sms.SPNumber; } mo.AccountID = sms.AccountID; } DeliverMODB.Add(mo); MOCache.Instance.AddMOCache(mo); return(true); } catch (Exception ex) { LogClient.LogHelper.LogError("SendQueue", "frMo_ReceiveMessage", ex.ToString()); return(true); } }
void CreateTable() { try { if (operatorFlag) { string tableName = "SMSStatusReport_" + DateTime.Now.AddDays(1).ToString("yyyyMMdd"); if (!statusReportTables.Contains(tableName.ToLower())) { StatusReportDB.CloneTable(tableName); statusReportTables.Add(tableName.ToLower()); } tableName = "ReportStatistics_" + DateTime.Now.AddDays(1).ToString("yyyyMMdd"); if (!statisticsReportTables.Contains(tableName.ToLower())) { ReportStatisticsDB.CloneTable(tableName); statisticsReportTables.Add(tableName.ToLower()); } } } catch { operatorFlag = true; } }
/// <summary> /// 统计报告更新(网关返回) /// </summary> /// <param name="report"></param> /// <param name="failureCount"></param> static void AddReportAndStatistics(StatusReport report) { throw new NotImplementedException(); //记录状态报告 StatusReportDB.AddStatusReport(report); //增加统计 }
public void AddStatusReportTest() { var accountId = "account"; SMS sms = new SMS() { Account = "account", Audit = AuditType.Auto, AuditTime = DateTime.Now.ToString(), AuditUser = "******", Channel = "default", Content = "ceshi neirong", Level = LevelType.Level0, IsSplit = true, SendTime = DateTime.Now, SerialNumber = System.Guid.NewGuid(), Signature = "【1111】", LinkID = System.Guid.NewGuid().ToString(), SPNumber = "1234", StatusReport = StatusReportType.Enabled, Extend = null, FailureCase = "", Filter = FilterType.Failure, Number = new List <string> { "123", "1235", "234" }, NumberCount = 3, WapURL = "wapurl" }; StatusReport report = new StatusReport(); report.StatusCode = 3100; report.Describe = "发送成功"; report.Gateway = "CMPP"; report.Message = sms; report.Serial = sms.SerialNumber.ToString(); report.SplitNumber = 1; report.SplitTotal = 1; report.Succeed = true; var b = StatusReportDB.AddStatusReport(accountId, report); Assert.IsTrue(b); report.Succeed = false; b = StatusReportDB.Update(report); Assert.IsTrue(b); b = StatusReportDB.CloneTable("statusReport_" + UnitTestDBAccess.Util.GenRandStr(5)); Assert.IsTrue(b); var tables = StatusReportDB.GetTables(); Assert.IsTrue(tables.Count > 0); var sr = StatusReportDB.GetStatusReport(sms.SerialNumber, DateTime.Now); Assert.IsTrue(sr.Count > 0); }
/// <summary> /// 更新状态报告(客户端已获取) /// </summary> /// <param name="sr"></param> public void UpdateStatusReportCache(StatusReport sr) { try { StatusReportDB.UpdateStatusReportType(sr); Cache[sr.AccountID].Remove(sr); } catch (Exception ex) { LogClient.LogHelper.LogError("SatatusReportCache", "UpdateStatusReportCache", ex.ToString()); } }
public void LoadStatusReportCache() { var list = StatusReportDB.GetStatusReportCache(); list.ForEach(sr => { if (!StatusReportCache.ContainsKey(sr.AccountID)) { StatusReportCache.Add(sr.AccountID, new List <StatusReport>() { sr }); } else { StatusReportCache[sr.AccountID].Add(sr); } }); }
/// <summary> /// 短信状态报告明细(数据库获取) /// </summary> /// <param name="serialNumber"></param> /// <param name="sendTime"></param> /// <returns></returns> public RPCResult <QueryResult <StatusReport> > GetStatusReportBySMSID(QueryParams qp) { try { var list = StatusReportDB.GetStatusReport(qp); if (list.Total == 0) { return(new RPCResult <QueryResult <StatusReport> >(false, list, "没有短信状态报告")); } return(new RPCResult <QueryResult <StatusReport> >(true, list, "")); } catch (Exception ex) { LogHelper.LogError("StatusReport", "StatusReportService.GetSMSStatusReport", ex.ToString()); return(new RPCResult <QueryResult <StatusReport> >(false, null, "获取短信报告出现异常")); } }
public void AddStatusReport(StatusReport sr) { int status = sr.StatusCode - (sr.StatusCode / 1000) * 1000; if (status < 100) //发送时 { StatusReportDB.AddStatusReport(sr); if (!sr.Succeed && sr.StatusReportType > 0) { AddStatusReportCache(sr); } } else //返回时 { StatusReportDB.UpdateStatusReport(sr); if (sr.StatusReportType > 0) { AddStatusReportCache(sr); } } }
/// <summary> /// 状态报告表 /// </summary> void LoadStatusReportTables() { List <string> tables = StatusReportDB.GetTables(); if (tables.Count == 0) { string name = "SMSStatusReport_" + DateTime.Now.ToString("yyyyMMdd"); StatusReportDB.CloneTable(name); statusReportTables.Add(name.ToLower()); return; } int min = 99991231; foreach (var table in tables) { statusReportTables.Add(table.ToLower()); if (min > int.Parse(table.Remove(0, 16))) { min = int.Parse(table.Remove(0, 16)); } } string date = min.ToString(); date = date.Insert(4, "-"); date = date.Insert(7, "-"); DateTime beginTime = DateTime.Parse(date).AddDays(1); while (DateTime.Compare(DateTime.Now, beginTime) > 0) { string name = "SMSStatusReport_" + beginTime.ToString("yyyyMMdd"); if (!statusReportTables.Contains(name.ToLower())) { StatusReportDB.CloneTable(name); statusReportTables.Add(name.ToLower()); } beginTime = beginTime.AddDays(1); } }
/// <summary> /// 短信状态报告明细(数据库获取) /// </summary> /// <param name="serialNumber"></param> /// <param name="sendTime"></param> /// <returns></returns> public RPCResult <List <StatusReport> > GetSMSStatusReport(string smsid, DateTime sendTime) { try { if (sendTime.ToString("yyyyMMdd") == "00010101") { return(new RPCResult <List <StatusReport> >(true, null, "")); } var list = StatusReportDB.GetStatusReport(smsid, sendTime); if (list.Count == 0) { return(new RPCResult <List <StatusReport> >(false, list, "没有短信状态报告")); } return(new RPCResult <List <StatusReport> >(true, list, "")); } catch (Exception ex) { LogHelper.LogError("StatusReport", "StatusReportService.GetSMSStatusReport", ex.ToString()); return(new RPCResult <List <StatusReport> >(false, null, "获取短信报告出现异常")); } }