/// <summary> /// 商品查询列表,次函数基本完成了商品列表的所有功能 /// </summary> /// <param name="productApiInput"></param> public async Task <ProductItemApiOutput> GetProductItemsAsync(ProductApiInput productApiInput) { var apiOutput = new ProductItemApiOutput(); // 如果商城模式不正常,或者商品模式的货币类型不正常,则商品不显示 var moneyTypesids = Resolve <IAutoConfigService>().MoneyTypes().Select(r => r.Id); productApiInput.PriceStyles = Resolve <IAutoConfigService>() .GetList <PriceStyleConfig>(r => r.Status == Status.Normal) .Where(r => moneyTypesids.Contains(r.MoneyTypeId)).ToList(); var model = Repository <IProductRepository>().GetProductItems(productApiInput, out var count); var proIdList = model.Select(x => x.Id); var skuList = Resolve <IProductSkuService>().GetList(x => proIdList.Contains(x.ProductId)); model.ForEach(r => { r.ThumbnailUrl = Resolve <IApiService>().ApiImageUrl(r.ThumbnailUrl); r.Price = decimal.Round(r.Price, 2); r.Stock = skuList.Where(x => x.ProductId == r.Id).Sum(x => x.Stock); r.DisplayPrice = Resolve <IProductService>().GetDisplayPrice(r.Price, r.PriceStyleId, 0M); //库存改为 sku库存的总和 }); apiOutput.ProductItems = model; apiOutput.TotalSize = count / productApiInput.PageSize + 1; apiOutput.StyleType = 1; return(await Task.FromResult(apiOutput)); }
/// <summary> /// 获取虚拟订货商品列表 /// </summary> /// <param name="parameter">参数</param> public ProductItemApiOutput GetProductItems(ApiBaseInput parameter) { var productApiInput = new ProductApiInput { ProductIds = GetAllProductIds().JoinToString(",") }; var result = Resolve <IProductService>().GetProductItems(productApiInput); return(result); }
public ApiResult <ProductItemApiOutput> List([FromQuery] ProductApiInput parameter) { if (AutoModel.BasicUser != null) { parameter.UserId = AutoModel.BasicUser.Id; } var apiOutput = Resolve <IProductService>().GradePriceList(parameter); return(ApiResult.Success(apiOutput)); }
public ApiResult <ProductItemApiOutput> List([FromQuery] ProductApiInput parameter) { var apiOutput = Resolve <IProductService>().GetProductItems(parameter); var config = Resolve <IAutoConfigService>().GetValue <MemberDiscountConfig>(); if ((AutoModel?.BasicUser?.Id ?? 0) != 0) { parameter.LoginUserId = AutoModel.BasicUser.Id; } var loginUser = Resolve <IUserService>().GetSingle(parameter.LoginUserId); var isAdmin = Resolve <IUserService>().IsAdmin(parameter.LoginUserId); apiOutput.IsFrontShowPrice = true; // 不进行该判断 StringValues isTenant = string.Empty; if (Request.Headers.TryGetValue("zk-tenant", out isTenant)) { //如果有租户头 判断是否为空 ,如果不为空则表示有值 var tenant = Resolve <IUserService>().GetSingle(s => s.Mobile == isTenant.FirstOrDefault()); //如果有租户头 判断是否为空 ,如果不为空则表示有值 //if (isTenant.Where(s => !(string.IsNullOrEmpty(s) || s == "null"||s== "[object Null]")).Count() <= 0) if (tenant == null) //不是租户 则判断是否显示价格 { if (loginUser == null) { apiOutput.IsFrontShowPrice = false; apiOutput.PriceAlterText = config.PriceAlterText; } else if (!isAdmin && loginUser.GradeId == Guid.Parse("72BE65E6-3000-414D-972E-1A3D4A366000")) { apiOutput.IsFrontShowPrice = config.IsFrontShowPrice; apiOutput.PriceAlterText = config.PriceAlterText; } } } else { //如果没有该头部 直接判断 if (loginUser == null) { apiOutput.IsFrontShowPrice = false; apiOutput.PriceAlterText = config.PriceAlterText; } else if (!isAdmin && loginUser.GradeId == Guid.Parse("72BE65E6-3000-414D-972E-1A3D4A366000")) { apiOutput.IsFrontShowPrice = config.IsFrontShowPrice; apiOutput.PriceAlterText = config.PriceAlterText; } } return(ApiResult.Success(apiOutput)); }
public ApiResult <ProductItemApiOutput> ListExt([FromQuery] ProductApiInput parameter) { if (!string.IsNullOrEmpty(parameter.Keyword)) { //TODO:111 搜索关键字在这里进行存储,存储用户id,搜索时间,关键字,会员等级 } var apiOutput = Resolve <IProductService>().GetProductItems(parameter); return(ApiResult.Success(apiOutput)); }
/// <summary> /// 获取具有会员等级价的商品列表 /// </summary> /// <param name="parameter"></param> /// <returns></returns> public ProductItemApiOutput GradePriceList(ProductApiInput parameter) { var apiOutput = Resolve <IProductService>().GetProductItems(parameter); var config = Resolve <IAutoConfigService>().GetValue <MemberDiscountConfig>(); var loginUser = Resolve <IUserService>().GetSingle(parameter.UserId); apiOutput.IsFrontShowPrice = config.IsFrontShowPrice; apiOutput.PriceAlterText = config.PriceAlterText; if (loginUser != null && config.ShowPriceGradeIds.Contains(loginUser.GradeId)) { apiOutput.IsFrontShowPrice = true; apiOutput.PriceAlterText = config.PriceAlterText; } return(apiOutput); }
/// <summary> /// list /// </summary> /// <param name="productApiInput"></param> /// <returns></returns> public ProductItemApiOutput GetProducts(ProductApiInput productApiInput) { productApiInput.PriceStyleId = _presaleProductStyleId; var model = Repository <IProductRepository>().GetProductItems(productApiInput, out var count); //linked product var productIds = model.Select(p => p.Id).ToList(); var linkedProducts = Repository <IPresaleProductRepository>() .GetList(p => productIds.Contains(p.ProductId) && p.PriceStyleId == _presaleProductStyleId) .ToList(); model.ForEach(r => { r.ThumbnailUrl = Resolve <IApiService>().ApiImageUrl(r.ThumbnailUrl); r.Price = decimal.Round(r.Price, 2); r.IsLinked = linkedProducts.Exists(p => p.ProductId == r.Id); }); var apiOutput = new ProductItemApiOutput(); apiOutput.ProductItems = model; apiOutput.TotalSize = count / productApiInput.PageSize + 1; return(apiOutput); }
public List <ProductItem> GetProductItems(ProductApiInput input, out long count) { if (input.PageIndex < 0) { input.PageIndex = 1; } if (input.PageSize > 100) { input.PageSize = 100; } #region 标签 分类查询 var TcSql = string.Empty; if (input.ClassIds != null && input.ClassIds.Count > 1) { TcSql = $"{TcSql} AND Type='{typeof(ProductClassRelation).FullName}' AND Id in ({input.ClassIds.ToSqlString()}) or FatherId in ({input.ClassIds.ToSqlString()}) "; } if (input.TagIds != null && input.TagIds.Count > 1) { TcSql = $"{TcSql} AND Type='{typeof(ProductTagRelation).FullName}' AND Id in ({input.TagIds.ToSqlString()}) or FatherId in ({input.TagIds.ToSqlString()}) "; } if (!string.IsNullOrEmpty(TcSql)) { TcSql = $@"SELECT DISTINCT EntityId FROM Basic_RelationIndex WHERE RelationId IN( SELECT Id FROM Basic_Relation WHERE 1=1 {TcSql} )"; } #endregion 标签 分类查询 var sqlWhere = string.Empty; if (!string.IsNullOrEmpty(input.Keyword)) { sqlWhere = $"{sqlWhere} AND Name Like '%{input.Keyword}%'"; } if (input.MinPrice.HasValue) { sqlWhere = $"{sqlWhere} AND Price>{input.MinPrice}"; } if (input.MaxPrice.HasValue) { sqlWhere = $"{sqlWhere} AND Price<{input.MaxPrice}"; } if (input.PriceStyleId.HasValue) { sqlWhere = $"{sqlWhere} AND PriceStyleId ='{input.PriceStyleId}'"; } if (input.BrandId.HasValue) { sqlWhere = $"{sqlWhere} AND BrandId ='{input.BrandId}'"; } if (!TcSql.IsNullOrEmpty()) { sqlWhere = $"{sqlWhere} AND Id in ({TcSql})"; } if (!input.ProductIds.IsNullOrEmpty()) { sqlWhere = $"{sqlWhere} AND Id in ({input.ProductIds})"; } //商品状态过滤 商品店铺过滤 sqlWhere = $"{sqlWhere} AND ProductStatus= {(int)GoodsStatus.Online}"; // sqlWhere = $"{sqlWhere} AND StoreId>0"; // 库存 sqlWhere = $"{sqlWhere} AND Stock >= 1 "; var priceStyleId = Guid.Empty; // 商城模式状态不正常,获取不存在的,商品不显示 if (input.PriceStyles != null && input.PriceStyles.Count > 0 && !input.PriceStyleId.IsGuidNullOrEmpty()) { input.PriceStyles = input.PriceStyles .Where(r => input.PriceStyleId != null && r.Id == (Guid)input.PriceStyleId).ToList(); var priceStyleIdList = input.PriceStyles.Select(r => r.Id).ToList(); sqlWhere = $"{sqlWhere} AND PriceStyleId ='{input.PriceStyleId}' "; } var sqlCount = $"SELECT COUNT(Id) [Count] FROM Shop_Product where 1=1 {sqlWhere}"; count = RepositoryContext.ExecuteScalar(sqlCount)?.ConvertToLong() ?? 0; //排序处理 desc 降序 var sort = string.Empty; if (input.SortOrder != ProductSortOrder.Defualt) { sort = input.SortOrder.ToString(); } else { sort = "Id"; } if (input.OrderType == 0) { sort = $"{sort} desc"; } // 如果有传入指定数量,不分页,输出具体的数量 if (input.Count > 0) { input.PageSize = input.Count; input.PageIndex = 1; } var sql = $@"SELECT TOP {input.PageSize} * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY {sort}) AS RowNumber,* FROM Shop_Product where 1=1 { sqlWhere } ) as A WHERE RowNumber > {input.PageSize}*({input.PageIndex}-1) "; var result = new List <ProductItem>(); using (var dr = RepositoryContext.ExecuteDataReader(sql)) { while (dr.Read()) { result.Add(ReadProduct(dr)); } } return(result); }
public async Task <ApiResult <ProductItemApiOutput> > ListAsync([FromQuery] ProductApiInput parameter) { var apiOutput = await Resolve <IProductService>().GetProductItemsAsync(parameter); return(await Task.FromResult(ApiResult.Success(apiOutput))); }
public ApiResult <ProductItemApiOutput> List1([FromQuery] ProductApiInput parameter) { var apiOutput = Resolve <IProductService>().GetProductItems(parameter); return(ApiResult.Success(apiOutput)); }