public ModelInvokeResult <SmsSendPK> Create(SmsSend smsSend)
        {
            ModelInvokeResult <SmsSendPK> result = new ModelInvokeResult <SmsSendPK> {
                Success = true
            };

            try
            {
                List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                if (smsSend.Id == -1)
                {
                    smsSend.Id = null;
                }
                statements.Add(new IBatisNetBatchStatement {
                    StatementName = smsSend.GetCreateMethodName(), ParameterObject = smsSend.ToStringObjectDictionary(false), Type = SqlExecuteType.INSERT
                });
                /***********************begin 自定义代码*******************/
                /***********************此处添加自定义代码*****************/
                /***********************end 自定义代码*********************/
                BuilderFactory.DefaultBulder().ExecuteNativeSqlNoneQuery(statements);
                result.instance = new SmsSendPK {
                    Id = smsSend.Id
                };
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
Exemplo n.º 2
0
        public override SendSMSResponseBody ExecuteCore()
        {
            string randText = RandomText.GetNum(6);                     //生成6位验证码

            var codeInfo = SendContentConfig.SMSRegisterDesc(randText); //组织发送内容

            string error = "";
            bool   succ  = SmsSend.ToUser(this.request.Mobile, codeInfo, out error);//开始发送

            if (!succ)
            {
                throw new Exception(error);
            }

            int codeId = User.UserUtility.AddCode(db, CodeType.Register, randText, codeInfo, this.request.Mobile); //发送成功后记录验证码

            if (codeId <= 0)
            {
                throw new Exception("验证码发送失败");
            }

            return(new SendSMSResponseBody()
            {
                Status = ResultStatus.Success,
                //CheckCode = randText
            });
        }
        public ModelInvokeResult <SmsSendPK> Update(string strId, SmsSend smsSend)
        {
            ModelInvokeResult <SmsSendPK> result = new ModelInvokeResult <SmsSendPK> {
                Success = true
            };

            try
            {
                List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                int _Id = Convert.ToInt32(strId);
                statements.Add(new IBatisNetBatchStatement {
                    StatementName = smsSend.GetUpdateMethodName(), ParameterObject = smsSend.ToStringObjectDictionary(false), Type = SqlExecuteType.UPDATE
                });
                /***********************begin 自定义代码*******************/
                /***********************此处添加自定义代码*****************/
                /***********************end 自定义代码*********************/
                BuilderFactory.DefaultBulder().ExecuteNativeSqlNoneQuery(statements);
                result.instance = new SmsSendPK {
                    Id = _Id
                };
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
Exemplo n.º 4
0
        public async Task <ExcutedResult> SendAsync(string phoneNumber, string content, int client, String countryNumber = "", string templateCode = "")
        {
            var result = await Send(phoneNumber, content, client, countryNumber, templateCode);

            IHttpContextAccessor httpContextAccessor = AspectCoreContainer.Resolve <IHttpContextAccessor>();
            var clientIp = httpContextAccessor.HttpContext.GetRequestIp4Address().ToString();

            var smsSend = new SmsSend
            {
                Id           = Guid.NewGuid(),
                Mobile       = result.PhoneNumber,
                Content      = result.Content,
                CreateTime   = DateTime.UtcNow,
                SmsProxy     = Name,
                SmsProxyResp = result.ResponseStr,
                IsSuccess    = result.IsSuccess,
                Client       = client,
                LoginIp      = clientIp
            };

            ISmsSendRepository smsSendRepository = AspectCoreContainer.Resolve <ISmsSendRepository>();

            smsSendRepository.Insert(smsSend);

            if (result.IsSuccess)
            {
                return(ExcutedResult.SuccessResult());
            }

            return(ExcutedResult.FailedResult(BusinessResultCode.SmsSendFail, "短信发送失败"));
        }
Exemplo n.º 5
0
        public IActionResult SendSms(string phone, string content)
        {
            SmsSend sms  = new SmsSend();
            var     data = sms.Sms(phone, content);

            return(Ok(data));
        }
Exemplo n.º 6
0
        public CaptchaHelperModel SendAuthCode(CaptchaEnum captchaEnum, int accId, CaptchaPhoneEmailEnum typeEnum,
                                               string phoneOrEmail)
        {
            var redisCacheService = new RedisCacheService();

            if (string.IsNullOrWhiteSpace(phoneOrEmail))
            {
                throw new ArgumentNullException("phoneOrEmail", "手机号码邮箱地址为空");
            }


            //获取失败次数
            var strWrongTimesKey = GetWrongTimesKey(captchaEnum, accId);



            int iWrongTimes = redisCacheService.Get <int>(strWrongTimesKey);

            //判断验证码错误次数
            if (iWrongTimes > _checkWrongTimes)
            {
                return(new CaptchaHelperModel(false, "验证码错误次数过多,请1小时后重试或联系客服", typeEnum));
            }

            //获取验证码key
            var strCaptchaKey = GetCaptchaKey(captchaEnum, accId, phoneOrEmail);

            if (string.IsNullOrEmpty(strCaptchaKey))
            {
                return(new CaptchaHelperModel(false, "错误的手机号或邮箱", typeEnum));
            }


            //判断是否之前发过验证码
            int iCaptcha = redisCacheService.Get <int>(strCaptchaKey);

            if (iCaptcha == 0)
            {
                iCaptcha = Helper.GetInt32(Helper.GetRandomNum(), 111111);
            }

            var smsStr = string.Format("【生意专家】您本次获取的验证码为:{0},此验证码{1}分钟内有效。维护您的数据安全是生意专家义不容辞的责任。", iCaptcha,
                                       _outTimeMinutes);
            var mailSend = new EmailSend();
            var smsSend  = new SmsSend();
            var result   = typeEnum == CaptchaPhoneEmailEnum.Phone
                ? smsSend.SendSys(phoneOrEmail, smsStr, 13)
                : mailSend.SendVerifiEmail(accId, "", phoneOrEmail, iCaptcha.ToString());

            if (result)
            {
                _logger.Debug("发送验证码成功:" + iCaptcha);
                redisCacheService.Set(strCaptchaKey, iCaptcha, _outTimeMinutes * 60);
                return(new CaptchaHelperModel(true, "发送验证码成功", CaptchaPhoneEmailEnum.Email));
            }
            else
            {
                return(new CaptchaHelperModel(false, "发送失败", CaptchaPhoneEmailEnum.Email));
            }
        }
        /// <summary>
        /// 根据用户名送短信
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public bool SendMessgae(SendMessgae request)
        {
            using (var db = DbFactory.Open())
            {
                if (string.IsNullOrEmpty(request.name))
                {
                    throw new Exception("用户名不能为空");
                }

                var builder = db.From <UserInfo>();
                if (!string.IsNullOrEmpty(request.name))
                {
                    builder.Where(x => x.UserName == request.name);
                }
                var checkCode = HostContext.AppHost.Resolve <ICacheClient>().Get <string>("checkCode");
                if (!string.IsNullOrEmpty(checkCode))
                {
                    HostContext.AppHost.Resolve <ICacheClient>().Remove("checkCode");
                }
                var info = db.Single(builder);
                if (info != null)
                {
                    if (!ValidatorHelper.IsMobile(info.UserName) && string.IsNullOrEmpty(info.Mobile))//|| ValidatorHelper.IsMobile(info.Mobile)
                    {
                        throw new Exception("该用户没有手机号码");
                    }
                    Random rd  = new Random();
                    int    num = rd.Next(100000, 1000000);

                    var content = "您正在登陆《浙江省基层防汛防台体系信息管理系统》,为防止他人登陆系统篡改信息千万不要告诉他人验证码 " + num.ToString() + "[五分钟内有效]。如不是您自己操作,请忽略。";
                    var msg     = SmsSend.SendSMS(info.UserName, content);
                    if (msg != "" && msg.IndexOf("-") > 0)
                    {
                        var message = new SaveSmsMessage();
                        message.adcd     = info.adcd;
                        message.Content  = content;
                        message.Mobile   = info.UserName;
                        message.UserName = info.UserName;
                        message.name     = info.RealName;
                        message.tm       = DateTime.Now;
                        MessageManager.SaveMessage(message);

                        HostContext.AppHost.Resolve <ICacheClient>().Add("checkCode", num.ToString());
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    throw new Exception("用户名不存在");
                }
            }
        }
        /// <summary>
        /// 发送短信,并将已发送的信息写入数据库
        /// </summary>
        /// <param name="smsModel"></param>
        /// <param name="dt"></param>
        private static void SmsSendAndInsert(SmsSendInfo smsModel, DataTable dt)
        {
            try
            {
                SmsSend smssBll = new SmsSend();

                DataRow dr = null;
                if (dt != null && dt.Rows.Count > 0)
                {
                    dr = dt.Rows[0];
                }

                bool isSuccess = SmsHelper.SmsSendByPost(smsModel.MobilePhone, smsModel.SmsContent);

                DateTime currTime = DateTime.Now;
                string[] mobiles  = smsModel.MobilePhone.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string mobile in mobiles)
                {
                    SmsSendInfo model = new SmsSendInfo();
                    model.UserId          = smsModel.UserId;
                    model.OrderCode       = smsModel.OrderCode == null ? "" : smsModel.OrderCode;
                    model.CarScanCode     = smsModel.CarScanCode == null ? "" : smsModel.CarScanCode;
                    model.TranNode        = smsModel.TranNodeText == null ? "" : smsModel.TranNodeText;
                    model.Receiver        = smsModel.Receiver == null ? "" : smsModel.Receiver;
                    model.MobilePhone     = smsModel.MobilePhone = mobile;
                    model.SmsContent      = smsModel.SmsContent;
                    model.SendDate        = currTime;
                    model.LastUpdatedDate = currTime;
                    model.SendStatus      = (short)2;
                    if (isSuccess)
                    {
                        model.SendStatus = (short)1;
                    }
                    model.Customer = "";
                    if (dr != null && dr["Customer"] != DBNull.Value)
                    {
                        model.Customer = dr["Customer"].ToString().Trim();
                    }

                    smssBll.Insert(model);
                }
            }
            catch (Exception ex)
            {
                string error = "";
                error += "手机号:" + smsModel.MobilePhone == null ? "无" : smsModel.MobilePhone + ",";
                error += "订单号:" + smsModel.OrderCode == null ? "无" : smsModel.OrderCode + ",";
                error += "运输节点:" + smsModel.TranNodeText == null ? "无" : smsModel.TranNodeText + ",";
                error += "派车单号:" + smsModel.CarScanCode == null ? "无" : smsModel.CarScanCode + ",";
                error += "短信内容:" + smsModel.SmsContent == null ? "无" : smsModel.SmsContent + ",";
                WriteLog log = new WriteLog();
                log.Write("执行添加短信发送数据到数据库异常(" + ex.Message + "),详情:" + error + "");
            }
        }
Exemplo n.º 9
0
        private static bool Send(string phone, string content, out string result)
        {
            SmsSend.SmsSendMod info = new SmsSend.SmsSendMod();
            info.ServerUrl = Config.SmsConfig.ServerUrl;
            info.AppId     = Convert.ToInt32(Config.SmsConfig.AppId);
            info.AppKey    = Config.SmsConfig.AppKey;
            info.Phone     = phone;
            info.Content   = content;
            SmsSend ss = new SmsSend(info);

            return(ss.Send(out result));
        }
Exemplo n.º 10
0
        public IFormFile UploadFile(IFormFile model, int KorisnikId)
        {
            NastavnoOsoblje x = GetLogirani(KorisnikId);

            if (model != null)
            {
                x.NppFilePath = FileUploadDelete.Upload(_hostingEnvironment, model, "fileUpload", x.NppFilePath);
                SmsSend.Send(_SmsOptions, "38762738460",
                             "Nastavnik " + x.Ime + " " + x.Prezime + " je postavio dokument");
                _context.SaveChanges();
            }
            return(model);
        }
        private void Bind()
        {
            GetSearch();

            List <SmsSendInfo> list = null;

            SmsSend bll = new SmsSend();

            list = bll.GetList(pageIndex, pageSize, out totalRecords, sqlWhere, parms == null ? null : parms.ToArray());

            rpData.DataSource = list;
            rpData.DataBind();

            htmlAppend += "<div id=\"myDataForPage\" style=\"display:none;\">[{\"PageIndex\":\"" + pageIndex + "\",\"PageSize\":\"" + pageSize + "\",\"TotalRecord\":\"" + totalRecords + "\",\"QueryStr\":\"" + queryStr + "\"}]</div>";
        }
Exemplo n.º 12
0
        public CollectionInvokeResult <StringObjectDictionary> QueuedSendSms(SmsSend smsSend)
        {
            CollectionInvokeResult <StringObjectDictionary> result = new CollectionInvokeResult <StringObjectDictionary> {
                Success = true
            };

            try
            {
                StringObjectDictionary filters = new { Status = smsSend.Status, OrderByClause = " BatchNum,CheckInTime  desc" }.ToStringObjectDictionary();
                result.rows = BuilderFactory.DefaultBulder().ListStringObjectDictionary("SmsSend_List2", filters);
            }
            catch (Exception e)
            {
                result.Success      = false;
                result.ErrorMessage = e.Message;
            }
            return(result);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 新增一条质检记录
        /// </summary>
        /// <param name="qcRecord">质检实体</param>
        /// <returns></returns>
        public static bool Insert(SmsSend qcRecord)
        {
            bool rbool = true;

            using (DCQUALITYDataContext db = new DCQUALITYDataContext())
            {
                try
                {
                    db.SmsSend.InsertOnSubmit(qcRecord);
                    db.SubmitChanges();
                    rbool = true;
                }
                catch
                {
                    rbool = false;
                }
                finally { db.Connection.Close(); }
            }
            return(rbool);
        }
Exemplo n.º 14
0
        public string DelSmsSend(string itemAppend)
        {
            itemAppend = itemAppend.Trim();
            if (string.IsNullOrEmpty(itemAppend))
            {
                return(MessageContent.Submit_InvalidRow);
            }
            try
            {
                SmsSend  smssBll = new SmsSend();
                string[] Ids     = itemAppend.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                smssBll.DeleteBatch(Ids.ToList <object>());

                return("1");
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        /// <summary>
        /// 发送信息。
        /// </summary>
        /// <param name="sm"></param>
        /// <returns></returns>
        private string SendInfo(Send_Mod sm)
        {
            SmsSend.SmsSendMod info = new SmsSend.SmsSendMod();
            info.ServerUrl = Config.SmsConfig.ServerUrl;
            info.AppId     = Convert.ToInt32(Config.SmsConfig.AppId);
            info.AppKey    = Config.SmsConfig.AppKey;
            info.Phone     = sm.Phone;
            info.Content   = sm.Content;
            SmsSend ss = new SmsSend(info);
            string  msg;
            bool    IsOk = ss.Send(out msg);

            if (IsOk)
            {
                return("0");
            }
            else
            {
                return(msg);
            }
        }
Exemplo n.º 16
0
        public InvokeResult Update2(SmsSend smsSend)
        {
            InvokeResult result = new InvokeResult {
                Success = true
            };

            smsSend.SendTime = DateTime.Now;
            try
            {
                List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                statements.Add(new IBatisNetBatchStatement {
                    StatementName = "SmsSend_Update2", ParameterObject = smsSend.ToStringObjectDictionary(false), Type = SqlExecuteType.UPDATE
                });
                BuilderFactory.DefaultBulder().ExecuteNativeSqlNoneQuery(statements);
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
Exemplo n.º 17
0
        public ReturnObject Update_Appointment(Appointment appointment)
        {
            ReturnObject returnData = new ReturnObject();

            try
            {
                if (appointment.Id > 0)
                {
                    using (var db = new ddiarydbEntities())
                    {
                        var dbAppointment = db.Appointments.Where(x => x.Id == appointment.Id).FirstOrDefault();

                        if (db.Appointments.Any(x => x.Id != appointment.Id && x.DateStart == appointment.DateStart && x.DateEnd == appointment.DateEnd))
                        {
                            returnData.message     = "This time slot booked.";
                            returnData.status_code = Convert.ToInt32(Status.AlreadyExists);
                            returnData.data1       = appointment;

                            return(returnData);
                        }

                        dbAppointment.DateStart = appointment.DateStart;

                        dbAppointment.DateEnd = appointment.DateEnd;

                        dbAppointment.DoctorId = appointment.DoctorId;

                        dbAppointment.PatientId = appointment.PatientId;

                        dbAppointment.PatientName = appointment.PatientName;

                        dbAppointment.PatientMobile = appointment.PatientMobile;

                        dbAppointment.Relation = appointment.Relation;

                        dbAppointment.Status = appointment.Status;

                        dbAppointment.SessionId = appointment.DateStart.ToString("ddMMyyyyHHmm") + appointment.DateEnd.ToString("HHmm");

                        dbAppointment.UpdatedDate = DateTime.Now;

                        //dbAppointment.Message = appointment.Message;

                        db.Entry(dbAppointment).State = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();

                        try
                        {
                            var doctor = db.Doctor_Master.Where(x => x.Doctor_id == dbAppointment.DoctorId).FirstOrDefault();

                            var sms = "Your Appointment is Updated Successfully!" + Environment.NewLine +
                                      "Now, Appointment booked with Dr." + doctor.Doctor_name + " on " +
                                      dbAppointment.DateStart.ToString("dd MMM yyyy") + " " +
                                      dbAppointment.DateStart.ToString("hh:mm tt") + " to " + dbAppointment.DateEnd.ToString("hh:mm tt");

                            sms += appointment.Message != "" ? Environment.NewLine + (" Reason: " + appointment.Message) : "";

                            SmsSend.Send(appointment.PatientMobile, sms);
                        }
                        catch (Exception)
                        { }


                        returnData.message     = "Successfull";
                        returnData.status_code = Convert.ToInt32(Status.Sucess);
                        returnData.data1       = dbAppointment;
                    }
                }
                else
                {
                    returnData.message     = "Oops something went wrong! ";
                    returnData.status_code = Convert.ToInt32(Status.Failed);
                }
            }
            catch (Exception ex)
            {
                ErrHandler.WriteError(ex.Message, ex);
                returnData.data1       = ex;
                returnData.message     = "Oops something went wrong! ";
                returnData.status_code = Convert.ToInt32(Status.Failed);
            }

            return(returnData);
        }
Exemplo n.º 18
0
        public string SmsSendByImport(SmsSendInfo model)
        {
            if (string.IsNullOrEmpty(model.SmsContent.Trim()))
            {
                return("发送失败,短信内容不能为空");
            }
            if (string.IsNullOrWhiteSpace(model.MobilePhone))
            {
                return("请导入手机号码");
            }

            List <string> mobileList = new List <string>();

            try
            {
                model.MobilePhone = model.MobilePhone.Trim();
                string[] mobilePhoneArr = model.MobilePhone.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                foreach (string item in mobilePhoneArr)
                {
                    if (Regex.IsMatch(item, @"(\d+){11,15}"))
                    {
                        if (!mobileList.Contains(item))
                        {
                            mobileList.Add(item);
                        }
                    }
                }

                if (mobileList.Count == 0)
                {
                    return("无任何正确的手机号码,无法发送短信");
                }

                Guid templateId = Guid.Empty;
                if (model.SmsTemplateId != null)
                {
                    Guid.TryParse(model.SmsTemplateId.ToString(), out templateId);
                }

                try
                {
                    if (!templateId.Equals(Guid.Empty))
                    {
                        SmsTemplate smstBll   = new SmsTemplate();
                        var         smstModel = smstBll.GetModel(model.SmsTemplateId);
                        if (smstModel == null)
                        {
                            return("发送失败,原因:模板不存在或已被删除");
                        }
                        if (smstModel.TemplateType == "auto")
                        {
                            return("发送失败,原因:不能选择自动类型的模板");
                        }

                        model.SmsContent = smstModel.SmsContent;
                    }
                    else
                    {
                        model.SmsContent = string.Format(model.SmsContent, model.ParamsValue.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                    }
                }
                catch
                {
                    return("发送失败,原因:已选参数与短信内容匹配有错,请正确操作");
                }

                SmsSend ssBll = new SmsSend();

                if (mobileList.Count > 100)
                {
                    while (mobileList.Count > 0)
                    {
                        var q = mobileList.Take(100);

                        if (q.Count() > 0)
                        {
                            var currList = q.ToList <string>();

                            SmsSendInfo ssiModel = new SmsSendInfo();
                            ssiModel.MobilePhone = string.Join(",", currList);
                            ssiModel.MobilePhone = model.MobilePhone;
                            ssiModel.SmsContent  = model.SmsContent.Trim();

                            ssBll.InsertByStrategy(ssiModel);

                            foreach (var item in currList)
                            {
                                mobileList.Remove(item);
                            }
                        }
                    }
                }
                else
                {
                    SmsSendInfo ssiModel = new SmsSendInfo();
                    ssiModel.MobilePhone = model.MobilePhone;
                    ssiModel.SmsContent  = model.SmsContent.Trim();

                    ssBll.InsertByStrategy(ssiModel);
                }

                return("1");
            }
            catch (Exception ex)
            {
                return("异常:" + ex.Message);
            }
        }
Exemplo n.º 19
0
        public string SmsSend(SmsSendInfo model)
        {
            if (string.IsNullOrEmpty(model.SmsContent.Trim()))
            {
                return("发送失败,短信内容不能为空");
            }
            try
            {
                model.TemplateType  = model.TemplateType.Trim();
                model.SmsTemplateId = model.SmsTemplateId.ToString().Trim();
                model.SmsContent    = model.SmsContent.Trim();
                model.NumberType    = model.NumberType.Trim();
                model.NumberCode    = model.NumberCode.Trim();
                model.ParamsCode    = model.ParamsCode.Trim();
                model.ParamsName    = model.ParamsName.Trim();
                model.ParamsValue   = model.ParamsValue.Trim();
                model.TranNode      = model.TranNode.Trim();

                #region 短信内容与参数对应检查

                try
                {
                    if (model.SmsTemplateId.ToString() != "")
                    {
                        Guid templateId = Guid.Empty;
                        Guid.TryParse(model.SmsTemplateId.ToString(), out templateId);
                        if (templateId.Equals(Guid.Empty))
                        {
                            return(MessageContent.GetString(MessageContent.Request_Data_Invalid, "当前模板"));
                        }
                        SmsTemplate smstBll   = new SmsTemplate();
                        var         smstModel = smstBll.GetModel(templateId);
                        if (smstModel == null)
                        {
                            return(MessageContent.GetString(MessageContent.Request_Data_Invalid, "当前模板"));
                        }
                        if (smstModel.TemplateType == "auto")
                        {
                            if (model.NumberType == "MobilePhone")
                            {
                                return("发送失败,原因:当号码类型为手机号码时,则不能选择自动类型的模板");
                            }
                            string content = string.Format(model.SmsContent, model.ParamsCode.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                        }
                        else if (model.TemplateType == "custom")
                        {
                            string content = string.Format(model.SmsContent, model.ParamsValue.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                        }
                    }
                    else
                    {
                        if (model.TemplateType == "auto")
                        {
                            if (model.NumberType == "MobilePhone")
                            {
                                return("发送失败,原因:当号码类型为手机号码时,则不能选择自动类型的模板");
                            }
                            string content = string.Format(model.SmsContent, model.ParamsCode.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                        }
                        else if (model.TemplateType == "custom")
                        {
                            string content = string.Format(model.SmsContent, model.ParamsValue.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                        }
                    }
                }
                catch
                {
                    return("发送失败,原因:已选参数与短信内容匹配有错,请正确操作");
                }

                #endregion

                SmsSendInfo ssiModel = new SmsSendInfo();
                ssiModel.TemplateType  = model.TemplateType;
                ssiModel.TranNode      = model.TranNode.Trim();
                ssiModel.TranNodeText  = model.TranNodeText.Trim();
                ssiModel.ParamsCode    = model.ParamsCode;
                ssiModel.ParamsName    = model.ParamsName;
                ssiModel.ParamsValue   = model.ParamsValue;
                ssiModel.SmsContent    = model.SmsContent.Trim();
                ssiModel.SmsTemplateId = model.SmsTemplateId;

                switch (model.NumberType)
                {
                case "MobilePhone":
                    ssiModel.MobilePhone = model.NumberCode;
                    if (!Regex.IsMatch(ssiModel.MobilePhone, @"^(\d+){11,15}$"))
                    {
                        return(MessageContent.GetString(MessageContent.Request_InvalidValue, "手机号码"));
                    }
                    break;

                case "OrderCode":
                    ssiModel.OrderCode = model.NumberCode;
                    break;

                case "CarScanCode":
                    ssiModel.CarScanCode = model.NumberCode;
                    break;

                default:
                    break;
                }

                SmsSend ssBll = new SmsSend();
                ssBll.InsertByStrategy(ssiModel);

                return("1");
            }
            catch (Exception ex)
            {
                return("异常:" + ex.Message);
            }
        }
Exemplo n.º 20
0
        public string PreviewSmsSend(SmsSendInfo model)
        {
            try
            {
                model.NumberType    = model.NumberType.Trim();
                model.SmsTemplateId = model.SmsTemplateId.ToString().Trim();
                model.NumberCode    = model.NumberCode.Trim();
                model.ParamsCode    = model.ParamsCode.Trim();

                if (model.SmsTemplateId.ToString() != "")
                {
                    #region 使用模板

                    Guid templateId = Guid.Empty;
                    Guid.TryParse(model.SmsTemplateId.ToString(), out templateId);
                    if (templateId.Equals(Guid.Empty))
                    {
                        return(MessageContent.GetString(MessageContent.Request_InvalidArgument, "模板ID"));
                    }

                    SmsTemplate smstBll   = new SmsTemplate();
                    var         smstModel = smstBll.GetModel(templateId);
                    if (smstModel == null)
                    {
                        return(MessageContent.GetString(MessageContent.Request_Data_Invalid, "当前模板"));
                    }
                    if (smstModel.TemplateType == "auto")
                    {
                        if (model.NumberType != "OrderCode")
                        {
                            return("当选择的模板类型为自动类型时,号码类型必须是订单号才能预览");
                        }

                        return(smstBll.GetTemplateContent(model.SmsTemplateId, model.NumberCode));
                    }
                    else if (model.TemplateType == "custom")
                    {
                        return(string.Format(model.SmsContent, model.ParamsValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)));
                    }
                    else
                    {
                        return(model.SmsContent);
                    }

                    #endregion
                }
                else if (model.TemplateType == "auto")
                {
                    if (model.NumberType != "OrderCode" || model.ParamsCode == "")
                    {
                        return("当选择的模板类型为自动类型时,号码类型必须是订单号,且必须选择参数才能预览,");
                    }
                    SmsSend ssBll = new SmsSend();
                    return(ssBll.GetSmsContent(model.NumberCode, model.SmsContent, model.ParamsCode));
                }
                else if (model.TemplateType == "custom")
                {
                    return(string.Format(model.SmsContent, model.ParamsValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)));
                }
                else
                {
                    return(model.SmsContent);
                }
            }
            catch (Exception ex)
            {
                return("异常:" + ex.Message);
            }
        }
Exemplo n.º 21
0
        public ReturnObject Insert_Appointment(Appointment appointment)
        {
            ReturnObject returnData = new ReturnObject();

            try
            {
                using (var db = new ddiarydbEntities())
                {
                    if (db.Appointments.Any(x => x.DateStart == appointment.DateStart && x.DateEnd == appointment.DateEnd))
                    {
                        returnData.message     = "This time slot booked.";
                        returnData.status_code = Convert.ToInt32(Status.AlreadyExists);
                        returnData.data1       = appointment;

                        return(returnData);
                    }

                    appointment.CreatedDate = DateTime.Now;
                    appointment.UpdatedDate = DateTime.Now;

                    db.Appointments.Add(appointment);
                    db.SaveChanges();

                    Patient_Master patient = new Patient_Master();

                    patient = db.Patient_Master.Where(x => x.Patient_contact == appointment.PatientMobile).FirstOrDefault();

                    if (patient == null)
                    {
                        patient                 = new Patient_Master();
                        patient.Reg_Date        = DateTime.Now;
                        patient.Patient_name    = appointment.PatientName;
                        patient.Patient_contact = appointment.PatientMobile;
                        patient.relation        = appointment.Relation;
                        patient.IsActive        = false;
                        patient.User_Id         = db.Doctor_Master.Where(x => x.Doctor_id == appointment.DoctorId).Select(x => x.User_id).FirstOrDefault();

                        db.Patient_Master.Add(patient);
                        db.SaveChanges();
                    }

                    appointment.PatientId = patient.Patient_Id;

                    db.Entry(appointment).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();

                    try
                    {
                        var doctor = db.Doctor_Master.Where(x => x.Doctor_id == appointment.DoctorId).FirstOrDefault();

                        var sms = "Your Appointment is Booked Successfully! Appointment booked with Dr." + doctor.Doctor_name + " on " +
                                  appointment.DateStart.ToString("dd MMM yyyy") + " " + appointment.DateStart.ToString("hh:mm tt") + " to " + appointment.DateEnd.ToString("hh:mm tt");

                        sms += appointment.Message != "" ? (" Reason: " + appointment.Message) : "";

                        SmsSend.Send(appointment.PatientMobile, sms);
                    }
                    catch (Exception)
                    { }

                    returnData.message     = "Successfull";
                    returnData.status_code = Convert.ToInt32(Status.Sucess);
                    returnData.data1       = appointment;
                }
            }
            catch (Exception ex)
            {
                ErrHandler.WriteError(ex.Message, ex);
                returnData.data1       = ex;
                returnData.message     = "Oops something went wrong! ";
                returnData.status_code = Convert.ToInt32(Status.Failed);
            }

            return(returnData);
        }
        /// <summary>
        /// 批量提交PDA扫描数据
        /// </summary>
        /// <param name="dt">应包含opType、barCode、scanTime、userName等列</param>
        /// <returns>返回:包含“成功”,则调用成功,否则返回调用失败原因</returns>
        public string InsertByBatch(DataTable dt)
        {
            if (dt == null || dt.Rows.Count == 0)
            {
                return("无任何可保存的数据");
            }

            string[] colNames = { "opType", "barCode", "scanTime", "userName" };

            DataColumnCollection cols = dt.Columns;

            foreach (DataColumn col in cols)
            {
                if (!colNames.Contains(col.ColumnName))
                {
                    return("检测到提交的数据集中未包含" + col.ColumnName + "列");
                }
            }

            DataRowCollection rows = dt.Rows;

            List <PDAOrderScanDetailInfo> osdList = new List <PDAOrderScanDetailInfo>();

            //定义非重复的用户名、用户ID
            Dictionary <string, object> dicUser = new Dictionary <string, object>();

            try
            {
                SysEnum seBll  = new SysEnum();
                var     seList = seBll.GetList("and t2.EnumCode = 'SendReceiveType'", null);
                if (seList == null || seList.Count == 0)
                {
                    return("服务端的操作类型未设定,请先完成设定");
                }
                var firstModel = seList.OrderBy(m => m.Sort).First();

                foreach (DataRow row in rows)
                {
                    string opType = "";
                    if (row["opType"] != DBNull.Value)
                    {
                        opType = row["opType"].ToString();
                    }
                    else
                    {
                        return("操作类型不能为空");
                    }

                    var seModel = seList.Find(m => m.EnumValue.Trim() == opType.Trim());
                    if (seModel == null)
                    {
                        return("不存在操作类型:" + opType);
                    }

                    string barCode = "";
                    if (row["barCode"] != DBNull.Value)
                    {
                        barCode = row["barCode"].ToString();
                    }
                    DateTime scanTime = DateTime.MinValue;
                    if (row["scanTime"] != DBNull.Value)
                    {
                        DateTime.TryParse(row["scanTime"].ToString(), out scanTime);
                    }
                    if (scanTime == DateTime.MinValue)
                    {
                        return("数据集中包含不合法数据:scanTime值格式不正确");
                    }

                    string userName = "";
                    if (row["userName"] != DBNull.Value)
                    {
                        userName = row["userName"].ToString();
                    }
                    if (string.IsNullOrEmpty(userName))
                    {
                        return("数据集中包含用户名为空");
                    }

                    if (!dicUser.ContainsKey(userName))
                    {
                        dicUser.Add(userName, Guid.Empty);
                    }

                    osdList.Add(new PDAOrderScanDetailInfo {
                        OrderCode = barCode, CurrNodeId = seModel.Id, ScanTime = scanTime, Remark = seModel.Remark, Sort = seModel.Sort, LastUpdatedDate = DateTime.Now, UserName = userName, SysEnumValue = opType
                    });
                }

                TyUser tyuBll = new TyUser();

                foreach (KeyValuePair <string, object> kvp in dicUser)
                {
                    MembershipUser user = Membership.GetUser(kvp.Key, false);
                    if (user == null)
                    {
                        return("不存在用户:" + kvp.Key);
                    }

                    TyUserInfo tyuModel = tyuBll.GetModelByUser(user.UserName);

                    var currList = osdList.FindAll(m => m.UserName == kvp.Key);
                    foreach (var item in currList)
                    {
                        item.UserId = user.ProviderUserKey;

                        string sRemark = "";
                        if (tyuModel != null && !string.IsNullOrWhiteSpace(tyuModel.OrganizationName))
                        {
                            sRemark = string.Format(item.Remark, tyuModel.OrganizationName);
                        }
                        else
                        {
                            sRemark = item.Remark.Replace(@"{0}", "");
                        }
                        sRemark = item.SysEnumValue + ":" + sRemark;

                        item.Remark = sRemark;
                    }
                }

                PDAOrderScan       osBll  = new PDAOrderScan();
                PDAOrderScanDetail osdBll = new PDAOrderScanDetail();
                Order   oBll   = new Order();
                SmsSend smsBll = new SmsSend();

                var q = osdList.OrderBy(m => m.Sort);
                foreach (var item in q)
                {
                    object nextNodeId  = Guid.Empty;
                    var    currSeModel = seList.Find(m => m.EnumValue.Trim() == item.SysEnumValue);
                    var    nextSeModel = seList.FindAll(m => m.Sort > item.Sort).OrderBy(m => m.Sort).FirstOrDefault();
                    if (nextSeModel == null)
                    {
                        nextNodeId = item.CurrNodeId;
                    }
                    else
                    {
                        nextNodeId = nextSeModel.Id;
                    }
                    var  lastSeModel = seList.OrderByDescending(m => m.Sort).First();
                    bool isFinish    = lastSeModel.EnumValue.Trim() == item.SysEnumValue;

                    bool isOsdExists = false;

                    PDAOrderScanInfo currOsModel = new PDAOrderScanInfo();
                    currOsModel.OrderCode       = item.OrderCode;
                    currOsModel.CurrNodeId      = item.CurrNodeId;
                    currOsModel.NextNodeId      = nextNodeId;
                    currOsModel.IsFinish        = isFinish;
                    currOsModel.LastUpdatedDate = DateTime.Now;

                    PDAOrderScanDetailInfo currOsdModel = new PDAOrderScanDetailInfo();
                    currOsdModel.OrderCode       = item.OrderCode;
                    currOsdModel.CurrNodeId      = item.CurrNodeId;
                    currOsdModel.ScanTime        = item.ScanTime;
                    currOsdModel.UserId          = item.UserId;
                    currOsdModel.LastUpdatedDate = currOsModel.LastUpdatedDate;
                    currOsdModel.Remark          = item.Remark;

                    if (item.SysEnumValue == "干线发运" || item.SysEnumValue == "干线到达")
                    {
                        var orders = oBll.GetOrderByCarcode(item.OrderCode);
                        if (orders == null || orders.Count() == 0)
                        {
                            return("操作类型:" + item.SysEnumValue + "找不到订单号,有错误");
                        }

                        foreach (var currOrderCode in orders)
                        {
                            currOsModel.OrderCode  = currOrderCode;
                            currOsdModel.OrderCode = currOrderCode;

                            var oldOsdList = osdBll.GetList(currOrderCode);
                            if (oldOsdList != null)
                            {
                                isOsdExists = oldOsdList.Exists(m => m.CurrNodeId.Equals(item.CurrNodeId));
                            }

                            if (!isOsdExists)
                            {
                                SmsSendInfo ssiModel = new SmsSendInfo();
                                ssiModel.OrderCode    = currOrderCode;
                                ssiModel.TranNode     = currSeModel.EnumCode;
                                ssiModel.TranNodeText = currSeModel.EnumValue;

                                using (TransactionScope scope = new TransactionScope())
                                {
                                    if (osBll.GetModel(currOrderCode) == null)
                                    {
                                        osBll.Insert(currOsModel);
                                    }
                                    else
                                    {
                                        osBll.Update(currOsModel);
                                    }

                                    osdBll.Insert(currOsdModel);

                                    scope.Complete();
                                }

                                smsBll.InsertByStrategy(ssiModel);
                            }
                        }
                    }
                    else if (item.Sort == firstModel.Sort)
                    {
                        var oldOsModel = osBll.GetModel(item.OrderCode);
                        if (oldOsModel == null)
                        {
                            SmsSendInfo ssiModel = new SmsSendInfo();
                            ssiModel.OrderCode    = item.OrderCode;
                            ssiModel.TranNode     = currSeModel.EnumCode;
                            ssiModel.TranNodeText = currSeModel.EnumValue;

                            using (TransactionScope scope = new TransactionScope())
                            {
                                osBll.Insert(currOsModel);
                                osdBll.Insert(currOsdModel);

                                scope.Complete();
                            }

                            smsBll.InsertByStrategy(ssiModel);
                        }
                    }
                    else
                    {
                        var oldOsModel = osBll.GetModel(item.OrderCode);
                        if (oldOsModel == null)
                        {
                            return("订单号:" + item.OrderCode + ",操作类型:" + item.SysEnumValue + "未取货,有错误");
                        }

                        var oldOsdList = osdBll.GetList(item.OrderCode);
                        if (oldOsdList != null)
                        {
                            isOsdExists = oldOsdList.Exists(m => m.CurrNodeId.Equals(item.CurrNodeId));

                            currOsModel.IsFinish = oldOsdList.Count == 5;
                        }

                        if (currOsModel.IsFinish)
                        {
                            continue;
                        }

                        if (!isOsdExists)
                        {
                            SmsSendInfo ssiModel = new SmsSendInfo();
                            ssiModel.OrderCode    = currOsModel.OrderCode;
                            ssiModel.TranNode     = currSeModel.EnumCode;
                            ssiModel.TranNodeText = currSeModel.EnumValue;

                            using (TransactionScope scope = new TransactionScope())
                            {
                                osBll.Update(currOsModel);

                                osdBll.Insert(currOsdModel);

                                scope.Complete();
                            }

                            smsBll.InsertByStrategy(ssiModel);
                        }
                    }

                    Console.WriteLine("request: opType:{0},barCode:{1},scanTime:{3},user:{2}", item.SysEnumValue, item.OrderCode, item.ScanTime, item.UserName);
                }

                return("保存成功");
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        /// <summary>
        /// 新增PDA扫描数据
        /// </summary>
        /// <param name="opType">操作类型</param>
        /// <param name="barCode">单号条码</param>
        /// <param name="scanTime">扫描时间</param>
        /// <param name="userName">用户名</param>
        /// <returns>返回:包含“成功”,则调用成功,否则返回调用失败原因</returns>
        public string Insert(string opType, string barCode, DateTime scanTime, string userName)
        {
            #region 参数合法性检查

            if (string.IsNullOrEmpty(opType))
            {
                return("操作类型不能为空");
            }
            opType = opType.Trim();
            if (string.IsNullOrEmpty(barCode))
            {
                return("单号条码不能为空");
            }
            barCode = barCode.Trim();
            //if (barCode.Length != 13)
            //{
            //    return "单号条码不正确";
            //}

            if (scanTime == DateTime.MinValue)
            {
                return("扫描时间格式不正确");
            }

            if (string.IsNullOrEmpty(userName))
            {
                return("用户不能为空");
            }

            #endregion

            try
            {
                MembershipUser user = Membership.GetUser(userName);
                if (user == null)
                {
                    return("不存在用户:" + userName);
                }

                SysEnum seBll  = new SysEnum();
                var     seList = seBll.GetList("and t2.EnumCode = 'SendReceiveType'", null);
                if (seList == null || seList.Count == 0)
                {
                    return("服务端的操作类型未设定,请先完成设定");
                }

                var firstModel  = seList.OrderBy(m => m.Sort).First();
                var currSeModel = seList.Find(m => m.EnumValue.Trim() == opType);
                if (currSeModel == null)
                {
                    return("当前操作类型“" + opType + "”不存在");
                }

                object nextNodeId  = Guid.Empty;
                var    nextSeModel = seList.FindAll(m => m.Sort > currSeModel.Sort).OrderBy(m => m.Sort).FirstOrDefault();
                if (nextSeModel == null)
                {
                    nextNodeId = currSeModel.Id;
                }
                else
                {
                    nextNodeId = nextSeModel.Id;
                }

                bool isOsdExists = false;

                PDAOrderScanInfo currOsModel = new PDAOrderScanInfo();
                currOsModel.OrderCode       = barCode;
                currOsModel.CurrNodeId      = currSeModel.Id;
                currOsModel.NextNodeId      = nextNodeId;
                currOsModel.IsFinish        = false;
                currOsModel.LastUpdatedDate = DateTime.Now;

                PDAOrderScanDetailInfo currOsdModel = new PDAOrderScanDetailInfo();
                currOsdModel.OrderCode       = barCode;
                currOsdModel.CurrNodeId      = currOsModel.CurrNodeId;
                currOsdModel.ScanTime        = scanTime;
                currOsdModel.UserId          = user.ProviderUserKey;
                currOsdModel.LastUpdatedDate = currOsModel.LastUpdatedDate;

                Order              oBll   = new Order();
                PDAOrderScan       osBll  = new PDAOrderScan();
                PDAOrderScanDetail osdBll = new PDAOrderScanDetail();
                TyUser             tyuBll = new TyUser();
                SmsSend            smsBll = new SmsSend();

                string     sRemark  = "";
                TyUserInfo tyuModel = tyuBll.GetModelByUser(user.UserName);
                if (tyuModel != null && !string.IsNullOrWhiteSpace(tyuModel.OrganizationName))
                {
                    sRemark = string.Format(currSeModel.Remark, tyuModel.OrganizationName);
                }
                else
                {
                    sRemark = currSeModel.Remark.Replace(@"{0}", "");
                }
                sRemark = currSeModel.EnumValue + ":" + sRemark;

                currOsdModel.Remark = sRemark;

                if (opType == "干线发运" || opType == "干线到达")
                {
                    var orders = oBll.GetOrderByCarcode(barCode);
                    if (orders == null || orders.Count() == 0)
                    {
                        return("操作类型:" + barCode + "找不到订单号,有错误");
                    }

                    foreach (var currOrderCode in orders)
                    {
                        currOsModel.OrderCode  = currOrderCode;
                        currOsdModel.OrderCode = currOrderCode;

                        var oldOsdList = osdBll.GetList(currOrderCode);
                        if (oldOsdList != null)
                        {
                            isOsdExists = oldOsdList.Exists(m => m.CurrNodeId.Equals(currSeModel.Id));
                        }

                        if (isOsdExists)
                        {
                            return("订单号:" + currOrderCode + " 操作类型:" + opType + "已存在,不能重复提交");
                        }

                        //发短信
                        SmsSendInfo ssiModel = new SmsSendInfo();
                        ssiModel.OrderCode    = currOrderCode;
                        ssiModel.TranNode     = currSeModel.EnumCode;
                        ssiModel.TranNodeText = currSeModel.EnumValue;

                        using (TransactionScope scope = new TransactionScope())
                        {
                            if (osBll.GetModel(currOrderCode) == null)
                            {
                                osBll.Insert(currOsModel);
                            }
                            else
                            {
                                osBll.Update(currOsModel);
                            }

                            osdBll.Insert(currOsdModel);

                            scope.Complete();
                        }

                        smsBll.InsertByStrategy(ssiModel);
                    }
                }

                else if (currSeModel.Sort == firstModel.Sort)
                {
                    var oldOsModel = osBll.GetModel(barCode);
                    if (oldOsModel != null)
                    {
                        return("订单号:" + barCode + ",操作类型:" + opType + "已存在,不能重复提交");
                    }

                    SmsSendInfo ssiModel = new SmsSendInfo();
                    ssiModel.OrderCode    = barCode;
                    ssiModel.TranNode     = currSeModel.EnumCode;
                    ssiModel.TranNodeText = currSeModel.EnumValue;

                    using (TransactionScope scope = new TransactionScope())
                    {
                        osBll.Insert(currOsModel);
                        osdBll.Insert(currOsdModel);

                        scope.Complete();
                    }

                    smsBll.InsertByStrategy(ssiModel);
                }
                else
                {
                    var oldOsModel = osBll.GetModel(barCode);
                    if (oldOsModel == null)
                    {
                        return("订单号:" + barCode + ",操作类型:" + opType + "未取货,有错误");
                    }

                    var oldOsdList = osdBll.GetList(barCode);
                    if (oldOsdList != null)
                    {
                        isOsdExists = oldOsdList.Exists(m => m.CurrNodeId.Equals(currSeModel.Id));

                        currOsModel.IsFinish = oldOsdList.Count == 5;
                    }

                    if (currOsModel.IsFinish)
                    {
                        return("订单号:" + barCode + "已完成所有操作");
                    }

                    if (isOsdExists)
                    {
                        return("订单号:" + barCode + ",操作类型:" + opType + "已存在,不能重复提交");
                    }

                    SmsSendInfo ssiModel = new SmsSendInfo();
                    ssiModel.OrderCode    = barCode;
                    ssiModel.TranNode     = currSeModel.EnumCode;
                    ssiModel.TranNodeText = currSeModel.EnumValue;

                    using (TransactionScope scope = new TransactionScope())
                    {
                        osBll.Update(currOsModel);

                        osdBll.Insert(currOsdModel);

                        scope.Complete();
                    }

                    smsBll.InsertByStrategy(ssiModel);
                }

                Console.WriteLine("request: opType:{0},barCode:{1},scanTime:{3},user:{2}", opType, barCode, scanTime, userName);

                return("保存成功");
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Exemplo n.º 24
0
        public async Task <bool> SendSmsAsync(SmsSend model)
        {
            try
            {
                if (model == null)
                {
                    throw new ArgumentNullException(nameof(model));
                }

                if (isTest || model.IsTest)
                {
                    model.IsTest    = true;
                    model.IsSucceed = true;
                    return(true);
                }

                var paramers = new Dictionary <string, string>();
                paramers.Add("PhoneNumbers", model.PhoneNumber);
                paramers.Add("SignName", model.SignName);
                paramers.Add("TemplateCode", model.TemplateCode);
                paramers.Add("TemplateParam", model.TemplateParam);
                paramers.Add("AccessKeyId", accessKeyId);

                var url    = GetSignUrl(paramers, accessKeySecret);
                var result = await HttpGetAsync(url);

                if (result.StatusCode == 200 && !string.IsNullOrEmpty(result.Response))
                {
                    var message = JsonConvert.DeserializeObject <AliyunSendSmsResult>(result.Response);
                    if (message?.Code == "OK")
                    {
                        model.IsSucceed = true;
                        model.Message   = message.Code;
                        model.ReceiptId = message.BizId;
                        return(true);
                    }
                    else if (message != null)
                    {
                        //smsRecord.
                        model.Message = message.Message;
                    }
                    else
                    {
                        model.Message = result.Response;
                    }
                }
                else
                {
                    model.Message = "发送短信失败";
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"send sms error: {ex.Message}", model);
                if (model != null)
                {
                    model.Message = ex.Message;
                }
            }
            finally
            {
                if (model != null)
                {
                    _logger.LogDebug($"sms: {JsonConvert.SerializeObject(model)}");
                    _smsSendRepository.Add(model);
                    await _smsSendRepository.SaveChangesAsync();
                }
            }
            return(false);
        }
        private static void WorkProcessor()
        {
            try
            {
                TimeSpan tsTimeout = TimeSpan.FromSeconds(Convert.ToDouble(transactionTimeout * batchSize));
                SmsSend  smsBll    = new SmsSend();

                while (true)
                {
                    TimeSpan datetimeStarting = new TimeSpan(DateTime.Now.Ticks);
                    double   elapsedTime      = 0;
                    int      processedItems   = 0;

                    List <SmsSendInfo> smsList = new List <Model.SmsSendInfo>();
                    SmsTemplate        smstBll = new SmsTemplate();
                    Order oBll = new Order();

                    for (int j = 0; j < batchSize; j++)
                    {
                        try
                        {
                            if ((elapsedTime + queueTimeout + transactionTimeout) < tsTimeout.TotalSeconds)
                            {
                                smsList.Add(smsBll.ReceiveFromQueue(queueTimeout));
                            }
                            else
                            {
                                j = batchSize;   // exit loop
                            }

                            //update elapsed time
                            elapsedTime = new TimeSpan(DateTime.Now.Ticks).TotalSeconds - datetimeStarting.TotalSeconds;
                        }
                        catch (TimeoutException)
                        {
                            //exit loop because no more messages are waiting
                            j = batchSize;
                        }
                    }

                    if (smsList.Count > 0)
                    {
                        foreach (var smsModel in smsList)
                        {
                            try
                            {
                                if (!string.IsNullOrEmpty(smsModel.MobilePhone))
                                {
                                    string sendContent = "";

                                    Guid templateId = Guid.Empty;
                                    if (smsModel.SmsTemplateId != null)
                                    {
                                        Guid.TryParse(smsModel.SmsTemplateId.ToString(), out templateId);
                                    }
                                    if (!templateId.Equals(Guid.Empty))
                                    {
                                        #region 使用模板发送

                                        sendContent = smstBll.GetTemplateContent(templateId, "");

                                        if (sendContent == "")
                                        {
                                            WriteLog log = new WriteLog();
                                            log.Write("手机号:“" + smsModel.MobilePhone + "”,使用了模板(ID:" + templateId + "),但是模板不存在或已被删除,无法发送短信");
                                            continue;
                                        }

                                        #endregion
                                    }
                                    else if (!string.IsNullOrEmpty(smsModel.SmsContent))
                                    {
                                        sendContent = smsModel.SmsContent;
                                    }

                                    if (string.IsNullOrEmpty(sendContent))
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("手机号:“" + smsModel.MobilePhone + "”,短信内容为空,无法发送短信");
                                        continue;
                                    }

                                    //发送短信并写入数据库
                                    smsModel.SmsContent = sendContent;
                                    SmsSendAndInsert(smsModel, null);
                                }

                                else if (!string.IsNullOrEmpty(smsModel.OrderCode))
                                {
                                    DataTable dt         = null;
                                    string    sendMobile = "";

                                    smsBll.GetSmsSendMobile(smsModel.OrderCode, smsModel.TranNode, out sendMobile, out dt);

                                    if (string.IsNullOrEmpty(sendMobile))
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("订单号:" + smsModel.OrderCode + ",运输环节:" + smsModel.TranNodeText + ",异常:发货方或收货方手机号为空值或无效,无法发送短信");
                                        continue;
                                    }

                                    string[]      mobiles     = sendMobile.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                    List <string> contentList = GetSmsContent(smsModel, dt);
                                    if (contentList.Count != mobiles.Length)
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("订单号:" + smsModel.OrderCode + ",运输环节:" + smsModel.TranNodeText + ",异常:发货方或收货方短信模板找不到或已被删除,无法发送短信");
                                        continue;
                                    }

                                    for (var i = 0; i < mobiles.Length; i++)
                                    {
                                        smsModel.MobilePhone = mobiles[i];
                                        smsModel.SmsContent  = contentList[i];

                                        SmsSendAndInsert(smsModel, dt);
                                    }
                                }
                                else if (!string.IsNullOrEmpty(smsModel.CarScanCode))
                                {
                                    string[] orders = oBll.GetOrderByCarcode(smsModel.CarScanCode);
                                    if (orders.Length == 0)
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("派车单号:" + smsModel.CarScanCode + ",没有任何订单号,无法发送短信");
                                        continue;
                                    }
                                    foreach (string orderCode in orders)
                                    {
                                        DataTable dt         = null;
                                        string    sendMobile = "";

                                        smsBll.GetSmsSendMobile(orderCode, smsModel.TranNode == null ? "" : smsModel.TranNode, out sendMobile, out dt);

                                        if (string.IsNullOrEmpty(sendMobile))
                                        {
                                            WriteLog log = new WriteLog();
                                            log.Write("派车单号:“" + smsModel.CarScanCode + "”,订单号:" + orderCode + ",异常:发货方或收货方手机号为空值或无效,无法发送短信");
                                            continue;
                                        }

                                        string[]      mobiles     = sendMobile.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                        List <string> contentList = GetSmsContent(smsModel, dt);
                                        if (contentList.Count != mobiles.Length)
                                        {
                                            WriteLog log = new WriteLog();
                                            log.Write("订单号:" + smsModel.OrderCode + ",运输环节:" + smsModel.TranNodeText + ",异常:发货方或收货方短信模板找不到或已被删除,无法发送短信");
                                            continue;
                                        }

                                        for (var i = 0; i < mobiles.Length; i++)
                                        {
                                            smsModel.MobilePhone = mobiles[i];
                                            smsModel.SmsContent  = contentList[i];

                                            SmsSendAndInsert(smsModel, dt);
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                WriteLog log         = new WriteLog();
                                string   errorAppend = "";
                                if (!string.IsNullOrEmpty(smsModel.MobilePhone))
                                {
                                    errorAppend += "手机号:" + smsModel.MobilePhone + "";
                                }
                                if (!string.IsNullOrEmpty(smsModel.OrderCode))
                                {
                                    errorAppend += "订单号:" + smsModel.OrderCode + "";
                                }
                                if (!string.IsNullOrEmpty(smsModel.CarScanCode))
                                {
                                    errorAppend += "派车单号:" + smsModel.CarScanCode + "";
                                }
                                log.Write("异常:" + ex.Message + "," + errorAppend + "");
                            }

                            processedItems++;
                        }
                    }

                    Thread.Sleep(2000);
                }
            }
            catch (Exception ex)
            {
                WriteLog log = new WriteLog();
                log.Write(ex.Message);
            }
        }
Exemplo n.º 26
0
        public ReturnObject Update_Appointment(int id, string status, string msg)
        {
            ReturnObject returnData = new ReturnObject();

            try
            {
                using (var db = new ddiarydbEntities())
                {
                    var appointment = (from s in db.Appointments
                                       where s.Id == id
                                       select s).FirstOrDefault();

                    if (appointment.DateStart > DateTime.Now)
                    {
                        appointment.Status = status;
                    }
                    else
                    {
                        appointment.Status = "Cancel";
                    }

                    //appointment.CreatedDate = DateTime.Now;
                    appointment.UpdatedDate = DateTime.Now;

                    db.Entry(appointment).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();

                    var sms    = "";
                    var doctor = db.Doctor_Master.Where(x => x.Doctor_id == appointment.DoctorId).FirstOrDefault();

                    if (appointment.Status == "Accept")
                    {
                        sms = "Your Appointment is Accepted Successfully! Appointment booked with Dr." + doctor.Doctor_name + " on " +
                              appointment.DateStart.ToString("dd MMM yyyy") + " " + appointment.DateStart.ToString("hh:mm tt") + " to " + appointment.DateEnd.ToString("hh:mm tt");

                        Patient_Master patient = db.Patient_Master.Where(x => x.Patient_Id == appointment.PatientId).FirstOrDefault();

                        if (patient != null)
                        {
                            patient.IsActive = true;

                            db.Entry(patient).State = System.Data.Entity.EntityState.Modified;
                            db.SaveChanges();
                        }

                        DoctorPatient_Master doctorPatient = new DoctorPatient_Master();

                        doctorPatient = (from x in db.DoctorPatient_Master.AsEnumerable()
                                         where x.PatientId == appointment.PatientId && x.DoctorId == appointment.DoctorId
                                         select x).FirstOrDefault();

                        if (doctorPatient == null)
                        {
                            doctorPatient             = new DoctorPatient_Master();
                            doctorPatient.DoctorId    = appointment.DoctorId;
                            doctorPatient.PatientId   = appointment.PatientId;
                            doctorPatient.IsActive    = true;
                            doctorPatient.CreatedDate = DateTime.Now;
                            doctorPatient.UpdatedDate = DateTime.Now;

                            db.DoctorPatient_Master.Add(doctorPatient);
                            db.SaveChanges();
                        }
                        else
                        {
                            doctorPatient.UpdatedDate = DateTime.Now;

                            db.Entry(doctorPatient).State = System.Data.Entity.EntityState.Modified;
                            db.SaveChanges();
                        }
                    }
                    else if (appointment.Status == "Cancel")
                    {
                        sms = "Your Appointment booked on " +
                              appointment.DateStart.ToString("dd MMM yyyy") + " " + appointment.DateStart.ToString("hh:mm tt") + " to " + appointment.DateEnd.ToString("hh:mm tt") +
                              " is Canceled by Dr." + doctor.Doctor_name + ".";
                        sms = msg != "" ? (sms + " Reason: " + msg) : sms;
                    }

                    SmsSend.Send(appointment.PatientMobile, sms);


                    returnData.message     = "Successfull";
                    returnData.status_code = Convert.ToInt32(Status.Sucess);
                    returnData.data1       = appointment;
                }
            }
            catch (Exception ex)
            {
                ErrHandler.WriteError(ex.Message, ex);
                returnData.data1       = ex;
                returnData.message     = "Oops something went wrong! ";
                returnData.status_code = Convert.ToInt32(Status.Failed);
            }

            return(returnData);
        }
Exemplo n.º 27
0
        public MainFrom mf;//主窗体
        /// <summary>
        /// 单击发送按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSMSSend_Click(object sender, EventArgs e)
        {
            //短信内容

            if (string.IsNullOrEmpty(txtcontent.Text.Trim()))
            {
                MessageBox.Show("请输入短信内容");
                return;
            }

            //质检状态改为暂停质检
            LinQBaseDao.Query("update QCInfo set QCInfo_Dictionary_ID=(select Dictionary_ID from Dictionary where Dictionary_Name='暂停质检') where QCInfo_ID=" + QcinfoID);

            //添加异常信息
            //insert into Unusual values(质检编号,异常类型编号,异常类型编号,'内容','未处理',经手人编号,0)
            Unusual un = new Unusual();

            un.Unusual_QCInfo_ID      = QcinfoID;
            un.Unusual_UnusualType_Id = Convert.ToInt32(cboUnusualType_Name.SelectedValue);
            un.Unusual_TestItems_ID   = Convert.ToInt32(cboUnusualType_Name.SelectedValue);
            un.Unusual_content        = cboUnusualType_Name.Text + "异常:" + txtcontent.Text.Trim();
            un.Unusual_State          = "未处理";
            un.Unusual_ISSMSSend      = false;
            un.Unusual_time           = LinQBaseDao.getDate();

            int u_id = 0;

            if (UnusualDAL.InsertOneQCRecord(un, out u_id))
            {
                MessageBox.Show("短信发送成功!");


                int TestItems_ID = Convert.ToInt32(cboUnusualType_Name.SelectedValue);
                //发送内容及发送人
                DataSet SMSDs = LinQBaseDao.Query("select top(1)* from SMSConfigure where SMSConfigure_TestItems_ID=" + TestItems_ID);//只会存在一条

                #region 取内容
                string[] SMSContent    = SMSDs.Tables[0].Rows[0]["SMSConfigure_SendContent"].ToString().Split(',');
                string[] SMSContentTxt = SMSDs.Tables[0].Rows[0]["SMSConfigure_SendContentText"].ToString().Split(',');
                string   Contents      = SMSSendContent(SMSContent, un.Unusual_Id, SMSContentTxt, un.Unusual_content);//存储短信内容
                #endregion

                #region 取号码、姓名,并对其号码发送短信(号码和姓名同位置是一组数据)
                string[] SMSPhon = SMSDs.Tables[0].Rows[0]["SMSConfigure_ReceivePhone"].ToString().Split(';'); //号码
                string[] SMSName = SMSDs.Tables[0].Rows[0]["SMSConfigure_Receive"].ToString().Split(';');      //姓名

                for (int y = 0; y < SMSPhon.Count(); y++)                                                      //循环要发送的人数的电话号码
                {
                    if (SMSPhon[y] != "")
                    {
                        SmsSend ss = new SmsSend();
                        ss.SmsSend_Phone       = SMSPhon[y];
                        ss.SmsSend_Text        = Contents;
                        ss.SmsSend_userName    = SMSName[y];
                        ss.SmsSend_IsSend      = "0";
                        ss.SmsSend_Unusunal_ID = un.Unusual_Id;
                        bool b = SmsSendDAL.Insert(ss);
                    }
                }



                #endregion



                Emety();
            }
            else
            {
                MessageBox.Show("短信发送失败!");
                return;
            }
        }