示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }