public object GetMobileHomeProducts(long shopId, PlatformType platformType, int page, int rows, string keyWords, string shopName, long?categoryId = null) { var homeProducts = MobileHomeProductApplication.GetMobileHomePageProducts(shopId, platformType, page, rows, keyWords, shopName, categoryId); var products = ProductManagerApplication.GetProducts(homeProducts.Models.Select(p => p.ProductId)); var shops = ShopApplication.GetShops(products.Select(p => p.ShopId)); var brands = BrandApplication.GetBrandsByIds(products.Select(p => p.BrandId)); var model = homeProducts.Models.Select(item => { var product = products.FirstOrDefault(p => p.Id == item.ProductId); var shop = shops.FirstOrDefault(p => p.Id == product.ShopId); var brand = brands.FirstOrDefault(p => p.Id == product.BrandId); return(new { name = product.ProductName, image = product.GetImage(ImageSize.Size_50), price = product.MinSalePrice.ToString("F2"), brand = brand?.Name ?? string.Empty, sequence = item.Sequence, categoryName = CategoryApplication.GetCategory(product.CategoryId).Name, id = item.Id, productId = item.ProductId, shopName = shop?.ShopName ?? string.Empty }); }); return(new { rows = model, total = homeProducts.Total }); }
/// <summary> /// 商品列表信息项转换 /// </summary> /// <param name="data"></param> /// <returns></returns> private product_list_model ProductInfoListMapChange(Entities.ProductInfo data) { product_list_model dresult = null; var prodata = data; dresult = new product_list_model(); if (prodata == null) { throw new MallApiException(OpenApiErrorCode.Product_Not_Exists, "num_iid"); } #region 装配信息 dresult.num_iid = (int)prodata.Id; dresult.outer_id = prodata.ProductCode; dresult.brand_id = (int)prodata.BrandId; dresult.brand_name = prodata.BrandName; dresult.cid = (int)prodata.CategoryId; dresult.type_id = (int)prodata.TypeId; var category = CategoryApplication.GetCategory(prodata.CategoryId); if (category != null) { dresult.cat_name = category.Name; var type = TypeApplication.GetType(category.TypeId); if (type != null) { dresult.type_name = type.Name; } } dresult.price = prodata.MinSalePrice; var skus = ProductManagerApplication.GetSKUs(prodata.Id); if (skus.Count > 0) { dresult.num = (int)skus.Sum(d => d.Stock); } else { dresult.num = 0; dresult.num = prodata.Quantity; } dresult.title = prodata.ProductName.Trim(); dresult.list_time = prodata.AddedDate; dresult.modified = prodata.AddedDate; dresult.sold_quantity = (int)prodata.SaleCounts; dresult.pic_url = new System.Collections.ArrayList(); dresult.pic_url.Add(System.IO.Path.Combine(OpenAPIHelper.HostUrl, prodata.GetImage(ImageSize.Size_350, 1))); ProductStatus ps = GetProductStatus(prodata); dresult.approve_status = ps.ToString(); #endregion return(dresult); }
public JsonResult Browse(long?categoryId, int?auditStatus, string ids, int page, string keyWords, string shopName, int?saleStatus, bool?isShopCategory, int rows = 10, bool isLimitTimeBuy = false, bool showSku = false, long[] exceptProductIds = null) { var query = new ProductQuery() { PageSize = rows, PageNo = page, KeyWords = keyWords, ShopName = shopName, CategoryId = isShopCategory.GetValueOrDefault() ? null : categoryId, ShopCategoryId = isShopCategory.GetValueOrDefault() ? categoryId : null, Ids = string.IsNullOrWhiteSpace(ids) ? null : ids.Split(',').Select(item => long.Parse(item)), ShopId = CurrentSellerManager.ShopId, IsLimitTimeBuy = isLimitTimeBuy, ExceptIds = exceptProductIds, IsFilterStock = false, HasLadderProduct = false, AuditStatus = new[] { ProductInfo.ProductAuditStatus.Audited }, SaleStatus = ProductInfo.ProductSaleStatus.OnSale }; var data = ProductManagerApplication.GetProducts(query); var shops = ShopApplication.GetShops(data.Models.Select(p => p.ShopId)); var brands = BrandApplication.GetBrands(data.Models.Select(p => p.BrandId)); var skus = ProductManagerApplication.GetSKUByProducts(data.Models.Select(p => p.Id)); var products = data.Models.Select(item => { var brand = brands.FirstOrDefault(p => p.Id == item.BrandId); var shop = shops.FirstOrDefault(p => p.Id == item.ShopId); var cate = CategoryApplication.GetCategory(item.CategoryId); var sku = skus.Where(p => p.ProductId == item.Id); var limitAdd = LimitTimeApplication.IsAdd(item.Id); return(new { name = item.ProductName, brandName = brand?.Name ?? string.Empty, categoryName = brand == null ? "" : cate.Name, id = item.Id, imgUrl = item.GetImage(ImageSize.Size_50), price = item.MinSalePrice, skus = !showSku ? null : sku.Select(a => new SKUModel() { Id = a.Id, SalePrice = a.SalePrice, Size = a.Size, Stock = a.Stock, Version = a.Version, Color = a.Color, Sku = a.Sku, AutoId = a.AutoId, ProductId = a.ProductId }), shopName = shop.ShopName, isOpenLadder = item.IsOpenLadder, isLimit = limitAdd }); }); var dataGrid = new { rows = products, total = data.Total }; return(Json(dataGrid)); }
/// <summary> /// 商品信息转换 /// </summary> /// <param name="data"></param> /// <returns></returns> private product_item_model ProductInfoMapChange(Entities.ProductInfo data) { var prodata = data; if (prodata == null) { throw new MallApiException(OpenApiErrorCode.Product_Not_Exists, "num_iid"); } product_item_model result = new product_item_model(); #region 装配信息 result.num_iid = (int)prodata.Id; result.outer_id = prodata.ProductCode; result.brand_id = (int)prodata.BrandId; result.brand_name = prodata.BrandName; result.cid = (int)prodata.CategoryId; result.type_id = (int)prodata.TypeId; var category = CategoryApplication.GetCategory(prodata.CategoryId); var desc = ProductManagerApplication.GetProductDescription(prodata.Id); if (category != null) { result.cat_name = category.Name; var type = TypeApplication.GetType(category.TypeId); if (type != null) { result.type_name = type.Name; } } result.title = prodata.ProductName.Trim(); result.list_time = prodata.AddedDate; result.modified = prodata.AddedDate; result.display_sequence = (int)prodata.DisplaySequence; result.sold_quantity = (int)prodata.SaleCounts; result.desc = desc.Description; result.wap_desc = desc.MobileDescription; result.pic_url.Add(System.IO.Path.Combine(OpenAPIHelper.HostUrl, prodata.GetImage(ImageSize.Size_350, 1))); ProductStatus ps = GetProductStatus(prodata); result.approve_status = ps.ToString(); #region 商品属性填充 var prodAttrs = ProductManagerApplication.GetProductAttributes(prodata.Id); var prodAttrids = prodAttrs.Select(d => d.AttributeId).ToList(); var prodAttrValues = _iTypeService.GetAttributeValues(prodAttrids); result.props_name = ""; if (prodAttrids.Count > 0) { List <string> propslst = new List <string>(); List <string> propsvallst = new List <string>(); foreach (var curattid in prodAttrids) { var item = prodAttrs.FirstOrDefault(d => d.AttributeId == curattid); propsvallst.Clear(); var attribute = _iTypeService.GetAttribute(item.AttributeId); var values = prodAttrValues.Where(p => p.AttributeId == curattid); foreach (var attrV in values) { if (prodAttrs.Any(p => p.ValueId == attrV.Id)) { propsvallst.Add(attrV.Value); } } propslst.Add(attribute.Name + "#cln#[" + string.Join(",", propsvallst.ToArray()) + "]"); } result.props_name = string.Join("#scln#", propslst.ToArray()); } #endregion #region 发货地区 var prolocid = FreightTemplateApplication.GetFreightTemplate(prodata.FreightTemplateId).SourceAddress; result.location = ""; var locpath = _iRegionService.GetFullName(prolocid, ","); result.location = "{'city':'#c#', 'state':'#p#'}"; if (!string.IsNullOrWhiteSpace(locpath)) { var _tmparr = locpath.Split(','); result.location = result.location.Replace("#p#", _tmparr[0]); if (_tmparr.Length > 1) { result.location = result.location.Replace("#c#", _tmparr[1]); } else { result.location = result.location.Replace("#c#", ""); } } #endregion #region SKUS Entities.TypeInfo typeInfo = _iTypeService.GetType(data.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; if (prodata != null) { colorAlias = !string.IsNullOrWhiteSpace(prodata.ColorAlias) ? prodata.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(prodata.SizeAlias) ? prodata.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(prodata.VersionAlias) ? prodata.VersionAlias : versionAlias; } result.skus = new List <product_sku_model>(); var skus = ProductManagerApplication.GetSKUs(prodata.Id); foreach (var item in skus) { product_sku_model skudata = new product_sku_model(); skudata.sku_id = item.Id; skudata.outer_sku_id = item.Sku; skudata.price = item.SalePrice; skudata.quantity = (int)item.Stock; //skudata.sku_properties_name = "颜色:" + item.Color + "尺寸:" + item.Size + "版本:" + item.Version; skudata.sku_properties_name = colorAlias + ":" + item.Color + " " + sizeAlias + ":" + item.Size + " " + versionAlias + ":" + item.Version; string sku_properties_name = item.Color + " " + item.Size + " " + item.Version; if (string.IsNullOrWhiteSpace(sku_properties_name)) { skudata.sku_properties_name = ""; } if (!string.IsNullOrWhiteSpace(skudata.sku_properties_name)) { result.skus.Add(skudata); } } #endregion #endregion return(result); }