/// <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(); } }
/// <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, "发送短信时发生了异常")); } }
/// <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, "发送短信时发生了异常")); } }
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)); }