Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }