public JsonResult GetUserOrders(int?orderStatus, int pageNo, int pageSize = 8) { if (orderStatus.HasValue && orderStatus == 0) { orderStatus = null; } var queryModel = new OrderQuery() { Status = (Model.OrderInfo.OrderOperateStatus?)orderStatus, UserId = CurrentUser.Id, PageSize = pageSize, PageNo = pageNo }; if (queryModel.Status.HasValue && queryModel.Status.Value == OrderInfo.OrderOperateStatus.WaitReceiving) { if (queryModel.MoreStatus == null) { queryModel.MoreStatus = new List <OrderInfo.OrderOperateStatus>() { }; } queryModel.MoreStatus.Add(OrderInfo.OrderOperateStatus.WaitSelfPickUp); } if (orderStatus.GetValueOrDefault() == (int)Model.OrderInfo.OrderOperateStatus.Finish) { queryModel.Commented = false;//只查询未评价的订单 } var orders = OrderApplication.GetOrders(queryModel); var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderComments = OrderApplication.GetOrderCommentCount(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); var products = ProductManagerApplication.GetProductsByIds(orderItems.Select(p => p.ProductId)); var vshops = VshopApplication.GetVShopsByShopIds(products.Select(p => p.ShopId)); var result = orders.Models.Select(item => { var _ordrefobj = _iRefundService.GetOrderRefundByOrderId(item.Id) ?? new OrderRefundInfo { Id = 0 }; if (item.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery && item.OrderStatus != OrderInfo.OrderOperateStatus.WaitSelfPickUp) { _ordrefobj = new OrderRefundInfo { Id = 0 }; } int?ordrefstate = (_ordrefobj == null ? null : (int?)_ordrefobj.SellerAuditStatus); ordrefstate = (ordrefstate > 4 ? (int?)_ordrefobj.ManagerConfirmStatus : ordrefstate); return(new { id = item.Id, status = item.OrderStatus.ToDescription(), orderStatus = item.OrderStatus, shopname = item.ShopName, orderTotalAmount = item.OrderTotalAmount.ToString("F2"), productCount = item.OrderProductQuantity, commentCount = orderComments.ContainsKey(item.Id) ? orderComments[item.Id] : 0, PaymentType = item.PaymentType, RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id, OrderType = item.OrderType, PickUp = item.PickupCode, ShopBranchId = item.ShopBranchId, DeliveryType = item.DeliveryType, ShipOrderNumber = item.ShipOrderNumber, EnabledRefundAmount = item.OrderEnabledRefundAmount, itemInfo = orderItems.Where(oi => oi.OrderId == item.Id).Select(a => { var prodata = products.FirstOrDefault(p => p.Id == a.ProductId); VShop vshop = null; if (prodata != null) { vshop = vshops.FirstOrDefault(vs => vs.ShopId == prodata.ShopId); } if (vshop == null) { vshop = new VShop { Id = 0 } } ; var itemrefund = orderRefunds.Where(or => or.OrderItemId == a.Id).FirstOrDefault(d => d.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund); int?itemrefstate = (itemrefund == null ? null : (int?)itemrefund.SellerAuditStatus); itemrefstate = (itemrefstate > 4 ? (int?)itemrefund.ManagerConfirmStatus : itemrefstate); return new { itemid = a.Id, productId = a.ProductId, productName = a.ProductName, image = HimallIO.GetProductSizeImage(a.ThumbnailsUrl, 1, (int)ImageSize.Size_100), count = a.Quantity, price = a.SalePrice, Unit = prodata == null ? "" : prodata.MeasureUnit, vshopid = vshop.Id, color = a.Color, size = a.Size, version = a.Version, RefundStats = itemrefstate, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), EnabledRefundAmount = a.EnabledRefundAmount }; }), HasAppendComment = HasAppendComment(orderItems.Where(oi => oi.OrderId == item.Id).FirstOrDefault()), CanRefund = (item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitDelivery || item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitSelfPickUp) && !item.RefundStats.HasValue && item.PaymentType != Himall.Model.OrderInfo.PaymentTypes.CashOnDelivery && item.PaymentType != Himall.Model.OrderInfo.PaymentTypes.None && (item.FightGroupCanRefund == null || item.FightGroupCanRefund == true) && ordrefstate.GetValueOrDefault().Equals(0) }); });
public JsonResult GetUserOrders(int?orderStatus, int pageNo, int pageSize = 8) { if (orderStatus.HasValue && orderStatus == 0) { orderStatus = null; } var queryModel = new OrderQuery() { Status = (Entities.OrderInfo.OrderOperateStatus?)orderStatus, UserId = CurrentUser.Id, PageSize = pageSize, PageNo = pageNo, IsFront = true }; if (queryModel.Status.HasValue && queryModel.Status.Value == Entities.OrderInfo.OrderOperateStatus.WaitReceiving) { if (queryModel.MoreStatus == null) { queryModel.MoreStatus = new List <Entities.OrderInfo.OrderOperateStatus>() { }; } queryModel.MoreStatus.Add(Entities.OrderInfo.OrderOperateStatus.WaitSelfPickUp); } if (orderStatus.GetValueOrDefault() == (int)OrderInfo.OrderOperateStatus.Finish) { queryModel.Commented = false;//只查询未评价的订单 } var orders = OrderApplication.GetOrders(queryModel); var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderComments = OrderApplication.GetOrderCommentCount(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); var products = ProductManagerApplication.GetProductsByIds(orderItems.Select(p => p.ProductId)); var vshops = VshopApplication.GetVShopsByShopIds(products.Select(p => p.ShopId)); //查询结果的门店ID var branchIds = orders.Models.Where(e => e.ShopBranchId > 0).Select(p => p.ShopBranchId).ToList(); //根据门店ID获取门店信息 var shopBranchs = ShopBranchApplication.GetShopBranchByIds(branchIds); var orderVerificationCodes = OrderApplication.GetOrderVerificationCodeInfosByOrderIds(orders.Models.Select(p => p.Id).ToList()); var result = orders.Models.Select(item => { var codes = orderVerificationCodes.Where(a => a.OrderId == item.Id); var _ordrefobj = _iRefundService.GetOrderRefundByOrderId(item.Id) ?? new Entities.OrderRefundInfo { Id = 0 }; if (item.OrderStatus != Entities.OrderInfo.OrderOperateStatus.WaitDelivery && item.OrderStatus != Entities.OrderInfo.OrderOperateStatus.WaitSelfPickUp) { _ordrefobj = new Entities.OrderRefundInfo { Id = 0 }; } int?ordrefstate = (_ordrefobj == null ? null : (int?)_ordrefobj.SellerAuditStatus); ordrefstate = (ordrefstate > 4 ? (int?)_ordrefobj.ManagerConfirmStatus : ordrefstate); var branchObj = shopBranchs.FirstOrDefault(e => item.ShopBranchId > 0 && e.Id == item.ShopBranchId); string branchName = branchObj == null ? string.Empty : branchObj.ShopBranchName; return(new { id = item.Id, status = item.OrderStatus.ToDescription(), orderStatus = item.OrderStatus, shopname = item.ShopName, orderTotalAmount = item.OrderTotalAmount, capitalAmount = item.CapitalAmount, productCount = orderItems.Where(oi => oi.OrderId == item.Id).Sum(a => a.Quantity), commentCount = orderComments.ContainsKey(item.Id) ? orderComments[item.Id] : 0, PaymentType = item.PaymentType, RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id, OrderType = item.OrderType, PickUp = item.PickupCode, ShopBranchId = item.ShopBranchId, ShopBranchName = branchName, DeliveryType = item.DeliveryType, ShipOrderNumber = item.ShipOrderNumber, EnabledRefundAmount = item.OrderEnabledRefundAmount, itemInfo = orderItems.Where(oi => oi.OrderId == item.Id).Select(a => { var prodata = products.FirstOrDefault(p => p.Id == a.ProductId); VShop vshop = null; if (prodata != null) { vshop = vshops.FirstOrDefault(vs => vs.ShopId == prodata.ShopId); } if (vshop == null) { vshop = new VShop { Id = 0 } } ; var itemrefund = orderRefunds.Where(or => or.OrderItemId == a.Id).FirstOrDefault(d => d.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund); int?itemrefstate = (itemrefund == null ? null : (int?)itemrefund.SellerAuditStatus); itemrefstate = (itemrefstate > 4 ? (int?)itemrefund.ManagerConfirmStatus : itemrefstate); return new { itemid = a.Id, productId = a.ProductId, productName = a.ProductName, image = HimallIO.GetProductSizeImage(a.ThumbnailsUrl, 1, (int)ImageSize.Size_100), count = a.Quantity, price = a.SalePrice, Unit = prodata == null ? "" : prodata.MeasureUnit, vshopid = vshop.Id, color = a.Color, size = a.Size, version = a.Version, RefundStats = itemrefstate, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), EnabledRefundAmount = a.EnabledRefundAmount }; }), HasAppendComment = HasAppendComment(orderItems.Where(oi => oi.OrderId == item.Id).FirstOrDefault()), CanRefund = OrderApplication.CanRefund(item, ordrefstate), IsVirtual = item.OrderType == OrderInfo.OrderTypes.Virtual ? 1 : 0, IsPay = item.PayDate.HasValue ? 1 : 0 }); });