Browse Source

Improve category selection with EasyAbp.Abp.TagHelper

pull/107/head 1.7.0
gdlcf88 6 years ago
parent
commit
145cbfa6d6
  1. 2
      common.props
  2. 18
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Categories/Dtos/CategorySummaryDto.cs
  3. 3
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Categories/ICategoryAppService.cs
  4. 28
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Categories/CategoryAppService.cs
  5. 1
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
  6. 6
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/ProductsConsts.cs
  7. 9
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.HttpApi/EasyAbp/EShop/Products/Categories/CategoryController.cs
  8. 8
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/EShopProductsWebModule.cs
  9. 1
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/EasyAbp.EShop.Products.Web.csproj
  10. 8
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs

2
common.props

@ -1,7 +1,7 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>1.6.2</Version> <Version>1.7.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn> <NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors> <Authors>EasyAbp Team</Authors>

18
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Categories/Dtos/CategorySummaryDto.cs

@ -0,0 +1,18 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.Categories.Dtos
{
public class CategorySummaryDto : EntityDto<Guid>
{
public string UniqueName { get; set; }
public string DisplayName { get; set; }
public string TreedDisplayName { get; set; }
public int Level { get; set; }
public Guid? ParentId { get; set; }
}
}

3
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Categories/ICategoryAppService.cs

@ -1,4 +1,5 @@
using System; using System;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.Categories.Dtos; using EasyAbp.EShop.Products.Categories.Dtos;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
@ -13,6 +14,6 @@ namespace EasyAbp.EShop.Products.Categories
CreateUpdateCategoryDto, CreateUpdateCategoryDto,
CreateUpdateCategoryDto> CreateUpdateCategoryDto>
{ {
Task<PagedResultDto<CategorySummaryDto>> GetSummaryListAsync(GetCategoryListDto input);
} }
} }

28
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Categories/CategoryAppService.cs

@ -1,9 +1,10 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks; using System.Threading.Tasks;
using EasyAbp.EShop.Products.Categories.Dtos; using EasyAbp.EShop.Products.Categories.Dtos;
using EasyAbp.EShop.Products.Permissions; using EasyAbp.EShop.Products.Permissions;
using EasyAbp.EShop.Stores.Authorization;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
@ -42,5 +43,30 @@ namespace EasyAbp.EShop.Products.Categories
return await base.GetListAsync(input); return await base.GetListAsync(input);
} }
public virtual async Task<PagedResultDto<CategorySummaryDto>> GetSummaryListAsync(GetCategoryListDto input)
{
await CheckGetListPolicyAsync();
var query = _repository.AsQueryable();
var totalCount = await AsyncExecuter.CountAsync(query);
query = query.OrderBy(x => x.Code);
if (!input.Sorting.IsNullOrWhiteSpace())
{
query = query.OrderBy(input.Sorting);
}
query = query.PageBy(input.SkipCount, input.MaxResultCount);
var categories = await AsyncExecuter.ToListAsync(query);
return new PagedResultDto<CategorySummaryDto>(
totalCount,
categories.Select(x => ObjectMapper.Map<Category, CategorySummaryDto>(x)).ToList()
);
}
} }
} }

1
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs

@ -61,6 +61,7 @@ namespace EasyAbp.EShop.Products
await attributeOptionIdsSerializer.SerializeAsync(src.AttributeOptionIds))); await attributeOptionIdsSerializer.SerializeAsync(src.AttributeOptionIds)));
CreateMap<UpdateProductSkuDto, ProductSku>(MemberList.Source); CreateMap<UpdateProductSkuDto, ProductSku>(MemberList.Source);
CreateMap<Category, CategoryDto>(); CreateMap<Category, CategoryDto>();
CreateMap<Category, CategorySummaryDto>();
CreateMap<CreateUpdateCategoryDto, Category>(MemberList.Source); CreateMap<CreateUpdateCategoryDto, Category>(MemberList.Source);
CreateMap<ProductCategory, ProductCategoryDto>(); CreateMap<ProductCategory, ProductCategoryDto>();
CreateMap<ProductHistory, ProductHistoryDto>(); CreateMap<ProductHistory, ProductHistoryDto>();

6
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/ProductsConsts.cs

@ -7,5 +7,11 @@
public const string DefaultProductGroupDisplayName = "Default"; public const string DefaultProductGroupDisplayName = "Default";
public const string DefaultProductGroupDescription = ""; public const string DefaultProductGroupDescription = "";
public const string CategoryRouteBase = "/api/eShop/products/category";
public const string GetCategorySummaryListedDataSourceUrl = CategoryRouteBase + "/summary";
public const string GetCategorySummarySingleDataSourceUrl = CategoryRouteBase + "/{id}";
} }
} }

9
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.HttpApi/EasyAbp/EShop/Products/Categories/CategoryController.cs

@ -8,7 +8,7 @@ using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.Categories namespace EasyAbp.EShop.Products.Categories
{ {
[RemoteService(Name = "EasyAbpEShopProducts")] [RemoteService(Name = "EasyAbpEShopProducts")]
[Route("/api/eShop/products/category")] [Route(ProductsConsts.CategoryRouteBase)]
public class CategoryController : ProductsController, ICategoryAppService public class CategoryController : ProductsController, ICategoryAppService
{ {
private readonly ICategoryAppService _service; private readonly ICategoryAppService _service;
@ -50,5 +50,12 @@ namespace EasyAbp.EShop.Products.Categories
{ {
return _service.DeleteAsync(id); return _service.DeleteAsync(id);
} }
[HttpGet]
[Route("summary")]
public async Task<PagedResultDto<CategorySummaryDto>> GetSummaryListAsync(GetCategoryListDto input)
{
return await _service.GetSummaryListAsync(input);
}
} }
} }

8
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/EShopProductsWebModule.cs

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc.RazorPages; using EasyAbp.Abp.TagHelperPlus;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using EasyAbp.EShop.Products.Localization; using EasyAbp.EShop.Products.Localization;
using EasyAbp.EShop.Products.Web.Menus; using EasyAbp.EShop.Products.Web.Menus;
@ -14,8 +15,9 @@ namespace EasyAbp.EShop.Products.Web
[DependsOn( [DependsOn(
typeof(EShopProductsHttpApiModule), typeof(EShopProductsHttpApiModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule) typeof(AbpAutoMapperModule),
)] typeof(AbpTagHelperPlusModule)
)]
public class EShopProductsWebModule : AbpModule public class EShopProductsWebModule : AbpModule
{ {
public override void PreConfigureServices(ServiceConfigurationContext context) public override void PreConfigureServices(ServiceConfigurationContext context)

1
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/EasyAbp.EShop.Products.Web.csproj

@ -14,6 +14,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Volo.Abp.AutoMapper" Version="3.2.1" /> <PackageReference Include="Volo.Abp.AutoMapper" Version="3.2.1" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared" Version="3.2.1" /> <PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared" Version="3.2.1" />
<PackageReference Include="EasyAbp.Abp.TagHelperPlus" Version="0.3.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

8
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using EasyAbp.Abp.TagHelperPlus.EasySelector;
using EasyAbp.EShop.Products.Products; using EasyAbp.EShop.Products.Products;
using EasyAbp.EShop.Products.Products.Dtos; using EasyAbp.EShop.Products.Products.Dtos;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -20,7 +21,12 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[Display(Name = "ProductProductGroupName")] [Display(Name = "ProductProductGroupName")]
public string ProductGroupName { get; set; } public string ProductGroupName { get; set; }
[SelectItems("Categories")] // [SelectItems("Categories")]
[EasySelector(
getListedDataSourceUrl: ProductsConsts.GetCategorySummaryListedDataSourceUrl,
getSingleDataSourceUrl: ProductsConsts.GetCategorySummarySingleDataSourceUrl,
keyPropertyName: "id",
textPropertyName: "displayName")]
[Display(Name = "ProductCategory")] [Display(Name = "ProductCategory")]
public List<Guid> CategoryIds { get; set; } public List<Guid> CategoryIds { get; set; }

Loading…
Cancel
Save