/// <summary> /// 生成返现实体 /// </summary> /// <param name="totalMoney"></param> /// <param name="model"></param> /// <param name="dmodel"></param> /// <returns></returns> private ZJ_RebateInfo FormartZJ_RebateInfo(decimal totalMoney, OderModel model, OrderDetails dmodel) { ZJ_RebateInfo zrModel = new ZJ_RebateInfo(); zrModel.ID = MemCacheFactory.GetCurrentMemCache().Increment("commonId"); zrModel.CreateBY = "系统服务"; zrModel.CreateTime = DateTime.Now; zrModel.OrderDetailsID = dmodel.OrderDetailsID; zrModel.OrderID = dmodel.OrderID; zrModel.ProductID = dmodel.ProductId; zrModel.SKUID = dmodel.SKU_ProducId; zrModel.StartTime = DateTime.Now; zrModel.Status = 1; if (isFixedDays == 1) { zrModel.TotalDay = backDays; zrModel.TotalMoney = totalMoney * backPoint; } else { zrModel.TotalDay = dmodel.RetateDays != null ? (int)dmodel.RetateDays : backDays; zrModel.TotalMoney = totalMoney * (decimal)(dmodel.ReateRedio != null ? dmodel.ReateRedio : backPoint); } zrModel.UserID = model.UserID; return(zrModel); }
/// <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); }
/// <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); }