コード例 #1
0
ファイル: MOHelper.cs プロジェクト: aspdotnetmvc/mvc
 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);
     }
 }
コード例 #2
0
ファイル: TableService.cs プロジェクト: aspdotnetmvc/mvc
 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;
     }
 }
コード例 #3
0
 /// <summary>
 /// 统计报告更新(网关返回)
 /// </summary>
 /// <param name="report"></param>
 /// <param name="failureCount"></param>
 static void AddReportAndStatistics(StatusReport report)
 {
     throw new NotImplementedException();
     //记录状态报告
     StatusReportDB.AddStatusReport(report);
     //增加统计
 }
コード例 #4
0
        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);
        }
コード例 #5
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());
     }
 }
コード例 #6
0
        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);
                }
            });
        }
コード例 #7
0
        /// <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, "获取短信报告出现异常"));
            }
        }
コード例 #8
0
        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);
                }
            }
        }
コード例 #9
0
ファイル: TableService.cs プロジェクト: aspdotnetmvc/mvc
        /// <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);
            }
        }
コード例 #10
0
        /// <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, "获取短信报告出现异常"));
            }
        }