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, "修改成功")); }
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); } } }
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; }
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); }
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); } }
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, "修改成功"); }
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--; } }