/// <summary> /// 发送短信 /// </summary> /// <param name="smsPlan">发送短信提交的业务实体</param> /// <returns></returns> public MSendResult Send(MSmsPlan smsPlan) { //发送短信验证 MSendResult validateResultInfo = ValidateSend(smsPlan); if (!validateResultInfo.IsSucceed) { return(validateResultInfo); } smsPlan.IsSend = false; smsPlan.SendTime = null; smsPlan.IssueTime = DateTime.Now; int result = _dalPlan.AddSmsPlan(smsPlan); if (result == 1) { validateResultInfo.IsSucceed = true; validateResultInfo.ErrorMessage = "发送成功"; validateResultInfo.SmsCenterPlanId = smsPlan.PlanId; validateResultInfo.AccountMoney = validateResultInfo.AccountMoney - validateResultInfo.CountFee; validateResultInfo.SuccessCount = validateResultInfo.MobileNumberCount; validateResultInfo.PhsSuccessCount = validateResultInfo.PhsNumberCount; //扣除费用 _dalAccount.UpdateSmsAccountAmount(smsPlan.SmsAccount.AccountId, smsPlan.SmsAccount.AppKey, false, validateResultInfo.CountFee); } else { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "写短信发送信息时发生错误,请联系管理员"; return(validateResultInfo); } return(validateResultInfo); }
/// <summary> /// 验证要发送的短信 /// </summary> /// <param name="smsPlan">发送短信提交的业务实体</param> /// <returns></returns> public MSendResult ValidateSend(MSmsPlan smsPlan) { var validateResultInfo = new MSendResult(true, null); if (smsPlan == null || smsPlan.SmsAccount == null) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "未填写发送短信账户信息"; return(validateResultInfo); } if (string.IsNullOrEmpty(smsPlan.SmsAccount.AccountId) || smsPlan.SmsAccount.AccountId.Length != 36) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "发送短信的账户编号不正确"; return(validateResultInfo); } if (string.IsNullOrEmpty(smsPlan.SmsAccount.AppKey) || smsPlan.SmsAccount.AppKey.Length != 36) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "发送短信的账户的AppKey不正确"; return(validateResultInfo); } /* * if (string.IsNullOrEmpty(smsPlan.SmsAccount.AppSecret) || smsPlan.SmsAccount.AppSecret.Length != 36) * { * validateResultInfo.IsSucceed = false; * validateResultInfo.ErrorMessage = "发送短信的账户的AppSecret不正确"; * * return validateResultInfo; * } */ MSmsAccount modelAccount = _dalAccount.GetFullSmsAccount(smsPlan.SmsAccount.AccountId, smsPlan.SmsAccount.AppKey); if (modelAccount == null) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "发送短信的账户在短信中心不存在"; return(validateResultInfo); } if (modelAccount.Amount <= 0) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "发送短信的账户余额不足"; return(validateResultInfo); } MSmsChannelInfo price = null; if (modelAccount.SmsUnitPrice != null && modelAccount.SmsUnitPrice.Count > 0) { price = modelAccount.SmsUnitPrice.Find((MSmsChannelInfo tmp) => { return(smsPlan.Channel == tmp.Cnannel); }); } if (price == null) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "短信帐户中不存在与该广告通道对应的价格信息"; return(validateResultInfo); } if (string.IsNullOrEmpty(smsPlan.Content)) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "短信内容不能为空"; return(validateResultInfo); } if (smsPlan.Number == null || smsPlan.Number.Count < 1) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = "未填写任何接收短信人的手机号码"; return(validateResultInfo); } string keyWord = IsIncludeKeyWord(smsPlan.Content); if (!string.IsNullOrEmpty(keyWord)) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = string.Format("您要发送的短信内容中包含:{0} 这些禁止发送的关键字,请重新编辑!", keyWord); return(validateResultInfo); } //单条短信发送价格 smsPlan.UnitPrice = price.Price; //短信内容针对移动联通手机实际产生的短信条数 validateResultInfo.FactCount = GetSmsTotalCount(smsPlan.Content, MobileType.Mobiel); //短信内容针对小灵通实际产生的短信条数 validateResultInfo.PhsFactCount = GetSmsTotalCount(smsPlan.Content, MobileType.Phs); //小灵通号码个数 validateResultInfo.PhsNumberCount = GetPhsCount(smsPlan.Number); //移动联通号码个数 validateResultInfo.MobileNumberCount = smsPlan.Number.Count - validateResultInfo.PhsNumberCount; //应扣除的金额 validateResultInfo.CountFee = smsPlan.UnitPrice * (validateResultInfo.WaitSendMobileCount + validateResultInfo.WaitSendPhsCount); //本次的发送费用 smsPlan.SendAmount = validateResultInfo.CountFee; //用户账户余额 validateResultInfo.AccountMoney = modelAccount.Amount; if (validateResultInfo.AccountMoney < validateResultInfo.CountFee) { validateResultInfo.IsSucceed = false; validateResultInfo.ErrorMessage = string.Format("您的账户余额不足,当前余额为:{0},此次消费:{1}", validateResultInfo.AccountMoney.ToString("C2"), validateResultInfo.CountFee.ToString("C2")); return(validateResultInfo); } return(validateResultInfo); }