// GET: Mobile/Home public ActionResult Index(int ispv = 0, string tn = "") { string crrentTemplateName = "t1"; var curr = _iTemplateSettingsService.GetCurrentTemplate(0); if (null != curr) { crrentTemplateName = curr.CurrentTemplateName; } if (ispv == 1) { if (!string.IsNullOrWhiteSpace(tn)) { crrentTemplateName = tn; } } ViewBag.Title = SiteSettings.SiteName + "首页"; ViewBag.FootIndex = 0; var services = CustomerServiceApplication.GetPlatformCustomerService(true, true); ViewBag.CustomerServices = services; VTemplateHelper.DownloadTemplate(crrentTemplateName, VTemplateClientTypes.WapIndex, 0); return(View(string.Format("~/Areas/Admin/Templates/vshop/{0}/Skin-HomePage.cshtml", crrentTemplateName))); }
public ActionResult CustmerServices(long shopId) { var model = CustomerServiceApplication.GetAfterSaleByShopId(shopId).OrderBy(m => m.Tool).ToList(); ViewBag.Keyword = SiteSettings.Keyword; return(PartialView(model)); }
/// <summary> /// 获取平台客服信息 /// </summary> /// <returns></returns> public JsonResult GetPlatformCustomerService() { //List<CustomerService> result = CustomerServiceApplication.GetPlatformCustomerService(true, false).OrderBy(t => t.Tool); var result = CustomerServiceApplication.GetPlatformCustomerService(true, false).OrderByDescending(t => t.Tool); return(Json(result, true)); }
public ActionResult ShopCustomerServices(long shopId) { var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(shopId); //ViewBag.CustomerServices = customerServices; return(View("PlatCustomerServices", customerServices)); }
public ActionResult Detail(long id) { long? nullable; OrderDetailView view = OrderApplication.Detail(id, base.UserId, base.PlatformType, base.Request.Url.Host); ViewBag.Detail = view.Detail; ViewBag.Bonus = view.Bonus; ViewBag.ShareHref = view.ShareHref; ViewBag.IsRefundTimeOut = view.IsRefundTimeOut; ViewBag.Logo = base.CurrentSiteSetting.Logo; view.Order.FightGroupOrderJoinStatus = new FightGroupOrderJoinStatus?(view.FightGroupJoinStatus); view.Order.FightGroupCanRefund = new bool?(view.FightGroupCanRefund); List <CustomerService> mobileCustomerService = CustomerServiceApplication.GetMobileCustomerService(view.Order.ShopId); CustomerService item = CustomerServiceApplication.GetPreSaleByShopId(view.Order.ShopId).FirstOrDefault <CustomerService>(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (item != null) { mobileCustomerService.Insert(0, item); } ViewBag.CustomerServices = mobileCustomerService; if (view.Order.ShopBranchId.HasValue && (((nullable = view.Order.ShopBranchId).GetValueOrDefault() > 0L) && nullable.HasValue)) { ViewBag.ShopBranchInfo = ShopBranchApplication.GetShopBranchById(view.Order.ShopBranchId.Value); } return(base.View(view.Order)); }
/// <summary> /// 订单详细信息页面 /// </summary> /// <param name="id">订单Id</param> public ActionResult Detail(long id) { OrderDetailView view = OrderApplication.Detail(id, UserId, PlatformType, Request.Url.Host); ViewBag.Detail = view.Detail; ViewBag.Bonus = view.Bonus; ViewBag.ShareHref = view.ShareHref; ViewBag.IsRefundTimeOut = view.IsRefundTimeOut; ViewBag.Logo = CurrentSiteSetting.Logo; view.Order.FightGroupOrderJoinStatus = view.FightGroupJoinStatus; view.Order.FightGroupCanRefund = view.FightGroupCanRefund; var customerServices = CustomerServiceApplication.GetMobileCustomerService(view.Order.ShopId); var meiqia = CustomerServiceApplication.GetPreSaleByShopId(view.Order.ShopId).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { customerServices.Insert(0, meiqia); } ViewBag.CustomerServices = customerServices; #region 门店信息 if (view.Order.ShopBranchId.HasValue && view.Order.ShopBranchId > 0) { ViewBag.ShopBranchInfo = ShopBranchApplication.GetShopBranchById(view.Order.ShopBranchId.Value); } #endregion return(View(view.Order)); }
public ActionResult CustomerServicesEdit() { var css = CustomerServiceApplication.GetPlatformCustomerService(); var count = 3;//客服个数,可设计成从站点配置取 var models = new PlatformCustomerServiceModel[count]; for (int i = 0; i < css.Count; i++) { models[i] = new PlatformCustomerServiceModel(); css[i].Map(models[i]); } for (int i = css.Count; i < models.Length; i++) { models[i] = new PlatformCustomerServiceModel(); models[i].CreateId = Guid.NewGuid(); models[i].Tool = Entities.CustomerServiceInfo.ServiceTool.QQ; } if (!models.Any(p => p.Tool == Entities.CustomerServiceInfo.ServiceTool.MeiQia)) { models.First(p => p.Id == 0).Tool = Entities.CustomerServiceInfo.ServiceTool.MeiQia;//设置其中一个客服为美洽客服 } return(View(models)); }
/// <summary> /// 拼团活动详情 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Detail(long id) { FightGroupActiveModel data = FightGroupApplication.GetActive(id, false); if (data == null) { throw new HimallException("错误的活动信息"); } data.InitProductImages(); AutoMapper.Mapper.CreateMap <FightGroupActiveModel, FightGroupActiveDetailModel>(); FightGroupActiveDetailModel model = AutoMapper.Mapper.Map <FightGroupActiveDetailModel>(data); decimal discount = 1M; if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; } ViewBag.Discount = discount; var shopInfo = ShopApplication.GetShop(model.ShopId); ViewBag.IsSelf = shopInfo.IsSelf; //AutoMapper.Mapper.CreateMap<FightGroupActiveModel, FightGroupActiveResult>(); //var fightGroupData = AutoMapper.Mapper.Map<FightGroupActiveResult>(model); model.ShareUrl = string.Format("{0}/m-{1}/FightGroup/Detail/{2}", Request.Url.Authority, "WeiXin", data.Id); model.ShareTitle = data.ActiveStatus == FightGroupActiveStatus.WillStart ? "限时限量火拼 即将开始" : "限时限量火拼 正在进行"; model.ShareImage = data.ProductDefaultImage; if (!string.IsNullOrWhiteSpace(model.ShareImage)) { if (model.ShareImage.Substring(0, 4) != "http") { model.ShareImage = HimallIO.GetRomoteImagePath(model.ShareImage); } } model.ShareDesc = data.ProductName; if (!string.IsNullOrWhiteSpace(data.ProductShortDescription)) { model.ShareDesc += ",(" + data.ProductShortDescription + ")"; } if (model.ProductId.HasValue) { //统计商品浏览量、店铺浏览人数 StatisticApplication.StatisticVisitCount(model.ProductId.Value, model.ShopId); } var customerServices = CustomerServiceApplication.GetMobileCustomerService(model.ShopId); var meiqia = CustomerServiceApplication.GetPreSaleByShopId(model.ShopId).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { customerServices.Insert(0, meiqia); } ViewBag.CustomerServices = customerServices; return(View(model)); }
public ActionResult CustmerServices(long shopId) { //排除掉移动端的客服 var model = CustomerServiceApplication.GetPreSaleByShopId(shopId).Where(c => c.TerminalType == Entities.CustomerServiceInfo.ServiceTerminalType.PC).ToList(); ViewBag.Keyword = SiteSettings.Keyword; return(View(model)); }
// GET: Mobile/CustomerServices public ActionResult PlatCustomerServices() { var services = CustomerServiceApplication.GetPlatformCustomerService(true, true); //var meiqia = CustomerServiceApplication.GetPlatformCustomerService(true, false).FirstOrDefault(p => p.Tool == Entities.CustomerServiceInfo.ServiceTool.MeiQia); //if (meiqia != null) // services.Insert(0, meiqia); return(View(services)); }
public ActionResult CustmerServices(long shopId) { var model = CustomerServiceApplication.GetAfterSaleByShopId(shopId).GroupBy(p => p.Tool).Select(p => p.FirstOrDefault()).ToList(); var mqcs = CustomerServiceApplication.GetPreSaleByShopId(shopId).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (mqcs != null) { model.Insert(0, mqcs); } return(PartialView(model)); }
public ActionResult ShopCustomerServices(long shopId) { var customerServices = CustomerServiceApplication.GetMobileCustomerService(shopId); var meiqia = CustomerServiceApplication.GetPreSaleByShopId(shopId).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { customerServices.Insert(0, meiqia); } //ViewBag.CustomerServices = customerServices; return(View("PlatCustomerServices", customerServices)); }
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 ? _iMemberIntegralService.GetMemberIntegral(CurrentUser.Id).AvailableIntegrals : 0; //关注诊疗项目 //var concern = isLogin ? _iProductService.GetUserAllConcern(CurrentUser.Id) : new List<FavoriteInfo>(); //model.Concern = concern.Take(10).ToList(); List <IBaseCoupon> baseCoupons = new List <IBaseCoupon>(); //优惠卷 var coupons = isLogin ? _iCouponService.GetAllUserCoupon(CurrentUser.Id).ToList() : new List <UserCouponInfo>(); coupons = coupons == null ? new List <UserCouponInfo>() : coupons; baseCoupons.AddRange(coupons); //红包 var shopBonus = isLogin ? _iShopBonusService.GetCanUseDetailByUserId(CurrentUser.Id) : new List <ShopBonusReceiveInfo>(); shopBonus = shopBonus == null ? new List <ShopBonusReceiveInfo>() : shopBonus; baseCoupons.AddRange(shopBonus); 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(); return(PartialView("~/Areas/Web/Views/Shared/Header.cshtml", model)); }
public ActionResult Detail(long id) { FightGroupActiveModel source = FightGroupApplication.GetActive(id, false, true); if (source == null) { throw new HimallException("错误的活动信息"); } source.InitProductImages(); Mapper.CreateMap <FightGroupActiveModel, FightGroupActiveDetailModel>(); FightGroupActiveDetailModel model = Mapper.Map <FightGroupActiveDetailModel>(source); decimal memberDiscount = 1; if (base.CurrentUser != null) { memberDiscount = base.CurrentUser.MemberDiscount; } ((dynamic)base.ViewBag).Discount = memberDiscount; Shop shop = ShopApplication.GetShop(model.ShopId, false); ((dynamic)base.ViewBag).IsSelf = shop.IsSelf; model.ShareUrl = string.Format("{0}/m-{1}/FightGroup/Detail/{2}", CurrentUrlHelper.CurrentUrlNoPort(), "WeiXin", source.Id); model.ShareTitle = (source.ActiveStatus == FightGroupActiveStatus.WillStart) ? "限时限量火拼 即将开始" : "限时限量火拼 正在进行"; model.ShareImage = source.ProductDefaultImage; if (!string.IsNullOrWhiteSpace(model.ShareImage) && (model.ShareImage.Substring(0, 4) != "http")) { model.ShareImage = HimallIO.GetRomoteImagePath(model.ShareImage, null); } model.ShareDesc = source.ProductName; if (!string.IsNullOrWhiteSpace(source.ProductShortDescription)) { model.ShareDesc = model.ShareDesc + ",(" + source.ProductShortDescription + ")"; } if (model.ProductId.HasValue) { StatisticApplication.StatisticVisitCount(model.ProductId.Value, model.ShopId); } List <CustomerService> mobileCustomerService = CustomerServiceApplication.GetMobileCustomerService(model.ShopId); CustomerService item = CustomerServiceApplication.GetPreSaleByShopId(model.ShopId).FirstOrDefault <CustomerService>(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (item != null) { mobileCustomerService.Insert(0, item); } ((dynamic)base.ViewBag).CustomerServices = mobileCustomerService; return(base.View(model)); }
public ActionResult CustmerServices(long shopId) { var model = CustomerServiceApplication.GetAfterSaleByShopId(shopId).OrderBy(m => m.Tool).ToList(); //List<CustomerServiceInfo> info = new List<CustomerServiceInfo>(); //var qqGuid = Guid.NewGuid().ToString(); //var msnGuid = Guid.NewGuid().ToString(); //var qq = model.Where(a => a.Tool == CustomerServiceInfo.ServiceTool.QQ && a.Type == CustomerServiceInfo.ServiceType.PreSale).OrderBy(t => qqGuid).FirstOrDefault(); //var msn = model.Where(a => a.Tool == CustomerServiceInfo.ServiceTool.Wangwang && a.Type == CustomerServiceInfo.ServiceType.PreSale).OrderBy(t => msnGuid).FirstOrDefault(); //if (qq != null) //{ // info.Add(qq); //} //if (msn != null) //{ // info.Add(msn); //} return(PartialView(model)); }
// GET: Mobile/Home public ActionResult Index(int ispv = 0, string tn = "") { //Model.SlideAdInfo.SlideAdType slideAdType ; //switch(PlatformType) //{ // case Core.PlatformType.WeiXin: // slideAdType = Model.SlideAdInfo.SlideAdType.WeixinHome; // break; // default : // slideAdType = Model.SlideAdInfo.SlideAdType.WeixinHome;//暂时都调用微信端数据 // break; //} string crrentTemplateName = "t1"; var curr = _iTemplateSettingsService.GetCurrentTemplate(0); if (null != curr) { crrentTemplateName = curr.CurrentTemplateName; } if (ispv == 1) { if (!string.IsNullOrWhiteSpace(tn)) { crrentTemplateName = tn; } } Core.Log.Debug("crrentTemplateName=" + crrentTemplateName); ViewBag.Title = CurrentSiteSetting.SiteName + "首页"; ViewBag.FootIndex = 0; var services = CustomerServiceApplication.GetPlatformCustomerService(true, true); var meiqia = CustomerServiceApplication.GetPlatformCustomerService(true, false).FirstOrDefault(p => p.Tool == Model.CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { services.Insert(0, meiqia); } ViewBag.CustomerServices = services; return(View(string.Format("~/Areas/Admin/Templates/vshop/{0}/Skin-HomePage.cshtml", crrentTemplateName))); }
public JsonResult CustomerServicesEdit(PlatformCustomerServiceModel[] css) { var count = 3;//客服个数,可设计成从站点配置取 css = css.Where(p => !string.IsNullOrEmpty(p.Name) && !string.IsNullOrEmpty(p.AccountCode)).Take(count).ToArray(); foreach (var item in css) { item.ShopId = 0; if (!string.IsNullOrEmpty(item.Name)) { item.Name = item.Name.Trim(); } if (!string.IsNullOrEmpty(item.AccountCode)) { item.AccountCode = item.AccountCode.Trim(); } } var newIds = new Dictionary <Guid, long>(); if (css.Any(p => p.Id == 0)) { foreach (var item in css.Where(p => p.Id == 0)) { var newId = CustomerServiceApplication.AddPlateCustomerService(item.Map <CustomerService>()); newIds.Add(item.CreateId, newId); } } if (css.Any(p => p.Id > 0)) { Application.CustomerServiceApplication.UpdatePlatformService(css.Where(p => p.Id > 0)); } return(Json(new { Success = true, NewIds = newIds }, true)); }
/// <summary> /// 订单详细信息页面 /// </summary> /// <param name="id">订单Id</param> public ActionResult Detail(long id) { OrderDetailView view = OrderApplication.Detail(id, UserId, PlatformType, Request.Host.ToString()); ViewBag.Detail = view.Detail; ViewBag.Bonus = view.Bonus; ViewBag.ShareHref = view.ShareHref; ViewBag.IsRefundTimeOut = view.IsRefundTimeOut; ViewBag.Logo = SiteSettings.Logo; view.Order.FightGroupOrderJoinStatus = view.FightGroupJoinStatus; view.Order.FightGroupCanRefund = view.FightGroupCanRefund; var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(view.Order.ShopId); ViewBag.CustomerServices = customerServices; #region 门店信息 if (view.Order.ShopBranchId > 0) { ViewBag.ShopBranchInfo = ShopBranchApplication.GetShopBranchById(view.Order.ShopBranchId); } #endregion return(View(view.Order)); }
public object GetVShop(long id, bool sv = false) { var vshopService = ServiceProvider.Instance <IVShopService> .Create; var vshop = vshopService.GetVShop(id); //轮播图配置只有诊所微店首页配置页面可配置,现在移动端都读的这个数据 var slideImgs = ServiceProvider.Instance <ISlideAdsService> .Create.GetSlidAds(vshop.ShopId, SlideAdInfo.SlideAdType.VShopHome).ToList(); //首页诊疗项目现在只有诊所配置微信首页,APP读的也是这个数据所以平台类型选的的微信端 var homeProducts = ServiceProvider.Instance <IMobileHomeProductsService> .Create.GetMobileHomePageProducts(vshop.ShopId, Himall.Core.PlatformType.WeiXin).OrderBy(item => item.Sequence).ThenByDescending(o => o.Id).Take(8); var products = homeProducts.ToArray().Select(item => new ProductItem() { Id = item.ProductId, //ImageUrl = "http://" + Url.Request.RequestUri.Host + item.Himall_Products.GetImage(Model.ProductInfo.ImageSize.Size_350), ImageUrl = Core.HimallIO.GetRomoteProductSizeImage(item.Himall_Products.RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_350), Name = item.Himall_Products.ProductName, MarketPrice = item.Himall_Products.MarketPrice, SalePrice = item.Himall_Products.MinSalePrice }); var banner = ServiceProvider.Instance <INavigationService> .Create.GetSellerNavigations(vshop.ShopId, Core.PlatformType.WeiXin).ToList(); var couponInfo = GetCouponList(vshop.ShopId); //var SlideAds = slideImgs.ToArray().Select(item => new HomeSlideAdsModel() { ImageUrl = "http://" + Url.Request.RequestUri.Host + item.ImageUrl, Url = item.Url }); var SlideAds = slideImgs.ToArray().Select(item => new HomeSlideAdsModel() { ImageUrl = Core.HimallIO.GetRomoteImagePath(item.ImageUrl), Url = item.Url }); var Banner = banner; var Products = products; bool favoriteShop = false; if (CurrentUser != null) { favoriteShop = ServiceProvider.Instance <IShopService> .Create.IsFavoriteShop(CurrentUser.Id, vshop.ShopId); } string followUrl = ""; //快速关注 var vshopSetting = ServiceProvider.Instance <IVShopService> .Create.GetVShopSetting(vshop.ShopId); if (vshopSetting != null) { followUrl = vshopSetting.FollowUrl; } var model = new { Id = vshop.Id, //Logo = "http://" + Url.Request.RequestUri.Host + vshop.Logo, Logo = Core.HimallIO.GetRomoteImagePath(vshop.Logo), Name = vshop.Name, ShopId = vshop.ShopId, Favorite = favoriteShop, State = vshop.State, FollowUrl = followUrl }; // 客服 var customerServices = CustomerServiceApplication.GetMobileCustomerService(vshop.ShopId); var meiqia = CustomerServiceApplication.GetPreSaleByShopId(vshop.ShopId).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { customerServices.Insert(0, meiqia); } //统计访问量 if (!sv) { vshopService.LogVisit(id); //统计诊所访问人数 StatisticApplication.StatisticShopVisitUserCount(vshop.ShopId); } return(Json(new { Success = "True", VShop = model, SlideImgs = SlideAds, Products = products, Banner = banner, Coupon = couponInfo, CustomerServices = customerServices })); }
public ActionResult CustmerServices(long shopId) { var model = CustomerServiceApplication.GetAfterSaleByShopId(shopId).GroupBy(p => p.Tool).Select(p => p.FirstOrDefault()).ToList(); return(PartialView(model)); }
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 = ""; if (hasBonus) { shareHref = "http://" + HttpContext.Current.Request.Url.Host + "/m-weixin/shopbonus/index/" + bonusService.GetGrantIdByOrderId(id); shareTitle = bonusmodel.Himall_ShopBonus.ShareTitle; shareDetail = bonusmodel.Himall_ShopBonus.ShareDetail; } var shopService = ServiceProvider.Instance <IShopService> .Create; var productService = ServiceProvider.Instance <IProductService> .Create; var vshop = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(order.ShopId); bool isCanApply = false; var customerServices = CustomerServiceApplication.GetMobileCustomerService(order.ShopId); var meiqia = CustomerServiceApplication.GetPreSaleByShopId(order.ShopId).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { customerServices.Insert(0, meiqia); } //获取订单商品项数据 var orderDetail = new { ShopName = shopService.GetShop(order.ShopId).ShopName, ShopId = order.ShopId, OrderItems = order.OrderItemInfo.Select(item => { var productinfo = productService.GetProduct(item.ProductId); if (order.OrderStatus == OrderInfo.OrderOperateStatus.WaitDelivery) { isCanApply = orderRefundService.CanApplyRefund(id, item.Id); } else { isCanApply = orderRefundService.CanApplyRefund(id, item.Id, false); } ProductTypeInfo 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; 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, EnabledRefundAmount = item.EnabledRefundAmount, }); }) }; //取拼团订单状态 var fightGroupOrderInfo = ServiceProvider.Instance <IFightGroupService> .Create.GetFightGroupOrderStatusByOrderId(order.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, IntegralDiscount = order.IntegralDiscount, RealTotalAmount = order.OrderTotalAmount, RefundTotalAmount = order.RefundTotalAmount, OrderDate = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"), ShopName = order.ShopName, VShopId = vshop == null ? 0 : vshop.Id, commentCount = order.OrderCommentInfo.Count(), 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, FullDiscount = order.FullDiscount, DiscountAmount = order.DiscountAmount, OrderRemarks = string.IsNullOrEmpty(order.OrderRemarks) ? "" : order.OrderRemarks, HasBonus = hasBonus, ShareHref = shareHref, ShareTitle = shareTitle, ShareDetail = shareDetail, IsCanRefund = (orderDetail.OrderItems.Where(e => e.IsCanRefund == false).Count() == 0) && !orderService.IsRefundTimeOut(order.Id), EnabledRefundAmount = order.OrderEnabledRefundAmount, HasAppendComment = HasAppendComment(order), SelfTake = order.DeliveryType == Himall.CommonModel.Enum.DeliveryType.SelfTake ? 1 : 0 }; #region 门店配送信息 Himall.DTO.ShopBranch storeInfo = null; if (order.ShopBranchId.HasValue && order.ShopBranchId > 0) { storeInfo = Application.ShopBranchApplication.GetShopBranchById(order.ShopBranchId.Value); } #endregion return(Json(new { Success = "true", Order = orderModel, OrderItem = orderDetail.OrderItems, StoreInfo = storeInfo, CustomerServices = customerServices })); }
//APP首页配置共用于安卓和IOS,这里的平台类型写的为IOS,安卓调用首页接口数据时平台类型也选IOS public APPHome Get(int pageNo, int pageSize) { var slideImageSettings = ServiceProvider.Instance <ISlideAdsService> .Create.GetSlidAds(0, Entities.SlideAdInfo.SlideAdType.IOSShopHome); var images = ServiceProvider.Instance <ISlideAdsService> .Create.GetImageAds(0, Himall.CommonModel.ImageAdsType.APPSpecial).ToList(); var mhproser = ServiceProvider.Instance <IMobileHomeProductsService> .Create; var data = mhproser.GetMobileHomeProducts(0, PlatformType.IOS, pageNo, pageSize); var totalProducts = data.Total; var homeProducts = data.Models; decimal discount = 1M; if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; } var products = new List <HomeProduct>(); var limitService = ServiceProvider.Instance <ILimitTimeBuyService> .Create; var fight = FightGroupApplication.GetFightGroupPrice(); var allProducts = ProductManagerApplication.GetProducts(homeProducts.Select(p => p.ProductId)); var allShops = ShopApplication.GetShops(allProducts.Select(p => p.ShopId)); foreach (var item in homeProducts) { var limitBuy = limitService.GetLimitTimeMarketItemByProductId(item.ProductId); var product = allProducts.FirstOrDefault(p => p.Id == item.ProductId); var shop = allShops.FirstOrDefault(p => p.Id == product.ShopId); decimal minSalePrice = shop.IsSelf ? product.MinSalePrice * discount : product.MinSalePrice; if (limitBuy != null) { minSalePrice = limitBuy.MinPrice; //限时购不打折 } var isFight = fight.Where(r => r.ProductId == item.ProductId).FirstOrDefault(); long activeId = 0; if (isFight != null) { minSalePrice = isFight.ActivePrice; activeId = isFight.ActiveId; } products.Add(new HomeProduct() { Id = item.ProductId.ToString(), ImageUrl = HimallIO.GetRomoteProductSizeImage(product.RelativePath, 1, (int)CommonModel.ImageSize.Size_220), Name = product.ProductName, MarketPrice = product.MarketPrice.ToString(), SalePrice = minSalePrice.ToString("f2"), Discount = product.MarketPrice <= 0 ? "0" : (minSalePrice / product.MarketPrice).ToString("0.0"), Url = Core.HimallIO.GetRomoteImagePath("/m-ios/product/detail/" + item.ProductId), FightGroupId = activeId }); } var iconSettings = ServiceProvider.Instance <ISlideAdsService> .Create.GetSlidAds(0, Entities.SlideAdInfo.SlideAdType.APPIcon); var icon = iconSettings.ToArray().Select(item => new HomeSlides { Desc = item.Description, ImageUrl = Core.HimallIO.GetRomoteImagePath(item.ImageUrl), Url = item.Url }); var services = CustomerServiceApplication.GetPlatformCustomerService(true, true); //var meiqia = CustomerServiceApplication.GetPlatformCustomerService(true, false).FirstOrDefault(p => p.Tool == Entities.CustomerServiceInfo.ServiceTool.MeiQia); //if (meiqia != null) // services.Insert(0, meiqia); APPHome appHome = new APPHome(); appHome.success = true; //2017年9月1号 商城首页接口修改(把原广告图片的去掉,只保留商品) appHome.TotalProduct = totalProducts; appHome.Icon = icon; //appHome.Slide = slides;//轮播图数组 //appHome.Topic = homeImage;//专题数组 appHome.Product = products; appHome.CustomerServices = services; return(appHome); }
/// <summary> /// 拼团活动商品详情 /// </summary> /// <param name="id">拼团活动ID</param> /// /// <param name="grouId">团活动ID</param> /// <returns></returns> public JsonResult <Result <dynamic> > GetActiveDetail(long id, long grouId = 0, bool isFirst = true, string ids = "") { var userList = new List <FightGroupOrderInfo>(); var data = FightGroupApplication.GetActive(id, true, true); FightGroupActiveModel result = data; //先初始化拼团商品主图 result.InitProductImages(); var imgpath = data.ProductImgPath; if (result != null) { result.IsEnd = true; if (data.EndTime.Date >= DateTime.Now.Date) { result.IsEnd = false; } //商品图片地址修正 result.ProductDefaultImage = HimallIO.GetRomoteProductSizeImage(imgpath, 1, (int)ImageSize.Size_350); result.ProductImgPath = HimallIO.GetRomoteProductSizeImage(imgpath, 1); } if (result.ProductImages != null) {//将主图相对路径处理为绝对路径 result.ProductImages = result.ProductImages.Select(e => HimallIO.GetRomoteImagePath(e)).ToList(); } if (!string.IsNullOrWhiteSpace(result.IconUrl)) { result.IconUrl = Himall.Core.HimallIO.GetRomoteImagePath(result.IconUrl); } bool IsUserEnter = false; long currentUser = 0; if (CurrentUser != null) { currentUser = CurrentUser.Id; } if (grouId > 0)//获取已参团的用户 { userList = ServiceProvider.Instance <IFightGroupService> .Create.GetActiveUsers(id, grouId); foreach (var item in userList) { item.Photo = !string.IsNullOrWhiteSpace(item.Photo) ? Core.HimallIO.GetRomoteImagePath(item.Photo) : ""; item.HeadUserIcon = !string.IsNullOrWhiteSpace(item.HeadUserIcon) ? Core.HimallIO.GetRomoteImagePath(item.HeadUserIcon) : ""; if (currentUser.Equals(item.OrderUserId)) { IsUserEnter = true; } } } #region 商品规格 var product = ProductManagerApplication.GetProduct((long)result.ProductId); ProductShowSkuInfoModel model = new ProductShowSkuInfoModel(); model.MinSalePrice = data.MiniSalePrice; model.ProductImagePath = string.IsNullOrWhiteSpace(imgpath) ? "" : HimallIO.GetRomoteProductSizeImage(imgpath, 1, (int)Himall.CommonModel.ImageSize.Size_350); List <SKUDataModel> skudata = data.ActiveItems.Where(d => d.ActiveStock > 0).Select(d => new SKUDataModel { SkuId = d.SkuId, Color = d.Color, Size = d.Size, Version = d.Version, Stock = (int)d.ActiveStock, CostPrice = d.ProductCostPrice, SalePrice = d.ProductPrice, Price = d.ActivePrice, }).ToList(); Entities.TypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.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; } model.ColorAlias = colorAlias; model.SizeAlias = sizeAlias; model.VersionAlias = versionAlias; if (result.ActiveItems != null && result.ActiveItems.Count() > 0) { long colorId = 0, sizeId = 0, versionId = 0; var skus = ProductManagerApplication.GetSKUs((long)result.ProductId); foreach (var sku in result.ActiveItems) { var specs = sku.SkuId.Split('_'); if (specs.Count() > 0 && !string.IsNullOrEmpty(sku.Color)) { if (long.TryParse(specs[1], out colorId)) { } if (colorId != 0) { if (!model.Color.Any(v => v.Value.Equals(sku.Color))) { var c = result.ActiveItems.Where(s => s.Color.Equals(sku.Color)).Sum(s => s.ActiveStock); model.Color.Add(new ProductSKU { //Name = "选择颜色", Name = "选择" + colorAlias, EnabledClass = c != 0 ? " " : "disabled", //SelectedClass = !model.Color.Any(c1 => c1.SelectedClass.Equals("selected")) && c != 0 ? "selected" : "", SelectedClass = "", SkuId = colorId, Value = sku.Color, Img = string.IsNullOrWhiteSpace(sku.ShowPic) ? "" : Core.HimallIO.GetRomoteImagePath(sku.ShowPic) }); } } } if (specs.Count() > 1 && !string.IsNullOrEmpty(sku.Size)) { if (long.TryParse(specs[2], out sizeId)) { } if (sizeId != 0) { if (!model.Size.Any(v => v.Value.Equals(sku.Size))) { var ss = result.ActiveItems.Where(s => s.Size.Equals(sku.Size)).Sum(s1 => s1.ActiveStock); model.Size.Add(new ProductSKU { //Name = "选择尺码", Name = "选择" + sizeAlias, EnabledClass = ss != 0 ? "enabled" : "disabled", SelectedClass = "", SkuId = sizeId, Value = sku.Size }); } } } if (specs.Count() > 2 && !string.IsNullOrEmpty(sku.Version)) { if (long.TryParse(specs[3], out versionId)) { } if (versionId != 0) { if (!model.Version.Any(v => v.Value.Equals(sku.Version))) { var v = result.ActiveItems.Where(s => s.Version.Equals(sku.Version)).Sum(s => s.ActiveStock); model.Version.Add(new ProductSKU { //Name = "选择规格", Name = "选择" + versionAlias, EnabledClass = v != 0 ? "enabled" : "disabled", SelectedClass = "", SkuId = versionId, Value = sku.Version }); } } } } } #endregion var cashDepositModel = CashDepositsApplication.GetCashDepositsObligation((long)result.ProductId);//提供服务(消费者保障、七天无理由、及时发货) var GroupsData = new List <FightGroupsListModel>(); List <FightGroupBuildStatus> stlist = new List <FightGroupBuildStatus>(); stlist.Add(FightGroupBuildStatus.Ongoing); GroupsData = FightGroupApplication.GetGroups(id, stlist, null, null, 1, 10).Models.ToList(); foreach (var item in GroupsData) { TimeSpan mid = item.AddGroupTime.AddHours((double)item.LimitedHour) - DateTime.Now; item.Seconds = (int)mid.TotalSeconds; item.EndHourOrMinute = item.ShowHourOrMinute(item.GetEndHour); item.HeadUserIcon = !string.IsNullOrWhiteSpace(item.HeadUserIcon) ? Core.HimallIO.GetRomoteImagePath(item.HeadUserIcon) : ""; } #region 商品评论 ProductCommentShowModel modelSay = new ProductCommentShowModel(); modelSay.ProductId = (long)result.ProductId; var productSay = ProductManagerApplication.GetProduct((long)result.ProductId); modelSay.CommentList = new List <ProductDetailCommentModel>(); modelSay.IsShowColumnTitle = true; modelSay.IsShowCommentList = true; if (productSay == null) { //跳转到404页面 throw new Core.HimallException("商品不存在"); } var comments = CommentApplication.GetCommentsByProduct(product.Id); modelSay.CommentCount = comments.Count; if (comments.Count > 0) { var comment = comments.OrderByDescending(a => a.ReviewDate).FirstOrDefault(); var orderItem = OrderApplication.GetOrderItem(comment.SubOrderId); var order = OrderApplication.GetOrder(orderItem.OrderId); modelSay.CommentList = comments.OrderByDescending(a => a.ReviewDate) .Take(1) .Select(c => { var images = CommentApplication.GetProductCommentImagesByCommentIds(new List <long> { c.Id }); return(new ProductDetailCommentModel { Sku = ServiceProvider.Instance <IProductService> .Create.GetSkuString(orderItem.SkuId), UserName = c.UserName, ReviewContent = c.ReviewContent, AppendContent = c.AppendContent, AppendDate = c.AppendDate, ReplyAppendContent = c.ReplyAppendContent, ReplyAppendDate = c.ReplyAppendDate, FinshDate = order.FinishDate, Images = images.Where(a => a.CommentType == 0).Select(a => a.CommentImage).ToList(), AppendImages = images.Where(a => a.CommentType == 1).Select(a => a.CommentImage).ToList(), ReviewDate = c.ReviewDate, ReplyContent = string.IsNullOrWhiteSpace(c.ReplyContent) ? "暂无回复" : c.ReplyContent, ReplyDate = c.ReplyDate, ReviewMark = c.ReviewMark, BuyDate = order.OrderDate }); }).ToList(); foreach (var citem in modelSay.CommentList) { if (citem.Images.Count > 0) { for (var _imgn = 0; _imgn < citem.Images.Count; _imgn++) { citem.Images[_imgn] = Himall.Core.HimallIO.GetRomoteImagePath(citem.Images[_imgn]); } } if (citem.AppendImages.Count > 0) { for (var _imgn = 0; _imgn < citem.AppendImages.Count; _imgn++) { citem.AppendImages[_imgn] = Himall.Core.HimallIO.GetRomoteImagePath(citem.AppendImages[_imgn]); } } } } #endregion #region 店铺信息 VShopShowShopScoreModel modelShopScore = new VShopShowShopScoreModel(); modelShopScore.ShopId = result.ShopId; var shop = ServiceProvider.Instance <IShopService> .Create.GetShop(result.ShopId); if (shop == null) { throw new HimallException("错误的店铺信息"); } modelShopScore.ShopName = shop.ShopName; #region 获取店铺的评价统计 var shopStatisticOrderComments = ServiceProvider.Instance <IShopService> .Create.GetShopStatisticOrderComments(result.ShopId); 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; modelShopScore.SellerServiceAttitude = defaultValue; modelShopScore.SellerServiceAttitudePeer = defaultValue; modelShopScore.SellerServiceAttitudeMax = defaultValue; modelShopScore.SellerServiceAttitudeMin = defaultValue; //宝贝与描述 if (productAndDescription != null && productAndDescriptionPeer != null && !shop.IsSelf) { modelShopScore.ProductAndDescription = productAndDescription.CommentValue; modelShopScore.ProductAndDescriptionPeer = productAndDescriptionPeer.CommentValue; modelShopScore.ProductAndDescriptionMin = productAndDescriptionMin.CommentValue; modelShopScore.ProductAndDescriptionMax = productAndDescriptionMax.CommentValue; } else { modelShopScore.ProductAndDescription = defaultValue; modelShopScore.ProductAndDescriptionPeer = defaultValue; modelShopScore.ProductAndDescriptionMin = defaultValue; modelShopScore.ProductAndDescriptionMax = defaultValue; } //卖家服务态度 if (sellerServiceAttitude != null && sellerServiceAttitudePeer != null && !shop.IsSelf) { modelShopScore.SellerServiceAttitude = sellerServiceAttitude.CommentValue; modelShopScore.SellerServiceAttitudePeer = sellerServiceAttitudePeer.CommentValue; modelShopScore.SellerServiceAttitudeMax = sellerServiceAttitudeMax.CommentValue; modelShopScore.SellerServiceAttitudeMin = sellerServiceAttitudeMin.CommentValue; } else { modelShopScore.SellerServiceAttitude = defaultValue; modelShopScore.SellerServiceAttitudePeer = defaultValue; modelShopScore.SellerServiceAttitudeMax = defaultValue; modelShopScore.SellerServiceAttitudeMin = defaultValue; } //卖家发货速度 if (sellerDeliverySpeedPeer != null && sellerDeliverySpeed != null && !shop.IsSelf) { modelShopScore.SellerDeliverySpeed = sellerDeliverySpeed.CommentValue; modelShopScore.SellerDeliverySpeedPeer = sellerDeliverySpeedPeer.CommentValue; modelShopScore.SellerDeliverySpeedMax = sellerDeliverySpeedMax != null ? sellerDeliverySpeedMax.CommentValue : 0; modelShopScore.sellerDeliverySpeedMin = sellerDeliverySpeedMin != null ? sellerDeliverySpeedMin.CommentValue : 0; } else { modelShopScore.SellerDeliverySpeed = defaultValue; modelShopScore.SellerDeliverySpeedPeer = defaultValue; modelShopScore.SellerDeliverySpeedMax = defaultValue; modelShopScore.sellerDeliverySpeedMin = defaultValue; } #endregion modelShopScore.ProductNum = ServiceProvider.Instance <IProductService> .Create.GetShopOnsaleProducts(result.ShopId); modelShopScore.IsFavoriteShop = false; modelShopScore.FavoriteShopCount = ServiceProvider.Instance <IShopService> .Create.GetShopFavoritesCount(result.ShopId); if (CurrentUser != null) { modelShopScore.IsFavoriteShop = ServiceProvider.Instance <IShopService> .Create.GetFavoriteShopInfos(CurrentUser.Id).Any(d => d.ShopId == result.ShopId); } long vShopId; var vshopinfo = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(shop.Id); if (vshopinfo == null) { vShopId = -1; } else { vShopId = vshopinfo.Id; } modelShopScore.VShopId = vShopId; modelShopScore.VShopLog = ServiceProvider.Instance <IVShopService> .Create.GetVShopLog(vShopId); if (!string.IsNullOrWhiteSpace(modelShopScore.VShopLog)) { modelShopScore.VShopLog = Himall.Core.HimallIO.GetRomoteImagePath(modelShopScore.VShopLog); } // 客服 var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(shop.Id); #endregion #region 根据运费模板获取发货地址 var freightTemplateService = ServiceApplication.Create <IFreightTemplateService>(); var template = freightTemplateService.GetFreightTemplate(product.FreightTemplateId); string productAddress = string.Empty; if (template != null) { var fullName = ServiceApplication.Create <IRegionService>().GetFullName(template.SourceAddress); if (fullName != null) { var ass = fullName.Split(' '); if (ass.Length >= 2) { productAddress = ass[0] + " " + ass[1]; } else { productAddress = ass[0]; } } } var ProductAddress = productAddress; var FreightTemplate = template; #endregion #region 获取店铺优惠信息 VShopShowPromotionModel modelVshop = new VShopShowPromotionModel(); modelVshop.ShopId = result.ShopId; var shopInfo = ServiceProvider.Instance <IShopService> .Create.GetShop(result.ShopId); if (shopInfo == null) { throw new HimallException("错误的店铺编号"); } modelVshop.FreeFreight = shop.FreeFreight; var bonus = ServiceApplication.Create <IShopBonusService>().GetByShopId(result.ShopId); if (bonus != null) { modelVshop.BonusCount = bonus.Count; modelVshop.BonusGrantPrice = bonus.GrantPrice; modelVshop.BonusRandomAmountStart = bonus.RandomAmountStart; modelVshop.BonusRandomAmountEnd = bonus.RandomAmountEnd; } FullDiscountActive fullDiscount = null; //var fullDiscount = FullDiscountApplication.GetOngoingActiveByProductId(id, shop.Id); #endregion //商品描述 var description = ProductManagerApplication.GetProductDescription(result.ProductId); if (description == null) { throw new HimallException("错误的商品编号"); } string DescriptionPrefix = "", DescriptiondSuffix = ""; var iprodestempser = ServiceApplication.Create <IProductDescriptionTemplateService>(); if (description.DescriptionPrefixId != 0) { var desc = iprodestempser.GetTemplate(description.DescriptionPrefixId, product.ShopId); DescriptionPrefix = desc == null ? "" : desc.MobileContent; } if (description.DescriptiondSuffixId != 0) { var desc = iprodestempser.GetTemplate(description.DescriptiondSuffixId, product.ShopId); DescriptiondSuffix = desc == null ? "" : desc.MobileContent; } var productDescription = DescriptionPrefix + description.ShowMobileDescription + DescriptiondSuffix; //统计商品浏览量、店铺浏览人数 StatisticApplication.StatisticVisitCount(product.Id, product.ShopId); AutoMapper.Mapper.CreateMap <FightGroupActiveModel, FightGroupActiveResult>(); var fightGroupData = AutoMapper.Mapper.Map <FightGroupActiveResult>(result); decimal discount = 1M; if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; } var shopItem = ShopApplication.GetShop(result.ShopId); fightGroupData.MiniSalePrice = shopItem.IsSelf ? fightGroupData.MiniSalePrice * discount : fightGroupData.MiniSalePrice; string loadShowPrice = string.Empty;//app拼团详细页加载时显示的区间价 loadShowPrice = fightGroupData.MiniSalePrice.ToString("f2"); if (fightGroupData != null && fightGroupData.ActiveItems.Count() > 0) { decimal min = fightGroupData.ActiveItems.Min(s => s.ActivePrice); decimal max = fightGroupData.ActiveItems.Max(s => s.ActivePrice); loadShowPrice = (min < max) ? (min.ToString("f2") + " - " + max.ToString("f2")) : min.ToString("f2"); } var _result = new { success = true, FightGroupData = fightGroupData, ShowSkuInfo = new { ColorAlias = model.ColorAlias, SizeAlias = model.SizeAlias, VersionAlias = model.VersionAlias, MinSalePrice = model.MinSalePrice, ProductImagePath = model.ProductImagePath, Color = model.Color.OrderByDescending(p => p.SkuId), Size = model.Size.OrderByDescending(p => p.SkuId), Version = model.Version.OrderByDescending(p => p.SkuId) }, ShowPromotion = modelVshop, fullDiscount = fullDiscount, ShowNewCanJoinGroup = GroupsData, ProductCommentShow = modelSay, ProductDescription = productDescription.Replace("src=\"/Storage/", "src=\"" + Core.HimallIO.GetRomoteImagePath("/Storage") + "/"), ShopScore = modelShopScore, CashDepositsServer = cashDepositModel, ProductAddress = ProductAddress, //Free = FreightTemplate.IsFree == FreightTemplateType.Free ? "免运费" : "", userList = userList, IsUserEnter = IsUserEnter, SkuData = skudata, CustomerServices = customerServices, IsOpenLadder = product.IsOpenLadder, VideoPath = string.IsNullOrWhiteSpace(product.VideoPath) ? string.Empty : Himall.Core.HimallIO.GetRomoteImagePath(product.VideoPath), LoadShowPrice = loadShowPrice, //商品时区间价 ProductSaleCountOnOff = (SiteSettingApplication.SiteSettings.ProductSaleCountOnOff == 1), //是否显示销量 SaleCounts = data.ActiveItems.Sum(d => d.BuyCount), //销量 FreightStr = FreightTemplateApplication.GetFreightStr(product.Id, FreightTemplate, CurrentUser, product), //运费多少或免运费 SendTime = (FreightTemplate != null && !string.IsNullOrEmpty(FreightTemplate.SendTime) ? (FreightTemplate.SendTime + "h内发货") : ""), //运费模板发货时间 }; return(JsonResult <dynamic>(_result)); }
public object GetProductDetail(long id) { ProductDetailModelForMobie model = new ProductDetailModelForMobie() { Product = new ProductInfoModel(), Shop = new ShopInfoModel(), Color = new CollectionSKU(), Size = new CollectionSKU(), Version = new CollectionSKU() }; ProductInfo product = null; ShopInfo shop = null; product = ServiceProvider.Instance <IProductService> .Create.GetProduct(id); var cashDepositModel = ServiceProvider.Instance <ICashDepositsService> .Create.GetCashDepositsObligation(product.Id);//提供服务(消费者保障、七天无理由、及时发货) model.CashDepositsServer = cashDepositModel; #region 根据运费模板获取发货地址 var freightTemplateService = ServiceHelper.Create <IFreightTemplateService>(); FreightTemplateInfo template = freightTemplateService.GetFreightTemplate(product.FreightTemplateId); string productAddress = string.Empty; if (template != null && template.SourceAddress.HasValue) { var fullName = ServiceHelper.Create <IRegionService>().GetFullName(template.SourceAddress.Value); if (fullName != null) { var ass = fullName.Split(' '); if (ass.Length >= 2) { productAddress = ass[0] + " " + ass[1]; } else { productAddress = ass[0]; } } } model.ProductAddress = productAddress; model.FreightTemplate = template; #endregion #region 店铺Logo long vShopId; shop = ServiceProvider.Instance <IShopService> .Create.GetShop(product.ShopId); var vshopinfo = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(shop.Id); if (vshopinfo == null) { vShopId = -1; } else { vShopId = vshopinfo.Id; } model.Shop.VShopId = vShopId; model.VShopLog = ServiceProvider.Instance <IVShopService> .Create.GetVShopLog(model.Shop.VShopId); #endregion model.Shop.FavoriteShopCount = ServiceProvider.Instance <IShopService> .Create.GetShopFavoritesCount(product.ShopId);//关注人数 var com = product.Himall_ProductComments.Where(item => !item.IsHidden.HasValue || item.IsHidden.Value == false); var limitBuy = ServiceProvider.Instance <ILimitTimeBuyService> .Create.GetLimitTimeMarketItemByProductId(id); #region 商品SKU ProductTypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.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 (limitBuy != null) { var limitSku = ServiceProvider.Instance <ILimitTimeBuyService> .Create.Get(limitBuy.Id); var limitSkuItem = limitSku.Details.OrderBy(d => d.Price).FirstOrDefault(); if (limitSkuItem != null) { product.MinSalePrice = limitSkuItem.Price; } } if (product.SKUInfo != null && product.SKUInfo.Count() > 0) { long colorId = 0, sizeId = 0, versionId = 0; foreach (var sku in product.SKUInfo) { var specs = sku.Id.Split('_'); if (specs.Count() > 0) { if (long.TryParse(specs[1], out colorId)) { } if (colorId != 0) { if (!model.Color.Any(v => v.Value.Equals(sku.Color))) { var c = product.SKUInfo.Where(s => s.Color.Equals(sku.Color)).Sum(s => s.Stock); model.Color.Add(new ProductSKU { //Name = "选择颜色", Name = "选择" + colorAlias, EnabledClass = c != 0 ? "enabled" : "disabled", //SelectedClass = !model.Color.Any(c1 => c1.SelectedClass.Equals("selected")) && c != 0 ? "selected" : "", SelectedClass = "", SkuId = colorId, Value = sku.Color, Img = Himall.Core.HimallIO.GetRomoteImagePath(sku.ShowPic) }); } } } if (specs.Count() > 1) { if (long.TryParse(specs[2], out sizeId)) { } if (sizeId != 0) { if (!model.Size.Any(v => v.Value.Equals(sku.Size))) { var ss = product.SKUInfo.Where(s => s.Size.Equals(sku.Size)).Sum(s1 => s1.Stock); model.Size.Add(new ProductSKU { //Name = "选择尺码", Name = "选择" + sizeAlias, EnabledClass = ss != 0 ? "enabled" : "disabled", //SelectedClass = !model.Size.Any(s1 => s1.SelectedClass.Equals("selected")) && ss != 0 ? "selected" : "", SelectedClass = "", SkuId = sizeId, Value = sku.Size }); } } } if (specs.Count() > 2) { if (long.TryParse(specs[3], out versionId)) { } if (versionId != 0) { if (!model.Version.Any(v => v.Value.Equals(sku.Version))) { var v = product.SKUInfo.Where(s => s.Version.Equals(sku.Version)).Sum(s => s.Stock); model.Version.Add(new ProductSKU { //Name = "选择版本", Name = "选择" + versionAlias, EnabledClass = v != 0 ? "enabled" : "disabled", //SelectedClass = !model.Version.Any(v1 => v1.SelectedClass.Equals("selected")) && v != 0 ? "selected" : "", SelectedClass = "", SkuId = versionId, Value = sku.Version }); } } } } } #endregion #region 店铺 shop = ServiceProvider.Instance <IShopService> .Create.GetShop(product.ShopId); var mark = ShopServiceMark.GetShopComprehensiveMark(shop.Id); model.Shop.PackMark = mark.PackMark; model.Shop.ServiceMark = mark.ServiceMark; model.Shop.ComprehensiveMark = mark.ComprehensiveMark; var comm = ServiceProvider.Instance <ICommentService> .Create.GetCommentsByProductId(id); model.Shop.Name = shop.ShopName; model.Shop.ProductMark = (comm == null || comm.Count() == 0) ? 0 : comm.Average(p => (decimal)p.ReviewMark); model.Shop.Id = product.ShopId; model.Shop.FreeFreight = shop.FreeFreight; model.Shop.ProductNum = ServiceProvider.Instance <IProductService> .Create.GetShopOnsaleProducts(product.ShopId); var shopStatisticOrderComments = ServiceProvider.Instance <IShopService> .Create.GetShopStatisticOrderComments(product.ShopId); var productAndDescription = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.ProductAndDescription).FirstOrDefault(); var sellerServiceAttitude = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerServiceAttitude).FirstOrDefault(); var sellerDeliverySpeed = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerDeliverySpeed).FirstOrDefault(); var productAndDescriptionPeer = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.ProductAndDescriptionPeer).FirstOrDefault(); var sellerServiceAttitudePeer = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerServiceAttitudePeer).FirstOrDefault(); var sellerDeliverySpeedPeer = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerDeliverySpeedPeer).FirstOrDefault(); var productAndDescriptionMax = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.ProductAndDescriptionMax).FirstOrDefault(); var productAndDescriptionMin = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.ProductAndDescriptionMin).FirstOrDefault(); var sellerServiceAttitudeMax = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerServiceAttitudeMax).FirstOrDefault(); var sellerServiceAttitudeMin = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerServiceAttitudeMin).FirstOrDefault(); var sellerDeliverySpeedMax = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerDeliverySpeedMax).FirstOrDefault(); var sellerDeliverySpeedMin = shopStatisticOrderComments.Where(c => c.CommentKey == StatisticOrderCommentsInfo.EnumCommentKey.SellerDeliverySpeedMin).FirstOrDefault(); decimal defaultValue = 5; //宝贝与描述 if (productAndDescription != null && productAndDescriptionPeer != null) { model.Shop.ProductAndDescription = productAndDescription.CommentValue; } else { model.Shop.ProductAndDescription = defaultValue; } //卖家服务态度 if (sellerServiceAttitude != null && sellerServiceAttitudePeer != null) { model.Shop.SellerServiceAttitude = sellerServiceAttitude.CommentValue; } else { model.Shop.SellerServiceAttitude = defaultValue; } //卖家发货速度 if (sellerDeliverySpeedPeer != null && sellerDeliverySpeed != null) { model.Shop.SellerDeliverySpeed = sellerDeliverySpeed.CommentValue; } else { model.Shop.SellerDeliverySpeed = defaultValue; } if (ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(shop.Id) == null) { model.Shop.VShopId = -1; } else { model.Shop.VShopId = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(shop.Id).Id; } //优惠券 var couponCount = GetCouponList(shop.Id);//取设置的优惠券 if (couponCount > 0) { model.Shop.CouponCount = couponCount; } // 客服 var customerServices = CustomerServiceApplication.GetMobileCustomerService(shop.Id); var meiqia = CustomerServiceApplication.GetPreSaleByShopId(shop.Id).FirstOrDefault(p => p.Tool == CustomerServiceInfo.ServiceTool.MeiQia); if (meiqia != null) { customerServices.Insert(0, meiqia); } #endregion #region 商品 var consultations = ServiceProvider.Instance <IConsultationService> .Create.GetConsultations(id); double total = product.Himall_ProductComments.Count(); double niceTotal = product.Himall_ProductComments.Count(item => item.ReviewMark >= 4); bool isFavorite = false; bool IsFavoriteShop = false; decimal discount = 1M; if (CurrentUser == null) { isFavorite = false; IsFavoriteShop = false; } else { isFavorite = ServiceProvider.Instance <IProductService> .Create.IsFavorite(product.Id, CurrentUser.Id); var favoriteShopIds = ServiceProvider.Instance <IShopService> .Create.GetFavoriteShopInfos(CurrentUser.Id).Select(item => item.ShopId).ToArray();//获取已关注店铺 IsFavoriteShop = favoriteShopIds.Contains(product.ShopId); discount = CurrentUser.MemberDiscount; } var productImage = new List <string>(); for (int i = 1; i < 6; i++) { if (Core.HimallIO.ExistFile(product.RelativePath + string.Format("/{0}.png", i))) { var path = Core.HimallIO.GetRomoteProductSizeImage(product.RelativePath, i, (int)Himall.CommonModel.ImageSize.Size_350); productImage.Add(path); } } //File.Exists(HttpContext.Current.Server.MapPath(product.ImagePath + string.Format("/{0}.png", 1))); decimal minSalePrice = shop.IsSelf ? product.MinSalePrice * discount : product.MinSalePrice; var isValidLimitBuy = "false"; if (limitBuy != null) { isValidLimitBuy = "true"; minSalePrice = limitBuy.MinPrice; //限时购不打折 } bool isFightGroupActive = false; var activeInfo = ServiceProvider.Instance <IFightGroupService> .Create.GetActiveByProId(product.Id); if (activeInfo != null && activeInfo.ActiveStatus > FightGroupActiveStatus.Ending) { isFightGroupActive = true; } model.Product = new ProductInfoModel() { ProductId = product.Id, CommentCount = com.Count(),//product.Himall_ProductComments.Count(), Consultations = consultations.Count(), ImagePath = productImage, IsFavorite = isFavorite, MarketPrice = product.MarketPrice, MinSalePrice = minSalePrice, NicePercent = model.Shop.ProductMark == 0 ? 100 : (int)((niceTotal / total) * 100), ProductName = product.ProductName, ProductSaleStatus = product.SaleStatus, AuditStatus = product.AuditStatus, ShortDescription = product.ShortDescription, ProductDescription = GetProductDescription(product.ProductDescriptionInfo), IsOnLimitBuy = limitBuy != null }; #endregion #region 佣金 var probroker = DistributionApplication.GetDistributionProductInfo(id); var IsDistribution = false; decimal Brokerage = 0; if (probroker != null) { IsDistribution = true; Brokerage = probroker.Commission; } #endregion #region 代金红包 var bonus = ServiceProvider.Instance <IShopBonusService> .Create.GetByShopId(shop.Id); int BonusCount = 0; decimal BonusGrantPrice = 0; decimal BonusRandomAmountStart = 0; decimal BonusRandomAmountEnd = 0; if (bonus != null) { BonusCount = bonus.Count; BonusGrantPrice = bonus.GrantPrice; BonusRandomAmountStart = bonus.RandomAmountStart; BonusRandomAmountEnd = bonus.RandomAmountEnd; } var fullDiscount = FullDiscountApplication.GetOngoingActiveByProductId(id, shop.Id); #endregion LogProduct(id); //统计商品浏览量、店铺浏览人数 StatisticApplication.StatisticVisitCount(product.Id, product.ShopId); var IsPromoter = false; if (CurrentUser != null && CurrentUser.Id > 0) { var prom = DistributionApplication.GetPromoterByUserId(CurrentUser.Id); if (prom != null && prom.Status == PromoterInfo.PromoterStatus.Audited) { IsPromoter = true; } } return(Json(new { Success = "true", IsOnLimitBuy = isValidLimitBuy, IsFightGroupActive = isFightGroupActive, ActiveId = isFightGroupActive ? activeInfo.Id : 0, ActiveStatus = activeInfo != null ? activeInfo.ActiveStatus.GetHashCode() : 0, MaxSaleCount = limitBuy == null ? 0 : limitBuy.LimitCountOfThePeople, Title = limitBuy == null ? string.Empty : limitBuy.Title, Second = limitBuy == null ? 0 : (limitBuy.EndDate - DateTime.Now).TotalSeconds, Product = model.Product, CashDepositsServer = model.CashDepositsServer, //提供服务(消费者保障、七天无理由、及时发货) ProductAddress = model.ProductAddress, //发货地址 Free = model.FreightTemplate.IsFree == FreightTemplateType.Free ? "免运费" : "", //是否免运费 VShopLog = Himall.Core.HimallIO.GetRomoteImagePath(model.VShopLog), Shop = model.Shop, IsFavoriteShop = IsFavoriteShop, Color = model.Color, Size = model.Size, Version = model.Version, BonusCount = BonusCount, BonusGrantPrice = BonusGrantPrice, BonusRandomAmountStart = BonusRandomAmountStart, BonusRandomAmountEnd = BonusRandomAmountEnd, fullDiscount = fullDiscount, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, IsDistribution = IsDistribution, Brokerage = Brokerage.ToString("f2"), IsPromoter = IsPromoter, userId = CurrentUser == null ? 0 : CurrentUser.Id, IsOpenStore = SiteSettingApplication.GetSiteSettings() != null && SiteSettingApplication.GetSiteSettings().IsOpenStore, CustomerServices = customerServices })); }
/// <summary> /// 拼团活动详情 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Detail(long id) { FightGroupActiveModel data = FightGroupApplication.GetActive(id, false); if (data == null) { throw new HimallException("错误的活动信息"); } data.InitProductImages(); AutoMapper.Mapper.CreateMap <FightGroupActiveModel, FightGroupActiveDetailModel>(); FightGroupActiveDetailModel model = AutoMapper.Mapper.Map <FightGroupActiveDetailModel>(data); decimal discount = 1M; if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; } ViewBag.Discount = discount; var shopInfo = ShopApplication.GetShop(model.ShopId); ViewBag.IsSelf = shopInfo.IsSelf; //AutoMapper.Mapper.CreateMap<FightGroupActiveModel, FightGroupActiveResult>(); //var fightGroupData = AutoMapper.Mapper.Map<FightGroupActiveResult>(model); model.ShareUrl = string.Format("{0}/m-{1}/FightGroup/Detail/{2}", CurrentUrlHelper.CurrentUrlNoPort(), "WeiXin", data.Id); model.ShareTitle = data.ActiveStatus == FightGroupActiveStatus.WillStart ? "限时限量火拼 即将开始" : "限时限量火拼 正在进行"; model.ShareImage = data.ProductDefaultImage; if (!string.IsNullOrWhiteSpace(model.ShareImage)) { if (model.ShareImage.Substring(0, 4) != "http") { model.ShareImage = HimallIO.GetRomoteImagePath(model.ShareImage); } } model.ShareDesc = data.ProductName; if (!string.IsNullOrWhiteSpace(data.ProductShortDescription)) { model.ShareDesc += ",(" + data.ProductShortDescription + ")"; } if (model.ProductId > 0) { //统计商品浏览量、店铺浏览人数 StatisticApplication.StatisticVisitCount(model.ProductId, model.ShopId); } var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(model.ShopId); ViewBag.CustomerServices = customerServices; var bonus = ServiceApplication.Create <IShopBonusService>().GetByShopId(model.ShopId); if (bonus != null) { model.BonusCount = bonus.Count; model.BonusGrantPrice = bonus.GrantPrice; model.BonusRandomAmountStart = bonus.RandomAmountStart; model.BonusRandomAmountEnd = bonus.RandomAmountEnd; } var fullDiscount = FullDiscountApplication.GetOngoingActiveByProductId(id, model.ShopId); model.FullDiscount = fullDiscount; model.IsSaleCountOnOff = SiteSettingApplication.SiteSettings.ProductSaleCountOnOff == 1; //是否显示销量 model.SaleVolume = data.ActiveItems.Sum(d => d.BuyCount); //销量 model.FreightTemplate = FreightTemplateApplication.GetFreightTemplate(model.FreightTemplateId); //运费模板 model.FreightStr = FreightTemplateApplication.GetFreightStr(model.ProductId, model.FreightTemplate, CurrentUser); //运费或免运费 return(View(model)); }
/// <summary> /// 订单详细信息页面 /// </summary> /// <param name="id">订单Id</param> public ActionResult Detail(long id) { OrderDetailView view = OrderApplication.Detail(id, UserId, PlatformType, Request.Url.Host); ViewBag.Detail = view.Detail; ViewBag.Bonus = view.Bonus; ViewBag.ShareHref = view.ShareHref; ViewBag.IsRefundTimeOut = view.IsRefundTimeOut; ViewBag.Logo = SiteSettings.Logo; view.Order.FightGroupOrderJoinStatus = view.FightGroupJoinStatus; view.Order.FightGroupCanRefund = view.FightGroupCanRefund; var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(view.Order.ShopId); ViewBag.CustomerServices = customerServices; string shipperAddress = string.Empty, shipperTelPhone = string.Empty; #region 门店信息 if (view.Order.ShopBranchId > 0) { var shopBranchInfo = ShopBranchApplication.GetShopBranchById(view.Order.ShopBranchId); ViewBag.ShopBranchInfo = shopBranchInfo; if (view.Order.OrderType == OrderInfo.OrderTypes.Virtual && shopBranchInfo != null) { shipperAddress = RegionApplication.GetFullName(shopBranchInfo.AddressId) + " " + shopBranchInfo.AddressDetail; shipperTelPhone = shopBranchInfo.ContactPhone; } } else { if (view.Order.OrderType == OrderInfo.OrderTypes.Virtual) { var verificationShipper = ShopShippersApplication.GetDefaultVerificationShipper(view.Order.ShopId); if (verificationShipper != null) { shipperAddress = RegionApplication.GetFullName(verificationShipper.RegionId) + " " + verificationShipper.Address; shipperTelPhone = verificationShipper.TelPhone; } } } #endregion ViewBag.isCanRefundOrder = OrderApplication.CanRefund(view.Order); #region 虚拟订单信息 if (view.Order.OrderType == OrderInfo.OrderTypes.Virtual) { var orderItemInfo = view.Detail.OrderItems.FirstOrDefault(); if (orderItemInfo != null) { ViewBag.virtualProductInfo = ProductManagerApplication.GetVirtualProductInfoByProductId(orderItemInfo.ProductId); var orderVerificationCodes = OrderApplication.GetOrderVerificationCodeInfosByOrderIds(new List <long>() { view.Order.Id }); orderVerificationCodes.ForEach(a => { a.QRCode = GetQRCode(a.VerificationCode); }); ViewBag.orderVerificationCodes = orderVerificationCodes; ViewBag.virtualOrderItemInfos = OrderApplication.GetVirtualOrderItemInfosByOrderId(view.Order.Id); } } #endregion //发票信息 ViewBag.OrderInvoiceInfo = OrderApplication.GetOrderInvoiceInfo(view.Order.Id); //统一显示支付方式名称 view.Order.PaymentTypeName = PaymentApplication.GetPaymentTypeDescById(view.Order.PaymentTypeGateway) ?? view.Order.PaymentTypeName; ViewBag.ShipperAddress = shipperAddress; ViewBag.ShipperTelPhone = shipperTelPhone; return(View(view.Order)); }
public ActionResult Detail(string id) { LimitTimeBuyDetailModel detailModel = new LimitTimeBuyDetailModel(); string price = ""; #region 定义Model和变量 LimitTimeProductDetailModel model = new LimitTimeProductDetailModel { MainId = long.Parse(id), HotAttentionProducts = new List <HotProductInfo>(), HotSaleProducts = new List <HotProductInfo>(), Product = new Entities.ProductInfo(), Shop = new ShopInfoModel(), ShopCategory = new List <CategoryJsonModel>(), Color = new CollectionSKU(), Size = new CollectionSKU(), Version = new CollectionSKU() }; FlashSaleModel market = null; Entities.ShopInfo shop = null; long gid = 0, mid = 0; #endregion #region 商品Id不合法 if (long.TryParse(id, out mid)) { } if (mid == 0) { //跳转到出错页面 return(RedirectToAction("Error404", "Error", new { area = "Mobile" })); } #endregion #region 初始化商品和店铺 //参数是限时购活动ID try { market = _iLimitTimeBuyService.Get(mid); } catch { market = null; } if (market != null) { switch (market.Status) { case FlashSaleInfo.FlashSaleStatus.Ended: return(RedirectToAction("Detail", "Product", new { id = market.ProductId })); case FlashSaleInfo.FlashSaleStatus.Cancelled: return(RedirectToAction("Detail", "Product", new { id = market.ProductId })); } model.FlashSale = market; } if (market == null || market.Status != FlashSaleInfo.FlashSaleStatus.Ongoing) { //可能参数是商品ID market = market == null?_iLimitTimeBuyService.GetFlaseSaleByProductId(mid) : market; if (market == null) { //跳转到404页面 return(RedirectToAction("Error404", "Error", new { area = "Mobile" })); } if (market.Status != FlashSaleInfo.FlashSaleStatus.Ongoing) { return(RedirectToAction("Detail", "Product", new { id = market.ProductId })); } market = _iLimitTimeBuyService.Get(market.Id); } model.FlashSale = market; if (market != null && (market.Status != FlashSaleInfo.FlashSaleStatus.Ongoing || DateTime.Parse(market.EndDate) < DateTime.Now)) { return(RedirectToAction("Detail", "Product", new { id = market.ProductId })); } model.MaxSaleCount = market.LimitCountOfThePeople; model.Title = market.Title; shop = _iShopService.GetShop(market.ShopId); #endregion #region 存在的商品 if (null == market || market.Id == 0) { //跳转到出错页面 return(RedirectToAction("Error404", "Error", new { area = "Web" })); } #endregion #region 商品描述 var product = _iProductService.GetProduct(market.ProductId); gid = market.ProductId; model.Product = product; var description = ProductManagerApplication.GetProductDescription(product.Id); model.ProductDescription = description.ShowMobileDescription; if (description.DescriptionPrefixId != 0) { var desc = _iProductDescriptionTemplateService .GetTemplate(description.DescriptionPrefixId, product.ShopId); model.DescriptionPrefix = desc == null ? "" : desc.Content; } if (description.DescriptiondSuffixId != 0) { var desc = _iProductDescriptionTemplateService .GetTemplate(description.DescriptiondSuffixId, product.ShopId); model.DescriptiondSuffix = desc == null ? "" : desc.Content; } var mark = ShopServiceMark.GetShopComprehensiveMark(shop.Id); model.Shop.PackMark = mark.PackMark; model.Shop.ServiceMark = mark.ServiceMark; model.Shop.ComprehensiveMark = mark.ComprehensiveMark; model.Shop.Name = shop.ShopName; model.Shop.ProductMark = CommentApplication.GetProductAverageMark(gid); model.Shop.Id = product.ShopId; model.Shop.FreeFreight = shop.FreeFreight; detailModel.ProductNum = _iProductService.GetShopOnsaleProducts(product.ShopId); detailModel.FavoriteShopCount = _iShopService.GetShopFavoritesCount(product.ShopId); if (CurrentUser == null) { detailModel.IsFavorite = false; detailModel.IsFavoriteShop = false; } else { detailModel.IsFavorite = _iProductService.IsFavorite(product.Id, CurrentUser.Id); var favoriteShopIds = _iShopService.GetFavoriteShopInfos(CurrentUser.Id).Select(item => item.ShopId).ToArray();//获取已关注店铺 detailModel.IsFavoriteShop = favoriteShopIds.Contains(product.ShopId); } #endregion #region 店铺分类 var categories = _iShopCategoryService.GetShopCategory(product.ShopId); List <Entities.ShopCategoryInfo> allcate = categories.ToList(); foreach (var main in allcate.Where(s => s.ParentCategoryId == 0)) { var topC = new CategoryJsonModel() { Name = main.Name, Id = main.Id.ToString(), SubCategory = new List <SecondLevelCategory>() }; foreach (var secondItem in allcate.Where(s => s.ParentCategoryId == main.Id)) { var secondC = new SecondLevelCategory() { Name = secondItem.Name, Id = secondItem.Id.ToString(), }; topC.SubCategory.Add(secondC); } model.ShopCategory.Add(topC); } #endregion #region 热门销售 var sale = _iProductService.GetHotSaleProduct(shop.Id, 5); if (sale != null) { foreach (var item in sale.ToArray()) { model.HotSaleProducts.Add(new HotProductInfo { ImgPath = item.ImagePath, Name = item.ProductName, Price = item.MinSalePrice, Id = item.Id, SaleCount = (int)item.SaleCounts + Mall.Core.Helper.TypeHelper.ObjectToInt(item.VirtualSaleCounts) }); } } #endregion #region 热门关注 var hot = _iProductService.GetHotConcernedProduct(shop.Id, 5); if (hot != null) { foreach (var item in hot.ToArray()) { model.HotAttentionProducts.Add(new HotProductInfo { ImgPath = item.ImagePath, Name = item.ProductName, Price = item.MinSalePrice, Id = item.Id, SaleCount = (int)item.ConcernedCount }); } } #endregion #region 商品规格 Entities.TypeInfo typeInfo = _iTypeService.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; } model.ColorAlias = colorAlias; model.SizeAlias = sizeAlias; model.VersionAlias = versionAlias; var skus = ProductManagerApplication.GetSKUs(product.Id); if (skus.Count > 0) { long colorId = 0, sizeId = 0, versionId = 0; foreach (var sku in skus) { var specs = sku.Id.Split('_'); if (specs.Count() > 0 && !string.IsNullOrEmpty(sku.Color)) { if (long.TryParse(specs[1], out colorId)) { } if (colorId != 0) { if (!model.Color.Any(v => v.Value.Equals(sku.Color))) { var c = skus.Where(s => s.Color.Equals(sku.Color)).Sum(s => s.Stock); model.Color.Add(new ProductSKU { //Name = "选择颜色", Name = "选择" + colorAlias, EnabledClass = c != 0 ? "enabled" : "disabled", //SelectedClass = !model.Color.Any(c1 => c1.SelectedClass.Equals("selected")) && c != 0 ? "selected" : "", SelectedClass = "", SkuId = colorId, Value = sku.Color, Img = Core.MallIO.GetImagePath(sku.ShowPic) }); } } } if (specs.Count() > 1 && !string.IsNullOrEmpty(sku.Size)) { if (long.TryParse(specs[2], out sizeId)) { } if (sizeId != 0) { if (!model.Size.Any(v => v.Value.Equals(sku.Size))) { var ss = skus.Where(s => s.Size.Equals(sku.Size)).Sum(s1 => s1.Stock); model.Size.Add(new ProductSKU { //Name = "选择尺码", Name = "选择" + sizeAlias, EnabledClass = ss != 0 ? "enabled" : "disabled", //SelectedClass = !model.Size.Any(s1 => s1.SelectedClass.Equals("selected")) && ss != 0 ? "selected" : "", SelectedClass = "", SkuId = sizeId, Value = sku.Size }); } } } if (specs.Count() > 2 && !string.IsNullOrEmpty(sku.Version)) { if (long.TryParse(specs[3], out versionId)) { } if (versionId != 0) { if (!model.Version.Any(v => v.Value.Equals(sku.Version))) { var v = skus.Where(s => s.Version.Equals(sku.Version)).Sum(s => s.Stock); model.Version.Add(new ProductSKU { //Name = "选择版本", Name = "选择" + versionAlias, EnabledClass = v != 0 ? "enabled" : "disabled", //SelectedClass = !model.Version.Any(v1 => v1.SelectedClass.Equals("selected")) && v != 0 ? "selected" : "", SelectedClass = "", SkuId = versionId, Value = sku.Version }); } } } } //var min = skus.Where(s => s.Stock >= 0).Min(s => s.SalePrice); //var max = skus.Where(s => s.Stock >= 0).Max(s => s.SalePrice); //if (min == 0 && max == 0) //{ // price = product.MinSalePrice.ToString("f2"); //} //else if (max > min) //{ // price = string.Format("{0}-{1}", min.ToString("f2"), max.ToString("f2")); //} //else //{ // price = string.Format("{0}", min.ToString("f2")); //} price = ProductWebApplication.GetProductPriceStr2(product, skus);//最小价或区间价文本 } detailModel.Price = string.IsNullOrWhiteSpace(price) ? product.MinSalePrice.ToString("f2") : price; #endregion #region 商品属性 List <TypeAttributesModel> ProductAttrs = new List <TypeAttributesModel>(); var prodAttrs = ProductManagerApplication.GetProductAttributes(product.Id); foreach (var attr in prodAttrs) { if (!ProductAttrs.Any(p => p.AttrId == attr.AttributeId)) { var attribute = _iTypeService.GetAttribute(attr.AttributeId); var values = _iTypeService.GetAttributeValues(attr.AttributeId); TypeAttributesModel attrModel = new TypeAttributesModel() { AttrId = attr.AttributeId, AttrValues = new List <TypeAttrValue>(), Name = attribute.Name }; foreach (var attrV in values) { if (prodAttrs.Any(p => p.ValueId == attrV.Id)) { attrModel.AttrValues.Add(new TypeAttrValue { Id = attrV.Id.ToString(), Name = attrV.Value }); } } ProductAttrs.Add(attrModel); } else { var attrTemp = ProductAttrs.FirstOrDefault(p => p.AttrId == attr.AttributeId); var values = _iTypeService.GetAttributeValues(attr.AttributeId); if (!attrTemp.AttrValues.Any(p => p.Id == attr.ValueId.ToString())) { attrTemp.AttrValues.Add(new TypeAttrValue { Id = attr.ValueId.ToString(), Name = values.FirstOrDefault(a => a.Id == attr.ValueId).Value }); } } } detailModel.ProductAttrs = ProductAttrs; #endregion #region 获取评论、咨询数量 var comments = CommentApplication.GetCommentsByProduct(product.Id); detailModel.CommentCount = comments.Count; var consultations = ServiceApplication.Create <IConsultationService>().GetConsultations(gid); var total = comments.Count; var niceTotal = comments.Count(item => item.ReviewMark >= 4); detailModel.NicePercent = (int)((niceTotal / (double)total) * 100); detailModel.Consultations = consultations.Count(); if (_iVShopService.GetVShopByShopId(shop.Id) == null) { detailModel.VShopId = -1; } else { detailModel.VShopId = _iVShopService.GetVShopByShopId(shop.Id).Id; } #endregion #region 累加浏览次数、 加入历史记录 //if (CurrentUser != null) //{ // BrowseHistrory.AddBrowsingProduct(product.Id, CurrentUser.Id); //} //else //{ // BrowseHistrory.AddBrowsingProduct(product.Id); //} //_iProductService.LogProductVisti(gid); #endregion #region 获取店铺的评价统计 var shopStatisticOrderComments = _iShopService.GetShopStatisticOrderComments(product.ShopId); 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 && !shop.IsSelf) { detailModel.ProductAndDescription = productAndDescription.CommentValue; detailModel.ProductAndDescriptionPeer = productAndDescriptionPeer.CommentValue; detailModel.ProductAndDescriptionMin = productAndDescriptionMin.CommentValue; detailModel.ProductAndDescriptionMax = productAndDescriptionMax.CommentValue; } else { detailModel.ProductAndDescription = defaultValue; detailModel.ProductAndDescriptionPeer = defaultValue; detailModel.ProductAndDescriptionMin = defaultValue; detailModel.ProductAndDescriptionMax = defaultValue; } //卖家服务态度 if (sellerServiceAttitude != null && sellerServiceAttitudePeer != null && !shop.IsSelf) { detailModel.SellerServiceAttitude = sellerServiceAttitude.CommentValue; detailModel.SellerServiceAttitudePeer = sellerServiceAttitudePeer.CommentValue; detailModel.SellerServiceAttitudeMax = sellerServiceAttitudeMax.CommentValue; detailModel.SellerServiceAttitudeMin = sellerServiceAttitudeMin.CommentValue; } else { detailModel.SellerServiceAttitude = defaultValue; detailModel.SellerServiceAttitudePeer = defaultValue; detailModel.SellerServiceAttitudeMax = defaultValue; detailModel.SellerServiceAttitudeMin = defaultValue; } //卖家发货速度 if (sellerDeliverySpeedPeer != null && sellerDeliverySpeed != null && !shop.IsSelf) { detailModel.SellerDeliverySpeed = sellerDeliverySpeed.CommentValue; detailModel.SellerDeliverySpeedPeer = sellerDeliverySpeedPeer.CommentValue; detailModel.SellerDeliverySpeedMax = sellerDeliverySpeedMax != null ? sellerDeliverySpeedMax.CommentValue : 0; detailModel.sellerDeliverySpeedMin = sellerDeliverySpeedMin != null ? sellerDeliverySpeedMin.CommentValue : 0; } else { detailModel.SellerDeliverySpeed = defaultValue; detailModel.SellerDeliverySpeedPeer = defaultValue; detailModel.SellerDeliverySpeedMax = defaultValue; detailModel.sellerDeliverySpeedMin = defaultValue; } #endregion #region 是否收藏此商品 if (CurrentUser != null && CurrentUser.Id > 0) { model.IsFavorite = _iProductService.IsFavorite(product.Id, CurrentUser.Id); } else { model.IsFavorite = false; } #endregion long vShopId; var vshopinfo = _iVShopService.GetVShopByShopId(shop.Id); if (vshopinfo == null) { vShopId = -1; } else { vShopId = vshopinfo.Id; } detailModel.VShopId = vShopId; model.Shop.VShopId = vShopId; model.VShopLog = _iVShopService.GetVShopLog(model.Shop.VShopId); if (string.IsNullOrWhiteSpace(model.VShopLog)) { //throw new Mall.Core.MallException("店铺未开通微店功能"); model.VShopLog = SiteSettings.WXLogo; } detailModel.Logined = (null != CurrentUser) ? 1 : 0; model.EnabledBuy = product.AuditStatus == Entities.ProductInfo.ProductAuditStatus.Audited && DateTime.Parse(market.BeginDate) <= DateTime.Now && DateTime.Parse(market.EndDate) > DateTime.Now && product.SaleStatus == Entities.ProductInfo.ProductSaleStatus.OnSale; int saleCounts = 0; saleCounts = market.SaleCount; if (market.Status == FlashSaleInfo.FlashSaleStatus.Ongoing && DateTime.Parse(market.BeginDate) < DateTime.Now && DateTime.Parse(market.EndDate) > DateTime.Now) { TimeSpan end = new TimeSpan(DateTime.Parse(market.EndDate).Ticks); TimeSpan start = new TimeSpan(DateTime.Now.Ticks); TimeSpan ts = end.Subtract(start); detailModel.Second = ts.TotalSeconds < 0 ? 0 : ts.TotalSeconds; } else if (market.Status == FlashSaleInfo.FlashSaleStatus.Ongoing && DateTime.Parse(market.BeginDate) > DateTime.Now) { TimeSpan end = new TimeSpan(DateTime.Parse(market.BeginDate).Ticks); TimeSpan start = new TimeSpan(DateTime.Now.Ticks); TimeSpan ts = end.Subtract(start); detailModel.Second = ts.TotalSeconds < 0 ? 0 : ts.TotalSeconds; saleCounts = Mall.Core.Helper.TypeHelper.ObjectToInt(product.SaleCounts) + Mall.Core.Helper.TypeHelper.ObjectToInt(product.VirtualSaleCounts); } ViewBag.DetailModel = detailModel; var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(market.ShopId); ViewBag.CustomerServices = customerServices; //统计商品浏览量、店铺浏览人数 StatisticApplication.StatisticVisitCount(product.Id, product.ShopId); model.IsSaleCountOnOff = SiteSettingApplication.SiteSettings.ProductSaleCountOnOff == 1; //是否显示销量 model.SaleCount = saleCounts; //销量 model.FreightTemplate = FreightTemplateApplication.GetFreightTemplate(product.FreightTemplateId); model.Freight = FreightTemplateApplication.GetFreightStr(market.ProductId, model.FreightTemplate, CurrentUser, product); //运费或免运费 model.StockAll = market.Quantity; return(View(model)); }
public object GetVShop(long id, bool sv = false) { //Json(ErrorResult<int>("取消失败,该订单已删除或者不属于当前用户!")); var vshopService = ServiceProvider.Instance <IVShopService> .Create; var vshop = vshopService.GetVShop(id); if (vshop == null) { return(ErrorResult <bool>("未开通微店!", code: -4)); } if (vshop.State == Entities.VShopInfo.VShopStates.Close) { return(ErrorResult <bool>("商家暂未开通微店!", code: -5)); } if (!vshop.IsOpen) { return(ErrorResult <bool>("此微店已关闭!", code: -3)); } var s = ShopApplication.GetShop(vshop.ShopId); if (null != s && s.ShopStatus == Entities.ShopInfo.ShopAuditStatus.HasExpired) { return(ErrorResult <bool>("此店铺已过期!", code: -1)); } //throw new MallApiException("此店铺已过期"); if (null != s && s.ShopStatus == Entities.ShopInfo.ShopAuditStatus.Freeze) { return(ErrorResult <bool>("此店铺已冻结!", code: -2)); } //throw new MallApiException("此店铺已冻结"); //轮播图配置只有商家微店首页配置页面可配置,现在移动端都读的这个数据 var slideImgs = ServiceProvider.Instance <ISlideAdsService> .Create.GetSlidAds(vshop.ShopId, Entities.SlideAdInfo.SlideAdType.VShopHome).ToList(); //首页商品现在只有商家配置微信首页,APP读的也是这个数据所以平台类型选的的微信端 var homeProducts = ServiceProvider.Instance <IMobileHomeProductsService> .Create.GetMobileHomeProducts(vshop.ShopId, PlatformType.WeiXin, 1, 8); #region 价格更新 //会员折扣 decimal discount = 1M; long SelfShopId = 0; if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; var shopInfo = ShopApplication.GetSelfShop(); SelfShopId = shopInfo.Id; } var limit = LimitTimeApplication.GetLimitProducts(); var fight = FightGroupApplication.GetFightGroupPrice(); var products = new List <ProductItem>(); var productData = ProductManagerApplication.GetProducts(homeProducts.Models.Select(p => p.ProductId)); foreach (var item in homeProducts.Models) { var product = productData.FirstOrDefault(p => p.Id == item.ProductId); var pitem = new ProductItem(); pitem.Id = item.ProductId; pitem.ImageUrl = Core.MallIO.GetRomoteProductSizeImage(product.RelativePath, 1, (int)Mall.CommonModel.ImageSize.Size_350); pitem.Name = product.ProductName; pitem.MarketPrice = product.MarketPrice; pitem.SalePrice = product.MinSalePrice; if (item.ShopId == SelfShopId) { pitem.SalePrice = product.MinSalePrice * discount; } var isLimit = limit.Where(r => r.ProductId == item.ProductId).FirstOrDefault(); var isFight = fight.Where(r => r.ProductId == item.ProductId).FirstOrDefault(); if (isLimit != null) { pitem.SalePrice = isLimit.MinPrice; } if (isFight != null) { pitem.SalePrice = isFight.ActivePrice; } products.Add(pitem); } #endregion var banner = ServiceProvider.Instance <INavigationService> .Create.GetSellerNavigations(vshop.ShopId, Core.PlatformType.WeiXin).ToList(); var couponInfo = GetCouponList(vshop.ShopId); var SlideAds = slideImgs.ToArray().Select(item => new HomeSlideAdsModel() { ImageUrl = Core.MallIO.GetRomoteImagePath(item.ImageUrl), Url = item.Url }); var Banner = banner; var Products = products; bool favoriteShop = false; if (CurrentUser != null) { favoriteShop = ServiceProvider.Instance <IShopService> .Create.IsFavoriteShop(CurrentUser.Id, vshop.ShopId); } string followUrl = ""; //快速关注 var vshopSetting = ServiceProvider.Instance <IVShopService> .Create.GetVShopSetting(vshop.ShopId); if (vshopSetting != null) { followUrl = vshopSetting.FollowUrl; } var model = new { Id = vshop.Id, //Logo = "http://" + Url.Request.RequestUri.Host + vshop.Logo, Logo = Core.MallIO.GetRomoteImagePath(vshop.StrLogo), Name = vshop.Name, ShopId = vshop.ShopId, Favorite = favoriteShop, State = vshop.State, FollowUrl = followUrl }; // 客服 var customerServices = CustomerServiceApplication.GetMobileCustomerServiceAndMQ(vshop.ShopId); //统计访问量 if (!sv) { vshopService.LogVisit(id); //统计店铺访问人数 StatisticApplication.StatisticShopVisitUserCount(vshop.ShopId); } dynamic result = new ExpandoObject(); result.VShop = model; result.SlideImgs = SlideAds; result.Products = products; result.Banner = banner; result.Coupon = couponInfo; result.CustomerServices = customerServices; return(Json(new { result })); }
/// <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 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 }); }