public ViewResult Detail(Guid id)
        {
            ExceptionLog      exceptionLog      = this._exceptionLogRep.Single(id);
            ExceptionLogModel exceptionLogModel = exceptionLog.ToModel();

            return(base.View(exceptionLogModel));
        }
示例#2
0
        public async Task AddExceptionLogAsync(ExceptionLogModel model)
        {
            var cmdParameters = "@criticality, @message, @stacktrace";
            var cmd           = new NpgsqlCommand();

            cmd.CommandText = $@"INSERT INTO {exceptionLogTable} ({insertExceptionLogColumns}) VALUES ({cmdParameters});";
            cmd.Parameters.AddWithValue("@criticality", model.Criticality);
            cmd.Parameters.AddWithValue("@message", model.Message);
            cmd.Parameters.AddWithValue("@stacktrace", model.StackTrace);

            await db.CommandNonqueryAsync(cmd);
        }
示例#3
0
        public static void LogException(Exception e, string Controller, string Function)
        {
            ExceptionLogModel model = new ExceptionLogModel();

            model.StackTrace     = e.StackTrace;
            model.Exception      = e.ToString();
            model.ControllerName = Controller;
            model.FunctionName   = Function;
            model.UserID         = 0;

            model.LogException();
        }
示例#4
0
        async Task sendMail(string body, string subject, string address)
        {
            if (!config.SendEmail)
            {
                return;
            }

            var message = new MimeMessage();

            message.From.Add(new MailboxAddress(config.Name, config.EmailAddress));
            message.To.Add(new MailboxAddress(config.Name, address));
            message.Subject = subject;

            message.Body = new BodyBuilder()
            {
                HtmlBody = body
            }.ToMessageBody();

            using (var client = new SmtpClient())
            {
                try
                {
                    client.ServerCertificateValidationCallback = BypassValidateServerCertificate;
                    await client.ConnectAsync("smtp.elasticemail.com", 2525, false);

                    client.AuthenticationMechanisms.Remove("XOAUTH2");

                    await client.AuthenticateAsync(config.ElasticmailUsername, config.ElasticmailSecret);

                    await client.SendAsync(message);

                    client.Disconnect(true);
                }
                catch (Exception e)
                {
                    //Log exception through Postgres
                    var model = new ExceptionLogModel()
                    {
                        Message     = e.Message + $" {config.ElasticmailUsername} {config.ElasticmailSecret}",
                        Criticality = 10,
                        StackTrace  = e.StackTrace
                    };

                    await logging.LogException(model);

                    //Log exception through Sentry
                    var sentry = new SentryEvent(e);
                    sentry.Tags.Add("Elasticmail Config", $"Username: {config.ElasticmailUsername} Secret: {config.ElasticmailSecret}");
                    await raven.CaptureNetCoreEventAsync(sentry);
                }
            }
        }
示例#5
0
        public ActionResult Create(ExceptionLogModel model)
        {
            ResultModel resultModel = new ResultModel();

            model.UpdateBy       = UserInfo.CurrentUserName;
            model.UpdateDT       = DateTime.Now;
            model.Status         = 2;
            resultModel          = this._exceptionLogService.Update(model);
            resultModel.Messages = new List <string> {
                resultModel.IsValid == true ? "Success!" : "Failed!"
            };
            return(Json(resultModel, JsonRequestBehavior.AllowGet));
        }
示例#6
0
        public async Task <IActionResult> Exception([FromBody] ExceptionLogModel model)
        {
            logger.LogCritical(new EventId(501), "Application Exception Recieved");
            logger.LogCritical(new EventId(501), $"Error Message: {model.Message}");
            logger.LogCritical(new EventId(501), $"Stack Trace: {model.StackTrace}");

            try
            { await errors.LogException(model); }
            catch (Exception e)
            { logger.LogError(new EventId(500), e, "Unable to log exception to Postgres"); }

            return(Ok());
        }
 /// <summary>
 /// Logs an exception
 /// </summary>
 public async Task LogAsync(ExceptionLogModel exceptionLogModel)
 {
     try
     {
         var excepitonLog = _mapper.Map <ExceptionLog>(exceptionLogModel);
         _unitOfWork.Logger.Log(excepitonLog);
         await _unitOfWork.SaveAsync();
     }
     catch (Exception ex)
     {
         throw new InternetAuctionException("An error occurred while logging an exception", ex);
     }
 }
示例#8
0
        public async Task Invoke(HttpContext context)
        {
            try
            {
                await _next.Invoke(context);
            }
            catch (Exception ex)
            {
                logger.LogError(0, ex, "An unhandled exception has occured: " + ex.Message);

                //If response has not been started, send back a 500
                if (!context.Response.HasStarted)
                {
                    context.Response.StatusCode = 500;
                    await context.Response.WriteAsync("An unhandled exception in the API has occured.");
                }

                //Log the error into our DB
                ExceptionLogModel model = new ExceptionLogModel()
                {
                    Criticality = 10,
                    Message     = ex.Message,
                    StackTrace  = ex.StackTrace
                };

                var sentry = new SentryEvent(ex)
                {
                    Extra = new { Request = context.Request.Path.ToString(), QueryString = context.Request.QueryString.ToUriComponent() }
                };

                try
                {
                    await raven.CaptureNetCoreEventAsync(sentry);
                }
                catch (Exception e)
                {
                    logger.LogError(0, e, "Error sending RavenClient error");
                }

                try
                {
                    await dbLog.LogException(model);
                }
                catch (Exception e)
                {
                    logger.LogError(0, e, "Error logging exception: " + e.Message);
                }
            }
        }
        /// <summary>
        /// Logs an exception
        /// </summary>
        /// <param name="filterContext"></param>
        public void OnException(ExceptionContext filterContext)
        {
            var exceptionLog = new ExceptionLogModel
            {
                ExceptionMessage = filterContext.Exception.Message,
                Controller       = filterContext.RouteData.Values["controller"].ToString(),
                Action           = filterContext.RouteData.Values["action"].ToString(),
                IP       = filterContext.HttpContext.Request.UserHostAddress,
                DateTime = DateTime.UtcNow
            };

            LoggerService.LogAsync(exceptionLog);

            filterContext.Result           = new RedirectResult("~/Errors/InternalError");
            filterContext.ExceptionHandled = true;
        }
示例#10
0
        /// <summary>
        /// 添加信息
        /// zhoub 20150902
        /// </summary>
        public ResultModel Add(ExceptionLogModel model)
        {
            ResultModel result = new ResultModel();
            var         count  = 0;

            if (model.HandleId != "0")
            {
                count = _database.Db.ExceptionLog.GetCount(_database.Db.ExceptionLog.HandleId == model.HandleId && _database.Db.ExceptionLog.ServiceName == model.ServiceName);
            }
            if (count == 0)
            {
                model.CreateDT = DateTime.Now;
                result.Data    = base._database.Db.ExceptionLog.Insert(model);
            }
            return(result);
        }
示例#11
0
        /// <summary>
        /// 更新信息
        /// zhoub 20150902
        /// </summary>
        /// <param name="model">角色模型</param>
        /// <returns>是否修改成功</returns>
        public ResultModel Update(ExceptionLogModel model)
        {
            var result = new ResultModel
            {
                Data = base._database.Db.ExceptionLog.UpdateByElId(ElId: model.ElId, UpdateBy: model.UpdateBy, UpdateDT: model.UpdateDT, UpdateResult: model.UpdateResult, Status: model.Status)
            };

            if (result.Data > 0)
            {
                result.Messages.Add("Successful operation");//操作成功
            }
            else
            {
                result.Messages.Add("Operation failure");//操作失败
            }
            return(result);
        }
        public void XmlSave(ExceptionLogModel data)
        {
            XmlDocument xDoc = new XmlDocument();

            try
            {
                xDoc.Load("C:/Users/poden/OneDrive/Рабочий стол/Fclty2/Faculty/Faculty/XmlLogStorage/XmlLog.xml");

                XmlElement xRoot = xDoc.DocumentElement;


                XmlElement error      = xDoc.CreateElement("Exception");
                XmlElement userName   = xDoc.CreateElement("UserName");
                XmlElement exMessage  = xDoc.CreateElement("ExceptionMessage");
                XmlElement userAction = xDoc.CreateElement("ControllerName");
                XmlElement stackTrace = xDoc.CreateElement("ExceptionStackTrace");
                XmlElement Date       = xDoc.CreateElement("LogTime");

                XmlText name   = xDoc.CreateTextNode($"{data.UserName}");
                XmlText exMes  = xDoc.CreateTextNode($"{data.ExceptionMessage}");
                XmlText action = xDoc.CreateTextNode($"{data.ControllerName}");
                XmlText sTrace = xDoc.CreateTextNode($"{data.ExceptionStackTrace}");
                XmlText date   = xDoc.CreateTextNode($"{data.LogTime}");

                userName.AppendChild(name);
                exMessage.AppendChild(exMes);
                userAction.AppendChild(action);
                stackTrace.AppendChild(sTrace);
                Date.AppendChild(date);

                error.AppendChild(userName);
                error.AppendChild(exMessage);
                error.AppendChild(userAction);
                error.AppendChild(stackTrace);
                error.AppendChild(Date);
                xRoot.AppendChild(error);

                xDoc.Save("C:/Users/poden/OneDrive/Рабочий стол/Fclty2/Faculty/Faculty/XmlLogStorage/XmlLog.xml");
            }
            catch (FileNotFoundException ex)
            {
                throw ex;
            }
        }
示例#13
0
        /// <summary>
        /// 数据异常处理查询
        /// zhoub 20150902
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Create(long?id)
        {
            ExceptionLogModel model = new ExceptionLogModel();

            if (id.HasValue)
            {
                SearchExceptionLogModel smodel = new SearchExceptionLogModel();
                smodel.ElId       = id.Value;
                smodel.PagedIndex = 0;
                smodel.PagedSize  = 100;
                //查询列表
                List <ExceptionLogModel> List = this._exceptionLogService.GetExceptionLogList(smodel).Data;
                if (List != null && List.Count > 0)
                {
                    model = List[0];
                }
            }
            return(PartialView(model));
        }
示例#14
0
        //static string Baseurl = "http://localhost:57225/";
        public static ExceptionLogModel CreateLogData(Exception ex)
        {
            ExceptionLogModel log = new ExceptionLogModel();

            log.UserID              = 1;
            log.ApplicationName     = "PMS";
            log.MachineName         = HttpContext.Current.Server.MachineName;
            log.ExceptionClassName  = new StackTrace(ex).GetFrame(0).GetMethod().DeclaringType.Name.ToString();
            log.ExceptionMethodName = new StackTrace(ex).GetFrame(0).GetMethod().Name;

            log.ExceptionMessage    = ex.Message;
            log.ExceptionStackTrace = ex.StackTrace;
            log.ServerName          = HttpContext.Current.Server.MachineName;
            log.ExceptionType       = "E";
            log.Url = HttpContext.Current.Request.Url.AbsoluteUri;
            log.ExceptionLoggingTime = DateTime.Now;

            return(log);
        }
示例#15
0
        /// <summary>
        /// 添加数据到表
        /// </summary>
        /// <param name="model">订单表实体</param>
        /// <param name="zj_detils">订单详情集合</param>
        public bool SetCashBackList(OderModel model, List <ZJ_RebateInfo> zj_detils)
        {
            bool flag = false;
            ExceptionLogModel exceptionLogModel = new ExceptionLogModel();

            exceptionLogModel.ServiceName = "会员购物订单返现订单生成服务";
            exceptionLogModel.CreateBy    = "系统服务";
            using (var bt = _database.Db.BeginTransaction())
            {
                try
                {
                    //添加返现记录
                    foreach (ZJ_RebateInfo detail in zj_detils)
                    {
                        bt.ZJ_RebateInfo.Insert(detail);
                    }

                    //更改订单状态为已完成,表示该订单已经做了订单返现单生成
                    bt.Order.UpdateByOrderID(OrderID: model.OrderID, IsReward: 1, OrderStatus: (int)HKTHMall.Domain.Enum.OrderEnums.OrderStatus.Completed);
                    //添加订单跟踪记录
                    OrderTrackingLogModel orderTrackingLogOne = new OrderTrackingLogModel();
                    orderTrackingLogOne.OrderID         = model.OrderID;
                    orderTrackingLogOne.OrderStatus     = (int)HKTHMall.Domain.Enum.OrderEnums.OrderStatus.Completed;
                    orderTrackingLogOne.TrackingContent = "已完成";
                    orderTrackingLogOne.CreateTime      = DateTime.Now;
                    orderTrackingLogOne.CreateBy        = "会员订单返现单生成服务";
                    bt.OrderTrackingLog.Insert(orderTrackingLogOne);
                    bt.Commit();
                    flag = true;
                }
                catch (Exception ex)
                {
                    bt.Rollback();
                    exceptionLogModel.HandleId   = model.OrderID;
                    exceptionLogModel.Status     = 1;
                    exceptionLogModel.ResultType = 1;
                    exceptionLogModel.Message    = string.Format("处理订单【{0}】的返现订单生成失败,{1},数据库事务回滚", model.OrderID, ex.Message);
                    exceptionLogService.Add(exceptionLogModel);
                    _logger.Error(typeof(ZJ_RebateService), string.Format("处理订单【{0}】的返现订单生成失败,{1},数据库事务回滚", model.OrderID, ex.Message));
                }
            }
            return(flag);
        }
示例#16
0
        public async Task <bool> InsertLogAsync(ExceptionLogModel model)
        {
            try
            {
                var response = await SaveAsync(new ExceptionLog
                {
                    ErrorCode    = model.ErrorCode,
                    ErrorMessage = model.ErrorMessage,
                    ErrorType    = model.ErrorType,
                    EventDate    = DateTime.Now,
                    IsActive     = true,
                    StackTrace   = model.StackTrace,
                });

                return(response.IsSuccessful);
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#17
0
        public static void LogData(Exception ex)
        {
            ExceptionLogModel ExceptionLog = CreateLogData(ex);

            using (var client = new HttpClient())
            {
                //Passing service base url
                client.BaseAddress = new Uri(Baseurl);

                client.DefaultRequestHeaders.Clear();

                var stype = JsonConvert.SerializeObject(ExceptionLog);

                // Define request data format
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                //Sending request to find web api REST service resource GetAllComapnies using HttpClient
                //var Res = client.PostAsync("api/ExceptionLog/insert", new StringContent(stype,Encoding.UTF8,"application/json"));
                var resp = client.PostAsJsonAsync <ExceptionLogModel>("api/ExceptionLog/insert", ExceptionLog).Result;
            }
        }
示例#18
0
        public void OnException(ExceptionContext filterContext)
        {
            string name = "Guest";

            if (filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                name = filterContext.HttpContext.User.Identity.Name;
            }
            if (!filterContext.ExceptionHandled)
            {
                ExceptionLogModel logger = new ExceptionLogModel()
                {
                    UserName            = name,
                    ExceptionMessage    = filterContext.Exception.Message,
                    ControllerName      = filterContext.RouteData.Values["controller"].ToString(),
                    ExceptionStackTrace = filterContext.Exception.StackTrace,
                    LogTime             = DateTime.Now
                };
                XmlFileManager manager = new XmlFileManager();
                manager.XmlSave(logger);
            }
        }
        public LogModel(LogEvent logEvent, IEnumerable <string> ignoreProperties = null)
        {
            Message   = logEvent.RenderMessage();
            Timestamp = logEvent.Timestamp.UtcDateTime;
            Level     = logEvent.Level.ToString();
            LevelId   = logEvent.Level;

            if (logEvent.Properties.Count > 0)
            {
                CustomFields = ignoreProperties == null ? logEvent.Properties : logEvent.Properties.Where(p => !ignoreProperties.Contains(p.Key)).ToDictionary(p => p.Key, p => p.Value);
            }

            if (logEvent.Exception != null)
            {
                Exception = new ExceptionLogModel
                {
                    Type       = logEvent.Exception.GetType().ToString(),
                    Message    = logEvent.Exception.Message,
                    StackTrace = logEvent.Exception.StackTrace,
                };
            }
        }
示例#20
0
        /// <summary>
        /// 生成返现订单
        /// </summary>
        /// <returns></returns>
        public BackMessage GenerateList(OderModel model)
        {
            var result = new BackMessage();

            result.status = 0;
            ExceptionLogModel exceptionLogModel = new ExceptionLogModel();

            exceptionLogModel.ServiceName = "会员购物订单返现订单生成服务";
            exceptionLogModel.CreateBy    = "系统服务";
            List <OrderDetails> orderDetails = _database.Db.OrderDetails.FindAll(_database.Db.OrderDetails.OrderID == model.OrderID).ToList <OrderDetails>();
            int tuiCount = orderDetails.Count(x => x.IsReturn == 2);//是否有退款的订单明细

            //if (model.RefundFlag != 0)//存在退款
            //{
            //    orderDetails = orderDetails.FindAll(x => x.IsReturn == 3 || x.IsReturn == 0);
            //}
            //  orderDetails = orderDetails.FindAll(x => x.IsReturn == 3 || x.IsReturn == 0);
            if (orderDetails != null)
            {
                List <ZJ_RebateInfo> zj_detils = new List <ZJ_RebateInfo>();
                if (tuiCount == 0)
                {
                    foreach (OrderDetails detail in orderDetails)
                    {
                        //商品返现金额= 销售价 * 数量
                        decimal tmoney = detail.SalesPrice * detail.Quantity;
                        zj_detils.Add(FormartZJ_RebateInfo(tmoney, model, detail));
                    }
                }
                else
                {
                    List <ReturnProductInfoModel> returnList = GetReturnProductListByOrderId(model.OrderID);
                    foreach (OrderDetails detail in orderDetails)
                    {
                        // int yituiCount = returnList.Count(x => x.OrderDetailsID == detail.OrderDetailsID);
                        ReturnProductInfoModel returndetail = returnList.Where(x => x.OrderDetailsID == detail.OrderDetailsID).FirstOrDefault();
                        if (returndetail != null)
                        {
                            int num = detail.Quantity - returndetail.ReturntNumber;
                            if (num > 0)
                            {
                                decimal tmoney = detail.SalesPrice * num;                        //商品返现金额= 销售价 * 数量
                                zj_detils.Add(FormartZJ_RebateInfo(tmoney, model, detail));
                            }
                        }
                        else
                        {
                            //商品返现金额= 销售价 * 数量
                            decimal tmoney = detail.SalesPrice * detail.Quantity;
                            zj_detils.Add(FormartZJ_RebateInfo(tmoney, model, detail));
                        }
                    }
                }

                if (SetCashBackList(model, zj_detils))
                {
                    result.status = 1;
                }
            }
            else
            {
                exceptionLogModel.HandleId   = model.OrderID;
                exceptionLogModel.Status     = 1;
                exceptionLogModel.ResultType = 1;
                exceptionLogModel.Message    = string.Format("处理订单【{0}】的返现订单生成失败,获取订单详情失败", model.OrderID);
                exceptionLogService.Add(exceptionLogModel);
                _logger.Error(typeof(ZJ_RebateService), string.Format("处理订单【{0}】的返现订单生成失败,获取订单详情失败", model.OrderID));
            }
            return(result);
        }
示例#21
0
 public async Task LogException(ExceptionLogModel model)
 {
     await db.AddExceptionLogAsync(model);
 }
示例#22
0
        /// <summary>
        /// 返现操作
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public void CashBackOrder()
        {
            ExceptionLogModel exceptionLogModel = new ExceptionLogModel();

            exceptionLogModel.ServiceName = "会员订单返现服务";
            exceptionLogModel.CreateBy    = "系统返现服务";
            var zr = _database.Db.ZJ_RebateInfo;
            List <ZJ_RebateInfo> zjorder = zr.FindAll(zr.Status == 1 && zr.StartTime <= DateTime.Now).ToList <ZJ_RebateInfo>();

            zjorder = zjorder.FindAll(x => x.LastUpdateTime == null || DateTime.Now.Date.Subtract(((DateTime)x.LastUpdateTime).Date).Days > 0);
            if (zjorder != null && zjorder.Count > 0)
            {
                foreach (ZJ_RebateInfo model in zjorder)
                {
                    try
                    {
                        //判断是否已返现完成
                        if (model.TotalMoney <= model.PaidMoney)
                        {
                            zr.UpdateByID(ID: model.ID, Status: 2, LastUpdateBY: "系统服务", LastUpdateTime: DateTime.Now);
                            _logger.Error(typeof(ZJ_RebateService), string.Format("订单【{0}】的已经返现完成", model.ID));
                        }
                        else
                        {
                            decimal m  = 0;                           //本次返回金额
                            decimal pm = 0;                           //当前已付金额+本次返回金额
                            int     pd = 0;
                            if (model.TotalDay - model.PaidDays == 1) //最后一天返回所有余额(小数点问题)
                            {
                                m = model.TotalMoney - model.PaidMoney;
                            }
                            else
                            {
                                m = ToFixed((model.TotalMoney / model.TotalDay), 2);
                                if (m < 0.01m)
                                {
                                    m = 0.01m;
                                }
                            }
                            pm = model.PaidMoney + m;
                            pd = model.PaidDays + 1;
                            #region 用户余额
                            ZJ_UserBalanceModel ub = new ZJ_UserBalanceModel();
                            ub = _database.Db.ZJ_UserBalance.FindByUserId(UserId: model.UserID);
                            if (ub == null)
                            {
                                exceptionLogModel.Message    = string.Format("未能找到用户【{0}】的余额信息", model.UserID);
                                exceptionLogModel.ResultType = 2;
                                exceptionLogModel.Status     = 1;
                            }
                            #endregion
                            #region 添加资金异动流水
                            ZJ_UserBalanceChangeLogModel ulogModel = new ZJ_UserBalanceChangeLogModel();
                            ulogModel.AddOrCutAmount = m;
                            ulogModel.AddOrCutType   = 17;
                            ulogModel.CreateBy       = "系统返现服务";
                            ulogModel.CreateDT       = DateTime.Now;
                            ulogModel.IsAddOrCut     = 1;
                            ulogModel.IsDisplay      = 1;
                            ulogModel.NewAmount      = ub.ConsumeBalance + m;
                            ulogModel.OldAmount      = ub.ConsumeBalance;
                            ulogModel.OrderNo        = model.OrderDetailsID.ToString();
                            ulogModel.Remark         = model.Remark;
                            ulogModel.UserID         = (long)model.UserID;
                            #endregion
                            using (var bt = _database.Db.BeginTransaction())
                            {
                                try
                                {
                                    //用户余额修改
                                    bt.ZJ_UserBalance.UpdateByUserId(UserId: model.UserID, ConsumeBalance: ulogModel.NewAmount, UpdateBy: "系统返现服务", UpdateDT: DateTime.Now);
                                    //添加资金异动记录
                                    bt.ZJ_UserBalanceChangeLog.Insert(ulogModel);
                                    //修改返现表
                                    bt.ZJ_RebateInfo.UpdateByID(ID: model.ID, PaidMoney: pm, PaidDays: pd, LastUpdateBY: "系统服务", LastUpdateTime: DateTime.Now);

                                    bt.Commit();
                                    _logger.Error(typeof(ZJ_RebateService), string.Format("处理返现订单【{0}】的返现成功", model.ID));
                                }
                                catch (Exception ex)
                                {
                                    bt.Rollback();
                                    exceptionLogModel.HandleId   = model.ID.ToString();
                                    exceptionLogModel.Status     = 1;
                                    exceptionLogModel.ResultType = 1;
                                    exceptionLogModel.Message    = string.Format("处理返现订单【{0}】的返现失败,{1},数据库事务回滚", model.ID, ex.Message);
                                    exceptionLogService.Add(exceptionLogModel);
                                    _logger.Error(typeof(ZJ_RebateService), string.Format("处理返现订单【{0}】的返现失败,{1},数据库事务回滚", model.ID, ex.Message));
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        exceptionLogModel.HandleId   = model.ID.ToString();
                        exceptionLogModel.Status     = 1;
                        exceptionLogModel.ResultType = 1;
                        exceptionLogModel.Message    = string.Format("处理返现订单【{0}】的返现失败,{1}", model.ID, ex.Message);
                        exceptionLogService.Add(exceptionLogModel);
                        _logger.Error(typeof(ZJ_RebateService), string.Format("处理返现订单【{0}】的返现失败,{1}", model.ID, ex.Message));
                    }
                }
            }
            else
            {
                exceptionLogModel.CreateDT   = DateTime.Now;
                exceptionLogModel.Message    = "本次没有需要处理的返现";
                exceptionLogModel.ResultType = 2;
                exceptionLogModel.Status     = 1;
            }
        }
示例#23
0
 public async Task Log(ExceptionLogModel model)
 {
     await _unitOfWorkManager.ExecuteSingleAsync <IExceptionLogRepository, bool>(u => u.InsertLogAsync(model));
 }
示例#24
0
        private readonly static long companyAccountParamenterID = Convert.ToInt64(ConfigurationManager.AppSettings["companyAccountParamenterID"]); //公司虚拟帐户系统参数ID
        public void Execute(IJobExecutionContext context)
        {
            ExceptionLogModel exceptionLogModel = new ExceptionLogModel();

            exceptionLogModel.ServiceName = "会员购物订单返现订单生成服务";
            exceptionLogModel.CreateBy    = "系统服务";

            try
            {
                _logger.Error(typeof(BounsJob), "会员购物订单返现订单生成服务开始***********************************");
                //订单信息
                string           sqlOrder     = string.Format(@"select OrderID,OrderStatus,DelayDays,OrderAmount,CostAmount,UserID,RefundFlag from [Order] where OrderStatus=5 and RefundFlag in(0,2)");
                List <dynamic>   sourcesOrder = _database.RunSqlQuery(x => x.ToResultSets(sqlOrder))[0];
                List <OderModel> listOrder    = sourcesOrder.ToEntity <OderModel>();
                //订单跟踪信息
                string         sqlOrderTrackingLog                = string.Format(@"select OrderID,OrderStatus,CreateTime from OrderTrackingLog where OrderID in(select OrderID from [Order] where OrderStatus=5)");
                List <dynamic> sourcesOrderTrackingLog            = _database.RunSqlQuery(x => x.ToResultSets(sqlOrderTrackingLog))[0];
                List <OrderTrackingLogModel> listOrderTrackingLog = sourcesOrderTrackingLog.ToEntity <OrderTrackingLogModel>();

                if (listOrder != null && listOrder.Count > 0)
                {
                    foreach (OderModel orderModel in listOrder)
                    {
                        YH_User currUser = (YH_User)_database.Db.YH_User.FindByUserID(orderModel.UserID);
                        if (currUser != null)
                        {
                            try
                            {
                                #region 订单表状态为已收货OrderStatus=5且退货标示0正常,2已处理(包括成功,失败)RefundFlag in{0,2}

                                if (orderModel.OrderStatus == (int)HKTHMall.Domain.Enum.OrderEnums.OrderStatus.OutTimeReceiving)
                                {
                                    var orderLog = listOrderTrackingLog.Find(orderTrackingLog => orderTrackingLog.OrderID == orderModel.OrderID && orderTrackingLog.OrderStatus == orderModel.OrderStatus);
                                    if (orderLog != null)
                                    {
                                        //DateTime endTime = orderLog.CreateTime.AddDays(earningsDays);
                                        DateTime endTime = orderLog.CreateTime.AddMinutes(earningsDays);
                                        if (endTime < DateTime.Now && orderModel.IsReward == 0)
                                        {
                                            if (orderModel.RefundFlag != 1)
                                            {
                                                BackMessage resultModel = _rebateService.GenerateList(orderModel);


                                                if (resultModel.status == 1)
                                                {
                                                    _logger.Error(typeof(BounsJob), string.Format("处理订单【{0}】的返现订单生成成功", orderModel.OrderID));
                                                }
                                                else
                                                {
                                                    exceptionLogModel.HandleId   = orderModel.OrderID;
                                                    exceptionLogModel.Status     = 1;
                                                    exceptionLogModel.ResultType = 1;
                                                    exceptionLogModel.Message    = string.Format("处理订单【{0}】的会员购物订单返现订单生成失败,", orderModel.OrderID);
                                                    exceptionLogService.Add(exceptionLogModel);
                                                    _logger.Error(typeof(BounsJob), string.Format("处理订单【{0}】的会员购物订单返现订单生成失败,", orderModel.OrderID));
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        exceptionLogModel.HandleId   = orderModel.OrderID;
                                        exceptionLogModel.Status     = 1;
                                        exceptionLogModel.ResultType = 1;
                                        exceptionLogModel.Message    = "订单返现订单生成,订单【" + orderModel.OrderID + "】跟踪信息查询无结果";
                                        exceptionLogService.Add(exceptionLogModel);
                                        _logger.Error(typeof(BounsJob), "订单返现订单生成,订单【" + orderModel.OrderID + "】跟踪信息查询无结果");
                                    }
                                }

                                #endregion
                            }
                            catch (Exception ex)
                            {
                                exceptionLogModel.HandleId   = orderModel.OrderID;
                                exceptionLogModel.Status     = 1;
                                exceptionLogModel.ResultType = 1;
                                exceptionLogModel.Message    = "【会员购物订单返现订单生成算法foreach】" + ex.Message;
                                exceptionLogService.Add(exceptionLogModel);
                                _logger.Error(typeof(BounsJob), "【会员购物订单返现订单生成算法foreach】" + ex.Message);
                            }
                        }
                        else
                        {
                            exceptionLogModel.HandleId   = orderModel.OrderID;
                            exceptionLogModel.Status     = 1;
                            exceptionLogModel.ResultType = 1;
                            exceptionLogModel.Message    = string.Format("处理订单【{0}】的订单返现订单生成失败,获取订单用户【{1}】信息失败", orderModel.OrderID, orderModel.UserID);
                            exceptionLogService.Add(exceptionLogModel);
                            _logger.Error(typeof(BounsJob), string.Format("处理订单【{0}】的订单返现订单生成失败,获取订单用户【{1}】信息失败", orderModel.OrderID, orderModel.UserID));
                        }
                    }
                }
                else
                {
                    _logger.Error(typeof(BounsJob), "【会员购物订单返现订单生成服务】本次未处理任何数据.");
                }
                exceptionLogModel.HandleId   = "0";
                exceptionLogModel.Status     = 2;
                exceptionLogModel.ResultType = 2;
                exceptionLogModel.Message    = "运行正常";
                exceptionLogService.Add(exceptionLogModel);
                _logger.Error(typeof(BounsJob), "会员购物订单返现订单生成服务结束**********************************");
            }
            catch (Exception ex)
            {
                exceptionLogModel.HandleId   = "0";
                exceptionLogModel.Status     = 1;
                exceptionLogModel.ResultType = 1;
                exceptionLogModel.Message    = "【会员购物订单返现订单生成服务运行环节报错】" + ex.Message;
                exceptionLogService.Add(exceptionLogModel);
                _logger.Error(typeof(BounsJob), "【会员购物订单返现订单生成服务运行环节报错】" + ex.Message);
            }
        }