Пример #1
0
        public HandlerResponse EnterpriseCfg()
        {
            List <SmsEnterpriseCfgInfo> infos   = new List <SmsEnterpriseCfgInfo>();
            SmsEnterpriseCfgInfo        cfgInfo = new SmsEnterpriseCfgInfo();

            cfgInfo.CfgKey       = "smsprice";
            cfgInfo.CfgValue     = Request.Params["smsprice"];
            cfgInfo.CreateTime   = DateTime.Now;
            cfgInfo.EnterpriseID = int.Parse(Request.Params["enterpriseid"]);

            infos.Add(cfgInfo);
            cfgInfo                     = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey              = "chinamobile";
            cfgInfo.CfgValue            = Request.Params["chinamobile"];
            cfgInfo.CreateTime          = DateTime.Now;
            cfgInfo.EnterpriseID        = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo); cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey              = "union";
            cfgInfo.CfgValue            = Request.Params["union"];
            cfgInfo.CreateTime          = DateTime.Now;
            cfgInfo.EnterpriseID        = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo); cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey              = "cdma";
            cfgInfo.CfgValue            = Request.Params["cdma"];
            cfgInfo.CreateTime          = DateTime.Now;
            cfgInfo.EnterpriseID        = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo); cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey              = "smslength";
            cfgInfo.CfgValue            = Request.Params["smslength"];
            cfgInfo.CreateTime          = DateTime.Now;
            cfgInfo.EnterpriseID        = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo);
            SmsEnterpriseCfgManage.Instance.AddList(infos);
            return(CreateHandler(1, "修改成功"));
        }
Пример #2
0
 public override void WorkHandle()
 {
     if (!AppContent.IsMoReceive)
     {
         this.Stop();
     }
     else
     {
         try
         {
             List <SmsEnterpriseInfo> users = config.GetEnterprise();
             foreach (var item in users)
             {
                 List <SmsMoInfo>     smsMoInfos  = new List <SmsMoInfo>();
                 SmsEnterpriseCfgInfo configmodel = config.GetModelWithKey("chinamobile", item.ID);
                 string keyvalue = configmodel.CfgValue;
                 foreach (int i in config.GetChannels(configmodel))
                 {
                     smsMoInfos.AddRange(changeMos(ServicesFactory.Execute(i).GetMo(), users));
                 }
                 configmodel = config.GetModelWithKey("union", item.ID);
                 string ukeyvalue = configmodel.CfgValue;
                 if (keyvalue != configmodel.CfgValue)
                 {
                     foreach (int i in config.GetChannels(configmodel))
                     {
                         smsMoInfos.AddRange(changeMos(ServicesFactory.Execute(i).GetMo(), users));
                     }
                 }
                 configmodel = config.GetModelWithKey("cdma", item.ID);
                 if (keyvalue != configmodel.CfgValue && ukeyvalue != configmodel.CfgValue)
                 {
                     foreach (int i in config.GetChannels(configmodel))
                     {
                         smsMoInfos.AddRange(changeMos(ServicesFactory.Execute(i).GetMo(), users));
                     }
                 }
                 InsertMo(smsMoInfos);
                 Thread.Sleep(AppContent.MoReceive);
             }
         }
         catch (Exception ex)
         {
             Print(ex.Message, ex);
         }
     }
 }
Пример #3
0
 public int[] GetChannels(SmsEnterpriseCfgInfo cfg)
 {
     if (cfg == null)
         return new int[0];
     if (string.IsNullOrEmpty(cfg.CfgValue))
         return new int[0];
     string[] array = cfg.CfgValue.Split(',');
     int[] iArray = new int[array.Length];
     for (int a = 0; a < array.Length; a++)
     {
         try
         {
             iArray[a] = int.Parse(array[a]);
         }
         catch (Exception)
         {
         }
     }
     return iArray;
 }
Пример #4
0
 public int[] GetChannels(SmsEnterpriseCfgInfo cfg)
 {
     if (cfg == null)
     {
         return(new int[0]);
     }
     if (string.IsNullOrEmpty(cfg.CfgValue))
     {
         return(new int[0]);
     }
     string[] array  = cfg.CfgValue.Split(',');
     int[]    iArray = new int[array.Length];
     for (int a = 0; a < array.Length; a++)
     {
         try
         {
             iArray[a] = int.Parse(array[a]);
         }
         catch (Exception)
         {
         }
     }
     return(iArray);
 }
Пример #5
0
        public override void WorkHandle()
        {
            try
            {
                Thread.Sleep(base.SleepSpan);
                List <SendingBatchModel> batchlists = batchmrg.GetReadyBatch(AppContent.ReadBatchCount);
                Print("读取下待发批次队列:" + batchlists.Count + "");
                string batchids = string.Empty;
                foreach (SendingBatchModel item in batchlists)
                {
                    #region 检查发送用户是否已不存在

                    if (!batchmrg.CheckUser(item.AccountID))
                    {
                        batchmrg.UpdateBatchState(BatchState.Complete, item.ID);
                        continue;
                    }
                    #endregion

                    batchids += item.ID + ",";
                    AppContent.SendingBatchs.Add(item);
                }
                if (!string.IsNullOrEmpty(batchids))
                {
                    List <SmsBatchWaitInfo> mtlists = batchmrg.GetReadyMt(AppContent.ReadBatchCount, batchids.TrimEnd(','));
                    foreach (SmsBatchWaitInfo item in mtlists)
                    {
                        #region 获取当前账号发送所走的信道
                        EnterpriseService    config      = new EnterpriseService();
                        SmsEnterpriseCfgInfo configmodel = config.GetModelWithKey("chinamobile", item.EnterPriseID);

                        if (item.MsgCarrier == 2)
                        {
                            configmodel = config.GetModelWithKey("union", item.EnterPriseID);
                        }
                        if (item.MsgCarrier == 2)
                        {
                            configmodel = config.GetModelWithKey("cdma", item.EnterPriseID);
                        }

                        string[] channels;
                        if (configmodel == null)
                        {
                            Print("当前企业的没有选择信道为空:" + item.EnterPriseID + "");
                            batchmrg.UpdateBatchState(BatchState.Complete, item.ID);
                            continue;
                        }
                        else
                        {
                            channels = configmodel.CfgValue.Split(',');
                            Print("加入队列:" + item.BatchID + "");
                            item.Channels = channels;
                        }

                        AppContent.SendingMts.Enqueue(item);
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                Print(ex.Message);
            }
        }
Пример #6
0
        public HandlerResponse EnterpriseCfg()
        {
            List<SmsEnterpriseCfgInfo> infos = new List<SmsEnterpriseCfgInfo>();
            SmsEnterpriseCfgInfo cfgInfo = new SmsEnterpriseCfgInfo();

            cfgInfo.CfgKey = "smsprice";
            cfgInfo.CfgValue = Request.Params["smsprice"];
            cfgInfo.CreateTime = DateTime.Now;
            cfgInfo.EnterpriseID = int.Parse(Request.Params["enterpriseid"]);

            infos.Add(cfgInfo);
            cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey = "chinamobile";
            cfgInfo.CfgValue = Request.Params["chinamobile"];
            cfgInfo.CreateTime = DateTime.Now;
            cfgInfo.EnterpriseID = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo); cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey = "union";
            cfgInfo.CfgValue = Request.Params["union"];
            cfgInfo.CreateTime = DateTime.Now;
            cfgInfo.EnterpriseID = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo); cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey = "cdma";
            cfgInfo.CfgValue = Request.Params["cdma"];
            cfgInfo.CreateTime = DateTime.Now;
            cfgInfo.EnterpriseID = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo); cfgInfo = new SmsEnterpriseCfgInfo();
            cfgInfo.CfgKey = "smslength";
            cfgInfo.CfgValue = Request.Params["smslength"];
            cfgInfo.CreateTime = DateTime.Now;
            cfgInfo.EnterpriseID = int.Parse(Request.Params["enterpriseid"]);
            infos.Add(cfgInfo);
            SmsEnterpriseCfgManage.Instance.AddList(infos);
            return CreateHandler(1, "修改成功");
        }
Пример #7
0
        void Sendmt(object sender)
        {
            SmsBatchWaitInfo model = sender as SmsBatchWaitInfo;

            if (model != null)
            {
                if (model.Channels.Length == 0)
                {
                    CompleteMt(model, 0, 0);
                    return;
                }
                SmsEnterpriseCfgInfo configmodel = config.GetModelWithKey("smsprice", model.EnterPriseID);
                SmsEnterpriseInfo    info        = config.GetEnterpriseInfo(model.EnterPriseID);
                model.ExtendNum = info.ExtendNum;
                float smsprice  = float.Parse(configmodel.CfgValue);
                int   result    = 3;
                int   sendCount = 0;
                if ((SMSEnum)model.MsgType == SMSEnum.Group)
                {//群发
                    SMSGroupInfo gGroup   = JsonConvert.DeserializeObject <SMSGroupInfo>(model.MsgPack);
                    bool         hasMoney = !(info.Capital * 1000 - smsprice * 10 * gGroup.groupInfos.Count < 0);
                    foreach (string chanelid in model.Channels)
                    {
                        BaseService service = ServicesFactory.Execute(int.Parse(chanelid));
                        int         count   = service.MassCount();
                        for (int i = 0; i < (gGroup.groupInfos.Count / count + (gGroup.groupInfos.Count % count > 0 ? 1 : 0)); i++)
                        {
                            SMSSDKGroupInfo smssdkGroupInfo = new SMSSDKGroupInfo();
                            smssdkGroupInfo.groupInfos = new List <SDKGroupInfo>();

                            if (gGroup.groupInfos.Count - i * count >= count)
                            {
                                List <GroupInfo> groupInfos = gGroup.groupInfos.GetRange(i * count, count);
                                foreach (GroupInfo smsDetial in groupInfos)
                                {
                                    smssdkGroupInfo.groupInfos.Add(new SDKGroupInfo()
                                    {
                                        Phone   = smsDetial.Phone,
                                        Content = smsDetial.Content
                                    });
                                }
                            }
                            else
                            {
                                List <GroupInfo> groupInfos = gGroup.groupInfos.GetRange(i * count, gGroup.groupInfos.Count - i * count);
                                foreach (GroupInfo smsDetial in groupInfos)
                                {
                                    smssdkGroupInfo.groupInfos.Add(new SDKGroupInfo()
                                    {
                                        Phone   = smsDetial.Phone,
                                        Content = smsDetial.Content
                                    });
                                }
                            }

                            if (hasMoney)
                            {
                                result = service.SendSMS(smssdkGroupInfo.groupInfos, model.ExtendNum);
                                if (result == 1)
                                {
                                    sendCount += smssdkGroupInfo.groupInfos.Count;
                                }
                            }
                            WriteBatchDetial(smssdkGroupInfo.groupInfos, (SendResultEnum)Enum.ToObject(typeof(SendResultEnum), result), model, chanelid);
                        }
                    }
                }
                else
                {//组发
                    SMSMassInfo mMass    = JsonConvert.DeserializeObject <SMSMassInfo>(model.MsgPack);
                    bool        hasMoney = !(info.Capital * 1000 - smsprice * 10 * mMass.Phones.Count < 0);
                    foreach (string chanelid in model.Channels)
                    {
                        BaseService service = ServicesFactory.Execute(int.Parse(chanelid));
                        int         count   = service.MassCount();
                        for (int i = 0; i < (mMass.Phones.Count / count + (mMass.Phones.Count % count > 0 ? 1 : 0)); i++)
                        {
                            List <string> readyphones = new List <string>();
                            if (mMass.Phones.Count - i * count >= count)
                            {
                                readyphones = mMass.Phones.GetRange(i * count, count);
                            }
                            else
                            {
                                readyphones = mMass.Phones.GetRange(i * count, mMass.Phones.Count - i * count);
                            }

                            if (hasMoney)
                            {
                                result = service.SendSMS(GetFromDetails(readyphones, mMass.Content), model.ExtendNum);
                                if (result == 1)
                                {
                                    sendCount += readyphones.Count;
                                }
                            }
                            WriteBatchDetial(readyphones, mMass.Content, (SendResultEnum)Enum.ToObject(typeof(SendResultEnum), result), model, chanelid);
                        }
                    }
                }
                CompleteMt(model, smsprice, sendCount);
                lock (lockobj)
                    SendingMtCount--;
            }
        }