public ActionResult Index(int?status, int pageSize = 10, int pageNo = 1) { if (!status.HasValue) { status = 0; } CouponRecordQuery query = new CouponRecordQuery(); query.UserId = CurrentUser.Id; query.PageNo = pageNo; query.PageSize = pageSize; query.Status = status; var model = _iCouponService.GetCouponRecordList(query); var coupons = _iCouponService.GetCouponInfo(model.Models.Select(p => p.CouponId).ToArray()); var shopBonus = ShopBonusApplication.GetShopBouns(query); #region 分页控制 PagingInfo info = new PagingInfo { CurrentPage = pageNo, ItemsPerPage = pageSize, TotalItems = model.Total > shopBonus.Total ? model.Total : shopBonus.Total }; ViewBag.pageInfo = info; ViewBag.Bonus = shopBonus.Models; ViewBag.State = query.Status; ViewBag.Coupons = coupons; #endregion ViewBag.Keyword = string.IsNullOrWhiteSpace(SiteSettings.SearchKeyword) ? SiteSettings.Keyword : SiteSettings.SearchKeyword; ViewBag.Keywords = SiteSettings.HotKeyWords; return(View(model.Models.ToList())); }
/// <summary> /// 侧边我的资产 /// </summary> /// <returns></returns> public ActionResult MyAsset() { MyAssetViewModel result = new Models.MyAssetViewModel(); result.MyCouponCount = 0; result.isLogin = CurrentUser != null; ViewBag.isLogin = result.isLogin ? "true" : "false"; //用户积分 result.MyMemberIntegral = result.isLogin ? MemberIntegralApplication.GetAvailableIntegral(CurrentUser.Id) : 0; //关注商品 result.MyConcernsProducts = result.isLogin ? _iProductService.GetUserAllConcern(CurrentUser.Id, 10) : new List <Entities.FavoriteInfo>(); //优惠卷 var coupons = result.isLogin ? _iCouponService.GetAllUserCoupon(CurrentUser.Id).ToList() : new List <UserCouponInfo>(); coupons = coupons == null ? new List <UserCouponInfo>() : coupons; result.MyCoupons = coupons; result.MyCouponCount += result.MyCoupons.Count(); //红包 result.MyShopBonus = ShopBonusApplication.GetShopBounsByUser(CurrentUser.Id); result.MyCouponCount += result.MyShopBonus.Count(); //浏览的商品 var browsingPro = result.isLogin ? BrowseHistrory.GetBrowsingProducts(10, CurrentUser == null ? 0 : CurrentUser.Id) : new List <ProductBrowsedHistoryModel>(); result.MyBrowsingProducts = browsingPro; ViewBag.Keyword = SiteSettings.Keyword; return(View(result)); }
public ActionResult Management() { var service = _iCouponService; var vshop = _iVShopService; var userCouponList = service.GetUserCouponList(CurrentUser.Id); var shopBonus = ShopBonusApplication.GetShopBounsByUser(CurrentUser.Id); var couponlist = userCouponList.Select(a => new UserCouponInfo { UserId = a.UserId, ShopId = a.ShopId, CouponId = a.CouponId, Price = a.Price, PerMax = a.PerMax, OrderAmount = a.OrderAmount, Num = a.Num, StartTime = a.StartTime, EndTime = a.EndTime, CreateTime = a.CreateTime, CouponName = a.CouponName, UseStatus = a.UseStatus, UseTime = a.UseTime, VShop = vshop.GetVShopByShopId(a.ShopId), Remark = a.Remark, UseArea = a.UseArea }); int NoUseCount = couponlist.Count(item => (item.EndTime > DateTime.Now && item.UseStatus == Entities.CouponRecordInfo.CounponStatuses.Unuse)); int bonusNoUseCount = shopBonus.Count(p => p.Receive.State == Entities.ShopBonusReceiveInfo.ReceiveState.NotUse && p.Bonus.BonusDateEnd > DateTime.Now); ViewBag.NoUseCount = NoUseCount + bonusNoUseCount; ViewBag.UserCount = (userCouponList.Count() + shopBonus.Count()) - ViewBag.NoUseCount; ViewBag.ShopBonus = shopBonus; return(View(couponlist)); }
public object GetOrderBonus(string orderIds) { CheckUserLogin(); List <BonuModel> bonus = new List <BonuModel>(); string orderids = orderIds; string[] orderArray = orderids.Split(','); foreach (string item in orderArray) { long orderid = 0; if (long.TryParse(item, out orderid)) { var BonusInfo = ShopBonusApplication.GetGrantByUserOrder(orderid, CurrentUser.Id); if (BonusInfo != null) { BonuModel bonuObject = new BonuModel(); var info = ShopBonusApplication.GetBonus(BonusInfo.ShopBonusId); bonuObject.ShareHref = CurrentUrlHelper.CurrentUrlNoPort() + "/m-weixin/shopbonus/index/" + BonusInfo.Id; bonuObject.ShareCount = info.Count; bonuObject.ShareDetail = info.ShareDetail; bonuObject.ShareTitle = info.ShareTitle; bonuObject.ShopName = ShopApplication.GetShop(info.ShopId).ShopName; bonus.Add(bonuObject); } } } return(Json(bonus)); }
public JsonResult Coupon() { int memberIntegral = 0; List <Coupon> baseCoupons = new List <Coupon>(); long shopId = CurrentSellerManager != null ? CurrentSellerManager.ShopId : 0; if (CurrentUser != null) { memberIntegral = MemberIntegralApplication.GetMemberIntegral(CurrentUser.Id).AvailableIntegrals; //优惠卷 var coupons = CouponApplication.GetAllUserCoupon(CurrentUser.Id).ToList(); coupons = coupons == null ? new List <UserCouponInfo>() : coupons; if (coupons != null) { baseCoupons.AddRange(coupons.Select(p => new Coupon() { BasePrice = p.Price, BaseShopId = p.ShopId, BaseShopName = p.ShopName, BaseType = p.BaseType, OrderAmount = p.OrderAmount })); } //红包 var shopBonus = ShopBonusApplication.GetCanUseDetailByUserId(CurrentUser.Id); shopBonus = shopBonus == null ? new List <ShopBonusReceiveInfo>() : shopBonus; if (shopBonus != null) { baseCoupons.AddRange(shopBonus.Select(p => { var grant = _iShopBonusService.GetGrant(p.BonusGrantId); var bonus = _iShopBonusService.GetShopBonus(grant.ShopBonusId); var shop = ShopApplication.GetShop(bonus.ShopId); return(new Coupon() { BasePrice = p.Price, BaseShopId = shop.Id, BaseShopName = shop.ShopName, BaseType = p.BaseType, UseState = bonus.UseState, UsrStatePrice = bonus.UsrStatePrice }); })); } } return(Json(new { memberIntegral = memberIntegral, baseCoupons = baseCoupons, shopId = shopId }, true)); }
private List <ShopBonusReceiveInfo> GetBonusList() { return(ShopBonusApplication.GetDetailByUserId(CurrentUser.Id)); }
/// <summary> /// 页面缓存时间 /// </summary> // GET: Web/ProductPartial //[OutputCache(Duration = ConstValues.PAGE_CACHE_DURATION)] public ActionResult Header() { ViewBag.Now = DateTime.Now; bool isLogin = CurrentUser != null; var model = new ProductPartialHeaderModel(); model.PlatformCustomerServices = CustomerServiceApplication.GetPlatformCustomerService(true, false); model.isLogin = isLogin ? "true" : "false"; //用户积分 model.MemberIntegral = isLogin ? MemberIntegralApplication.GetAvailableIntegral(CurrentUser.Id) : 0; //关注商品 var user = CurrentUser?.Id ?? 0; var baseCoupons = new List <DisplayCoupon>(); //优惠卷 var usercoupons = _iCouponService.GetAllUserCoupon(user);//优惠卷 var coupons = CouponApplication.GetCouponInfo(usercoupons.Select(p => p.CouponId)); var shops = ShopApplication.GetShops(coupons.Select(p => p.ShopId)); var shopBonus = ShopBonusApplication.GetShopBounsByUser(user);//红包 baseCoupons.AddRange(usercoupons.Select(item => { var coupon = coupons.FirstOrDefault(p => p.Id == item.CouponId); var shop = shops.FirstOrDefault(p => p.Id == coupon.ShopId); return(new DisplayCoupon { Type = CommonModel.CouponType.Coupon, Limit = coupon.OrderAmount, Price = item.Price, ShopId = shop.Id, ShopName = shop.ShopName, EndTime = coupon.EndTime, }); })); baseCoupons.AddRange(shopBonus.Select(p => new DisplayCoupon { Type = CommonModel.CouponType.ShopBonus, EndTime = p.Bonus.DateEnd, Limit = p.Bonus.UsrStatePrice, Price = p.Receive.Price, ShopId = p.Shop.Id, ShopName = p.Shop.ShopName, UseState = p.Bonus.UseState })); model.BaseCoupon = baseCoupons; //广告 var imageAds = _iSlideAdsService.GetImageAds(0).Where(p => p.TypeId == Himall.CommonModel.ImageAdsType.HeadRightAds).ToList(); if (imageAds.Count > 0) { ViewBag.HeadAds = imageAds; } else { ViewBag.HeadAds = _iSlideAdsService.GetImageAds(0).Take(1).ToList(); } //浏览的商品 //var browsingPro = isLogin ? BrowseHistrory.GetBrowsingProducts(10, CurrentUser == null ? 0 : CurrentUser.Id) : new List<ProductBrowsedHistoryModel>(); //model.BrowsingProducts = browsingPro; InitHeaderData(); string html = System.IO.File.ReadAllText(this.Server.MapPath(_templateHeadHtmlFileFullName));//读取模板头部html静态文件内容 ViewBag.Html = html; return(PartialView("~/Areas/Web/Views/Shared/Header.cshtml", model)); }
public ActionResult ShopHeader(long id) { InitHeaderData(); #region 获取店铺的评价统计 var shopStatisticOrderComments = ServiceApplication.Create <IShopService>().GetShopStatisticOrderComments(id); var productAndDescription = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.ProductAndDescription).FirstOrDefault(); var sellerServiceAttitude = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerServiceAttitude).FirstOrDefault(); var sellerDeliverySpeed = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerDeliverySpeed).FirstOrDefault(); var productAndDescriptionPeer = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.ProductAndDescriptionPeer).FirstOrDefault(); var sellerServiceAttitudePeer = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerServiceAttitudePeer).FirstOrDefault(); var sellerDeliverySpeedPeer = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerDeliverySpeedPeer).FirstOrDefault(); var productAndDescriptionMax = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.ProductAndDescriptionMax).FirstOrDefault(); var productAndDescriptionMin = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.ProductAndDescriptionMin).FirstOrDefault(); var sellerServiceAttitudeMax = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerServiceAttitudeMax).FirstOrDefault(); var sellerServiceAttitudeMin = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerServiceAttitudeMin).FirstOrDefault(); var sellerDeliverySpeedMax = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerDeliverySpeedMax).FirstOrDefault(); var sellerDeliverySpeedMin = shopStatisticOrderComments.Where(c => c.CommentKey == Entities.StatisticOrderCommentInfo.EnumCommentKey.SellerDeliverySpeedMin).FirstOrDefault(); decimal defaultValue = 5; //宝贝与描述 if (productAndDescription != null && productAndDescriptionPeer != null) { ViewBag.ProductAndDescription = productAndDescription.CommentValue; ViewBag.ProductAndDescriptionPeer = productAndDescriptionPeer.CommentValue; ViewBag.ProductAndDescriptionMin = productAndDescriptionMin.CommentValue; ViewBag.ProductAndDescriptionMax = productAndDescriptionMax.CommentValue; } else { ViewBag.ProductAndDescription = defaultValue; ViewBag.ProductAndDescriptionPeer = defaultValue; ViewBag.ProductAndDescriptionMin = defaultValue; ViewBag.ProductAndDescriptionMax = defaultValue; } //卖家服务态度 if (sellerServiceAttitude != null && sellerServiceAttitudePeer != null) { ViewBag.SellerServiceAttitude = sellerServiceAttitude.CommentValue; ViewBag.SellerServiceAttitudePeer = sellerServiceAttitudePeer.CommentValue; ViewBag.SellerServiceAttitudeMax = sellerServiceAttitudeMax.CommentValue; ViewBag.SellerServiceAttitudeMin = sellerServiceAttitudeMin.CommentValue; } else { ViewBag.SellerServiceAttitude = defaultValue; ViewBag.SellerServiceAttitudePeer = defaultValue; ViewBag.SellerServiceAttitudeMax = defaultValue; ViewBag.SellerServiceAttitudeMin = defaultValue; } //卖家发货速度 if (sellerDeliverySpeedPeer != null && sellerDeliverySpeed != null) { ViewBag.SellerDeliverySpeed = sellerDeliverySpeed.CommentValue; ViewBag.SellerDeliverySpeedPeer = sellerDeliverySpeedPeer.CommentValue; ViewBag.SellerDeliverySpeedMax = sellerDeliverySpeedMax.CommentValue; ViewBag.sellerDeliverySpeedMin = sellerDeliverySpeedMin.CommentValue; } else { ViewBag.SellerDeliverySpeed = defaultValue; ViewBag.SellerDeliverySpeedPeer = defaultValue; ViewBag.SellerDeliverySpeedMax = defaultValue; ViewBag.sellerDeliverySpeedMin = defaultValue; } #endregion #region 微店二维码 var vshop = ServiceApplication.Create <IVShopService>().GetVShopByShopId(id); string vshopUrl = ""; var curUrl = CurrentUrlHelper.CurrentUrlNoPort(); if (vshop != null) { vshopUrl = curUrl + "/m-" + PlatformType.WeiXin.ToString() + "/vshop/detail/" + vshop.Id; ViewBag.VShopQR = CreateQR(vshop.StrLogo, vshopUrl); } else { vshopUrl = curUrl + "/m-" + PlatformType.WeiXin.ToString(); ViewBag.VShopQR = CreateQR(null, vshopUrl); } #endregion ViewBag.ShopName = ServiceApplication.Create <IShopService>().GetShop(id).ShopName; var user = CurrentUser?.Id ?? 0; bool isLogin = CurrentUser != null; var model = new ProductPartialHeaderModel(); model.ShopId = id; model.isLogin = isLogin ? "true" : "false"; //用户积分 model.MemberIntegral = isLogin ? MemberIntegralApplication.GetAvailableIntegral(CurrentUser.Id) : 0; var baseCoupons = new List <DisplayCoupon>(); //优惠卷 var usercoupons = _iCouponService.GetAllUserCoupon(user);//优惠卷 var coupons = CouponApplication.GetCouponInfo(usercoupons.Select(p => p.CouponId)); var shops = ShopApplication.GetShops(coupons.Select(p => p.ShopId)); var shopBonus = ShopBonusApplication.GetShopBounsByUser(user);//红包 baseCoupons.AddRange(usercoupons.Select(item => { var coupon = coupons.FirstOrDefault(p => p.Id == item.CouponId); var shop = shops.FirstOrDefault(p => p.Id == coupon.ShopId); return(new DisplayCoupon { Type = CommonModel.CouponType.Coupon, Limit = coupon.OrderAmount, Price = item.Price, ShopId = shop.Id, ShopName = shop.ShopName, EndTime = coupon.EndTime, }); })); baseCoupons.AddRange(shopBonus.Select(p => new DisplayCoupon { Type = CommonModel.CouponType.ShopBonus, EndTime = p.Bonus.DateEnd, Limit = p.Bonus.UsrStatePrice, Price = p.Receive.Price, ShopId = p.Shop.Id, ShopName = p.Shop.ShopName, UseState = p.Bonus.UseState })); model.BaseCoupon = baseCoupons; //浏览的商品 //var browsingPro = isLogin ? BrowseHistrory.GetBrowsingProducts(10, CurrentUser == null ? 0 : CurrentUser.Id) : new List<ProductBrowsedHistoryModel>(); //model.BrowsingProducts = browsingPro; InitHeaderData(); setTheme();//主题设置 ViewBag.Keyword = string.IsNullOrWhiteSpace(SiteSettings.SearchKeyword) ? SiteSettings.Keyword : SiteSettings.SearchKeyword; ViewBag.Keywords = SiteSettings.HotKeyWords; return(PartialView("~/Areas/Web/Views/Shared/ShopHeader.cshtml", model)); }
public object GetOrderDetail(long orderId) { CheckUserLogin(); var orderService = ServiceProvider.Instance <IOrderService> .Create; var order = orderService.GetOrder(orderId, CurrentUser.Id); var orderitems = orderService.GetOrderItemsByOrderId(order.Id); var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var productService = ServiceProvider.Instance <IProductService> .Create; var coupon = ServiceProvider.Instance <ICouponService> .Create.GetCouponRecordInfo(order.UserId, order.Id); string couponName = ""; decimal couponAmout = 0; if (coupon != null) { var c = CouponApplication.GetCouponInfo(coupon.CouponId); couponName = c.CouponName; couponAmout = c.Price; } //订单信息是否正常 if (order == null) { throw new MallException("订单号不存在!"); } dynamic expressTrace = new ExpandoObject(); //取订单物流信息 if (!string.IsNullOrWhiteSpace(order.ShipOrderNumber)) { var expressData = ServiceProvider.Instance <IExpressService> .Create.GetExpressData(order.ExpressCompanyName, order.ShipOrderNumber); if (expressData.Success) { expressData.ExpressDataItems = expressData.ExpressDataItems.OrderByDescending(item => item.Time);//按时间逆序排列 expressTrace.traces = expressData.ExpressDataItems.Select(item => new { acceptTime = item.Time.ToString("yyyy-MM-dd HH:mm:ss"), acceptStation = item.Content }); } } var orderRefunds = OrderApplication.GetOrderRefunds(orderitems.Select(p => p.Id)); var isCanOrderReturn = OrderApplication.CanRefund(order); //获取订单商品项数据 var orderDetail = new { ShopId = order.ShopId, EnabledRefundAmount = order.OrderEnabledRefundAmount, OrderItems = orderitems.Select(item => { var productinfo = productService.GetProduct(item.ProductId); 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; var itemStatusText = ""; var itemrefund = orderRefunds.Where(or => or.OrderItemId == item.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 = "退款成功"; } } 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; } long activeId = 0; int activetype = 0; var limitbuyser = ServiceProvider.Instance <ILimitTimeBuyService> .Create; var limitBuy = limitbuyser.GetLimitTimeMarketItemByProductId(item.ProductId); if (limitBuy != null) { //salePrice = limitBuy.MinPrice; activeId = limitBuy.Id; activetype = 1; } else { #region 限时购预热 var FlashSale = limitbuyser.IsFlashSaleDoesNotStarted(item.ProductId); var FlashSaleConfig = limitbuyser.GetConfig(); if (FlashSale != null) { TimeSpan flashSaleTime = DateTime.Parse(FlashSale.BeginDate) - DateTime.Now; //开始时间还剩多久 TimeSpan preheatTime = new TimeSpan(FlashSaleConfig.Preheat, 0, 0); //预热时间是多久 if (preheatTime >= flashSaleTime) //预热大于开始 { if (!FlashSaleConfig.IsNormalPurchase) { activeId = FlashSale.Id; activetype = 1; } } } #endregion } return(new { Status = itemrefstate, StatusText = itemStatusText, Id = item.Id, SkuId = item.SkuId, ProductId = item.ProductId, Name = item.ProductName, Amount = item.Quantity, Price = item.SalePrice, //ProductImage = "http://" + Url.Request.RequestUri.Host + productService.GetProduct(item.ProductId).GetImage(ProductInfo.ImageSize.Size_100), Image = Core.MallIO.GetRomoteProductSizeImage(productService.GetProduct(item.ProductId).RelativePath, 1, (int)Mall.CommonModel.ImageSize.Size_100), color = item.Color, size = item.Size, version = item.Version, IsCanRefund = OrderApplication.CanRefund(order, itemrefstate, itemId: item.Id), ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, SkuText = colorAlias + ":" + item.Color + ";" + sizeAlias + ":" + item.Size + ";" + versionAlias + ":" + item.Version, EnabledRefundAmount = item.EnabledRefundAmount, ActiveId = activeId, //活动Id ActiveType = activetype //活动类型(1代表限购,2代表团购,3代表商品预售,4代表限购预售,5代表团购预售) }); }) }; //取拼团订单状态 var fightGroupOrderInfo = ServiceProvider.Instance <IFightGroupService> .Create.GetFightGroupOrderStatusByOrderId(order.Id); #region 门店信息 var branchInfo = new ShopBranch(); if (order.ShopBranchId > 0) { branchInfo = ShopBranchApplication.GetShopBranchById(order.ShopBranchId); } else { branchInfo = null; } #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 == Mall.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 && branchInfo != null) { shipperAddress = RegionApplication.GetFullName(branchInfo.AddressId) + " " + branchInfo.AddressDetail; shipperTelPhone = branchInfo.ContactPhone; } else { var verificationShipper = ShopShippersApplication.GetDefaultVerificationShipper(order.ShopId); if (verificationShipper != null) { shipperAddress = RegionApplication.GetFullName(verificationShipper.RegionId) + " " + verificationShipper.Address; shipperTelPhone = verificationShipper.TelPhone; } } } #endregion var bonusmodel = ServiceProvider.Instance <IShopBonusService> .Create.GetGrantByUserOrder(orderId, CurrentUser.Id); bool hasBonus = bonusmodel != null ? true : false; string shareHref = ""; string shareTitle = ""; string shareDetail = ""; string shareImg = ""; if (hasBonus) { shareHref = "/m-weixin/ShopBonus/Index/" + ServiceProvider.Instance <IShopBonusService> .Create.GetGrantIdByOrderId(orderId); var bonus = ShopBonusApplication.GetBonus(bonusmodel.ShopBonusId); shareTitle = bonus.ShareTitle; shareDetail = bonus.ShareDetail; shareImg = MallIO.GetRomoteImagePath(bonus.ShareImg); } var orderModel = new { OrderId = order.Id, Status = (int)order.OrderStatus, StatusText = order.OrderStatus.ToDescription(), EnabledRefundAmount = order.OrderEnabledRefundAmount, OrderTotal = order.OrderTotalAmount, CapitalAmount = order.CapitalAmount, OrderAmount = order.ProductTotalAmount, DeductionPoints = 0, DeductionMoney = order.IntegralDiscount, //CouponAmount = couponAmout.ToString("F2"),//优惠劵金额 CouponAmount = order.DiscountAmount, //优惠劵金额 CouponName = couponName, //优惠劵名称 RefundAmount = order.RefundTotalAmount, Tax = order.Tax, AdjustedFreight = order.Freight, OrderDate = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"), ItemStatus = 0, ItemStatusText = "", ShipTo = order.ShipTo, ShipToDate = order.ShippingDate.HasValue ? order.ShippingDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", Cellphone = order.CellPhone, Address = order.DeliveryType == CommonModel.DeliveryType.SelfTake && branchInfo != null ? branchInfo.AddressFullName : (order.RegionFullName + " " + order.Address), FreightFreePromotionName = string.Empty, ReducedPromotionName = string.Empty, ReducedPromotionAmount = order.FullDiscount, SentTimesPointPromotionName = string.Empty, CanBackReturn = !string.IsNullOrWhiteSpace(order.PaymentTypeGateway), CanCashierReturn = false, PaymentType = order.PaymentType.ToDescription(), OrderPayAmount = order.OrderPayAmount,//订单需要第三方支付的金额 PaymentTypeName = PaymentApplication.GetPaymentTypeDescById(order.PaymentTypeGateway) ?? order.PaymentTypeName, PaymentTypeDesc = order.PaymentTypeDesc, Remark = string.IsNullOrEmpty(order.OrderRemarks) ? "" : order.OrderRemarks, //InvoiceTitle = order.InvoiceTitle, //Invoice = order.InvoiceType.ToDescription(), //InvoiceValue = (int)order.InvoiceType, //InvoiceContext = order.InvoiceContext, //InvoiceCode = order.InvoiceCode, ModeName = order.DeliveryType.ToDescription(), LogisticsData = expressTrace, TakeCode = order.PickupCode, LineItems = orderDetail.OrderItems, IsCanRefund = !(orderDetail.OrderItems.Any(e => e.IsCanRefund == true)) && OrderApplication.CanRefund(order, null, null), IsSelfTake = order.DeliveryType == Mall.CommonModel.DeliveryType.SelfTake ? 1 : 0, BranchInfo = branchInfo, DeliveryType = (int)order.DeliveryType, OrderInvoice = OrderApplication.GetOrderInvoiceInfo(order.Id), ValidityType = validityType, StartDate = startDate, EndDate = endDate, OrderVerificationCodes = orderVerificationCodes, VirtualOrderItemInfos = virtualOrderItemInfos, IsCanRefundVirtual = isCanRefundVirtual, ShipperAddress = shipperAddress, ShipperTelPhone = shipperTelPhone, OrderType = order.OrderType, JoinStatus = fightGroupOrderInfo == null ? -2 : fightGroupOrderInfo.JoinStatus, HasBonus = hasBonus, ShareHref = shareHref, ShareTitle = shareTitle, ShareDetail = shareDetail, ShareImg = shareImg, ShopName = order.ShopName }; return(Json(orderModel)); }
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 }); }