Beispiel #1
0
        /// <summary>
        /// 移除订单商品
        /// </summary>
        /// <param name="product"></param>
        public void RemoveOrderProduct(TangOrderProduct product)
        {
            Database.KeyDelete(AddKeyPrefix <TangOrderProduct>(product.ObjectId));
            var orderProductKey = AddKeyPrefix <TangOrderProduct>($"Order:{product.OrderObjectId}");

            Database.ListRemove(orderProductKey, product.ObjectId);
        }
Beispiel #2
0
        public async Task <TangOrderProduct> RetTangProductAsync(TangOrderProduct product)
        {
            product.ProductStatus = TangOrderProductStatus.Return;
            Context.Attach(product).Property(a => a.ProductStatus).IsModified = true;
            await Context.SaveChangesAsync();

            return(product);
        }
Beispiel #3
0
        /// <summary>
        /// 订单商品退货
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> RetTangProduct([FromBody] TangOrderProduct product)
        {
            await Service.RetTangProductAsync(product);

            var order = await Service.GetAsync <TangOrder>(product.OrderId);

            order.ActualAmount   -= product.Amount;
            order.Amount         -= product.Amount;
            order.OriginalAmount -= product.Amount;
            await Service.CommitAsync();

            return(Json(order));
        }
Beispiel #4
0
        public void UpdateOrderProduct(TangOrderProduct product)
        {
            if (product.Quantity <= 0)
            {
                var key = AddKeyPrefix(product.ObjectId, typeof(TangOrderProduct).Name);
                Database.KeyDelete(key);

                var orderProductListKey = AddKeyPrefix($"Order:{product.OrderObjectId}", typeof(TangOrderProduct).Name);
                Database.ListRemove(orderProductListKey, product.ObjectId);
            }
            else
            {
                Update(product);
            }
        }
Beispiel #5
0
        public async Task FenOrderAsync(TangOrderProduct good, TangOrder originalOrder, TangOrder targetOrder)
        {
            good.OrderId       = targetOrder.Id;
            good.OrderObjectId = targetOrder.ObjectId;
            originalOrder.TangOrderProducts.Remove(good);
            if (targetOrder.TangOrderProducts == null)
            {
                targetOrder.TangOrderProducts = new ObservableCollection <TangOrderProduct>();
            }
            targetOrder.TangOrderProducts.Add(good);

            var originalKey = AddKeyPrefix($"Order:{originalOrder.ObjectId}", typeof(TangOrderProduct).Name);
            await Database.ListRemoveAsync(originalKey, good.ObjectId);

            var targetKey = AddKeyPrefix($"Order:{targetOrder.ObjectId}", typeof(TangOrderProduct).Name);
            await Database.ListRightPushAsync(targetKey, good.ObjectId);
        }
Beispiel #6
0
        /// <summary>
        /// 反结账时,新增商品
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        public async Task <IActionResult> IncreaseOrderProduct([FromBody] TangOrderProduct product)
        {
            product.ProductStatus = TangOrderProductStatus.AddReserve;
            product.Status        = EntityStatus.Normal;
            await Service.AddAsync(product);

            var order = await Service.GetAsync <TangOrder>(product.OrderId);

            order.ActualAmount   += product.Amount;
            order.Amount         += product.Amount;
            order.OriginalAmount += product.Amount;
            await Service.CommitAsync();

            return(Json(new {
                order, product
            }));
        }
Beispiel #7
0
        public void SaveOrderProduct(TangOrderProduct product)
        {
            if (!string.IsNullOrEmpty(product.ObjectId))
            {
                UpdateOrderProduct(product);
                return;
            }
            product.ObjectId   = Guid.NewGuid().ToString().ToLower();
            product.CreateTime = DateTime.Now;
            var key = AddKeyPrefix(product.ObjectId, typeof(TangOrderProduct).Name);

            Database.StringSet(key, JsonConvert.SerializeObject(product));
            // 保存到订单关联的产品列表中
            var orderProductKey = AddKeyPrefix($"Order:{product.OrderObjectId}", typeof(TangOrderProduct).Name);
            var list            = Database.ListRange(orderProductKey);
            var exist           = list?.Any(a => a.ToString() == product.ObjectId);

            if (!exist.HasValue || !exist.Value)
            {
                Database.ListRightPush(orderProductKey, product.ObjectId);
            }
        }
Beispiel #8
0
        public TangOrderProduct Unsubscribe(TangOrder order, TangOrderProduct product, double quantity)
        {
            if (product.Quantity <= quantity)
            {
                product.ProductStatus = TangOrderProductStatus.Return;
                Update(product);
                return(product);
            }
            product.Quantity = product.Quantity - quantity;
            product.Amount   = product.Quantity * product.Price;
            Update(product);
            var retProduct = new TangOrderProduct
            {
                Description   = product.Description,
                Discount      = product.Discount,
                Feature       = product.Feature,
                FormatId      = product.FormatId,
                Name          = product.Name,
                OrderId       = product.OrderId,
                OrderObjectId = product.OrderObjectId,
                OriginalPrice = product.OriginalPrice,
                Price         = product.Price,
                ProductId     = product.ProductId,
                ProductIdSet  = product.ProductIdSet,
                ProductStatus = TangOrderProductStatus.Return,
                Quantity      = quantity,
                RefundReason  = product.RefundReason,
                Remark        = product.Remark,
                Amount        = quantity * product.Price,
                Src           = product.Src
            };

            Save(retProduct);
            var orderProductKey = AddKeyPrefix($"Order:{retProduct.OrderObjectId}", typeof(TangOrderProduct).Name);

            Database.ListRightPush(orderProductKey, retProduct.ObjectId);
            order.TangOrderProducts.Add(retProduct);
            return(retProduct);
        }
Beispiel #9
0
        /// <summary>
        /// 打印订单商品
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        private List <byte[]> ProductLine(TangOrderProduct product, int fontSize = 1)
        {
            var left = product.Name;

            if (!string.IsNullOrEmpty(product.Description))
            {
                left += "(" + product.Description + ")";
            }
            var middle = "*" + Convert.ToDouble(product.Quantity);
            var right  = Convert.ToDouble(product.Amount) + "";
            var place  = string.Empty;

            for (int i = 0; i < maxRightLen - middle.Length - right.Length; i++)
            {
                place += " ";
            }
            right = middle + place + right;

            var buffer = PrinterCmdUtils.PrintLineLeftRight(left, right, fontSize: fontSize);

            return(new List <byte[]> {
                buffer
            });
        }
Beispiel #10
0
 public ChineseFoodFenOrderViewModel(IEnumerable <Desk> desks, TangOrder order, TangOrderProduct product)
 {
     Desks = desks.Where(a => a.Order != null && a.Id != order.DeskId).ToObservable();
     Good  = product;
 }