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>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>1.6.2</Version>
<Version>1.7.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<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.Threading.Tasks;
using EasyAbp.EShop.Products.Categories.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
@ -13,6 +14,6 @@ namespace EasyAbp.EShop.Products.Categories
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.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.Categories.Dtos;
using EasyAbp.EShop.Products.Permissions;
using EasyAbp.EShop.Stores.Authorization;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
@ -42,5 +43,30 @@ namespace EasyAbp.EShop.Products.Categories
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)));
CreateMap<UpdateProductSkuDto, ProductSku>(MemberList.Source);
CreateMap<Category, CategoryDto>();
CreateMap<Category, CategorySummaryDto>();
CreateMap<CreateUpdateCategoryDto, Category>(MemberList.Source);
CreateMap<ProductCategory, ProductCategoryDto>();
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 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
{
[RemoteService(Name = "EasyAbpEShopProducts")]
[Route("/api/eShop/products/category")]
[Route(ProductsConsts.CategoryRouteBase)]
public class CategoryController : ProductsController, ICategoryAppService
{
private readonly ICategoryAppService _service;
@ -50,5 +50,12 @@ namespace EasyAbp.EShop.Products.Categories
{
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 EasyAbp.EShop.Products.Localization;
using EasyAbp.EShop.Products.Web.Menus;
@ -14,8 +15,9 @@ namespace EasyAbp.EShop.Products.Web
[DependsOn(
typeof(EShopProductsHttpApiModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule)
)]
typeof(AbpAutoMapperModule),
typeof(AbpTagHelperPlusModule)
)]
public class EShopProductsWebModule : AbpModule
{
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>
<PackageReference Include="Volo.Abp.AutoMapper" 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>

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

Loading…
Cancel
Save