Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }