/// <summary> ///抓取商城订单 /// </summary> /// <param name="orderInfoList"></param> public void OrderSync(IList <OrderInfo> orderInfoList, string siId, out List <OrderNotification> orderNotifications) { if (orderInfoList.Count > 0) { var orderNotificationResults = new List <OrderNotification>(); foreach (var itemOrderInfo in orderInfoList) { var order_sn = string.Empty;//OMS系统这边对应的SerialNumber //抓取商城订单操作事务 using (var tran = _omsAccessor.OMSContext.Database.BeginTransaction()) { if (_orderService.GetOrderByPSerialNumber(itemOrderInfo.order_id) == null) { var insertErrorCount = 0; var errInfo = ""; try { //订单插入 Order newOrder = new Order { SerialNumber = _commonService.GetOrderSerialNumber("SC"), UserName = itemOrderInfo.user_name, PayState = PayState.Success, SumPrice = Convert.ToDecimal(itemOrderInfo.order_sum_price), PayPrice = Convert.ToDecimal(itemOrderInfo.order_fact_price), PayDate = DateTime.Now, CustomerName = itemOrderInfo.consignee_info.fullname, CustomerPhone = itemOrderInfo.consignee_info.mobile, AddressDetail = itemOrderInfo.consignee_info.province.Trim() + " " + itemOrderInfo.consignee_info.city.Trim() + " " + itemOrderInfo.consignee_info.county.Trim() + " " + itemOrderInfo.consignee_info.full_address.Trim(), CreatedBy = 0, //代表系统本身 CustomerMark = itemOrderInfo.order_remark, //订单备注 ShopId = 97, //97为网上商城在新系统数据库Dictionary表中的Id PSerialNumber = itemOrderInfo.order_id.Trim(), IsNeedPaperBag = itemOrderInfo.is_need_invoice, }; //机场店地址 if (itemOrderInfo.consignee_info.full_address.Contains("深圳宝安机场到达出口直行150米大厅右侧(星巴克对面)")) { newOrder.AddressDetail = "广东省" + " " + "深圳市" + " " + "宝安区" + " " + itemOrderInfo.consignee_info.full_address.Trim(); } //匹配仓库 newOrder.WarehouseId = _orderService.MatchWarehouseId(itemOrderInfo.product_info_list, newOrder.AddressDetail); //订单类型 string[] XHString = { "1", "2", "3", "10" }; if (((IList)XHString).Contains(itemOrderInfo.order_type)) { //商城现货 newOrder.Type = OrderType.B2C_XH; } else if (itemOrderInfo.order_type == "4") { //商城跨境 newOrder.Type = OrderType.B2C_KJ; } else if (itemOrderInfo.order_type == "9") { //合作商 newOrder.Type = OrderType.B2C_HZS; } if (itemOrderInfo.order_state == "WAIT_SELLER_STOCK_OUT") { newOrder.State = OrderState.Paid; } else if (itemOrderInfo.order_state == "PAY_REVOKE") { newOrder.State = OrderState.Cancel; } //订单物流信息 newOrder.DeliveryTypeId = _deliveriesService.GetDeliveryByShopCode(itemOrderInfo.delivery_name.Trim()) == null ?0 : _deliveriesService.GetDeliveryByShopCode(itemOrderInfo.delivery_name.Trim()).Id; //客户自提修改快递方式 if (itemOrderInfo.seller_remark.Contains("自提码")) { newOrder.DeliveryTypeId = _deliveriesService.ConfirmDeliveryIsExist("KHZT") == null ? 0 : _deliveriesService.ConfirmDeliveryIsExist("KHZT").Id; } if (newOrder.DeliveryTypeId == 0) { _logService.InsertSystemLog(LogLevelEnum.AddOrderErr, "订单" + itemOrderInfo.order_id + "快递方式:快递方式不匹配" + itemOrderInfo.delivery_name); tran.Commit(); insertErrorCount++; continue; } //订单发票类型 if (!itemOrderInfo.is_need_invoice) { newOrder.InvoiceType = InvoiceType.NoNeedInvoice; } else { switch (itemOrderInfo.order_invoice_info.invoice_title_type.Trim()) { case "1": newOrder.InvoiceType = InvoiceType.PersonalInvoice; break; case "2": newOrder.InvoiceType = InvoiceType.CompanyInvoice; break; case "3": newOrder.InvoiceType = InvoiceType.SpecialInvoice; break; } } //订单支付类型 var payType = _omsAccessor.Get <Dictionary>().Where(x => x.Isvalid && x.Type == DictionaryType.PayType && x.Value.Trim().Contains("网银在线")).FirstOrDefault(); newOrder.PayType = payType == null ? 119 : payType.Id; //下单时间 if (itemOrderInfo.order_generate_date.Trim() != "") { newOrder.CreatedTime = Convert.ToDateTime(itemOrderInfo.order_generate_date.Trim()); } //支付时间 if (itemOrderInfo.order_paydate.Trim() != "") { newOrder.PayDate = Convert.ToDateTime(itemOrderInfo.order_paydate.Trim()); } //商城代金券优惠 newOrder.ProductCoupon = itemOrderInfo.product_coupon_info; newOrder.AdminMark = itemOrderInfo.seller_remark; var zmjfPrice = itemOrderInfo.coupon_detail_list.Where(r => r.coupon_type.Equals("IntegralValue_New")).FirstOrDefault(); if (zmjfPrice != null) { newOrder.ZMIntegralValuePrice = Convert.ToDecimal(zmjfPrice.coupon_price); } //订单所使用的中民券 var zmCoupon = itemOrderInfo.coupon_detail_list.Where(r => r.coupon_type.Equals("ZMCoupon")).FirstOrDefault(); if (zmCoupon != null) { newOrder.ZMCoupon = float.Parse(zmCoupon.coupon_price); } else { newOrder.ZMCoupon = 0; } //订单所使用的中民红酒券 var zmWineCoupon = itemOrderInfo.coupon_detail_list.Where(r => r.coupon_type.Equals("WineCoupon")).FirstOrDefault(); if (zmWineCoupon != null) { newOrder.ZMWineCoupon = Math.Round(float.Parse(zmWineCoupon.coupon_price), 2); } else { newOrder.ZMWineCoupon = 0; } //订单所使用的的红酒网红酒券 var wineWorldCoupon = itemOrderInfo.coupon_detail_list.Where(r => r.coupon_type.Equals("WineWorldCoupon")).FirstOrDefault(); if (wineWorldCoupon != null) { newOrder.WineWorldCoupon = Math.Round(float.Parse(wineWorldCoupon.coupon_price), 2); } else { newOrder.WineWorldCoupon = 0; } //总价要加上中民红酒券以及红酒网红酒券 newOrder.SumPrice += (decimal)newOrder.ZMWineCoupon; newOrder.SumPrice += (decimal)newOrder.WineWorldCoupon; _omsAccessor.Insert(newOrder); _omsAccessor.SaveChanges(); #region 新增订单日志 _logService.InsertOrderLog(newOrder.Id, "新增订单", newOrder.State, newOrder.PayState, "商城接口新增订单"); #endregion order_sn = newOrder.SerialNumber; //订单商品插入 if (itemOrderInfo.product_info_list.Count > 0) { foreach (var itemProduct in itemOrderInfo.product_info_list) { if (string.IsNullOrEmpty(itemProduct.goods_sn)) { errInfo += "订单" + itemOrderInfo.order_id + "商品插入失败:商品" + itemProduct.goods_name + ",编码为空或NULL!"; insertErrorCount++; break; } SaleProduct saleProduct = _productService.GetSaleProductByGoodSn(itemProduct.goods_sn); if (saleProduct != null && saleProduct.ProductId != 0 && saleProduct.Stock >= Convert.ToInt32(itemProduct.item_total.Trim())) { if (saleProduct.AvailableStock < Convert.ToInt32(itemProduct.item_total.Trim())) { errInfo += "订单" + itemOrderInfo.order_id + "商品插入失败:商品库存不足" + itemProduct.goods_name + ",商品编码为" + itemProduct.goods_sn; insertErrorCount++; break; } OrderProduct newOrderProduct = new OrderProduct { OrderId = newOrder.Id, SaleProductId = saleProduct.Id, Quantity = Convert.ToInt32(itemProduct.item_total.Trim()), OrginPrice = _productService.GetSaleProductPriceById(saleProduct.Id, 103).Price, Price = Convert.ToDecimal(itemProduct.sale_price.Trim()), SumPrice = Convert.ToInt32(itemProduct.item_total.Trim()) * Convert.ToDecimal(itemProduct.sale_price.Trim()), CreatedBy = 0 }; //销售商品总库存判断及锁定 saleProduct.LockStock += Convert.ToInt32(itemProduct.item_total.Trim()); saleProduct.AvailableStock = saleProduct.Stock - saleProduct.LockStock; _omsAccessor.Update(saleProduct); _omsAccessor.Insert(newOrderProduct); _omsAccessor.SaveChanges(); //新增锁定库存记录 _productService.CreateSaleProductLockedTrackAndWareHouseStock(newOrder.Id, saleProduct.Id, newOrder.WarehouseId, newOrderProduct.Quantity, newOrderProduct.Id); } else { errInfo += "订单" + itemOrderInfo.order_id + "商品插入失败:不存在商品" + itemProduct.goods_name + ",商品编码为" + itemProduct.goods_sn; insertErrorCount++; break; } } } if (insertErrorCount == 0) { //插入发票信息 if (newOrder.InvoiceType != InvoiceType.NoNeedInvoice) { InvoiceInfo newOrderInvoiceInfo = new InvoiceInfo { OrderId = newOrder.Id, CustomerEmail = string.IsNullOrEmpty(itemOrderInfo.order_invoice_info.InvoiceEmail)?"": itemOrderInfo.order_invoice_info.InvoiceEmail, Title = itemOrderInfo.order_invoice_info.invoice_title_info, TaxpayerID = itemOrderInfo.order_invoice_info.taxpayer_id, RegisterAddress = itemOrderInfo.order_invoice_info.register_address, RegisterTel = itemOrderInfo.order_invoice_info.register_tel, BankOfDeposit = itemOrderInfo.order_invoice_info.bank_of_deposit, BankAccount = itemOrderInfo.order_invoice_info.bank_account, CreatedBy = 0, }; _omsAccessor.Insert(newOrderInvoiceInfo); _omsAccessor.SaveChanges(); } //支付信息插入 OrderPayPrice newOrderPayPrice = new OrderPayPrice { OrderId = newOrder.Id, IsPay = true, Price = Convert.ToDecimal(itemOrderInfo.order_fact_price.Trim()), CreatedBy = 0 }; if (itemOrderInfo.order_paydate.Trim() == "") { newOrderPayPrice.CreatedTime = DateTime.Now; } else { newOrderPayPrice.CreatedTime = Convert.ToDateTime(itemOrderInfo.order_paydate.Trim()); } //订单支付类型 newOrderPayPrice.PayType = payType == null ? 119 : payType.Id; _omsAccessor.Insert(newOrderPayPrice); _omsAccessor.SaveChanges(); } } catch (Exception ex) { insertErrorCount++; errInfo += "订单" + itemOrderInfo.order_id + "插入错误" + ex.Message; } if (insertErrorCount > 0) { tran.Rollback(); //最后插入异常 _logService.InsertSystemLog(LogLevelEnum.AddOrderErr, errInfo); } else { tran.Commit(); //获取成功下单的订单 var orderNatification = new OrderNotification { order_id = itemOrderInfo.order_id, order_sn = order_sn, operation_result = "1", sd_id = siId }; orderNotificationResults.Add(orderNatification); } } } } orderNotifications = orderNotificationResults; } else { orderNotifications = null; } }
public bool BookKeeping(OrderModel orderModel, out string msg) { var order = _omsAccessor.Get <Order>().Where(p => p.Id == orderModel.Id).Include(p => p.OrderPayPrice).FirstOrDefault(); if (order == null) { msg = "订单信息错误,请核实!"; return(false); } if (order.PayPrice == 0) { if (!orderModel.IsPayOrRefund) { msg = "当前订单未支付,不支持退款!"; return(false); } else { if (orderModel.PayPrice > order.SumPrice) { msg = "支付金额大于订单总金额,操作失败!"; return(false); } } order.PayType = orderModel.PayType; order.PayMentType = orderModel.PayMentType; order.PayPrice = orderModel.PayPrice; OrderPayPrice orderPayPrice = new OrderPayPrice { OrderId = order.Id, IsPay = orderModel.IsPayOrRefund, PayType = orderModel.PayType, PayMentType = orderModel.PayMentType, Price = orderModel.PayPrice, Mark = orderModel.AdminMark, }; order.OrderPayPrice.Add(orderPayPrice); } else { if (orderModel.IsPayOrRefund) {//付款 if (orderModel.PayPrice + order.PayPrice > order.SumPrice) { msg = "支付金额大于订单总金额,操作失败!"; return(false); } order.PayPrice += orderModel.PayPrice; } else { //退款 if (orderModel.PayPrice > order.PayPrice) { msg = "退款金额大于已支付金额,操作失败"; return(false); } order.PayPrice -= orderModel.PayPrice; } OrderPayPrice orderPayPrice = new OrderPayPrice { OrderId = order.Id, IsPay = orderModel.IsPayOrRefund, PayType = orderModel.PayType, PayMentType = orderModel.PayMentType, Price = orderModel.PayPrice, Mark = orderModel.AdminMark, }; order.OrderPayPrice.Add(orderPayPrice); } _omsAccessor.Update(order); _omsAccessor.SaveChanges(); msg = "操作成功"; return(true); }
/// <summary> /// 插入订单到OMS /// </summary> /// <param name="response"></param> /// <returns></returns> public string InsertOrderToOMS(string response) { dynamic data = JsonConvert.DeserializeObject(response); if (data.Data == null) { return("同步完成,没有获取到招行订单!"); } //判断是否已有平台单号 foreach (var item in data.Data) { using (var trans = _omsAccessor.OMSContext.Database.BeginTransaction()) { string pNum = (string)item.orderNo; var nextLoop = false; try { if (Environment.StackTrace.Contains("ScheduleTaskFuncService.SyncCMBOrderToOMS")) { //如果当前调用为定时任务调用,则设置默认用户为admin _workContext.CurrentUser = _omsAccessor.Get <User>().Where(r => r.UserName == "admin").FirstOrDefault(); } var isExistOrder = _omsAccessor.Get <Order>().Where(r => r.PSerialNumber.Contains(pNum)).FirstOrDefault(); if (isExistOrder != null) { continue; } #region Order 订单 Order order = new Order(); //订单主体 order.SerialNumber = _commonService.GetOrderSerialNumber(); order.PSerialNumber = (string)item.orderNo; order.Type = OrderType.B2C_XH; order.ShopId = int.Parse(_configuration.GetSection("Zhaohang")["shopId"]);//订单所属店铺ID,已写在配置文件中 order.State = OrderState.Paid; order.WriteBackState = WriteBackState.NoWrite; //支付信息 order.PayType = int.Parse(_configuration.GetSection("Zhaohang")["payType"]); //统一结算,已写在配置文件中 order.PayMentType = 0; //回款方式B2B所属部分 order.PayState = PayState.Success; string d = (string)item.payTime; order.PayDate = DateTime.ParseExact((string)item.payTime, "yyyyMMddHHmmss", null); order.SumPrice = 0; //后面更新 order.PayPrice = (decimal)item.invoiceAmt; //发票金额,即支付金额 订单总优惠金额【店铺维度】 promotionAmt= soAmt + expressFeeAmt - invoiceAmt //其他控制部分 order.IsLackStock = false; order.LockMan = 0; order.LockStock = false; order.IsLackStock = false; order.Isvalid = true; order.IsCopied = false; order.AppendType = 0; //合并/拆分订单 order.IsNeedPaperBag = false; //是否需要纸袋?未找到判断标志 //物流信息 order.DeliveryTypeId = int.Parse(_configuration.GetSection("Zhaohang")["defaultDelivery"]);//设置默认物流(顺丰),已写在配置文件中 //order.DeliveryNumber //order.DeliveryDate //客户信息部分 order.UserName = (string)item.receiveContact; order.CustomerName = (string)item.receiveContact; order.CustomerPhone = (string)item.receiveCellPhone; order.AddressDetail = _commonService.MatchProvince((string)item.receiveProvince) + " " + (string)item.receiveCity + " " + (string)item.receiveZone + " " + (string)item.receiveStreet + " " + (string)item.receiveAddress; order.DistrictId = 0; order.CustomerMark = (string)item.orderMemo; //order.AdminMark = decimal.Parse((string)item.promotionAmt) == 0 ? "" : "套装总价:" + (decimal)item.soAmt + " 订单总优惠金额:" + (string)item.promotionAmt;//填写优惠信息 order.AdminMark = "箱内放入售后服务卡,箱子上贴上招行贴纸,并使用招行胶带封箱。"; //填写优惠信息 order.WarehouseId = _orderService.MatchFirstWareHouseId(order.AddressDetail); //匹配仓库 //order.FinanceMark //order.ToWarehouseMessage 自行填写 //优惠信息部分 order.ZMCoupon = 0; order.ZMWineCoupon = 0; order.WineWorldCoupon = 0; //order.ProductCoupon //order.ZMIntegralValuePrice //order.OriginalOrderId //order.SalesManId //发票部分 order.InvoiceType = InvoiceType.NoNeedInvoice; //其他 order.PriceTypeId = 103;//或者0 order.CustomerId = 0; order.ApprovalProcessId = 0; order.InvoiceMode = 0;//开票方式 _omsAccessor.Insert <Order>(order); _omsAccessor.SaveChanges(); #region 订单日志 _logService.InsertOrderLog(order.Id, "新增订单", order.State, order.PayState, "招行接口新增订单"); #endregion #endregion #region PayInfo 支付信息 OrderPayPrice orderPayPrice = new OrderPayPrice(); orderPayPrice.OrderId = order.Id; orderPayPrice.IsPay = true; orderPayPrice.PayType = int.Parse(_configuration.GetSection("Zhaohang")["payType"]); orderPayPrice.PayMentType = 0; orderPayPrice.Price = order.PayPrice; _omsAccessor.Insert <OrderPayPrice>(orderPayPrice); #endregion #region InvoiceInfo 发票信息 if (int.Parse((string)item.invoiceType) != 9) { //增票部分 InvoiceInfo invoiceInfo = new InvoiceInfo(); invoiceInfo.OrderId = order.Id; invoiceInfo.CustomerEmail = (string)item.invoiceReceiveEmail; invoiceInfo.Title = (string)item.invoiceTitle; if (item.vatInvoiceInfo != null) { invoiceInfo.TaxpayerID = (string)item.vatInvoiceInfo.taxpayerIdent;//纳税人识别码 invoiceInfo.RegisterAddress = (string)item.vatInvoiceInfo.registeredAddress; invoiceInfo.RegisterTel = (string)item.vatInvoiceInfo.registeredPhone; invoiceInfo.BankAccount = (string)item.vatInvoiceInfo.bankAccount; //银行账号 invoiceInfo.BankOfDeposit = (string)item.vatInvoiceInfo.depositBank; //银行支行信息 order.InvoiceType = InvoiceType.SpecialInvoice; _omsAccessor.Update <Order>(order); } //invoiceInfo.InvoiceNo//发票编码 //invoiceInfo.BankCode 默认不填 _omsAccessor.Insert <InvoiceInfo>(invoiceInfo); } _omsAccessor.SaveChanges(); #endregion #region OrderProduct 订单商品 var cmbOrderPros = new List <OrderProduct>();//订单列表中的商品 foreach (var pro in item.shoppingList) { string pCode = (string)pro.sellerSku; var salePro = _omsAccessor.Get <SaleProduct>().Join(_omsAccessor.Get <Product>().Where(p => p.Code == pCode), o => o.ProductId, p => p.Id, (o, p) => new { o, p }) .Select(r => r.o).FirstOrDefault(); var suitPro = _omsAccessor.Get <SuitProducts>().Where(r => r.Code == pCode) .Join(_omsAccessor.Get <SuitProductsDetail>(), s => s.Id, sd => sd.SuitProductsId, (s, sd) => new { s, sd }).Select(r => r.sd) .OrderByDescending(r => r.Quantity).ToList(); if (salePro != null) { //单款商品情况 cmbOrderPros.Add(new OrderProduct() { SaleProductId = salePro.Id, Quantity = (int)pro.quantity, OrginPrice = _omsAccessor.Get <SaleProductPrice>().Where(r => r.SaleProductId == salePro.Id).FirstOrDefault().Price, SumPrice = (decimal)pro.salePrice }); } else if (suitPro != null && suitPro.Count > 0) { //套装商品情况 //套账商品中的单个商品价格及单款商品总价 var p = _omsAccessor.Get <SaleProductPrice>() .Join(suitPro, s => s.SaleProductId, sp => sp.SaleProductId, (s, sp) => new { s, sp }) .Select(r => new { r.s.SaleProductId, r.s.Price, r.sp.Quantity, SuitProSumPrice = r.s.Price * r.sp.Quantity }); var totalPrice = p.Sum(r => r.SuitProSumPrice); //套装单款商品总价格及占比 var spp = p.Select(r => new { r.SaleProductId, r.SuitProSumPrice, Proportion = r.SuitProSumPrice / totalPrice }); //套装实付总价 var thisSuitProSumPrice = decimal.Parse((string)pro.salePrice); foreach (var sItem in suitPro) { cmbOrderPros.Add(new OrderProduct() { SaleProductId = sItem.SaleProductId, Quantity = sItem.Quantity * (int)pro.quantity, OrginPrice = _omsAccessor.Get <SaleProductPrice>().Where(r => r.SaleProductId == sItem.SaleProductId).FirstOrDefault().Price, SumPrice = spp.Where(r => r.SaleProductId == sItem.SaleProductId).FirstOrDefault().Proportion *thisSuitProSumPrice }); } } else { //找不到商品,不添加订单 trans.Rollback(); _logService.InsertedCMBOrderLog(pNum, "无法在OMS找到商品编码为:" + pCode + "的商品"); nextLoop = true; break; } } var finalProList = cmbOrderPros.GroupBy(r => r.SaleProductId).Select(r => new OrderProduct { SaleProductId = r.FirstOrDefault().SaleProductId, OrginPrice = r.FirstOrDefault().OrginPrice, Quantity = r.Sum(re => re.Quantity), SumPrice = r.Sum(re => re.SumPrice) }).OrderByDescending(r => r.Quantity); var i = 0;//用于判断当前是第几个商品 var t = finalProList.Count(); decimal countSumPrice = 0; decimal orderSumPrice = finalProList.Sum(r => r.SumPrice);//按照订单支付金额计算,未按订单金额算(订单金额 = 支付金额 + 快递费) foreach (var fItem in finalProList) { i++; OrderProduct orderProduct = new OrderProduct(); orderProduct.OrderId = order.Id; orderProduct.SaleProductId = fItem.SaleProductId; orderProduct.OrginPrice = fItem.OrginPrice; if (_commonService.GetNewDecimalNotRounding(fItem.SumPrice % fItem.Quantity) == 0 && fItem.SumPrice != 0) { //除尽 orderProduct.Quantity = fItem.Quantity; orderProduct.Price = _commonService.GetNewDecimalNotRounding(fItem.SumPrice / fItem.Quantity); orderProduct.SumPrice = fItem.SumPrice; countSumPrice += fItem.SumPrice; } else { //除不尽 if (i == t && fItem.Quantity > 1) { //最后一款商品,拆分 // 最后总价 = orderSumPrice - countSumPrice; var zuihouZongjia = orderSumPrice - countSumPrice; orderProduct.Quantity = fItem.Quantity - 1; orderProduct.Price = _commonService.GetNewDecimalNotRounding(fItem.SumPrice / fItem.Quantity); orderProduct.SumPrice = orderProduct.Quantity * orderProduct.Price; countSumPrice += orderProduct.SumPrice; //最后一款商品 OrderProduct lastPro = new OrderProduct(); lastPro.OrderId = order.Id; lastPro.SaleProductId = fItem.SaleProductId; lastPro.OrginPrice = fItem.OrginPrice; lastPro.Quantity = 1; lastPro.Price = _commonService.GetNewDecimalNotRounding(orderSumPrice - countSumPrice); lastPro.SumPrice = orderSumPrice - orderProduct.SumPrice; _omsAccessor.Insert <OrderProduct>(lastPro); } else if (i == t && fItem.Quantity == 1) { var zuihouZongjia = orderSumPrice - countSumPrice; orderProduct.Quantity = fItem.Quantity; orderProduct.Price = fItem.SumPrice; orderProduct.SumPrice = fItem.SumPrice; } else { var danjia = fItem.SumPrice / fItem.Quantity; orderProduct.Quantity = fItem.Quantity; orderProduct.Price = _commonService.GetNewDecimalNotRounding(danjia); orderProduct.SumPrice = orderProduct.Price * orderProduct.Quantity; countSumPrice += orderProduct.SumPrice; } } //锁定销售商品 SaleProduct saleProduct = _omsAccessor.Get <SaleProduct>().Where(r => r.Id == fItem.SaleProductId).FirstOrDefault(); saleProduct.LockStock += fItem.Quantity; saleProduct.AvailableStock = saleProduct.Stock - saleProduct.LockStock; if (saleProduct.AvailableStock < 0) { trans.Rollback(); _logService.InsertedCMBOrderLog(pNum, "商品库存不足,无法添加添加订单"); nextLoop = true; break; } _omsAccessor.Update <SaleProduct>(saleProduct); _omsAccessor.Insert <OrderProduct>(orderProduct); _omsAccessor.SaveChanges(); } #endregion if (!nextLoop) { order.SumPrice = _omsAccessor.Get <OrderProduct>().Where(r => r.OrderId == order.Id).Sum(r => r.SumPrice); _omsAccessor.Update <Order>(order); _omsAccessor.SaveChanges(); trans.Commit(); //解除缺货 _productService.UnLockLackStockOrder(new List <int>() { order.Id }); _logService.InsertedCMBOrderLog(pNum, "订单同步成功!"); } } catch (Exception e) { trans.Rollback(); _omsAccessor.Insert <CMBOrderLog>(new CMBOrderLog() { OrderNum = pNum, Message = e.Message }); _omsAccessor.SaveChanges(); _logService.Error("<InsertOrderToOMS> 信息:" + e.Message); continue; } } } return(""); }