Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
EShop
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
EShop
Commits
f56695c2
Commit
f56695c2
authored
Apr 29, 2020
by
gdlcf88
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change ProductDetail to an aggregate root and make it also related to ProductSku, close #1
parent
581cf178
Changes
41
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
2958 additions
and
69 deletions
+2958
-69
CreateUpdateProductDetailDto.cs
...ducts/ProductDetails/Dtos/CreateUpdateProductDetailDto.cs
+17
-0
ProductDetailDto.cs
...bp/EShop/Products/ProductDetails/Dtos/ProductDetailDto.cs
+10
-0
IProductDetailAppService.cs
...EShop/Products/ProductDetails/IProductDetailAppService.cs
+19
-0
CreateUpdateProductDto.cs
...bp/EShop/Products/Products/Dtos/CreateUpdateProductDto.cs
+3
-3
ProductDetailDto.cs
.../EasyAbp/EShop/Products/Products/Dtos/ProductDetailDto.cs
+0
-9
ProductDto.cs
...tracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
+2
-2
ProductSkuDto.cs
...cts/EasyAbp/EShop/Products/Products/Dtos/ProductSkuDto.cs
+2
-0
ProductDetailAppService.cs
.../EShop/Products/ProductDetails/ProductDetailAppService.cs
+86
-0
ProductAppService.cs
...tion/EasyAbp/EShop/Products/Products/ProductAppService.cs
+24
-5
ProductsApplicationAutoMapperProfile.cs
...bp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
+4
-1
cs.json
...ared/EasyAbp/EShop/Products/Localization/Products/cs.json
+3
-0
en.json
...ared/EasyAbp/EShop/Products/Localization/Products/en.json
+3
-0
pl.json
...ared/EasyAbp/EShop/Products/Localization/Products/pl.json
+3
-0
pt-BR.json
...d/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
+3
-0
sl.json
...ared/EasyAbp/EShop/Products/Localization/Products/sl.json
+3
-0
tr.json
...ared/EasyAbp/EShop/Products/Localization/Products/tr.json
+3
-0
vi.json
...ared/EasyAbp/EShop/Products/Localization/Products/vi.json
+3
-0
zh-Hans.json
...EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
+3
-0
zh-Hant.json
...EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
+3
-0
IProductDetailRepository.cs
...EShop/Products/ProductDetails/IProductDetailRepository.cs
+11
-0
ProductDetail.cs
...in/EasyAbp/EShop/Products/ProductDetails/ProductDetail.cs
+26
-0
Product.cs
...roducts.Domain/EasyAbp/EShop/Products/Products/Product.cs
+5
-2
ProductSku.cs
...ucts.Domain/EasyAbp/EShop/Products/Products/ProductSku.cs
+5
-1
EasyAbp.EShop.Products.EntityFrameworkCore.csproj
...orkCore/EasyAbp.EShop.Products.EntityFrameworkCore.csproj
+0
-4
EShopProductsEntityFrameworkCoreModule.cs
...tyFrameworkCore/EShopProductsEntityFrameworkCoreModule.cs
+3
-1
IProductsDbContext.cs
.../EShop/Products/EntityFrameworkCore/IProductsDbContext.cs
+1
-0
ProductsDbContext.cs
...p/EShop/Products/EntityFrameworkCore/ProductsDbContext.cs
+1
-0
ProductsDbContextModelCreatingExtensions.cs
...FrameworkCore/ProductsDbContextModelCreatingExtensions.cs
+1
-1
ProductDetailRepository.cs
.../EShop/Products/ProductDetails/ProductDetailRepository.cs
+14
-0
ProductRepository.cs
...Core/EasyAbp/EShop/Products/Products/ProductRepository.cs
+0
-1
CreateModal.cshtml.cs
...ges/EShop/Products/Products/Product/CreateModal.cshtml.cs
+24
-3
EditModal.cshtml.cs
...Pages/EShop/Products/Products/Product/EditModal.cshtml.cs
+26
-2
CreateEditProductAttributeOptionViewModel.cs
...t/ViewModels/CreateEditProductAttributeOptionViewModel.cs
+1
-1
CreateEditProductAttributeViewModel.cs
...Product/ViewModels/CreateEditProductAttributeViewModel.cs
+2
-2
CreateEditProductDetailViewModel.cs
...ts/Product/ViewModels/CreateEditProductDetailViewModel.cs
+6
-1
CreateEditProductViewModel.cs
...Products/Product/ViewModels/CreateEditProductViewModel.cs
+1
-1
index.js
...oducts.Web/Pages/EShop/Products/Products/Product/index.js
+1
-1
ProductsWebAutoMapperProfile.cs
...asyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs
+12
-6
20200428164406_ProductEntitiesAdjustment.Designer.cs
...ions/20200428164406_ProductEntitiesAdjustment.Designer.cs
+2398
-0
20200428164406_ProductEntitiesAdjustment.cs
...ns/Migrations/20200428164406_ProductEntitiesAdjustment.cs
+167
-0
EasyMallMigrationsDbContextModelSnapshot.cs
...ns/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs
+59
-22
No files found.
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductDetailDto.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Product
Detail
s/Dtos/CreateUpdateProductDetailDto.cs
View file @
f56695c2
using
System
;
using
System
;
using
System.ComponentModel
;
using
System.ComponentModel
;
using
System.ComponentModel.DataAnnotations
;
namespace
EasyAbp.EShop.Products.Products.Dtos
namespace
EasyAbp.EShop.Products.Product
Detail
s.Dtos
{
{
public
class
CreateUpdateProductDetailDto
public
class
CreateUpdateProductDetailDto
{
{
/// <summary>
/// This property is for product management permission checking
/// </summary>
[
DisplayName
(
"ProductDetailStoreId"
)]
public
Guid
StoreId
{
get
;
set
;
}
[
DisplayName
(
"ProductDetailDescription"
)]
[
DisplayName
(
"ProductDetailDescription"
)]
public
string
Description
{
get
;
set
;
}
public
string
Description
{
get
;
set
;
}
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetails/Dtos/ProductDetailDto.cs
0 → 100644
View file @
f56695c2
using
System
;
using
Volo.Abp.Application.Dtos
;
namespace
EasyAbp.EShop.Products.ProductDetails.Dtos
{
public
class
ProductDetailDto
:
EntityDto
<
Guid
>
{
public
string
Description
{
get
;
set
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetails/IProductDetailAppService.cs
0 → 100644
View file @
f56695c2
using
System
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
Volo.Abp.Application.Dtos
;
using
Volo.Abp.Application.Services
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
interface
IProductDetailAppService
:
ICrudAppService
<
ProductDetailDto
,
Guid
,
PagedAndSortedResultRequestDto
,
CreateUpdateProductDetailDto
,
CreateUpdateProductDetailDto
>
{
Task
DeleteAsync
(
Guid
id
,
Guid
storeId
);
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductDto.cs
View file @
f56695c2
...
@@ -8,10 +8,12 @@ namespace EasyAbp.EShop.Products.Products.Dtos
...
@@ -8,10 +8,12 @@ namespace EasyAbp.EShop.Products.Products.Dtos
{
{
public
class
CreateUpdateProductDto
:
IValidatableObject
public
class
CreateUpdateProductDto
:
IValidatableObject
{
{
[
Required
]
[
DisplayName
(
"ProductProductTypeId"
)]
[
DisplayName
(
"ProductProductTypeId"
)]
public
Guid
ProductTypeId
{
get
;
set
;
}
public
Guid
ProductTypeId
{
get
;
set
;
}
[
DisplayName
(
"ProductDetailId"
)]
public
Guid
ProductDetailId
{
get
;
set
;
}
/// <summary>
/// <summary>
/// This property is set for adding the store to ProductStore in creation, or for permission checking in update.
/// This property is set for adding the store to ProductStore in creation, or for permission checking in update.
/// </summary>
/// </summary>
...
@@ -25,8 +27,6 @@ namespace EasyAbp.EShop.Products.Products.Dtos
...
@@ -25,8 +27,6 @@ namespace EasyAbp.EShop.Products.Products.Dtos
[
DisplayName
(
"ProductDisplayName"
)]
[
DisplayName
(
"ProductDisplayName"
)]
public
string
DisplayName
{
get
;
set
;
}
public
string
DisplayName
{
get
;
set
;
}
public
CreateUpdateProductDetailDto
ProductDetail
{
get
;
set
;
}
public
ICollection
<
CreateUpdateProductAttributeDto
>
ProductAttributes
{
get
;
set
;
}
public
ICollection
<
CreateUpdateProductAttributeDto
>
ProductAttributes
{
get
;
set
;
}
[
DisplayName
(
"ProductInventoryStrategy"
)]
[
DisplayName
(
"ProductInventoryStrategy"
)]
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDetailDto.cs
deleted
100644 → 0
View file @
581cf178
using
Volo.Abp.Application.Dtos
;
namespace
EasyAbp.EShop.Products.Products.Dtos
{
public
class
ProductDetailDto
:
EntityDto
{
public
string
Description
{
get
;
set
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
View file @
f56695c2
...
@@ -8,6 +8,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos
...
@@ -8,6 +8,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos
{
{
public
Guid
ProductTypeId
{
get
;
set
;
}
public
Guid
ProductTypeId
{
get
;
set
;
}
public
Guid
ProductDetailId
{
get
;
set
;
}
public
ICollection
<
Guid
>
CategoryIds
{
get
;
set
;
}
public
ICollection
<
Guid
>
CategoryIds
{
get
;
set
;
}
public
string
DisplayName
{
get
;
set
;
}
public
string
DisplayName
{
get
;
set
;
}
...
@@ -20,8 +22,6 @@ namespace EasyAbp.EShop.Products.Products.Dtos
...
@@ -20,8 +22,6 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public
bool
IsPublished
{
get
;
set
;
}
public
bool
IsPublished
{
get
;
set
;
}
public
ProductDetailDto
ProductDetail
{
get
;
set
;
}
public
ICollection
<
ProductAttributeDto
>
ProductAttributes
{
get
;
set
;
}
public
ICollection
<
ProductAttributeDto
>
ProductAttributes
{
get
;
set
;
}
public
ICollection
<
ProductSkuDto
>
ProductSkus
{
get
;
set
;
}
public
ICollection
<
ProductSkuDto
>
ProductSkus
{
get
;
set
;
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductSkuDto.cs
View file @
f56695c2
...
@@ -16,5 +16,7 @@ namespace EasyAbp.EShop.Products.Products.Dtos
...
@@ -16,5 +16,7 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public
int
Sold
{
get
;
set
;
}
public
int
Sold
{
get
;
set
;
}
public
int
OrderMinQuantity
{
get
;
set
;
}
public
int
OrderMinQuantity
{
get
;
set
;
}
public
Guid
?
ProductDetailId
{
get
;
set
;
}
}
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductDetails/ProductDetailAppService.cs
0 → 100644
View file @
f56695c2
using
System
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Authorization
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.ProductStores
;
using
Volo.Abp
;
using
Volo.Abp.Application.Dtos
;
using
Volo.Abp.Application.Services
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
class
ProductDetailAppService
:
CrudAppService
<
ProductDetail
,
ProductDetailDto
,
Guid
,
PagedAndSortedResultRequestDto
,
CreateUpdateProductDetailDto
,
CreateUpdateProductDetailDto
>,
IProductDetailAppService
{
protected
override
string
CreatePolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Create
;
protected
override
string
DeletePolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Delete
;
protected
override
string
UpdatePolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Update
;
protected
override
string
GetPolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Default
;
protected
override
string
GetListPolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Default
;
private
readonly
IProductRepository
_productRepository
;
private
readonly
IProductStoreRepository
_productStoreRepository
;
private
readonly
IProductDetailRepository
_repository
;
public
ProductDetailAppService
(
IProductRepository
productRepository
,
IProductStoreRepository
productStoreRepository
,
IProductDetailRepository
repository
)
:
base
(
repository
)
{
_productRepository
=
productRepository
;
_productStoreRepository
=
productStoreRepository
;
_repository
=
repository
;
}
public
override
async
Task
<
ProductDetailDto
>
UpdateAsync
(
Guid
id
,
CreateUpdateProductDetailDto
input
)
{
await
CheckUpdatePolicyAsync
();
var
product
=
await
_productRepository
.
GetAsync
(
x
=>
x
.
ProductDetailId
==
id
);
await
CheckStoreIsProductOwnerAsync
(
product
.
Id
,
input
.
StoreId
);
var
detail
=
await
GetEntityByIdAsync
(
id
);
MapToEntity
(
input
,
detail
);
await
Repository
.
UpdateAsync
(
detail
,
autoSave
:
true
);
return
MapToGetOutputDto
(
detail
);
}
public
virtual
async
Task
DeleteAsync
(
Guid
id
,
Guid
storeId
)
{
await
CheckDeletePolicyAsync
();
var
product
=
await
_productRepository
.
GetAsync
(
x
=>
x
.
ProductDetailId
==
id
);
await
CheckStoreIsProductOwnerAsync
(
product
.
Id
,
storeId
);
await
Repository
.
DeleteAsync
(
id
);
}
[
RemoteService
(
false
)]
public
override
Task
DeleteAsync
(
Guid
id
)
{
throw
new
NotImplementedException
();
}
[
RemoteService
(
false
)]
public
override
Task
<
PagedResultDto
<
ProductDetailDto
>>
GetListAsync
(
PagedAndSortedResultRequestDto
input
)
{
throw
new
NotImplementedException
();
}
protected
virtual
async
Task
CheckStoreIsProductOwnerAsync
(
Guid
productId
,
Guid
storeId
)
{
var
productStore
=
await
_productStoreRepository
.
GetAsync
(
productId
,
storeId
);
if
(!
productStore
.
IsOwner
)
{
throw
new
StoreIsNotProductOwnerException
(
productId
,
storeId
);
}
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
View file @
f56695c2
...
@@ -4,10 +4,12 @@ using System.Linq;
...
@@ -4,10 +4,12 @@ using System.Linq;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Authorization
;
using
EasyAbp.EShop.Products.Authorization
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductStores
;
using
Volo.Abp
;
using
Volo.Abp
;
using
Volo.Abp.Application.Services
;
using
Volo.Abp.Application.Services
;
using
Volo.Abp.Domain.Entities
;
namespace
EasyAbp.EShop.Products.Products
namespace
EasyAbp.EShop.Products.Products
{
{
...
@@ -53,6 +55,8 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -53,6 +55,8 @@ namespace EasyAbp.EShop.Products.Products
await
Repository
.
InsertAsync
(
product
,
autoSave
:
true
);
await
Repository
.
InsertAsync
(
product
,
autoSave
:
true
);
await
CheckProductDetailIdAsync
(
product
.
Id
,
input
.
ProductDetailId
);
await
AddProductToStoreAsync
(
product
.
Id
,
input
.
StoreId
);
await
AddProductToStoreAsync
(
product
.
Id
,
input
.
StoreId
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
...
@@ -60,6 +64,19 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -60,6 +64,19 @@ namespace EasyAbp.EShop.Products.Products
return
MapToGetOutputDto
(
product
);
return
MapToGetOutputDto
(
product
);
}
}
private
async
Task
CheckProductDetailIdAsync
(
Guid
currentProductId
,
Guid
desiredProductDetailId
)
{
var
otherOwner
=
await
_repository
.
FindAsync
(
x
=>
x
.
ProductDetailId
==
desiredProductDetailId
&&
x
.
Id
!=
currentProductId
);
// Todo: should also check ProductSku owner
if
(
otherOwner
!=
null
)
{
throw
new
EntityNotFoundException
(
typeof
(
ProductDetail
),
desiredProductDetailId
);
}
}
protected
virtual
async
Task
AddProductToStoreAsync
(
Guid
productId
,
Guid
storeId
)
protected
virtual
async
Task
AddProductToStoreAsync
(
Guid
productId
,
Guid
storeId
)
{
{
await
_productStoreRepository
.
InsertAsync
(
new
ProductStore
(
GuidGenerator
.
Create
(),
CurrentTenant
.
Id
,
await
_productStoreRepository
.
InsertAsync
(
new
ProductStore
(
GuidGenerator
.
Create
(),
CurrentTenant
.
Id
,
...
@@ -80,18 +97,20 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -80,18 +97,20 @@ namespace EasyAbp.EShop.Products.Products
await
Repository
.
UpdateAsync
(
product
,
autoSave
:
true
);
await
Repository
.
UpdateAsync
(
product
,
autoSave
:
true
);
await
CheckProductDetailIdAsync
(
product
.
Id
,
input
.
ProductDetailId
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
return
MapToGetOutputDto
(
product
);
return
MapToGetOutputDto
(
product
);
}
}
protected
virtual
async
Task
CheckStoreIsProductOwnerAsync
(
Guid
i
d
,
Guid
storeId
)
protected
virtual
async
Task
CheckStoreIsProductOwnerAsync
(
Guid
productI
d
,
Guid
storeId
)
{
{
var
productStore
=
await
_productStoreRepository
.
GetAsync
(
i
d
,
storeId
);
var
productStore
=
await
_productStoreRepository
.
GetAsync
(
productI
d
,
storeId
);
if
(!
productStore
.
IsOwner
)
if
(!
productStore
.
IsOwner
)
{
{
throw
new
StoreIsNotProductOwnerException
(
i
d
,
storeId
);
throw
new
StoreIsNotProductOwnerException
(
productI
d
,
storeId
);
}
}
}
}
...
@@ -134,7 +153,7 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -134,7 +153,7 @@ namespace EasyAbp.EShop.Products.Products
product
.
ProductAttributes
.
RemoveAll
(
a
=>
exceptAttributeNames
.
Contains
(
a
.
DisplayName
));
product
.
ProductAttributes
.
RemoveAll
(
a
=>
exceptAttributeNames
.
Contains
(
a
.
DisplayName
));
}
}
[
RemoteService
(
IsMetadataEnabled
=
false
)]
[
RemoteService
(
false
)]
public
override
async
Task
DeleteAsync
(
Guid
id
)
public
override
async
Task
DeleteAsync
(
Guid
id
)
{
{
throw
new
NotImplementedException
();
throw
new
NotImplementedException
();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
View file @
f56695c2
...
@@ -7,6 +7,8 @@ using EasyAbp.EShop.Products.ProductTypes.Dtos;
...
@@ -7,6 +7,8 @@ using EasyAbp.EShop.Products.ProductTypes.Dtos;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories.Dtos
;
using
EasyAbp.EShop.Products.ProductCategories.Dtos
;
using
AutoMapper
;
using
AutoMapper
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
Volo.Abp.AutoMapper
;
using
Volo.Abp.AutoMapper
;
namespace
EasyAbp.EShop.Products
namespace
EasyAbp.EShop.Products
...
@@ -29,7 +31,8 @@ namespace EasyAbp.EShop.Products
...
@@ -29,7 +31,8 @@ namespace EasyAbp.EShop.Products
.
ForSourceMember
(
dto
=>
dto
.
CategoryIds
,
opt
=>
opt
.
DoNotValidate
())
.
ForSourceMember
(
dto
=>
dto
.
CategoryIds
,
opt
=>
opt
.
DoNotValidate
())
.
Ignore
(
p
=>
p
.
ProductAttributes
)
.
Ignore
(
p
=>
p
.
ProductAttributes
)
.
Ignore
(
p
=>
p
.
ProductSkus
);
.
Ignore
(
p
=>
p
.
ProductSkus
);
CreateMap
<
CreateUpdateProductDetailDto
,
ProductDetail
>(
MemberList
.
Source
);
CreateMap
<
CreateUpdateProductDetailDto
,
ProductDetail
>(
MemberList
.
Source
)
.
ForSourceMember
(
dto
=>
dto
.
StoreId
,
opt
=>
opt
.
DoNotValidate
());
CreateMap
<
CreateUpdateProductAttributeDto
,
ProductAttribute
>(
MemberList
.
Source
);
CreateMap
<
CreateUpdateProductAttributeDto
,
ProductAttribute
>(
MemberList
.
Source
);
CreateMap
<
CreateUpdateProductAttributeOptionDto
,
ProductAttributeOption
>(
MemberList
.
Source
);
CreateMap
<
CreateUpdateProductAttributeOptionDto
,
ProductAttributeOption
>(
MemberList
.
Source
);
CreateMap
<
Category
,
CategoryDto
>();
CreateMap
<
Category
,
CategoryDto
>();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json
View file @
f56695c2
...
@@ -5,8 +5,11 @@
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
View file @
f56695c2
...
@@ -6,8 +6,11 @@
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json
View file @
f56695c2
...
@@ -5,8 +5,11 @@
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
View file @
f56695c2
...
@@ -5,8 +5,11 @@
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json
View file @
f56695c2
...
@@ -6,8 +6,11 @@
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json
View file @
f56695c2
...
@@ -6,8 +6,11 @@
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json
View file @
f56695c2
...
@@ -5,8 +5,11 @@
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
View file @
f56695c2
...
@@ -6,8 +6,11 @@
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
View file @
f56695c2
...
@@ -6,8 +6,11 @@
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetails/IProductDetailRepository.cs
0 → 100644
View file @
f56695c2
using
System
;
using
System.Linq
;
using
EasyAbp.EShop.Products.Products
;
using
Volo.Abp.Domain.Repositories
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
interface
IProductDetailRepository
:
IRepository
<
ProductDetail
,
Guid
>
{
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/ProductDetail.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Product
Detail
s/ProductDetail.cs
View file @
f56695c2
using
System
;
using
System
;
using
JetBrains.Annotations
;
using
JetBrains.Annotations
;
using
Volo.Abp.Domain.Entities
;
using
Volo.Abp.Domain.Entities
.Auditing
;
namespace
EasyAbp.EShop.Products.Products
namespace
EasyAbp.EShop.Products.Product
Detail
s
{
{
public
class
ProductDetail
:
Entity
public
class
ProductDetail
:
FullAuditedAggregateRoot
<
Guid
>
{
{
public
virtual
Guid
ProductId
{
get
;
protected
set
;
}
[
CanBeNull
]
[
CanBeNull
]
public
virtual
string
Description
{
get
;
protected
set
;
}
public
virtual
string
Description
{
get
;
protected
set
;
}
protected
ProductDetail
()
{}
protected
ProductDetail
()
{}
public
ProductDetail
(
public
ProductDetail
(
Guid
productI
d
,
Guid
i
d
,
[
CanBeNull
]
string
description
)
[
CanBeNull
]
string
description
)
:
base
(
id
)
{
{
ProductId
=
productId
;
Description
=
description
;
Description
=
description
;
}
}
public
override
object
[]
GetKeys
(
)
public
void
SetDescription
(
string
description
)
{
{
return
new
object
[]
{
ProductId
}
;
Description
=
description
;
}
}
}
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/Product.cs
View file @
f56695c2
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
JetBrains.Annotations
;
using
JetBrains.Annotations
;
using
Volo.Abp.Domain.Entities.Auditing
;
using
Volo.Abp.Domain.Entities.Auditing
;
...
@@ -9,6 +10,8 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -9,6 +10,8 @@ namespace EasyAbp.EShop.Products.Products
{
{
public
virtual
Guid
ProductTypeId
{
get
;
protected
set
;
}
public
virtual
Guid
ProductTypeId
{
get
;
protected
set
;
}
public
virtual
Guid
ProductDetailId
{
get
;
protected
set
;
}
[
NotNull
]
[
NotNull
]
public
virtual
string
DisplayName
{
get
;
protected
set
;
}
public
virtual
string
DisplayName
{
get
;
protected
set
;
}
...
@@ -21,8 +24,6 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -21,8 +24,6 @@ namespace EasyAbp.EShop.Products.Products
public
virtual
bool
IsPublished
{
get
;
protected
set
;
}
public
virtual
bool
IsPublished
{
get
;
protected
set
;
}
public
virtual
ProductDetail
ProductDetail
{
get
;
protected
set
;
}
public
virtual
ICollection
<
ProductAttribute
>
ProductAttributes
{
get
;
protected
set
;
}
public
virtual
ICollection
<
ProductAttribute
>
ProductAttributes
{
get
;
protected
set
;
}
public
virtual
ICollection
<
ProductSku
>
ProductSkus
{
get
;
protected
set
;
}
public
virtual
ICollection
<
ProductSku
>
ProductSkus
{
get
;
protected
set
;
}
...
@@ -36,6 +37,7 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -36,6 +37,7 @@ namespace EasyAbp.EShop.Products.Products
public
Product
(
public
Product
(
Guid
id
,
Guid
id
,
Guid
productTypeId
,
Guid
productTypeId
,
Guid
productDetailId
,
string
displayName
,
string
displayName
,
InventoryStrategy
inventoryStrategy
,
InventoryStrategy
inventoryStrategy
,
bool
isPublished
,
bool
isPublished
,
...
@@ -44,6 +46,7 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -44,6 +46,7 @@ namespace EasyAbp.EShop.Products.Products
)
:
base
(
id
)
)
:
base
(
id
)
{
{
ProductTypeId
=
productTypeId
;
ProductTypeId
=
productTypeId
;
ProductDetailId
=
productDetailId
;
DisplayName
=
displayName
;
DisplayName
=
displayName
;
InventoryStrategy
=
inventoryStrategy
;
InventoryStrategy
=
inventoryStrategy
;
IsPublished
=
isPublished
;
IsPublished
=
isPublished
;
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/ProductSku.cs
View file @
f56695c2
...
@@ -22,6 +22,8 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -22,6 +22,8 @@ namespace EasyAbp.EShop.Products.Products
public
virtual
int
OrderMinQuantity
{
get
;
protected
set
;
}
public
virtual
int
OrderMinQuantity
{
get
;
protected
set
;
}
public
Guid
?
ProductDetailId
{
get
;
set
;
}
protected
ProductSku
()
{}
protected
ProductSku
()
{}
public
ProductSku
(
public
ProductSku
(
...
@@ -32,7 +34,8 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -32,7 +34,8 @@ namespace EasyAbp.EShop.Products.Products
decimal
price
,
decimal
price
,
int
inventory
,
int
inventory
,
int
sold
,
int
sold
,
int
orderMinQuantity
)
:
base
(
id
)
int
orderMinQuantity
,
Guid
?
productDetailId
)
:
base
(
id
)
{
{
SerializedAttributeOptionIds
=
serializedAttributeOptionIds
;
SerializedAttributeOptionIds
=
serializedAttributeOptionIds
;
Currency
=
currency
;
Currency
=
currency
;
...
@@ -41,6 +44,7 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -41,6 +44,7 @@ namespace EasyAbp.EShop.Products.Products
Inventory
=
inventory
;
Inventory
=
inventory
;
Sold
=
sold
;
Sold
=
sold
;
OrderMinQuantity
=
orderMinQuantity
;
OrderMinQuantity
=
orderMinQuantity
;
ProductDetailId
=
productDetailId
;
}
}
}
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp.EShop.Products.EntityFrameworkCore.csproj
View file @
f56695c2
...
@@ -12,8 +12,4 @@
...
@@ -12,8 +12,4 @@
<ProjectReference Include="..\EasyAbp.EShop.Products.Domain\EasyAbp.EShop.Products.Domain.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Products.Domain\EasyAbp.EShop.Products.Domain.csproj" />
</ItemGroup>
</ItemGroup>
<ItemGroup>
<Folder Include="EasyAbp\EShop\Products" />
</ItemGroup>
</Project>
</Project>
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/EShopProductsEntityFrameworkCoreModule.cs
View file @
f56695c2
...
@@ -2,6 +2,7 @@ using EasyAbp.EShop.Products.ProductStores;
...
@@ -2,6 +2,7 @@ using EasyAbp.EShop.Products.ProductStores;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.DependencyInjection
;
using
Volo.Abp.EntityFrameworkCore
;
using
Volo.Abp.EntityFrameworkCore
;
...
@@ -22,8 +23,9 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
...
@@ -22,8 +23,9 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
/* Add custom repositories here. Example:
/* Add custom repositories here. Example:
* options.AddRepository<Question, EfCoreQuestionRepository>();
* options.AddRepository<Question, EfCoreQuestionRepository>();
*/
*/
options
.
AddRepository
<
Product
,
ProductRepository
>();
options
.
AddRepository
<
Category
,
CategoryRepository
>();
options
.
AddRepository
<
Category
,
CategoryRepository
>();
options
.
AddRepository
<
Product
,
ProductRepository
>();
options
.
AddRepository
<
ProductDetail
,
ProductDetailRepository
>();
options
.
AddRepository
<
ProductType
,
ProductTypeRepository
>();
options
.
AddRepository
<
ProductType
,
ProductTypeRepository
>();
options
.
AddRepository
<
ProductCategory
,
ProductCategoryRepository
>();
options
.
AddRepository
<
ProductCategory
,
ProductCategoryRepository
>();
options
.
AddRepository
<
ProductStore
,
ProductStoreRepository
>();
options
.
AddRepository
<
ProductStore
,
ProductStoreRepository
>();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/IProductsDbContext.cs
View file @
f56695c2
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products;
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductStores
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContext.cs
View file @
f56695c2
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products;
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductStores
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContextModelCreatingExtensions.cs
View file @
f56695c2
...
@@ -4,6 +4,7 @@ using EasyAbp.EShop.Products.ProductTypes;
...
@@ -4,6 +4,7 @@ using EasyAbp.EShop.Products.ProductTypes;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products
;
using
System
;
using
System
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.EntityFrameworkCore
;
using
Volo.Abp
;
using
Volo.Abp
;
using
Volo.Abp.EntityFrameworkCore.Modeling
;
using
Volo.Abp.EntityFrameworkCore.Modeling
;
...
@@ -57,7 +58,6 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
...
@@ -57,7 +58,6 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
b
.
ToTable
(
options
.
TablePrefix
+
"ProductDetails"
,
options
.
Schema
);
b
.
ToTable
(
options
.
TablePrefix
+
"ProductDetails"
,
options
.
Schema
);
b
.
ConfigureByConvention
();
b
.
ConfigureByConvention
();
/* Configure more properties here */
/* Configure more properties here */
b
.
HasKey
(
x
=>
new
{
x
.
ProductId
});
});
});
builder
.
Entity
<
ProductAttribute
>(
b
=>
builder
.
Entity
<
ProductAttribute
>(
b
=>
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductDetails/ProductDetailRepository.cs
0 → 100644
View file @
f56695c2
using
System
;
using
EasyAbp.EShop.Products.EntityFrameworkCore
;
using
Volo.Abp.Domain.Repositories.EntityFrameworkCore
;
using
Volo.Abp.EntityFrameworkCore
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
class
ProductDetailRepository
:
EfCoreRepository
<
ProductsDbContext
,
ProductDetail
,
Guid
>,
IProductDetailRepository
{
public
ProductDetailRepository
(
IDbContextProvider
<
ProductsDbContext
>
dbContextProvider
)
:
base
(
dbContextProvider
)
{
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/Products/ProductRepository.cs
View file @
f56695c2
...
@@ -16,7 +16,6 @@ namespace EasyAbp.EShop.Products.Products
...
@@ -16,7 +16,6 @@ namespace EasyAbp.EShop.Products.Products
public
override
IQueryable
<
Product
>
WithDetails
()
public
override
IQueryable
<
Product
>
WithDetails
()
{
{
return
base
.
WithDetails
()
return
base
.
WithDetails
()
.
Include
(
x
=>
x
.
ProductDetail
)
.
Include
(
x
=>
x
.
ProductAttributes
).
ThenInclude
(
x
=>
x
.
ProductAttributeOptions
)
.
Include
(
x
=>
x
.
ProductAttributes
).
ThenInclude
(
x
=>
x
.
ProductAttributeOptions
)
.
Include
(
x
=>
x
.
ProductSkus
);
.
Include
(
x
=>
x
.
ProductSkus
);
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/CreateModal.cshtml.cs
View file @
f56695c2
...
@@ -4,6 +4,8 @@ using System.Linq;
...
@@ -4,6 +4,8 @@ using System.Linq;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories.Dtos
;
using
EasyAbp.EShop.Products.Categories.Dtos
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductTypes
;
...
@@ -16,6 +18,9 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
...
@@ -16,6 +18,9 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
{
{
public
class
CreateModalModel
:
ProductsPageModel
public
class
CreateModalModel
:
ProductsPageModel
{
{
[
BindProperty
(
SupportsGet
=
true
)]
public
Guid
StoreId
{
get
;
set
;
}
[
BindProperty
]
[
BindProperty
]
public
CreateEditProductViewModel
Product
{
get
;
set
;
}
public
CreateEditProductViewModel
Product
{
get
;
set
;
}
...
@@ -25,19 +30,22 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
...
@@ -25,19 +30,22 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
private
readonly
IProductTypeAppService
_productTypeAppService
;
private
readonly
IProductTypeAppService
_productTypeAppService
;
private
readonly
ICategoryAppService
_categoryAppService
;
private
readonly
ICategoryAppService
_categoryAppService
;
private
readonly
IProductDetailAppService
_productDetailAppService
;
private
readonly
IProductAppService
_service
;
private
readonly
IProductAppService
_service
;
public
CreateModalModel
(
public
CreateModalModel
(
IProductTypeAppService
productTypeAppService
,
IProductTypeAppService
productTypeAppService
,
ICategoryAppService
categoryAppService
,
ICategoryAppService
categoryAppService
,
IProductDetailAppService
productDetailAppService
,
IProductAppService
service
)
IProductAppService
service
)
{
{
_productTypeAppService
=
productTypeAppService
;
_productTypeAppService
=
productTypeAppService
;
_categoryAppService
=
categoryAppService
;
_categoryAppService
=
categoryAppService
;
_productDetailAppService
=
productDetailAppService
;
_service
=
service
;
_service
=
service
;
}
}
public
virtual
async
Task
OnGetAsync
(
Guid
storeId
,
Guid
?
categoryId
)
public
virtual
async
Task
OnGetAsync
(
Guid
?
categoryId
)
{
{
ProductTypes
=
ProductTypes
=
(
await
_productTypeAppService
.
GetListAsync
(
new
PagedAndSortedResultRequestDto
(
await
_productTypeAppService
.
GetListAsync
(
new
PagedAndSortedResultRequestDto
...
@@ -51,7 +59,11 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
...
@@ -51,7 +59,11 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
Product
=
new
CreateEditProductViewModel
Product
=
new
CreateEditProductViewModel
{
{
StoreId
=
storeId
StoreId
=
StoreId
,
ProductDetail
=
new
CreateEditProductDetailViewModel
{
StoreId
=
StoreId
}
};
};
if
(
categoryId
.
HasValue
)
if
(
categoryId
.
HasValue
)
...
@@ -62,7 +74,16 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
...
@@ -62,7 +74,16 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
public
virtual
async
Task
<
IActionResult
>
OnPostAsync
()
public
virtual
async
Task
<
IActionResult
>
OnPostAsync
()
{
{
await
_service
.
CreateAsync
(
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
));
var
detail
=
await
_productDetailAppService
.
CreateAsync
(
ObjectMapper
.
Map
<
CreateEditProductDetailViewModel
,
CreateUpdateProductDetailDto
>(
Product
.
ProductDetail
));
var
createDto
=
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
);
createDto
.
ProductDetailId
=
detail
.
Id
;
var
product
=
await
_service
.
CreateAsync
(
createDto
);
return
NoContent
();
return
NoContent
();
}
}
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/EditModal.cshtml.cs
View file @
f56695c2
...
@@ -3,6 +3,8 @@ using System.Collections.Generic;
...
@@ -3,6 +3,8 @@ using System.Collections.Generic;
using
System.Linq
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
Microsoft.AspNetCore.Mvc
;
using
Microsoft.AspNetCore.Mvc
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.Products.Dtos
;
...
@@ -28,15 +30,18 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
...
@@ -28,15 +30,18 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
private
readonly
IProductTypeAppService
_productTypeAppService
;
private
readonly
IProductTypeAppService
_productTypeAppService
;
private
readonly
ICategoryAppService
_categoryAppService
;
private
readonly
ICategoryAppService
_categoryAppService
;
private
readonly
IProductDetailAppService
_productDetailAppService
;
private
readonly
IProductAppService
_service
;
private
readonly
IProductAppService
_service
;
public
EditModalModel
(
public
EditModalModel
(
IProductTypeAppService
productTypeAppService
,
IProductTypeAppService
productTypeAppService
,
ICategoryAppService
categoryAppService
,
ICategoryAppService
categoryAppService
,
IProductDetailAppService
productDetailAppService
,
IProductAppService
service
)
IProductAppService
service
)
{
{
_productTypeAppService
=
productTypeAppService
;
_productTypeAppService
=
productTypeAppService
;
_categoryAppService
=
categoryAppService
;
_categoryAppService
=
categoryAppService
;
_productDetailAppService
=
productDetailAppService
;
_service
=
service
;
_service
=
service
;
}
}
...
@@ -54,15 +59,34 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
...
@@ -54,15 +59,34 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
var
productDto
=
await
_service
.
GetAsync
(
Id
);
var
productDto
=
await
_service
.
GetAsync
(
Id
);
var
detailDto
=
await
_productDetailAppService
.
GetAsync
(
productDto
.
ProductDetailId
);
Product
=
ObjectMapper
.
Map
<
ProductDto
,
CreateEditProductViewModel
>(
productDto
);
Product
=
ObjectMapper
.
Map
<
ProductDto
,
CreateEditProductViewModel
>(
productDto
);
Product
.
ProductDetail
=
new
CreateEditProductDetailViewModel
{
StoreId
=
storeId
,
Description
=
detailDto
.
Description
};
Product
.
StoreId
=
storeId
;
Product
.
StoreId
=
storeId
;
}
}
public
virtual
async
Task
<
IActionResult
>
OnPostAsync
()
public
virtual
async
Task
<
IActionResult
>
OnPostAsync
()
{
{
await
_service
.
UpdateAsync
(
Id
,
var
product
=
await
_service
.
GetAsync
(
Id
);
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
));
var
detail
=
await
_productDetailAppService
.
GetAsync
(
product
.
ProductDetailId
);
await
_productDetailAppService
.
UpdateAsync
(
detail
.
Id
,
ObjectMapper
.
Map
<
CreateEditProductDetailViewModel
,
CreateUpdateProductDetailDto
>(
Product
.
ProductDetail
));
var
updateProductDto
=
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
);
updateProductDto
.
ProductDetailId
=
detail
.
Id
;
await
_service
.
UpdateAsync
(
Id
,
updateProductDto
);
return
NoContent
();
return
NoContent
();
}
}
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Update
ProductAttributeOptionViewModel.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Edit
ProductAttributeOptionViewModel.cs
View file @
f56695c2
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
{
{
public
class
Create
Update
ProductAttributeOptionViewModel
public
class
Create
Edit
ProductAttributeOptionViewModel
{
{
[
Required
]
[
Required
]
[
Display
(
Name
=
"ProductAttributeOptionDisplayName"
)]
[
Display
(
Name
=
"ProductAttributeOptionDisplayName"
)]
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Update
ProductAttributeViewModel.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Edit
ProductAttributeViewModel.cs
View file @
f56695c2
...
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
...
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
{
{
public
class
Create
Update
ProductAttributeViewModel
public
class
Create
Edit
ProductAttributeViewModel
{
{
[
Required
]
[
Required
]
[
Display
(
Name
=
"ProductAttributeDisplayName"
)]
[
Display
(
Name
=
"ProductAttributeDisplayName"
)]
...
@@ -15,6 +15,6 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
...
@@ -15,6 +15,6 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[
Display
(
Name
=
"ProductAttributeDisplayOrder"
)]
[
Display
(
Name
=
"ProductAttributeDisplayOrder"
)]
public
int
DisplayOrder
{
get
;
set
;
}
=
0
;
public
int
DisplayOrder
{
get
;
set
;
}
=
0
;
public
List
<
Create
Update
ProductAttributeOptionViewModel
>
ProductAttributeOptions
{
get
;
set
;
}
public
List
<
Create
Edit
ProductAttributeOptionViewModel
>
ProductAttributeOptions
{
get
;
set
;
}
}
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Update
ProductDetailViewModel.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Edit
ProductDetailViewModel.cs
View file @
f56695c2
...
@@ -4,12 +4,17 @@ using System.ComponentModel;
...
@@ -4,12 +4,17 @@ using System.ComponentModel;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations
;
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
Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
;
using
Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
;
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
{
{
public
class
Create
Update
ProductDetailViewModel
public
class
Create
Edit
ProductDetailViewModel
{
{
[
HiddenInput
]
[
Display
(
Name
=
"ProductStore"
)]
public
Guid
StoreId
{
get
;
set
;
}
[
TextArea
(
Rows
=
4
)]
[
TextArea
(
Rows
=
4
)]
[
Display
(
Name
=
"ProductDetailDescription"
)]
[
Display
(
Name
=
"ProductDetailDescription"
)]
public
string
Description
{
get
;
set
;
}
public
string
Description
{
get
;
set
;
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs
View file @
f56695c2
...
@@ -28,7 +28,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
...
@@ -28,7 +28,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[
Display
(
Name
=
"ProductDisplayName"
)]
[
Display
(
Name
=
"ProductDisplayName"
)]
public
string
DisplayName
{
get
;
set
;
}
public
string
DisplayName
{
get
;
set
;
}
public
Create
Update
ProductDetailViewModel
ProductDetail
{
get
;
set
;
}
public
Create
Edit
ProductDetailViewModel
ProductDetail
{
get
;
set
;
}
[
Required
]
[
Required
]
[
Placeholder
(
"ProductAttributeNamesPlaceholder"
)]
[
Placeholder
(
"ProductAttributeNamesPlaceholder"
)]
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/index.js
View file @
f56695c2
...
@@ -34,7 +34,7 @@ $(function () {
...
@@ -34,7 +34,7 @@ $(function () {
return
l
(
'
ProductDeletionConfirmationMessage
'
,
data
.
record
.
id
);
return
l
(
'
ProductDeletionConfirmationMessage
'
,
data
.
record
.
id
);
},
},
action
:
function
(
data
)
{
action
:
function
(
data
)
{
service
.
delete
(
{
id
:
data
.
record
.
id
,
storeId
:
storeId
}
)
service
.
delete
(
data
.
record
.
id
,
storeId
)
.
then
(
function
()
{
.
then
(
function
()
{
abp
.
notify
.
info
(
l
(
'
SuccessfullyDeleted
'
));
abp
.
notify
.
info
(
l
(
'
SuccessfullyDeleted
'
));
dataTable
.
ajax
.
reload
();
dataTable
.
ajax
.
reload
();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs
View file @
f56695c2
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products.Dtos;
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products.Dtos;
using
EasyAbp.EShop.Products.Categories.Dtos
;
using
EasyAbp.EShop.Products.Categories.Dtos
;
using
EasyAbp.EShop.Products.ProductTypes.Dtos
;
using
EasyAbp.EShop.Products.ProductTypes.Dtos
;
using
AutoMapper
;
using
AutoMapper
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
;
using
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
;
using
Volo.Abp.AutoMapper
;
using
Volo.Abp.AutoMapper
;
...
@@ -18,7 +19,9 @@ namespace EasyAbp.EShop.Products.Web
...
@@ -18,7 +19,9 @@ namespace EasyAbp.EShop.Products.Web
* Alternatively, you can split your mapping configurations
* Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */
* into multiple profile classes for a better organization. */
CreateMap
<
ProductDto
,
CreateEditProductViewModel
>()
CreateMap
<
ProductDto
,
CreateEditProductViewModel
>()
.
Ignore
(
dto
=>
dto
.
ProductDetail
)
.
Ignore
(
dto
=>
dto
.
StoreId
)
.
Ignore
(
dto
=>
dto
.
StoreId
)
.
ForSourceMember
(
dto
=>
dto
.
ProductDetailId
,
opt
=>
opt
.
DoNotValidate
())
// .Ignore(x => x.ProductAttributes);
// .Ignore(x => x.ProductAttributes);
.
ForMember
(
dest
=>
dest
.
ProductAttributeNames
,
.
ForMember
(
dest
=>
dest
.
ProductAttributeNames
,
opt
=>
opt
.
MapFrom
(
source
=>
opt
=>
opt
.
MapFrom
(
source
=>
...
@@ -29,6 +32,8 @@ namespace EasyAbp.EShop.Products.Web
...
@@ -29,6 +32,8 @@ namespace EasyAbp.EShop.Products.Web
.
Select
(
a
=>
a
.
ProductAttributeOptions
.
Select
(
o
=>
o
.
DisplayName
).
JoinAsString
(
","
))
.
Select
(
a
=>
a
.
ProductAttributeOptions
.
Select
(
o
=>
o
.
DisplayName
).
JoinAsString
(
","
))
.
JoinAsString
(
Environment
.
NewLine
)));
.
JoinAsString
(
Environment
.
NewLine
)));
CreateMap
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>()
CreateMap
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>()
.
Ignore
(
dto
=>
dto
.
ProductDetailId
)
.
ForSourceMember
(
model
=>
model
.
ProductDetail
,
opt
=>
opt
.
DoNotValidate
())
.
ForMember
(
dest
=>
dest
.
ProductAttributes
,
.
ForMember
(
dest
=>
dest
.
ProductAttributes
,
opt
=>
opt
.
MapFrom
(
x
=>
opt
=>
opt
.
MapFrom
(
x
=>
x
.
ProductAttributeNames
.
Split
(
","
,
StringSplitOptions
.
RemoveEmptyEntries
).
Select
((
s
,
i
)
=>
x
.
ProductAttributeNames
.
Split
(
","
,
StringSplitOptions
.
RemoveEmptyEntries
).
Select
((
s
,
i
)
=>
...
@@ -40,12 +45,13 @@ namespace EasyAbp.EShop.Products.Web
...
@@ -40,12 +45,13 @@ namespace EasyAbp.EShop.Products.Web
.
Split
(
","
,
StringSplitOptions
.
RemoveEmptyEntries
).
Select
(
o
=>
.
Split
(
","
,
StringSplitOptions
.
RemoveEmptyEntries
).
Select
(
o
=>
new
CreateUpdateProductAttributeOptionDto
{
DisplayName
=
o
}))
new
CreateUpdateProductAttributeOptionDto
{
DisplayName
=
o
}))
})));
})));
CreateMap
<
ProductDetailDto
,
CreateUpdateProductDetailViewModel
>();
CreateMap
<
ProductDetailDto
,
CreateEditProductDetailViewModel
>()
CreateMap
<
CreateUpdateProductDetailViewModel
,
CreateUpdateProductDetailDto
>();
.
Ignore
(
model
=>
model
.
StoreId
);
CreateMap
<
ProductAttributeDto
,
CreateUpdateProductAttributeViewModel
>();
CreateMap
<
CreateEditProductDetailViewModel
,
CreateUpdateProductDetailDto
>();
CreateMap
<
CreateUpdateProductAttributeViewModel
,
CreateUpdateProductAttributeDto
>();
CreateMap
<
ProductAttributeDto
,
CreateEditProductAttributeViewModel
>();
CreateMap
<
ProductAttributeOptionDto
,
CreateUpdateProductAttributeOptionViewModel
>();
CreateMap
<
CreateEditProductAttributeViewModel
,
CreateUpdateProductAttributeDto
>();
CreateMap
<
CreateUpdateProductAttributeOptionViewModel
,
CreateUpdateProductAttributeOptionDto
>();
CreateMap
<
ProductAttributeOptionDto
,
CreateEditProductAttributeOptionViewModel
>();
CreateMap
<
CreateEditProductAttributeOptionViewModel
,
CreateUpdateProductAttributeOptionDto
>();
CreateMap
<
CategoryDto
,
CreateUpdateCategoryDto
>();
CreateMap
<
CategoryDto
,
CreateUpdateCategoryDto
>();
CreateMap
<
ProductTypeDto
,
CreateUpdateProductTypeDto
>();
CreateMap
<
ProductTypeDto
,
CreateUpdateProductTypeDto
>();
}
}
...
...
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200428164406_ProductEntitiesAdjustment.Designer.cs
0 → 100644
View file @
f56695c2
This diff is collapsed.
Click to expand it.
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200428164406_ProductEntitiesAdjustment.cs
0 → 100644
View file @
f56695c2
using
System
;
using
Microsoft.EntityFrameworkCore.Migrations
;
namespace
EasyMall.Migrations
{
public
partial
class
ProductEntitiesAdjustment
:
Migration
{
protected
override
void
Up
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
DropForeignKey
(
name
:
"FK_ProductsProductDetails_ProductsProducts_ProductId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ProductId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"ProductDetailId"
,
table
:
"ProductsProductSkus"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"ProductDetailId"
,
table
:
"ProductsProducts"
,
nullable
:
false
,
defaultValue
:
new
Guid
(
"00000000-0000-0000-0000-000000000000"
));
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"Id"
,
table
:
"ProductsProductDetails"
,
nullable
:
false
,
defaultValue
:
new
Guid
(
"00000000-0000-0000-0000-000000000000"
));
migrationBuilder
.
AddColumn
<
string
>(
name
:
"ConcurrencyStamp"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
DateTime
>(
name
:
"CreationTime"
,
table
:
"ProductsProductDetails"
,
nullable
:
false
,
defaultValue
:
new
DateTime
(
1
,
1
,
1
,
0
,
0
,
0
,
0
,
DateTimeKind
.
Unspecified
));
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"CreatorId"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"DeleterId"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
DateTime
>(
name
:
"DeletionTime"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
string
>(
name
:
"ExtraProperties"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
bool
>(
name
:
"IsDeleted"
,
table
:
"ProductsProductDetails"
,
nullable
:
false
,
defaultValue
:
false
);
migrationBuilder
.
AddColumn
<
DateTime
>(
name
:
"LastModificationTime"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"LastModifierId"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
,
column
:
"Id"
);
}
protected
override
void
Down
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
DropPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ProductDetailId"
,
table
:
"ProductsProductSkus"
);
migrationBuilder
.
DropColumn
(
name
:
"ProductDetailId"
,
table
:
"ProductsProducts"
);
migrationBuilder
.
DropColumn
(
name
:
"Id"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ConcurrencyStamp"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"CreationTime"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"CreatorId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"DeleterId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"DeletionTime"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ExtraProperties"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"IsDeleted"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"LastModificationTime"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"LastModifierId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"ProductId"
,
table
:
"ProductsProductDetails"
,
type
:
"uniqueidentifier"
,
nullable
:
false
,
defaultValue
:
new
Guid
(
"00000000-0000-0000-0000-000000000000"
));
migrationBuilder
.
AddPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
,
column
:
"ProductId"
);
migrationBuilder
.
AddForeignKey
(
name
:
"FK_ProductsProductDetails_ProductsProducts_ProductId"
,
table
:
"ProductsProductDetails"
,
column
:
"ProductId"
,
principalTable
:
"ProductsProducts"
,
principalColumn
:
"Id"
,
onDelete
:
ReferentialAction
.
Cascade
);
}
}
}
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs
View file @
f56695c2
...
@@ -134,6 +134,59 @@ namespace EasyMall.Migrations
...
@@ -134,6 +134,59 @@ namespace EasyMall.Migrations
b
.
ToTable
(
"ProductsProductCategories"
);
b
.
ToTable
(
"ProductsProductCategories"
);
});
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductDetails.ProductDetail"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductDetails"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductStores.ProductStore"
,
b
=>
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductStores.ProductStore"
,
b
=>
{
{
b
.
Property
<
Guid
>(
"Id"
)
b
.
Property
<
Guid
>(
"Id"
)
...
@@ -319,6 +372,9 @@ namespace EasyMall.Migrations
...
@@ -319,6 +372,9 @@ namespace EasyMall.Migrations
b
.
Property
<
string
>(
"MediaResources"
)
b
.
Property
<
string
>(
"MediaResources"
)
.
HasColumnType
(
"nvarchar(max)"
);
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"ProductTypeId"
)
b
.
Property
<
Guid
>(
"ProductTypeId"
)
.
HasColumnType
(
"uniqueidentifier"
);
.
HasColumnType
(
"uniqueidentifier"
);
...
@@ -437,19 +493,6 @@ namespace EasyMall.Migrations
...
@@ -437,19 +493,6 @@ namespace EasyMall.Migrations
b
.
ToTable
(
"ProductsProductAttributeOptions"
);
b
.
ToTable
(
"ProductsProductAttributeOptions"
);
});
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductDetail"
,
b
=>
{
b
.
Property
<
Guid
>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"ProductId"
);
b
.
ToTable
(
"ProductsProductDetails"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
{
{
b
.
Property
<
Guid
>(
"Id"
)
b
.
Property
<
Guid
>(
"Id"
)
...
@@ -501,6 +544,9 @@ namespace EasyMall.Migrations
...
@@ -501,6 +544,9 @@ namespace EasyMall.Migrations
b
.
Property
<
decimal
>(
"Price"
)
b
.
Property
<
decimal
>(
"Price"
)
.
HasColumnType
(
"decimal(18,6)"
);
.
HasColumnType
(
"decimal(18,6)"
);
b
.
Property
<
Guid
?>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"ProductId"
)
b
.
Property
<
Guid
?>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
.
HasColumnType
(
"uniqueidentifier"
);
...
@@ -2125,15 +2171,6 @@ namespace EasyMall.Migrations
...
@@ -2125,15 +2171,6 @@ namespace EasyMall.Migrations
.
HasForeignKey
(
"ProductAttributeId"
);
.
HasForeignKey
(
"ProductAttributeId"
);
});
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductDetail"
,
b
=>
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
.
WithOne
(
"ProductDetail"
)
.
HasForeignKey
(
"EasyAbp.EShop.Products.Products.ProductDetail"
,
"ProductId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
{
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment