public bool Send(List <MessageRecord> sendMsgList, bool needCheck = true) { PreconditionUtil.checkArgument(CollectionUtils.IsNotEmpty(sendMsgList), "参数校验失败"); lock (objLock) { FGSMSResponse response = new FGSMSResponse(); if (needCheck) { List <MessageRecord> msgLogList = JsonUtils.Deserialize <List <MessageRecord> >(sendMsgList.Serialize()); CheckSendRecord(ref sendMsgList); if (CollectionUtils.IsEmpty(sendMsgList)) { // 记录日志 response.msg = "消息已经发送成功,无需重复发送"; AddLog(msgLogList, response); return(true); } } // 后续跟进业务调整 string content = string.Format("{0}||{1}||{2}", sendMsgList.First().MsgData.OrderDate.GetDateTimeFormats('D')[0].ToString(), string.Join("、", sendMsgList.Select(g => g.MsgData.OrderName)), string.Join("、", sendMsgList.Select(g => g.MessageId))); response = FGSMSHelper.TemplateSMS(signId, templateId, content, sendMsgList.First().ToAddress); Logger.Info(typeof(MessageRecordService), "message body=" + string.Format("request:{0},response:{1}", sendMsgList.First().ToAddress + "," + content, response.Serialize())); if (response.code == 0) { sendMsgList.ForEach(g => { g.SendState = MsgSendState.SendSuccess; g.MsgData.MsgNo.Add(response.msg_no); }); _MessageRecordProvider.Send(sendMsgList); } else { sendMsgList.ForEach(g => { g.SendState = MsgSendState.SendFailed; if (!string.IsNullOrEmpty(response.msg_no)) { g.MsgData.MsgNo.Add(response.msg_no); } }); _MessageRecordProvider.Send(sendMsgList); } // 记录日志 AddLog(sendMsgList, response); // 余额不足结束流程 if (response.code == 15) { throw new BizException(response.code.ToString(), response.errorMsg); } return(response.success); } }
private void AddLog(List <MessageRecord> sendMsgs, FGSMSResponse response) { SystemLog sLog = new SystemLog(); sLog.ActionName = "SendSMS"; sLog.ControllerName = "MessageRecordService.Send"; sLog.ResultLog = JsonUtils.Serialize(response); sLog.Source = LogSource.Admin; sLog.Type = response.success ? LogType.Info : LogType.Error; sLog.UserAgent = string.Join(",", sendMsgs.Select(g => g.MessageId)); sLog.UserId = sendMsgs.First().OperatorId; sLog.ReqParameter = sendMsgs.Serialize(); _interProvider.AddLog(sLog); }