/// <summary> /// 短信中心开户 /// </summary> /// <param name="model">短信账户信息实体</param> /// <returns>返回1成功,其他失败</returns> public MSmsAccountBase AddSmsAccount(MSmsAccount model) { MSmsAccountBase rModel = null; DbCommand dc = _db.GetSqlStringCommand(SqlSmsAccountAdd + GetInsertPriceSql(model.AccountId, model.SmsUnitPrice)); _db.AddInParameter(dc, "AccountId", DbType.AnsiStringFixedLength, model.AccountId); _db.AddInParameter(dc, "AppKey", DbType.AnsiStringFixedLength, model.AppKey); _db.AddInParameter(dc, "AppSecret", DbType.AnsiStringFixedLength, model.AppSecret); _db.AddInParameter(dc, "Pwd", DbType.String, model.Pwd); _db.AddInParameter(dc, "Amount", DbType.Decimal, model.Amount); _db.AddInParameter(dc, "SysType", DbType.Byte, (int)model.SysType); _db.AddInParameter(dc, "IssueTime", DbType.DateTime, DateTime.Now); if (DbHelper.ExecuteSql(dc, _db) > 0) { rModel = new MSmsAccountBase { AccountId = model.AccountId, AppKey = model.AppKey, AppSecret = model.AppSecret, Amount = 0 }; } return(rModel); }
/// <summary> /// 获取短信账户全部信息 /// </summary> /// <param name="accountId">账户编号</param> /// <param name="appKey">appKey</param> /// <returns></returns> public MSmsAccount GetFullSmsAccount(string accountId, string appKey) { MSmsAccount model = null; if (string.IsNullOrEmpty(accountId) || string.IsNullOrEmpty(appKey)) { return(model); } string strSql = " select [AccountId],[AppKey],[AppSecret],[Pwd],[Amount],[SysType],[IssueTime],(select Channel,UnitPrice from tbl_SmsUnitPrice where tbl_SmsUnitPrice.AccountId = tbl_SmsAccount.[AccountId] for xml raw, root('root')) as SmsUnitPrice from tbl_SmsAccount where [AccountId] = @AccountId and [AppKey] = @AppKey "; DbCommand dc = _db.GetSqlStringCommand(strSql); _db.AddInParameter(dc, "AccountId", DbType.AnsiStringFixedLength, accountId); _db.AddInParameter(dc, "AppKey", DbType.AnsiStringFixedLength, appKey); using (IDataReader dr = DbHelper.ExecuteReader(dc, _db)) { if (dr.Read()) { model = new MSmsAccount(); if (!dr.IsDBNull(dr.GetOrdinal("AccountId"))) { model.AccountId = dr.GetString(dr.GetOrdinal("AccountId")); } if (!dr.IsDBNull(dr.GetOrdinal("AppKey"))) { model.AppKey = dr.GetString(dr.GetOrdinal("AppKey")); } if (!dr.IsDBNull(dr.GetOrdinal("AppSecret"))) { model.AppSecret = dr.GetString(dr.GetOrdinal("AppSecret")); } if (!dr.IsDBNull(dr.GetOrdinal("Pwd"))) { model.Pwd = dr.GetString(dr.GetOrdinal("Pwd")); } if (!dr.IsDBNull(dr.GetOrdinal("Amount"))) { model.Amount = dr.GetDecimal(dr.GetOrdinal("Amount")); } if (!dr.IsDBNull(dr.GetOrdinal("SysType"))) { model.SysType = (SystemType)dr.GetByte(dr.GetOrdinal("SysType")); } if (!dr.IsDBNull(dr.GetOrdinal("IssueTime"))) { model.IssueTime = dr.GetDateTime(dr.GetOrdinal("IssueTime")); } if (!dr.IsDBNull(dr.GetOrdinal("SmsUnitPrice"))) { model.SmsUnitPrice = GetSmsUnitPrice(dr.GetString(dr.GetOrdinal("SmsUnitPrice"))); } } } return(model); }
/// <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); }