コード例 #1
0
ファイル: SMSDB.cs プロジェクト: aspdotnetmvc/mvc
        /// <summary>
        /// 插入短信,同时插入到ReviewMT 表中,同时扣费
        /// </summary>
        /// <param name="sms"></param>
        public static void AddSMS(SMS.DTO.SMSDTO sms)
        {
            IDbTransaction tran = DBHelper.Instance.GetDBAdapter().BeginTransaction();

            try
            {
                foreach (var sn in sms.SMSNumbers)
                {
                    sn.SendTime = sms.Message.SendTime;
                }
                AddSMS(sms.Message, tran);
                AddSMSNumber(sms.SMSNumbers, tran);
                //插入ReviewMT 表
                foreach (var sn in sms.SMSNumbers)
                {
                    AddReviewMT(sms.Message, sn, tran);
                }
                //扣费
                AccountDeductBalance(sms.Message.AccountID, sms.Message.FeeTotalCount, tran);
                tran.Commit();
            }
            catch (Exception ex)
            {
                tran.Rollback();
                throw ex;
            }
            finally
            {
                tran.Connection.Close();
            }
        }
コード例 #2
0
        /// <summary>
        /// 提交短信,并扣费
        /// </summary>
        /// <param name="sms"></param>
        /// <returns></returns>
        public RPC_Result <SMS.DTO.SMSDTO> SendSMS(SMS.DTO.SMSDTO sms)
        {
            try
            {
                Account account = AccountDB.GetAccount(sms.Message.AccountID);//AccountServer.Instance.GetAccount(sms.Message.AccountID);
                if (account == null)
                {
                    LogHelper.LogWarn("Pretreatment", "PretreatmentService.SendSMS", "系统中不存在此用户 -> {Account=" + sms.Message.AccountID + "}");
                    MessageTools.MessageHelper.Instance.WirteInfo("提交短信失败,PretreatmentService.SendSMS,系统中不存在此用户 -> {Account=" + sms.Message.AccountID + "}");
                    return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "用户不存在"));
                }
                if (account.SMSNumber < sms.Message.NumberCount)
                {
                    return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "总共要发 " + sms.Message.FeeTotalCount + " 条短信,账号余额不足!"));
                }
                if (string.IsNullOrEmpty(sms.Message.SPNumber))
                {
                    sms.Message.SPNumber = defaultSPNumber.Split(',')[0];
                }

                SMS.DB.SMSDAL.AddSMS(sms);
                account = AccountDB.GetAccount(sms.Message.AccountID);

                return(new RPC_Result <SMS.DTO.SMSDTO>(true, sms, "短信已提交成功,扣费:" + sms.Message.FeeTotalCount + "条,剩余" + account.SMSNumber + "条"));
            }
            catch (Exception ex)
            {
                MessageTools.MessageHelper.Instance.WirteError("发送短信时发生了异常", ex);
                return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "发送短信时发生了异常"));
            }
        }
コード例 #3
0
        /// <summary>
        /// 提交短信,并扣费
        /// </summary>
        /// <param name="sms"></param>
        /// <returns></returns>
        public RPC_Result <SMS.DTO.SMSDTO> SendSMS(SMS.DTO.SMSDTO sms)
        {
            try
            {
                Account account = AccountDB.GetAccount(sms.Message.AccountID);//AccountServer.Instance.GetAccount(sms.Message.AccountID);
                if (account == null)
                {
                    LogHelper.LogWarn("Pretreatment", "PretreatmentService.SendSMS", "系统中不存在此用户 -> {Account=" + sms.Message.AccountID + "}");
                    MessageTools.MessageHelper.Instance.WirteInfo("提交短信失败,PretreatmentService.SendSMS,系统中不存在此用户 -> {Account=" + sms.Message.AccountID + "}");
                    return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "用户不存在"));
                }
                if (account.SMSNumber < sms.Message.NumberCount)
                {
                    return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "总共要发 " + sms.Message.FeeTotalCount + " 条短信,账号余额不足!"));
                }

                SMS.DB.SMSDAL.AddSMS(sms);

                if (sms.Message.AuditType == AuditType.Auto || sms.Message.AuditType == AuditType.Template)
                {
                    if (sms.Message.SMSTimer != null)
                    {
                        SMSDAL.AddSMSTimer(sms.Message.ID, sms.Message.SMSTimer.Value);
                    }
                    else
                    {
                        SMSSubmit.Instance.SendSMS(sms);
                    }
                }

                account = AccountDB.GetAccount(sms.Message.AccountID);

                return(new RPC_Result <SMS.DTO.SMSDTO>(true, sms, "短信已提交成功,扣费:" + sms.Message.FeeTotalCount + "条,剩余" + account.SMSNumber + "条"));
            }
            catch (Exception ex)
            {
                MessageTools.MessageHelper.Instance.WirteError("发送短信时发生了异常", ex);
                return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "发送短信时发生了异常"));
            }
        }
コード例 #4
0
        public RPC_Result <SMS.DTO.SMSDTO> SendSMS(string LoginName, string Password, SMS.DTO.SMSDTO sms, string Source)
        {
            if (string.IsNullOrWhiteSpace(LoginName))
            {
                return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "用户名不能为空"));
            }
            //权限验证
            var account = AccountServer.Instance.GetAccount(LoginName);

            if (account == null)
            {
                return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "用户不存在"));
            }

            if (Password != account.Password)
            {
                return(new RPC_Result <SMS.DTO.SMSDTO>(false, sms, "密码不正确"));
            }

            int Priority = SMS.Util.SMSHelper.GetPriorityByNumberCount(sms.Message.NumberCount);

            sms.Message.Source           = Source;
            sms.Message.AccountID        = account.AccountID;
            sms.Message.Channel          = account.Channel;
            sms.Message.SMSLevel         = Priority + account.Priority;
            sms.Message.SPNumber         = account.SPNumber;
            sms.Message.StatusReportType = (int)account.StatusReport;
            if (account.Audit == SMS.Model.AccountAuditType.NonAudit)
            {
                sms.Message.AuditType = AuditType.Auto;
                sms.Message.Status    = "待发送";
            }
            else if (account.Audit == SMS.Model.AccountAuditType.SingleNonAudit && sms.Message.NumberCount == 1)
            {
                sms.Message.AuditType = AuditType.Auto;
                sms.Message.Status    = "待发送";
            }
            else if (account.Audit == SMS.Model.AccountAuditType.InterfaceNonAudit && sms.Message.Source != "平台")
            {
                sms.Message.AuditType = AuditType.Auto;
                sms.Message.Status    = "待发送";
            }
            else
            {
                //判断是否匹配模板
                bool match = SMSTempletMatching(LoginName, sms.Message.Content);
                if (match)
                {
                    sms.Message.AuditType = AuditType.Template;
                    sms.Message.Status    = "待发送";
                }
                else
                {
                    sms.Message.AuditType = AuditType.Manual;
                    sms.Message.Status    = "待审核";
                }
            }

            return(SMSProxy.GetSMSService().SendSMS(sms));
        }