public object GetOrders(int?status, int pageIndex, int pageSize = 8) { CheckUserLogin(); var orderService = ServiceProvider.Instance <IOrderService> .Create; if (status.HasValue && status == 0) { status = null; } var queryModel = new OrderQuery() { Status = (OrderInfo.OrderOperateStatus?)status, UserId = CurrentUser.Id, PageSize = pageSize, PageNo = pageIndex, 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 (status.GetValueOrDefault() == (int)OrderInfo.OrderOperateStatus.Finish) { queryModel.Commented = false;//只查询未评价的订单 } var orders = orderService.GetOrders <OrderInfo>(queryModel); var productService = ServiceProvider.Instance <IProductService> .Create; var vshopService = ServiceProvider.Instance <IVShopService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); var shopBranchs = ShopBranchApplication.GetShopBranchByIds(orders.Models.Where(a => a.ShopBranchId > 0).Select(p => p.ShopBranchId).ToList()); var result = orders.Models.Select(item => { var orderitems = orderItems.Where(p => p.OrderId == item.Id); var shopBranchInfo = shopBranchs.FirstOrDefault(a => a.Id == item.ShopBranchId);//当前订单所属门店信息 if (item.OrderStatus >= Entities.OrderInfo.OrderOperateStatus.WaitDelivery) { orderService.CalculateOrderItemRefund(item.Id); } var vshop = vshopService.GetVShopByShopId(item.ShopId); var _ordrefobj = orderRefundService.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); //参照PC端会员中心的状态描述信息 string statusText = item.OrderStatus.ToDescription(); if (item.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitDelivery || item.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitSelfPickUp) { if (ordrefstate.HasValue && ordrefstate != 0 && ordrefstate != 4) { statusText = "退款中"; } } //是否可售后 bool IsShowReturn = OrderApplication.CanRefund(item, ordrefstate, null); var hasAppendComment = ServiceProvider.Instance <ICommentService> .Create.HasAppendComment(orderitems.FirstOrDefault().Id); return(new { OrderId = item.Id, StatusText = statusText, Status = item.OrderStatus, orderType = item.OrderType, orderTypeName = item.OrderType.ToDescription(), shopname = item.ShopName, vshopId = vshop == null ? 0 : vshop.Id, Amount = item.OrderTotalAmount.ToString("F2"), Quantity = OrderApplication.GetOrderTotalProductCount(item.Id), commentCount = OrderApplication.GetOrderCommentCount(item.Id), pickupCode = item.PickupCode, EnabledRefundAmount = item.OrderEnabledRefundAmount, LineItems = orderitems.Select(a => { var prodata = productService.GetProduct(a.ProductId); Entities.TypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.GetType(prodata.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; var itemStatusText = ""; var itemrefund = orderRefunds.Where(or => or.OrderItemId == a.Id).FirstOrDefault(d => d.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund); int?itemrefstate = (itemrefund == null ? 0 : (int?)itemrefund.SellerAuditStatus); itemrefstate = (itemrefstate > 4 ? (int?)itemrefund.ManagerConfirmStatus : itemrefstate); if (itemrefund != null) { //默认为商家处理进度 if (itemrefstate == 4) { //商家拒绝 itemStatusText = ""; } else { itemStatusText = "售后处理中"; } } if (itemrefstate > 4) {//如果商家已经处理完,则显示平台处理进度 if (itemrefstate == 7) { itemStatusText = "退款成功"; } } return new { Status = itemrefstate, StatusText = itemStatusText, Id = a.SkuId, productId = a.ProductId, Name = a.ProductName, Image = Core.MallIO.GetRomoteProductSizeImage(a.ThumbnailsUrl, 1, (int)Mall.CommonModel.ImageSize.Size_350), Amount = a.Quantity, Price = a.SalePrice, Unit = prodata == null ? "" : prodata.MeasureUnit, SkuText = colorAlias + ":" + a.Color + " " + sizeAlias + ":" + a.Size + " " + versionAlias + ":" + a.Version, color = a.Color, size = a.Size, version = a.Version, ColorAlias = (prodata != null && !string.IsNullOrWhiteSpace(prodata.ColorAlias)) ? prodata.ColorAlias : colorAlias,//如果商品有自定义规格名称则用 SizeAlias = (prodata != null && !string.IsNullOrWhiteSpace(prodata.SizeAlias)) ? prodata.SizeAlias : sizeAlias, VersionAlias = (prodata != null && !string.IsNullOrWhiteSpace(prodata.VersionAlias)) ? prodata.VersionAlias : versionAlias, RefundStats = itemrefstate, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), EnabledRefundAmount = a.EnabledRefundAmount, IsShowRefund = IsShowReturn, IsShowAfterSale = IsShowReturn }; }), RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id, IsShowLogistics = !string.IsNullOrWhiteSpace(item.ShipOrderNumber) || item.DeliveryType == DeliveryType.ShopStore, ShipOrderNumber = item.ShipOrderNumber, IsShowCreview = (item.OrderStatus == Entities.OrderInfo.OrderOperateStatus.Finish && !hasAppendComment), IsShowPreview = false, //Invoice = item.InvoiceType.ToDescription(), //InvoiceValue = (int)item.InvoiceType, //InvoiceContext = item.InvoiceContext, //InvoiceTitle = item.InvoiceTitle, PaymentType = item.PaymentType.ToDescription(), PaymentTypeValue = (int)item.PaymentType, IsShowClose = (item.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitPay), IsShowFinishOrder = (item.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitReceiving), IsShowRefund = IsShowReturn, IsShowReturn = IsShowReturn, IsShowTakeCodeQRCode = (!string.IsNullOrWhiteSpace(item.PickupCode) && item.OrderStatus != Entities.OrderInfo.OrderOperateStatus.Finish && item.OrderStatus != Entities.OrderInfo.OrderOperateStatus.Close), OrderDate = item.OrderDate, SupplierId = 0, ShipperName = string.Empty, StoreName = shopBranchInfo != null ? shopBranchInfo.ShopBranchName : string.Empty, IsShowCertification = false, HasAppendComment = hasAppendComment, CreviewText = OrderApplication.GetOrderCommentCount(item.Id) > 0 ? "追加评论" : "评价订单", ProductCommentPoint = 0, DeliveryType = (int)item.DeliveryType }); }); var statistic = StatisticApplication.GetMemberOrderStatistic(CurrentUser.Id); return(Json( new { AllOrderCounts = statistic.OrderCount, WaitingForComments = statistic.WaitingForComments, WaitingForRecieve = statistic.WaitingForRecieve, WaitingForPay = statistic.WaitingForPay, Data = result })); }
public object GetOrders(int?orderStatus, int pageNo, int pageSize = 8) { CheckUserLogin(); var orderStatistic = StatisticApplication.GetMemberOrderStatistic(CurrentUser.Id); var orderService = ServiceProvider.Instance <IOrderService> .Create; if (orderStatus.HasValue && orderStatus == 0) { orderStatus = null; } var queryModel = new OrderQuery() { Status = (OrderInfo.OrderOperateStatus?)orderStatus, UserId = CurrentUser.Id, PageSize = pageSize, PageNo = pageNo, IsFront = true }; 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)OrderInfo.OrderOperateStatus.Finish) { queryModel.Commented = false;//只查询未评价的订单 } QueryPageModel <OrderInfo> orders = orderService.GetOrders <OrderInfo>(queryModel); var productService = ServiceProvider.Instance <IProductService> .Create; var vshopService = ServiceProvider.Instance <IVShopService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); //查询结果的门店ID var branchIds = orders.Models.Where(e => e.ShopBranchId > 0).Select(p => p.ShopBranchId).ToList(); //根据门店ID获取门店信息 var shopBranchs = ShopBranchApplication.GetShopBranchByIds(branchIds); //TODO:FG 关联数据查询提取至循环外层 var result = orders.Models.Select(order => { if (order.OrderStatus >= OrderInfo.OrderOperateStatus.WaitDelivery) { orderService.CalculateOrderItemRefund(order.Id); } var vshop = vshopService.GetVShopByShopId(order.ShopId); var _ordrefobj = orderRefundService.GetOrderRefundByOrderId(order.Id) ?? new OrderRefundInfo { Id = 0 }; if (order.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery && order.OrderStatus != OrderInfo.OrderOperateStatus.WaitSelfPickUp) { _ordrefobj = new OrderRefundInfo { Id = 0 }; } int?ordrefstate = (_ordrefobj == null ? null : (int?)_ordrefobj.SellerAuditStatus); ordrefstate = (ordrefstate > 4 ? (int?)_ordrefobj.ManagerConfirmStatus : ordrefstate); var branchObj = shopBranchs.FirstOrDefault(e => e.Id == order.ShopBranchId); string branchName = branchObj == null ? string.Empty : branchObj.ShopBranchName; //参照PC端会员中心的状态描述信息 string statusText = order.OrderStatus.ToDescription(); if (order.OrderStatus == OrderInfo.OrderOperateStatus.WaitDelivery || order.OrderStatus == OrderInfo.OrderOperateStatus.WaitSelfPickUp) { if (ordrefstate.HasValue && ordrefstate != 0 && ordrefstate != 4) { statusText = "退款中"; } } var hasAppendComment = ServiceProvider.Instance <ICommentService> .Create.HasAppendComment(orderItems.FirstOrDefault(d => d.OrderId == order.Id).Id); return(new { id = order.Id, status = statusText, orderStatus = order.OrderStatus, orderType = order.OrderType, orderTypeName = order.OrderType.ToDescription(), shopname = order.ShopName, vshopId = vshop == null ? 0 : vshop.Id, orderTotalAmount = order.OrderTotalAmount.ToString("F2"), productCount = OrderApplication.GetOrderTotalProductCount(order.Id), commentCount = OrderApplication.GetOrderComment(order.Id).Count, pickupCode = order.PickupCode, ShopBranchId = order.ShopBranchId, ShopBranchName = branchName, EnabledRefundAmount = order.OrderEnabledRefundAmount, itemInfo = orderItems.Where(oi => oi.OrderId == order.Id).Select(a => { var prodata = productService.GetProduct(a.ProductId); TypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.GetType(prodata.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; if (prodata != null) { colorAlias = !string.IsNullOrWhiteSpace(prodata.ColorAlias) ? prodata.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(prodata.SizeAlias) ? prodata.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(prodata.VersionAlias) ? prodata.VersionAlias : versionAlias; } 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 { productId = a.ProductId, productName = a.ProductName, image = Core.HimallIO.GetRomoteProductSizeImage(a.ThumbnailsUrl, 1, (int)Himall.CommonModel.ImageSize.Size_350), count = a.Quantity, price = a.SalePrice, Unit = prodata == null ? "" : prodata.MeasureUnit, color = a.Color, size = a.Size, version = a.Version, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, RefundStats = itemrefstate, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), EnabledRefundAmount = a.EnabledRefundAmount }; }), RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id, HasExpressStatus = !string.IsNullOrWhiteSpace(order.ShipOrderNumber), HasAppendComment = hasAppendComment, //Invoice = order.InvoiceType.ToDescription(), //InvoiceValue = (int)order.InvoiceType, //InvoiceContext = order.InvoiceContext, //InvoiceTitle = order.InvoiceTitle, PaymentType = order.PaymentType.ToDescription(), PaymentTypeValue = (int)order.PaymentType, CanRefund = OrderApplication.CanRefund(order, itemId: 0), IsVirtual = order.OrderType == OrderInfo.OrderTypes.Virtual ? 1 : 0, IsPay = order.PayDate.HasValue ? 1 : 0 }); }); return(new { success = true, AllOrderCounts = orderStatistic.OrderCount, WaitingForComments = orderStatistic.WaitingForComments, WaitingForRecieve = orderStatistic.WaitingForRecieve + OrderApplication.GetWaitConsumptionOrderNumByUserId(CurrentUser.Id), WaitingForPay = orderStatistic.WaitingForPay, Orders = result }); }