public JsonResult CheckIsComment(long orderId) { var order = OrderApplication.GetOrder(orderId); var orderComments = OrderApplication.GetOrderCommentCount(new[] { orderId }); bool valid = false; if (order != null && (!orderComments.ContainsKey(orderId) || orderComments[orderId] == 0)) { // 订单还未被评价过,有效 valid = true; } return(SuccessResult <dynamic>(data: new { valid = valid })); }
// GET: Mobile/Comment public ActionResult Index(long orderId) { var order = OrderApplication.GetOrder(orderId); var orderComments = OrderApplication.GetOrderCommentCount(new[] { orderId }); bool valid = false; if (order != null && (!orderComments.ContainsKey(orderId) || orderComments[orderId] == 0)) { // 订单还未被评价过,有效 valid = true; var model = CommentApplication.GetProductEvaluationByOrderId(orderId, CurrentUser.Id); var orderEvaluation = TradeCommentApplication.GetOrderComment(orderId, CurrentUser.Id); ViewBag.Products = model; var orderItems = OrderApplication.GetOrderItemsByOrderId(orderId); ViewBag.OrderItemIds = orderItems.Select(item => item.Id); } ViewBag.Valid = valid; return(View()); }
/// <summary> /// 根据订单ID获取评价 /// </summary> /// <param name="orderId"></param> /// <returns></returns> public JsonResult <Result <dynamic> > GetComment(long orderId) { CheckUserLogin(); var order = OrderApplication.GetOrderInfo(orderId); var comment = OrderApplication.GetOrderCommentCount(order.Id); if (order != null && comment == 0) { var model = CommentApplication.GetProductEvaluationByOrderId(orderId, CurrentUser.Id).Select(item => new { ProductId = item.ProductId, ProductName = item.ProductName, Image = Core.HimallIO.GetRomoteProductSizeImage(item.ThumbnailsUrl, 1, (int)Himall.CommonModel.ImageSize.Size_220) //商城App评论时获取商品图片 }); var orderitems = OrderApplication.GetOrderItems(order.Id); var orderEvaluation = TradeCommentApplication.GetOrderCommentInfo(orderId, CurrentUser.Id); var isVirtual = order.OrderType == Himall.Entities.OrderInfo.OrderTypes.Virtual ? 1 : 0; return(JsonResult <dynamic>(new { Product = model, orderItemIds = orderitems.Select(item => item.Id), isVirtual = isVirtual })); } else { return(Json(ErrorResult <dynamic>("该订单不存在或者已评论过"))); } }
public ActionResult Index(string orderDate, string keywords, string orderids, DateTime?startDateTime, DateTime?endDateTime, int?orderStatus, int pageNo = 1, int pageSize = 10) { ViewBag.Grant = null; if (!string.IsNullOrEmpty(orderids) && orderids.IndexOf(',') <= 0) { ViewBag.Grant = _iShopBonusService.GetByOrderId(long.Parse(orderids)); } DateTime?startDate = startDateTime; DateTime?endDate = endDateTime; if (!string.IsNullOrEmpty(orderDate) && orderDate.ToLower() != "all") { switch (orderDate.ToLower()) { case "threemonth": startDate = DateTime.Now.AddMonths(-3); break; case "halfyear": startDate = DateTime.Now.AddMonths(-6); break; case "year": startDate = DateTime.Now.AddYears(-1); break; case "yearago": endDate = DateTime.Now.AddYears(-1); break; } } if (orderStatus.HasValue && orderStatus == 0) { orderStatus = null; } var queryModel = new OrderQuery() { StartDate = startDate, EndDate = endDate, Status = (Model.OrderInfo.OrderOperateStatus?)orderStatus, UserId = CurrentUser.Id, SearchKeyWords = keywords, PageSize = pageSize, PageNo = pageNo }; var orders = OrderApplication.GetOrders(queryModel); var orderComments = OrderApplication.GetOrderCommentCount(orders.Models.Select(p => p.Id)); var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); PagingInfo info = new PagingInfo { CurrentPage = pageNo, ItemsPerPage = pageSize, TotalItems = orders.Total }; ViewBag.pageInfo = info; ViewBag.UserId = CurrentUser.Id; var siteSetting = _iSiteSettingService.GetSiteSettings(); var shopBonus = _iShopBonusService; ViewBag.SalesRefundTimeout = siteSetting.SalesReturnTimeout; var cashDepositsService = _iCashDepositsService; //IEnumerable<OrderListModel> orderList = new IEnumerable<OrderListModel>(); IEnumerable <OrderListModel> orderList = orders.Models.Select(item => new OrderListModel { Id = item.Id, ActiveType = item.ActiveType, OrderType = item.OrderType, Address = item.Address, CellPhone = item.CellPhone, CloseReason = item.CloseReason, CommisTotalAmount = item.CommisAmount, DiscountAmount = item.DiscountAmount, ExpressCompanyName = item.ExpressCompanyName, FinishDate = item.FinishDate, Freight = item.Freight, GatewayOrderId = item.GatewayOrderId, IntegralDiscount = item.IntegralDiscount, UserId = item.UserId, ShopId = item.ShopId, ShopName = item.ShopName, ShipTo = item.ShipTo, OrderTotalAmount = item.OrderTotalAmount, PaymentTypeName = item.PaymentTypeName, //满额减 FullDiscount = item.FullDiscount, OrderStatus = item.OrderStatus, RefundStats = item.RefundStats, CommentCount = orderComments.ContainsKey(item.Id)?orderComments[item.Id]:0, OrderDate = item.OrderDate, PaymentType = item.PaymentType, PickupCode = item.PickupCode, OrderItemList = orderItems.Where(oi => oi.OrderId == item.Id).Select(oItem => { var itemrefund = orderRefunds.Where(or => or.OrderItemId == oItem.Id).FirstOrDefault(); var orderItem = new OrderItemListModel { Id = oItem.Id, ProductId = oItem.ProductId, Color = oItem.Color, Size = oItem.Size, Version = oItem.Version, ProductName = oItem.ProductName, ThumbnailsUrl = oItem.ThumbnailsUrl, SalePrice = oItem.SalePrice, SkuId = oItem.SkuId, Quantity = oItem.Quantity, CashDepositsObligation = cashDepositsService.GetCashDepositsObligation(oItem.ProductId), }; if (itemrefund != null) { orderItem.RefundStats = itemrefund.RefundStatusValue; orderItem.ItemRefundId = itemrefund.Id; string showRefundStats = ""; if (itemrefund.SellerAuditStatus == OrderRefundInfo.OrderRefundAuditStatus.Audited) { showRefundStats = itemrefund.ManagerConfirmStatus.ToDescription(); } else if (item.DeliveryType == CommonModel.Enum.DeliveryType.SelfTake || (item.ShopBranchId.HasValue && item.ShopBranchId.Value > 0))//如果是自提预约单或分配门店预约单则转为门店审核状态 { showRefundStats = ((CommonModel.Enum.OrderRefundShopAuditStatus)itemrefund.SellerAuditStatus).ToDescription(); } else { showRefundStats = itemrefund.SellerAuditStatus.ToDescription(); } orderItem.ShowRefundStats = showRefundStats; } orderItem.EnabledRefundAmount = oItem.EnabledRefundAmount; ProductTypeInfo typeInfo = _iTypeService.GetTypeByProductId(oItem.ProductId); orderItem.ColorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; orderItem.SizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; orderItem.VersionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; return(orderItem); }).ToList(), ReceiveBonus = shopBonus.GetGrantByUserOrder(item.Id, CurrentUser.Id), }).ToList(); foreach (var o in orderList) { o.HasAppendComment = HasAppendComment(o); } #region 数据补偿 List <long> ordidl = orderList.Select(d => d.Id).ToList(); if (ordidl.Count > 0) { foreach (var item in orderList) { var _ord = orders.Models.FirstOrDefault(o => o.Id == item.Id); item.IsRefundTimeOut = OrderApplication.IsRefundTimeOut(_ord); item.EnabledRefundAmount = _ord.OrderEnabledRefundAmount; //退款状态补偿 var _tmpobj = orderRefunds.FirstOrDefault(d => d.OrderId == item.Id && d.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund); if (_tmpobj != null) { item.RefundStats = (int)_tmpobj.SellerAuditStatus; item.OrderRefundId = _tmpobj.Id; } item.OrderCanRefund = false; if (item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.Finish) { if (item.FinishDate.Value.AddDays(siteSetting.SalesReturnTimeout) > DateTime.Now) { item.OrderCanRefund = true; } } if (item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitReceiving) { item.OrderCanRefund = true; } if (item.PaymentType == Himall.Model.OrderInfo.PaymentTypes.CashOnDelivery) { if (item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.Finish) { item.OrderCanRefund = true; } } else { item.OrderCanRefund = true; } item.FightGroupCanRefund = true; //非拼团预约单默认可退 //拼团状态补偿 if (item.OrderType == OrderInfo.OrderTypes.FightGroup) { var fgord = _iFightGroupService.GetFightGroupOrderStatusByOrderId(item.Id); if (fgord != null) { item.FightGroupJoinStatus = fgord.GetJoinStatus; item.FightGroupCanRefund = fgord.CanRefund; } else { item.FightGroupJoinStatus = CommonModel.FightGroupOrderJoinStatus.JoinFailed; item.FightGroupCanRefund = false; } item.OrderCanRefund = item.OrderCanRefund && item.FightGroupCanRefund; } } } #endregion return(View(orderList.ToList())); }
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 }); });
public object GetOrderDetail(long id) { CheckUserLogin(); long shopid = CurrentShopBranch.ShopId; long sbid = CurrentUser.ShopBranchId; var ordser = ServiceProvider.Instance <IOrderService> .Create; Entities.OrderInfo order = ordser.GetOrder(id); if (order == null || order.ShopBranchId != sbid) { throw new HimallApiException("错误的订单编号"); } var bonusService = ServiceProvider.Instance <IShopBonusService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var shopService = ServiceProvider.Instance <IShopService> .Create; var productService = ServiceProvider.Instance <IProductService> .Create; var vshop = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(order.ShopId); var orderitems = OrderApplication.GetOrderItems(order.Id); bool isCanApply = false; //获取订单商品项数据 var orderDetail = new { ShopName = shopService.GetShop(order.ShopId).ShopName, ShopId = order.ShopId, OrderItems = orderitems.Select(item => { var productinfo = productService.GetProduct(item.ProductId); if (order.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitDelivery) { isCanApply = orderRefundService.CanApplyRefund(id, item.Id); } else { isCanApply = orderRefundService.CanApplyRefund(id, item.Id, false); } Entities.TypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.GetType(productinfo.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 (productinfo != null) { colorAlias = !string.IsNullOrWhiteSpace(productinfo.ColorAlias) ? productinfo.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(productinfo.SizeAlias) ? productinfo.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(productinfo.VersionAlias) ? productinfo.VersionAlias : versionAlias; } return(new { ItemId = item.Id, ProductId = item.ProductId, ProductName = item.ProductName, Count = item.Quantity, Price = item.SalePrice, //ProductImage = "http://" + Url.Request.RequestUri.Host + productService.GetProduct(item.ProductId).GetImage(ProductInfo.ImageSize.Size_100), ProductImage = Core.HimallIO.GetRomoteProductSizeImage(productService.GetProduct(item.ProductId).RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_100), color = item.Color, size = item.Size, version = item.Version, IsCanRefund = isCanApply, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias }); }) }; VirtualProductInfo virtualProductInfo = null; List <dynamic> codes = null; List <dynamic> virtualItems = null; int validityType = 0; string startDate = string.Empty, endDate = string.Empty; if (order.OrderType == OrderInfo.OrderTypes.Virtual && orderDetail.OrderItems != null) { virtualProductInfo = ProductManagerApplication.GetVirtualProductInfoByProductId(orderDetail.OrderItems.FirstOrDefault().ProductId); if (virtualProductInfo != null) { validityType = virtualProductInfo.ValidityType ? 1 : 0; if (validityType == 1) { startDate = virtualProductInfo.StartDate.Value.ToString("yyyy-MM-dd"); endDate = virtualProductInfo.EndDate.Value.ToString("yyyy-MM-dd"); } } var verificationCodes = OrderApplication.GetOrderVerificationCodeInfosByOrderIds(new List <long>() { order.Id }); if (verificationCodes != null) { verificationCodes.ForEach(a => { if (a.Status == OrderInfo.VerificationCodeStatus.WaitVerification || a.Status == OrderInfo.VerificationCodeStatus.Refund) { a.VerificationCode = System.Text.RegularExpressions.Regex.Replace(a.VerificationCode, "(\\d{4})\\d{4}(\\d{4})", "$1****$2"); } a.VerificationCode = System.Text.RegularExpressions.Regex.Replace(a.VerificationCode, @"(\d{4})", "$1 "); }); } codes = verificationCodes.Select(p => { return(new { VerificationCode = p.VerificationCode, Status = p.Status, StatusText = p.Status.ToDescription() }); }).ToList <dynamic>(); var virtualOrderItems = OrderApplication.GetVirtualOrderItemInfosByOrderId(order.Id); virtualItems = virtualOrderItems.Select(p => { return(new { VirtualProductItemName = p.VirtualProductItemName, VirtualProductItemType = p.VirtualProductItemType, Content = ReplaceImage(p.Content, p.VirtualProductItemType) }); }).ToList <dynamic>(); } var orderModel = new { Id = order.Id, OrderType = order.OrderType, OrderTypeName = order.OrderType.ToDescription(), Status = order.OrderStatus.ToDescription(), ShipTo = order.ShipTo, Phone = order.CellPhone, Address = order.RegionFullName + " " + order.Address, HasExpressStatus = !string.IsNullOrWhiteSpace(order.ShipOrderNumber), ExpressCompanyName = order.ExpressCompanyName, Freight = order.Freight, Tax = order.Tax, IntegralDiscount = order.IntegralDiscount, RealTotalAmount = order.OrderTotalAmount - order.RefundTotalAmount, CapitalAmount = order.CapitalAmount, RefundTotalAmount = order.RefundTotalAmount, ProductTotalAmount = order.ProductTotalAmount, OrderDate = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"), ShopName = order.ShopName, ShopBranchName = CurrentShopBranch.ShopBranchName, VShopId = vshop == null ? 0 : vshop.Id, commentCount = OrderApplication.GetOrderCommentCount(order.Id), ShopId = order.ShopId, orderStatus = (int)order.OrderStatus, //Invoice = order.InvoiceType.ToDescription(), //InvoiceValue = (int)order.InvoiceType, //InvoiceContext = order.InvoiceContext, //InvoiceTitle = order.InvoiceTitle, PaymentType = order.PaymentType.ToDescription(), PaymentTypeValue = (int)order.PaymentType, PaymentTypeDesc = order.PaymentTypeDesc, OrderPayAmount = order.OrderPayAmount, PaymentTypeName = PaymentApplication.GetPaymentTypeDescById(order.PaymentTypeGateway) ?? order.PaymentTypeName, FullDiscount = order.FullDiscount, DiscountAmount = order.DiscountAmount, OrderRemarks = order.OrderRemarks, DeliveryType = order.DeliveryType, //InvoiceCode = order.InvoiceCode, OrderInvoice = OrderApplication.GetOrderInvoiceInfo(order.Id) }; return(new { success = true, Order = orderModel, OrderItem = orderDetail.OrderItems, VerificationCodes = codes, VirtualOrderItems = virtualItems, StartDate = startDate, EndDate = endDate, ValidityType = validityType }); }
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 GetOrderDetail(long id) { CheckUserLogin(); OrderInfo order = ServiceProvider.Instance <IOrderService> .Create.GetOrder(id, CurrentUser.Id); var orderService = ServiceProvider.Instance <IOrderService> .Create; var bonusService = ServiceProvider.Instance <IShopBonusService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var bonusmodel = bonusService.GetGrantByUserOrder(id, CurrentUser.Id); bool hasBonus = bonusmodel != null ? true : false; string shareHref = ""; string shareTitle = ""; string shareDetail = ""; string shareImg = ""; if (hasBonus) { shareHref = CurrentUrlHelper.CurrentUrlNoPort() + "/m-weixin/shopbonus/index/" + bonusService.GetGrantIdByOrderId(id); var bonus = ShopBonusApplication.GetBonus(bonusmodel.ShopBonusId); shareTitle = bonus.ShareTitle; shareDetail = bonus.ShareDetail; shareImg = HimallIO.GetRomoteImagePath(bonus.ShareImg); } var vshop = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(order.ShopId); var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(order.ShopId); var shop = ShopApplication.GetShop(order.ShopId); var orderItems = OrderApplication.GetOrderItemsByOrderId(order.Id); var products = ProductManagerApplication.GetProducts(orderItems.Select(p => p.ProductId)); var refunds = OrderApplication.GetOrderRefundsByOrder(order.Id); //获取订单商品项数据 var orderDetail = new { ShopId = shop.Id, ShopName = shop.ShopName, OrderItems = orderItems.Select(item => { var product = products.FirstOrDefault(p => p.Id == item.ProductId); var typeInfo = TypeApplication.GetType(product.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 (product != null) { colorAlias = !string.IsNullOrWhiteSpace(product.ColorAlias) ? product.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(product.SizeAlias) ? product.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(product.VersionAlias) ? product.VersionAlias : versionAlias; } var itemrefund = refunds.FirstOrDefault(d => d.OrderItemId == item.Id && d.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund); int?itemrefstate = (itemrefund == null ? null : (int?)itemrefund.SellerAuditStatus); itemrefstate = (itemrefstate > 4 ? (int?)itemrefund.ManagerConfirmStatus : itemrefstate); var IsCanRefund = OrderApplication.CanRefund(order, itemrefstate, itemId: item.Id); return(new { ItemId = item.Id, ProductId = item.ProductId, ProductName = item.ProductName, Count = item.Quantity, Price = item.SalePrice, ProductImage = Core.HimallIO.GetRomoteProductSizeImage(product.RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_100), color = item.Color, size = item.Size, version = item.Version, IsCanRefund = IsCanRefund, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, EnabledRefundAmount = item.EnabledRefundAmount, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), RefundStats = itemrefstate }); }) }; //取拼团订单状态 var fightGroupOrderInfo = ServiceProvider.Instance <IFightGroupService> .Create.GetFightGroupOrderStatusByOrderId(order.Id); 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 hasAppendComment = ServiceProvider.Instance <ICommentService> .Create.HasAppendComment(orderItems.FirstOrDefault().Id); var orderModel = new { Id = order.Id, OrderType = order.OrderType, OrderTypeName = order.OrderType.ToDescription(), Status = order.OrderStatus.ToDescription(), JoinStatus = fightGroupOrderInfo == null ? -2 : fightGroupOrderInfo.JoinStatus, ShipTo = order.ShipTo, Phone = order.CellPhone, Address = order.RegionFullName + " " + order.Address, HasExpressStatus = !string.IsNullOrWhiteSpace(order.ShipOrderNumber), ExpressCompanyName = order.ExpressCompanyName, Freight = order.Freight, Tax = order.Tax, IntegralDiscount = order.IntegralDiscount, RealTotalAmount = order.OrderTotalAmount, CapitalAmount = order.CapitalAmount, RefundTotalAmount = order.RefundTotalAmount, ProductTotalAmount = order.ProductTotalAmount, OrderPayAmount = order.OrderPayAmount,//订单需要第三方支付的金额 PaymentTypeName = PaymentApplication.GetPaymentTypeDescById(order.PaymentTypeGateway) ?? order.PaymentTypeName, PaymentTypeDesc = order.PaymentTypeDesc, OrderDate = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"), ShopName = order.ShopName, VShopId = vshop == null ? 0 : vshop.Id, commentCount = OrderApplication.GetOrderCommentCount(order.Id), ShopId = order.ShopId, orderStatus = (int)order.OrderStatus, //Invoice = order.InvoiceType.ToDescription(), //InvoiceValue = (int)order.InvoiceType, //InvoiceContext = order.InvoiceContext, //InvoiceTitle = order.InvoiceTitle, //InvoiceCode = order.InvoiceCode, PaymentType = order.PaymentType.ToDescription(), PaymentTypeValue = (int)order.PaymentType, FullDiscount = order.FullDiscount, DiscountAmount = order.DiscountAmount, OrderRemarks = string.IsNullOrEmpty(order.OrderRemarks) ? "" : order.OrderRemarks, HasBonus = hasBonus, ShareHref = shareHref, ShareTitle = shareTitle, ShareDetail = shareDetail, ShareImg = shareImg, IsCanRefund = !(orderDetail.OrderItems.Any(e => e.IsCanRefund == true)) && OrderApplication.CanRefund(order, ordrefstate, null), RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id > 0 ? _ordrefobj.Id : 0, EnabledRefundAmount = order.OrderEnabledRefundAmount, HasAppendComment = hasAppendComment, SelfTake = order.DeliveryType == Himall.CommonModel.DeliveryType.SelfTake ? 1 : 0, OrderInvoice = OrderApplication.GetOrderInvoiceInfo(order.Id) }; #region 门店配送信息 Himall.DTO.ShopBranch storeInfo = null; if (order.ShopBranchId > 0) { storeInfo = ShopBranchApplication.GetShopBranchById(order.ShopBranchId); } #endregion #region 虚拟订单信息 VirtualProductInfo virtualProductInfo = null; int validityType = 0; string startDate = string.Empty, endDate = string.Empty; List <dynamic> orderVerificationCodes = null; List <dynamic> virtualOrderItemInfos = null; bool isCanRefundVirtual = false; if (order.OrderType == OrderInfo.OrderTypes.Virtual) { var orderItemInfo = orderItems.FirstOrDefault(); if (orderItemInfo != null) { virtualProductInfo = ProductManagerApplication.GetVirtualProductInfoByProductId(orderItemInfo.ProductId); if (virtualProductInfo != null) { validityType = virtualProductInfo.ValidityType ? 1 : 0; if (validityType == 1) { startDate = virtualProductInfo.StartDate.Value.ToString("yyyy-MM-dd"); endDate = virtualProductInfo.EndDate.Value.ToString("yyyy-MM-dd"); } } var codes = OrderApplication.GetOrderVerificationCodeInfosByOrderIds(new List <long>() { order.Id }); orderVerificationCodes = codes.Select(p => { return(new { VerificationCode = Regex.Replace(p.VerificationCode, @"(\d{4})", "$1 "), Status = p.Status, StatusText = p.Status.ToDescription(), QRCode = GetQRCode(p.VerificationCode) }); }).ToList <dynamic>(); var virtualItems = OrderApplication.GetVirtualOrderItemInfosByOrderId(order.Id); virtualOrderItemInfos = virtualItems.Select(p => { return(new { VirtualProductItemName = p.VirtualProductItemName, Content = ReplaceImage(p.Content, p.VirtualProductItemType), VirtualProductItemType = p.VirtualProductItemType }); }).ToList <dynamic>(); } } if (order.OrderStatus == Himall.Entities.OrderInfo.OrderOperateStatus.WaitVerification) { if (virtualProductInfo != null) { if (virtualProductInfo.SupportRefundType == 2) { isCanRefundVirtual = true; } else if (virtualProductInfo.SupportRefundType == 1) { if (virtualProductInfo.EndDate.Value > DateTime.Now) { isCanRefundVirtual = true; } } else if (virtualProductInfo.SupportRefundType == 3) { isCanRefundVirtual = false; } if (isCanRefundVirtual) { long num = orderVerificationCodes.Where(a => a.Status == OrderInfo.VerificationCodeStatus.WaitVerification).Count(); if (num > 0) { isCanRefundVirtual = true; } else { isCanRefundVirtual = false; } } } } #endregion #region 虚拟订单核销地址信息 string shipperAddress = string.Empty, shipperTelPhone = string.Empty; if (order.OrderType == OrderInfo.OrderTypes.Virtual) { if (order.ShopBranchId > 0 && storeInfo != null) { shipperAddress = RegionApplication.GetFullName(storeInfo.AddressId) + " " + storeInfo.AddressDetail; shipperTelPhone = storeInfo.ContactPhone; } else { var verificationShipper = ShopShippersApplication.GetDefaultVerificationShipper(order.ShopId); if (verificationShipper != null) { shipperAddress = RegionApplication.GetFullName(verificationShipper.RegionId) + " " + verificationShipper.Address; shipperTelPhone = verificationShipper.TelPhone; } } } #endregion return(new { success = true, Order = orderModel, OrderItem = orderDetail.OrderItems, StoreInfo = storeInfo, CustomerServices = customerServices, ValidityType = validityType, StartDate = startDate, EndDate = endDate, OrderVerificationCodes = orderVerificationCodes, VirtualOrderItemInfos = virtualOrderItemInfos, IsCanRefundVirtual = isCanRefundVirtual, ShipperAddress = shipperAddress, ShipperTelPhone = shipperTelPhone }); }