Exemple #1
0
        /// <summary>
        /// 获取订单详情
        /// </summary>
        /// <param name="groupId"></param>
        /// <returns></returns>
        public ResponseData <CoffeeOrder> GetOrderDetail(string groupId)
        {
            var result = new ResponseData <CoffeeOrder>()
            {
                Code    = "1",
                Data    = null,
                Message = "",
                Success = false
            };

            if (groupId == null || groupId == "")
            {
                result.Message = "参数不能为空";
                return(result);
            }
            var context   = new CoffeeOrderContext();
            var ord       = context.PUB_ORDER.Where(o => o.ORDER_ID == groupId).FirstOrDefault();
            var ordDetail = context.BM_COFFEE_DETAIL.Where(o => o.ORDER_ID == groupId).ToList();

            if (ord == null || ordDetail == null || ordDetail.Count <= 0)
            {
                result.Message = "未找到订单信息";
                return(result);
            }
            result.Data = new CoffeeOrder()
            {
                Amount      = (decimal)ord.ORDER_AMOUNT,
                CreateIP    = ord.CREATOR_IP,
                Fee         = (decimal)ord.DELIVERY_FEE,
                MemberId    = ord.MEMBER_ID,
                MemberName  = ord.MEMBER_NAME,
                OrderETMID  = ord.ORDER_ETM,
                OrderFrom   = ord.ORDER_FROM,
                TotalAmount = ord.TOTAL_AMOUNT,
                Quantity    = (int)ordDetail.Sum(o => o.QUANTITY),
                DrinkList   = ordDetail.GroupBy(o => o.COFFEE_TYPE).Select(o => (new Drink()
                {
                    Name = o.Min(item => item.COFFEE_TYPENAME),
                    Value = o.Key,
                    Number = o.Sum(item => (int)item.QUANTITY),
                    Price = o.Min(item => (int)item.PRICE),
                    Materials = null
                })).ToList()
            };
            result.Success = true;
            result.Code    = "0";
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 完成回调
        /// </summary>
        /// <param name="OrderID"></param>
        /// <returns></returns>
        public ResponseData <string> FinishCallBack(string OrderID)
        {
            var context = new CoffeeOrderContext();
            var ord     = context.PUB_ORDER.Where(o => o.ORDER_ID == OrderID && o.ORDER_TYPE == 24).FirstOrDefault();

            Logger.Write(Log.Log_Type.Info, string.Format("开始更新订单状态--  订单号:{0},{1},{2}。", OrderID, ord.MEMBER_ID, ord.PROVIDER_ID));
            OrderManager manager = new OrderManager();

            manager.Finish(OrderID, ord.MEMBER_ID, ord.PROVIDER_ID);
            var result = new ResponseData <string>()
            {
                Code    = "1",
                Data    = "成功",
                Message = "成功",
                Success = true
            };

            return(result);
        }
Exemple #3
0
        /// <summary>
        /// 制作饮品回调
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public ResponseData <string> MakeCallBack(MakeDrinkReq req)
        {
            var result = new ResponseData <string> {
                Code    = "0",
                Data    = "成功",
                Message = "成功",
                Success = true
            };
            var context   = new CoffeeOrderContext();
            var materials = JsonConvert.SerializeObject(req.Drink.Materials);
            var ordDetail = context.BM_COFFEE_DETAIL.Where(o => o.ORDER_ID == req.OrderId && o.COFFEE_TYPE == req.Drink.Value && o.MATERIALS == materials).FirstOrDefault();

            ordDetail.ISSUED += req.Drink.Number;
            context.SaveChanges();
            //判断是否已出完咖啡
            var ordDetailList = context.BM_COFFEE_DETAIL.Where(o => o.ORDER_ID == req.OrderId).ToList();

            if (ordDetailList.Sum(o => o.QUANTITY) == ordDetailList.Sum(o => o.ISSUED))
            {
                FinishCallBack(req.OrderId);
            }
            return(result);
        }
Exemple #4
0
        /// <summary>
        /// 支付回调
        /// </summary>
        /// <param name="OrderID"></param>
        /// <returns></returns>
        public ResponseData <string> PayCallback(string OrderID)
        {
            var result = new ResponseData <string>()
            {
                Code    = "0",
                Data    = "失败",
                Message = "订单未支付,请先支付",
                Success = true
            };

            //先做支付验证
            if (!VerifyOrder(OrderID))
            {
                Logger.Write(Log.Log_Type.Info, string.Format("订单验证不通过!,未支付订单,OrderId的值为:{0}。", OrderID));
                throw new Exception("订单未支付,请先支付!");
                //未通过支付验证
                return(result);
            }
            var context = new CoffeeOrderContext();
            var ord     = context.PUB_ORDER.Where(o => o.ORDER_ID == OrderID).FirstOrDefault();

            Logger.Write(Log.Log_Type.Info, string.Format("开始更新订单状态--  订单号:{0},{1},{2}。", OrderID, ord.MEMBER_ID, ord.PROVIDER_ID));
            OrderManager manager = new OrderManager();

            //开始发货
            manager.HandleShip(OrderID, ord.MEMBER_ID);
            Logger.Write(Log.Log_Type.Info, string.Format("发货中,OrderId的值为:{0}。", OrderID));

            result = new ResponseData <string>()
            {
                Code    = "1",
                Data    = "成功",
                Message = "成功",
                Success = true
            };
            return(result);
        }
 private void TakeOrders(string flavorIn, int table)
 {
     _flavors[_ordersMade]  = _flavorFactory.GetCoffeeFlavor(flavorIn);
     _tables[_ordersMade++] = new CoffeeOrderContext(table);
 }
Exemple #6
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="ord"></param>
        /// <returns></returns>
        public OrderGroupResult CreateOrder(CoffeeOrder ord)
        {
            if (ord == null)
            {
                throw new ArgumentNullException("order");
            }
            var    s             = new OrderManager();
            string orderDescribe = "";
            //验证产品单价
            var list       = ObjectXmlSerializer.LoadFromXml <List <CoffeeInit> >(System.Web.HttpContext.Current.Server.MapPath("~/cache/Coffee.xml"));
            var ordDetails = ord.DrinkList.GroupBy(o => o.Value).Select(o => (new Drink()
            {
                Name = o.Min(item => item.Name),
                Value = o.Key,
                Number = o.Sum(item => item.Number),
                Price = o.Sum(item => item.Number * item.Price),
                Materials = null
            }));

            foreach (var item in ordDetails)
            {
                if (item.Price != list[0].DrinkList.Find(o => o.Value == item.Value).Price *item.Number)
                {
                    throw new Exception("产品单价有误!");
                }
                orderDescribe  = orderDescribe == "" ? orderDescribe : orderDescribe + "@#";
                orderDescribe += String.Format("名称:{0}@#金额:{1}元@#数量:{2}", item.Name, item.Price, item.Number);
            }
            //验证订单金额金额
            if (ord.TotalAmount != ord.DrinkList.Sum(o => o.Price * o.Number) + ord.Fee)
            {
                throw new Exception("订单金额有误!");
            }
            var orderinfo = new OrderInfo
            {
                memberId      = ord.MemberId,
                message       = "",
                orderAmount   = ord.Amount.ToString(CultureInfo.InvariantCulture),
                orderDescribe = orderDescribe,
                orderFrom     = ord.OrderFrom.ToString(),
                orderType     = OrderType.ToString(),
                storeId       = this.GetStoreInfo().StoreId,
                storeName     = this.GetStoreInfo().StoreName,
                totalAmount   = (ord.TotalAmount).ToString(CultureInfo.InvariantCulture),
                orderEtm      = ord.OrderETMID,
                deleiveryFee  = ord.Fee,
                memberName    = ord.MemberName
            };
            var mresult = s.CreateOrder(orderinfo);

            Logger.Write(Log.Log_Type.Info, string.Format("主订单创建成功,order={0}", JsonConvert.SerializeObject(mresult)));
            var context = new CoffeeOrderContext();

            for (int i = 0; i < ord.DrinkList.Count; i++)
            {
                var item         = ord.DrinkList[i];
                var coffeeDetail = new BM_COFFEE_DETAIL()
                {
                    ORDER_ID        = mresult.dataMap.orderId,
                    ID              = mresult.dataMap.orderId + i.ToString(),
                    ADD_FEE         = 0,
                    AMOUNT          = item.Number * item.Price,
                    CAPACITY        = item.Capacity,
                    COFFEE_TYPE     = item.Value,
                    COFFEE_TYPENAME = item.Name,
                    CREATE_DATE     = DateTime.Now,
                    PRICE           = item.Price,
                    DESCRIPTION     = "",
                    QUANTITY        = item.Number,
                    TOTAL           = item.Number * item.Price,
                    MATERIALS       = JsonConvert.SerializeObject(item.Materials),
                    ISSUED          = 0
                };
                Logger.Write(Log.Log_Type.Info, string.Format("订单详情,Detail={0}", JsonConvert.SerializeObject(coffeeDetail)));
                context.BM_COFFEE_DETAIL.Add(coffeeDetail);
            }
            context.SaveChanges();
            OrderGroupResult result = new OrderGroupResult();

            result.GroupId = mresult.dataMap.orderId;
            result.Items   = new List <OrderItemResult>();
            result.Items.Add(new OrderItemResult()
            {
                Amount    = ord.TotalAmount,
                ItemName  = orderinfo.orderDescribe,
                OrderId   = mresult.dataMap.orderId,
                Qty       = ord.Quantity,
                StoreId   = orderinfo.storeId,
                StoreName = orderinfo.storeName
            });
            result.TotalAmount = ord.TotalAmount;
            return(result);
        }
Exemple #7
0
        /// <summary>
        /// 验证订单支付状态
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        private bool VerifyOrder(string orderId)
        {
            var te = new CoffeeOrderContext();

            return(te.PUB_ORDER.Any(o => o.ORDER_ID == orderId && o.PAYMENT_STATUS == 2));
        }
Exemple #8
0
        /// <summary>
        /// 会员中心信息 订单详情
        /// </summary>
        /// <param name="groupId"></param>
        /// <returns></returns>
        public MemberOrderShowInfo MemberOrderDetail(string groupId)
        {
            MemberOrderShowInfo result = new MemberOrderShowInfo()
            {
                OrderDetailShowInfo = new List <MemberOrderShowInfoItem>(),
                OrderShowInfo       = new List <MemberOrderShowInfoItem>()
            };
            var context   = new CoffeeOrderContext();
            var ord       = context.PUB_ORDER.Where(o => o.ORDER_ID == groupId).FirstOrDefault();
            var ordDetail = context.BM_COFFEE_DETAIL.Where(o => o.ORDER_ID == groupId).ToList();

            if (ord == null || ordDetail == null || ordDetail.Count <= 0)
            {
                Logger.Write(Log.Log_Type.Debug, string.Format("没有找到订单详情--  订单号:{0}。", groupId));
                return(null);
            }
            //订单信息
            result.OrderShowInfo.Add(new MemberOrderShowInfoItem()
            {
                Name = "订单编号", Value = ord.ORDER_ID
            });
            result.OrderShowInfo.Add(new MemberOrderShowInfoItem()
            {
                Name = "下单时间", Value = ord.CREATE_DATE.ToString("yyyy年MM月dd日 HH:mm:ss")
            });
            result.OrderShowInfo.Add(new MemberOrderShowInfoItem()
            {
                Name = "订单金额", Value = ord.TOTAL_AMOUNT.ToString("F2") + "元"
            });
            result.OrderShowInfo.Add(new MemberOrderShowInfoItem()
            {
                Name = "订单名称", Value = GetStoreInfo().StoreName
            });
            result.OrderShowInfo.Add(new MemberOrderShowInfoItem()
            {
                Name = "订单数量", Value = ordDetail.Sum(o => o.QUANTITY).ToString()
            });
            //订单明细
            foreach (var item in ordDetail.GroupBy(o => o.COFFEE_TYPE).Select(o => (new Drink()
            {
                Name = o.Min(item => item.COFFEE_TYPENAME),
                Value = o.Key,
                Number = o.Sum(item => (int)item.QUANTITY),
                Price = o.Min(item => (int)item.PRICE),
                Materials = null
            })).ToList())
            {
                result.OrderDetailShowInfo.Add(new MemberOrderShowInfoItem()
                {
                    Name = "名称", Value = item.Name + " " + item.Number.ToString() + "杯"
                });
                result.OrderDetailShowInfo.Add(new MemberOrderShowInfoItem()
                {
                    Name = "单价", Value = item.Price.ToString("F2") + "元"
                });
                //result.OrderDetailShowInfo.Add(new MemberOrderShowInfoItem() { Name = "数量", Value = item.Number.ToString() });
                result.OrderDetailShowInfo.Add(new MemberOrderShowInfoItem()
                {
                    Name = "金额", Value = (item.Price * item.Number).ToString("F2") + "元"
                });
            }
            return(result);
        }