/// <summary> /// 处理新订单 /// </summary> /// <param name="jsonObj"></param> static void handleNewOrder(Newtonsoft.Json.Linq.JObject jsonObj) { var message = jsonObj.Value <string>("message").JsonToObject <JOrder>(); OrderInfo newOrder = new OrderInfo(); newOrder.ThirdOrderId = message.orderId; newOrder.ErpStoreID = message.openId; newOrder.PayType = message.onlinePaid ? PayType.PayOnline : PayType.PayOnDelivery; newOrder.CreateTime = message.createdAt; try { if (message.deliverTime != null) { newOrder.DeliveryTime = message.deliverTime; newOrder.DeliveryTimeTag = DeliveryTimeTag.OnTime; } else { newOrder.DeliveryTimeTag = DeliveryTimeTag.ASAP; } } catch { newOrder.DeliveryTimeTag = DeliveryTimeTag.ASAP; } newOrder.InvoiceTitle = message.invoice; newOrder.HasInvoiced = !string.IsNullOrEmpty(newOrder.InvoiceTitle); newOrder.OriginalPrice = message.originalPrice.GetValueOrDefault(); newOrder.DayOrderNumber = message.daySn.ToString(); newOrder.Remark = message.description; newOrder.PackageFee = message.packageFee.GetValueOrDefault(); newOrder.ShippingFee = message.deliverFee.GetValueOrDefault() - message.vipDeliveryFeeDiscount.GetValueOrDefault(); newOrder.TaxpayerId = message.taxpayerId; newOrder.ReceiptsMoney = message.totalPrice.GetValueOrDefault(); newOrder.IncomeMoney = message.income; newOrder.DeliveryAddr = message.deliveryPoiAddress; newOrder.CustomerName = message.consignee; newOrder.Cellphone = ""; var phoneArr = message.phoneList ?? new string[0]; foreach (var item in phoneArr) { if (newOrder.Cellphone.Length > 0) { newOrder.Cellphone += ","; } newOrder.Cellphone += item.ToString(); } var jsonGroupArr = message.groups ?? new JOrder_Groups[0]; foreach (var jsonGroupItem in jsonGroupArr) { var jsonItemsArr = jsonGroupItem.items ?? new JOrder_Groups_Items[0]; foreach (var foodJson in jsonItemsArr) { var newSpecs = foodJson.newSpecs ?? new JOrder_Groups_Items_NewSpecs[0]; var attributes = foodJson.attributes ?? new JOrder_Groups_Items_Attributes[0]; OrderInfo.Detail detail = new OrderInfo.Detail(); detail.BoxNumber = 0; detail.BoxPrice = 0; detail.FoodName = foodJson.name; detail.ErpSkuId = foodJson.extendCode; foreach (var item in newSpecs) { if (detail.FoodSpec.Length > 0) { detail.FoodSpec += ","; } detail.FoodSpec += item.value; } foreach (var item in attributes) { if (detail.FoodProperty.Length > 0) { detail.FoodProperty += ","; } detail.FoodProperty += item.value; } detail.Price = foodJson.price.GetValueOrDefault(); detail.Quantity = foodJson.quantity; if (jsonGroupItem.type == "normal") { //菜品 } else if (jsonGroupItem.type == "discount") { //赠品 detail.FoodName = $"[赠品]{detail.FoodName}"; } else if (jsonGroupItem.type == "extra") { //赠品 detail.FoodName = $"[其他费用]{detail.FoodName}"; } newOrder.Details.Add(detail); } } if (ResturantFactory.ResturantListener != null) { ResturantFactory.ResturantListener.OnReceiveNewOrder(ResturantPlatformType.Ele, newOrder); } }
public OrderInfo GetOrder(string orderid) { var parameter = new Dictionary <string, object>(); parameter["order_id"] = orderid; var body = Post("order.get", parameter).ToString().JsonToObject <JOrderData>(); var user = body.user ?? new JOrderData_User(); var orderJson = body.order; var order = new OrderInfo(); try { order.ErpStoreID = Convert.ToInt32(body.shop.id); } catch { } order.Cellphone = user.phone; order.CreateTime = Helper.UnixToDateTime(orderJson.create_time); order.CustomerName = user.name; order.DayOrderNumber = orderJson.order_index; order.DeliveryAddr = user.address; if (orderJson.send_immediately != 1) { order.DeliveryTimeTag = DeliveryTimeTag.OnTime; order.DeliveryTime = Helper.UnixToDateTime(orderJson.send_time); } else { order.DeliveryTimeTag = DeliveryTimeTag.ASAP; } order.HasInvoiced = orderJson.need_invoice == 1; if (order.HasInvoiced) { order.TaxpayerId = orderJson.taxer_id; order.InvoiceTitle = orderJson.invoice_title; } order.OriginalPrice = orderJson.total_fee / 100; order.PackageFee = orderJson.package_fee / 100; order.PayType = orderJson.pay_type == 2 ? PayType.PayOnline : PayType.PayOnDelivery; order.ReceiptsMoney = orderJson.user_fee / 100; order.IncomeMoney = orderJson.shop_fee / 100; order.Remark = orderJson.remark; order.ShippingFee = orderJson.send_fee / 100; order.ThirdOrderId = orderJson.order_id; var productJsonArr = body.products; for (int j = 0; productJsonArr != null && j < productJsonArr.Length; j++) { for (int i = 0; i < productJsonArr[j].Length; i++) { var productJsonItem = productJsonArr[j][i]; var detail = new OrderInfo.Detail(); order.Details.Add(detail); detail.BoxNumber = productJsonItem.package_amount; detail.BoxPrice = productJsonItem.package_price / 100; detail.ErpSkuId = productJsonItem.other_dish_id; detail.FoodName = productJsonItem.product_name; var product_features_arr = productJsonItem.product_features; detail.FoodProperty = ""; if (product_features_arr != null) { foreach (var feature in product_features_arr) { if (detail.FoodProperty.Length > 0) { detail.FoodProperty += ";"; } detail.FoodProperty += feature.option; } } var product_attr_arr = productJsonItem.product_attr; detail.FoodSpec = ""; if (product_attr_arr != null) { foreach (var attr in product_attr_arr) { if (detail.FoodSpec.Length > 0) { detail.FoodSpec += ";"; } detail.FoodSpec += attr.option; } } detail.Price = productJsonItem.product_price / 100; detail.Quantity = productJsonItem.product_amount; } } //优惠信息 try { var discount = body.discount; if (discount != null) { foreach (var disItem in discount) { OrderInfo.DiscountInfo info = new OrderInfo.DiscountInfo(); info.PlatformCharge = disItem.baidu_rate / 100; info.PoiCharge = disItem.shop_rate / 100; info.ReduceFee = disItem.fee / 100; info.Remark = disItem.desc; order.DiscountInfos.Add(info); } } } catch { } return(order); }
static void handleContent(string orderContent, int erpStoreID) { var orderJSONObj = orderContent.JsonToObject <JCreateOrder>(); OrderInfo orderInfo = new OrderInfo(); int ctime = orderJSONObj.ctime;//订单创建时间 orderInfo.CreateTime = Helper.UnixToDateTime(ctime); orderInfo.DayOrderNumber = orderJSONObj.daySeq; orderInfo.Remark = orderJSONObj.caution; int deliverytime = orderJSONObj.deliveryTime.GetValueOrDefault(); if (deliverytime > 0) { orderInfo.DeliveryTime = Helper.UnixToDateTime(deliverytime); orderInfo.DeliveryTimeTag = DeliveryTimeTag.OnTime; } else { orderInfo.DeliveryTimeTag = DeliveryTimeTag.ASAP; } orderInfo.ErpStoreID = erpStoreID; orderInfo.HasInvoiced = orderJSONObj.hasInvoiced == 1; if (orderInfo.HasInvoiced) { orderInfo.InvoiceTitle = orderJSONObj.invoiceTitle; orderInfo.TaxpayerId = orderJSONObj.taxpayerId; } orderInfo.ThirdOrderId = orderJSONObj.orderId; orderInfo.OriginalPrice = orderJSONObj.originalPrice.GetValueOrDefault(); orderInfo.PayType = (PayType)orderJSONObj.payType; orderInfo.DeliveryAddr = orderJSONObj.recipientAddress; orderInfo.CustomerName = orderJSONObj.recipientName; orderInfo.Cellphone = orderJSONObj.recipientPhone; orderInfo.ShippingFee = orderJSONObj.shippingFee.GetValueOrDefault(); orderInfo.ReceiptsMoney = orderJSONObj.total.GetValueOrDefault(); var poiReceiveDetail = orderJSONObj.poiReceiveDetail.JsonToObject <JCreateOrder_PoiReceiveDetail>(); orderInfo.IncomeMoney = poiReceiveDetail.wmPoiReceiveCent.GetValueOrDefault() / 100.0; var detail = orderJSONObj.detail.JsonToObject <JCreateOrder_Detail[]>(); for (int i = 0; detail != null && i < detail.Length; i++) { var detailJson = detail[i]; var newDetail = new OrderInfo.Detail(); newDetail.BoxNumber = detailJson.box_num; newDetail.BoxPrice = detailJson.box_price; newDetail.ErpSkuId = detailJson.sku_id; newDetail.FoodDiscount = detailJson.food_discount; newDetail.FoodName = detailJson.food_name; newDetail.FoodProperty = detailJson.food_property; newDetail.Price = detailJson.price; newDetail.Quantity = detailJson.quantity; newDetail.Unit = detailJson.unit; newDetail.FoodSpec = detailJson.spec; orderInfo.Details.Add(newDetail); } orderInfo.PackageFee = (from b in orderInfo.Details select b.BoxNumber * b.BoxPrice).Sum(); try { foreach (var item in poiReceiveDetail.actOrderChargeByPoi) { orderInfo.Comments.Add(item.comment); } } catch { } try { var extras = orderJSONObj.extras.JsonToObject <JCreateOrder_Extra[]>(); for (int i = 0; extras != null && i < extras.Length; i++) { var extrasJson = extras[i]; if (extrasJson.type == 0) { continue; } var discount = new OrderInfo.DiscountInfo(); discount.PlatformCharge = extrasJson.mt_charge; discount.PoiCharge = extrasJson.poi_charge; discount.ReduceFee = extrasJson.reduce_fee; discount.Remark = extrasJson.remark; orderInfo.DiscountInfos.Add(discount); } } catch { } if (ResturantFactory.ResturantListener != null) { new Thread(() => { try { using (Log log = new Log("美团.CreateOrder", false)) { log.Log("调用ResturantFactory.ResturantListener.OnReceiveNewOrder"); } ResturantFactory.ResturantListener.OnReceiveNewOrder(ResturantPlatformType.Meituan, orderInfo); } catch (Exception ex) { using (Log log = new Log("美团.CreateOrder", false)) { log.Log("调用ResturantFactory.ResturantListener.OnReceiveNewOrder失败,err:" + ex.ToString()); } } }).Start(); } }