diff --git a/Directory.Build.props b/Directory.Build.props
index 9cfc41d2..ddb6a043 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,7 +3,7 @@
5.1.3
2.5.3
- 2.0.11
+ 2.0.12
1.0.0
1.7.0
3.6.2
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/cs.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/cs.json
deleted file mode 100644
index e84bbd26..00000000
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/cs.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/en.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/en.json
index f14075c0..91866139 100644
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/en.json
+++ b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/en.json
@@ -1,7 +1,6 @@
{
"culture": "en",
"texts": {
- "Menu:EasyAbpEShop": "EShop",
- "ManageYourProfile": "Manage your profile"
+ "Menu:EasyAbpEShop": "EShop"
}
}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/pl-PL.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/pl-PL.json
deleted file mode 100644
index 7f76e0d6..00000000
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/pl-PL.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "pl-PL",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/pt-BR.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/pt-BR.json
deleted file mode 100644
index cf245359..00000000
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/pt-BR.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/sl.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/sl.json
deleted file mode 100644
index 5d85627a..00000000
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/sl.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "ManageYourProfile": "Upravljajte svojim profilom"
- }
-}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/tr.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/tr.json
deleted file mode 100644
index 1dbfdf6d..00000000
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/tr.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "ManageYourProfile": "Profil y�netimi"
- }
-}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/vi.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/vi.json
deleted file mode 100644
index 9807bfd6..00000000
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/vi.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hans.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hans.json
index 3bd256c1..77990588 100644
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hans.json
+++ b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hans.json
@@ -1,7 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
- "Menu:EasyAbpEShop": "EShop 商城",
- "ManageYourProfile": "管理个人资料"
+ "Menu:EasyAbpEShop": "EShop 商城"
}
}
\ No newline at end of file
diff --git a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hant.json b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hant.json
index 4b545d34..d0d29f96 100644
--- a/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hant.json
+++ b/integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp/EShop/Localization/EShop/zh-Hant.json
@@ -1,7 +1,6 @@
{
"culture": "zh-Hant",
"texts": {
- "Menu:EasyAbpEShop": "EShop 商城",
- "ManageYourProfile": "管理個人資料"
+ "Menu:EasyAbpEShop": "EShop 商城"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs
index 2e432276..f8759d9a 100644
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs
+++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs
@@ -90,6 +90,8 @@ namespace EasyAbp.EShop.Orders.Orders
var productDict = await GetProductDictionaryAsync(input.OrderLines.Select(dto => dto.ProductId).ToList());
+ ThrowIfExistFlashSalesProduct(productDict);
+
await AuthorizationService.CheckAsync(
new OrderCreationResource
{
@@ -118,7 +120,15 @@ namespace EasyAbp.EShop.Orders.Orders
return await MapToGetOutputDtoAsync(order);
}
-
+
+ protected virtual void ThrowIfExistFlashSalesProduct(Dictionary productDict)
+ {
+ if (productDict.Any(x => x.Value.InventoryStrategy is InventoryStrategy.FlashSales))
+ {
+ throw new BusinessException(OrdersErrorCodes.ExistFlashSalesProduct);
+ }
+ }
+
protected virtual async Task DiscountOrderAsync(Order order, Dictionary productDict)
{
foreach (var provider in LazyServiceProvider.LazyGetService>())
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/cs.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/cs.json
deleted file mode 100644
index 9b750849..00000000
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/cs.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:OrderManagement": "Orders",
- "Menu:Order": "Order",
- "Order": "Order",
- "OrderStoreId": "Store ID",
- "OrderOrderNumber": "Order number",
- "OrderCustomerUserId": "Customer user ID",
- "OrderOrderStatus": "Status",
- "OrderCurrency": "Currency",
- "OrderProductTotalPrice": "Product total price",
- "OrderTotalDiscount": "Total discount",
- "OrderTotalPrice": "Total price",
- "OrderActualTotalPrice": "Actual total price",
- "OrderRefundAmount": "Refund amount",
- "OrderCustomerRemark": "Customer remark",
- "OrderStaffRemark": "Staff remark",
- "OrderPaidTime": "Paid time",
- "OrderCompletionTime": "Completion time",
- "OrderCanceledTime": "Canceled time",
- "OrderReducedInventoryAfterPlacingTime": "Time of inventory reduced after placing",
- "OrderReducedInventoryAfterPaymentTime": "Time of inventory reduced after payment",
- "OrderLine": "Order line",
- "OrderLineProductId": "Product ID",
- "OrderLineProductSkuId": "Product SKU ID",
- "OrderLineProductModificationTime": "Product modification time",
- "OrderLineProductDetailModificationTime": "Product detail modification time",
- "OrderLineProductGroupName": "Product group name",
- "OrderLineProductGroupDisplayName": "Product group",
- "OrderLineProductUniqueName": "Product unique name",
- "OrderLineProductDisplayName": "Product display name",
- "OrderLineSkuName": "SKU name",
- "OrderLineSkuDescription": "SKU description",
- "OrderLineMediaResources": "Media resources",
- "OrderLineCurrency": "Currency",
- "OrderLineUnitPrice": "Unit price",
- "OrderLineTotalPrice": "Total price",
- "OrderLineTotalDiscount": "Total discount",
- "OrderLineActualTotalPrice": "Actual total price",
- "OrderLineQuantity": "Quantity",
- "EasyAbp.EShop.Orders:UnexpectedCurrency": "Only the specified currency {expectedCurrency} is allowed.",
- "EasyAbp.EShop.Orders:OrderLineInvalidQuantity": "Invalid quantity {quantity} for product {productId} (SKU: {productSkuId}).",
- "EasyAbp.EShop.Orders:DiscountAmountOverflow": "The discount amount overflow.",
- "EasyAbp.EShop.Orders:DuplicateOrderExtraFee": "The extra fee {extraFeeName} (key: {extraFeeKey}) is existed.",
- "EasyAbp.EShop.Orders:InvalidOrderExtraFee": "The extra fee {extraFee} is invalid.",
- "EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
- "EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
- "EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/en.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/en.json
index 201bb4a9..622b7f6d 100644
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/en.json
+++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/en.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop",
"Menu:OrderManagement": "Orders",
- "ManageYourProfile": "Manage your profile",
"Menu:Order": "Order",
"Order": "Order",
"OrderStoreId": "Store ID",
@@ -49,6 +48,7 @@
"EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
"EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
"EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
+ "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage.",
+ "EasyAbp.EShop.Orders:ExistFlashSalesProduct": "Exist unexpected flash-sales product"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pl.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pl.json
deleted file mode 100644
index 7294c67d..00000000
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pl.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "culture": "pl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:OrderManagement": "Orders",
- "Menu:Order": "Order",
- "Order": "Order",
- "OrderStoreId": "Store ID",
- "OrderOrderNumber": "Order number",
- "OrderCustomerUserId": "Customer user ID",
- "OrderOrderStatus": "Status",
- "OrderCurrency": "Currency",
- "OrderProductTotalPrice": "Product total price",
- "OrderTotalDiscount": "Total discount",
- "OrderTotalPrice": "Total price",
- "OrderActualTotalPrice": "Actual total price",
- "OrderRefundAmount": "Refund amount",
- "OrderCustomerRemark": "Customer remark",
- "OrderStaffRemark": "Staff remark",
- "OrderPaidTime": "Paid time",
- "OrderCompletionTime": "Completion time",
- "OrderCanceledTime": "Canceled time",
- "OrderReducedInventoryAfterPlacingTime": "Time of inventory reduced after placing",
- "OrderReducedInventoryAfterPaymentTime": "Time of inventory reduced after payment",
- "OrderLine": "Order line",
- "OrderLineProductId": "Product ID",
- "OrderLineProductSkuId": "Product SKU ID",
- "OrderLineProductModificationTime": "Product modification time",
- "OrderLineProductDetailModificationTime": "Product detail modification time",
- "OrderLineProductGroupName": "Product group name",
- "OrderLineProductGroupDisplayName": "Product group",
- "OrderLineProductUniqueName": "Product unique name",
- "OrderLineProductDisplayName": "Product display name",
- "OrderLineSkuName": "SKU name",
- "OrderLineSkuDescription": "SKU description",
- "OrderLineMediaResources": "Media resources",
- "OrderLineCurrency": "Currency",
- "OrderLineUnitPrice": "Unit price",
- "OrderLineTotalPrice": "Total price",
- "OrderLineTotalDiscount": "Total discount",
- "OrderLineActualTotalPrice": "Actual total price",
- "OrderLineQuantity": "Quantity",
- "EasyAbp.EShop.Orders:UnexpectedCurrency": "Only the specified currency {expectedCurrency} is allowed.",
- "EasyAbp.EShop.Orders:OrderLineInvalidQuantity": "Invalid quantity {quantity} for product {productId} (SKU: {productSkuId}).",
- "EasyAbp.EShop.Orders:DiscountAmountOverflow": "The discount amount overflow.",
- "EasyAbp.EShop.Orders:DuplicateOrderExtraFee": "The extra fee {extraFeeName} (key: {extraFeeKey}) is existed.",
- "EasyAbp.EShop.Orders:InvalidOrderExtraFee": "The extra fee {extraFee} is invalid.",
- "EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
- "EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
- "EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pt-BR.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pt-BR.json
deleted file mode 100644
index 95619934..00000000
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pt-BR.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:OrderManagement": "Orders",
- "Menu:Order": "Order",
- "Order": "Order",
- "OrderStoreId": "Store ID",
- "OrderOrderNumber": "Order number",
- "OrderCustomerUserId": "Customer user ID",
- "OrderOrderStatus": "Status",
- "OrderCurrency": "Currency",
- "OrderProductTotalPrice": "Product total price",
- "OrderTotalDiscount": "Total discount",
- "OrderTotalPrice": "Total price",
- "OrderActualTotalPrice": "Actual total price",
- "OrderRefundAmount": "Refund amount",
- "OrderCustomerRemark": "Customer remark",
- "OrderStaffRemark": "Staff remark",
- "OrderPaidTime": "Paid time",
- "OrderCompletionTime": "Completion time",
- "OrderCanceledTime": "Canceled time",
- "OrderReducedInventoryAfterPlacingTime": "Time of inventory reduced after placing",
- "OrderReducedInventoryAfterPaymentTime": "Time of inventory reduced after payment",
- "OrderLine": "Order line",
- "OrderLineProductId": "Product ID",
- "OrderLineProductSkuId": "Product SKU ID",
- "OrderLineProductModificationTime": "Product modification time",
- "OrderLineProductDetailModificationTime": "Product detail modification time",
- "OrderLineProductGroupName": "Product group name",
- "OrderLineProductGroupDisplayName": "Product group",
- "OrderLineProductUniqueName": "Product unique name",
- "OrderLineProductDisplayName": "Product display name",
- "OrderLineSkuName": "SKU name",
- "OrderLineSkuDescription": "SKU description",
- "OrderLineMediaResources": "Media resources",
- "OrderLineCurrency": "Currency",
- "OrderLineUnitPrice": "Unit price",
- "OrderLineTotalPrice": "Total price",
- "OrderLineTotalDiscount": "Total discount",
- "OrderLineActualTotalPrice": "Actual total price",
- "OrderLineQuantity": "Quantity",
- "EasyAbp.EShop.Orders:UnexpectedCurrency": "Only the specified currency {expectedCurrency} is allowed.",
- "EasyAbp.EShop.Orders:OrderLineInvalidQuantity": "Invalid quantity {quantity} for product {productId} (SKU: {productSkuId}).",
- "EasyAbp.EShop.Orders:DiscountAmountOverflow": "The discount amount overflow.",
- "EasyAbp.EShop.Orders:DuplicateOrderExtraFee": "The extra fee {extraFeeName} (key: {extraFeeKey}) is existed.",
- "EasyAbp.EShop.Orders:InvalidOrderExtraFee": "The extra fee {extraFee} is invalid.",
- "EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
- "EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
- "EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/sl.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/sl.json
deleted file mode 100644
index 8bcfdbba..00000000
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/sl.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:OrderManagement": "Orders",
- "ManageYourProfile": "Upravljajte svojim profilom",
- "Menu:Order": "Order",
- "Order": "Order",
- "OrderStoreId": "Store ID",
- "OrderOrderNumber": "Order number",
- "OrderCustomerUserId": "Customer user ID",
- "OrderOrderStatus": "Status",
- "OrderCurrency": "Currency",
- "OrderProductTotalPrice": "Product total price",
- "OrderTotalDiscount": "Total discount",
- "OrderTotalPrice": "Total price",
- "OrderActualTotalPrice": "Actual total price",
- "OrderRefundAmount": "Refund amount",
- "OrderCustomerRemark": "Customer remark",
- "OrderStaffRemark": "Staff remark",
- "OrderPaidTime": "Paid time",
- "OrderCompletionTime": "Completion time",
- "OrderCanceledTime": "Canceled time",
- "OrderReducedInventoryAfterPlacingTime": "Time of inventory reduced after placing",
- "OrderReducedInventoryAfterPaymentTime": "Time of inventory reduced after payment",
- "OrderLine": "Order line",
- "OrderLineProductId": "Product ID",
- "OrderLineProductSkuId": "Product SKU ID",
- "OrderLineProductModificationTime": "Product modification time",
- "OrderLineProductDetailModificationTime": "Product detail modification time",
- "OrderLineProductGroupName": "Product group name",
- "OrderLineProductGroupDisplayName": "Product group",
- "OrderLineProductUniqueName": "Product unique name",
- "OrderLineProductDisplayName": "Product display name",
- "OrderLineSkuName": "SKU name",
- "OrderLineSkuDescription": "SKU description",
- "OrderLineMediaResources": "Media resources",
- "OrderLineCurrency": "Currency",
- "OrderLineUnitPrice": "Unit price",
- "OrderLineTotalPrice": "Total price",
- "OrderLineTotalDiscount": "Total discount",
- "OrderLineActualTotalPrice": "Actual total price",
- "OrderLineQuantity": "Quantity",
- "EasyAbp.EShop.Orders:UnexpectedCurrency": "Only the specified currency {expectedCurrency} is allowed.",
- "EasyAbp.EShop.Orders:OrderLineInvalidQuantity": "Invalid quantity {quantity} for product {productId} (SKU: {productSkuId}).",
- "EasyAbp.EShop.Orders:DiscountAmountOverflow": "The discount amount overflow.",
- "EasyAbp.EShop.Orders:DuplicateOrderExtraFee": "The extra fee {extraFeeName} (key: {extraFeeKey}) is existed.",
- "EasyAbp.EShop.Orders:InvalidOrderExtraFee": "The extra fee {extraFee} is invalid.",
- "EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
- "EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
- "EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/tr.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/tr.json
deleted file mode 100644
index 5d4c6d9a..00000000
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/tr.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:OrderManagement": "Orders",
- "ManageYourProfile": "Profil y�netimi",
- "Menu:Order": "Order",
- "Order": "Order",
- "OrderStoreId": "Store ID",
- "OrderOrderNumber": "Order number",
- "OrderCustomerUserId": "Customer user ID",
- "OrderOrderStatus": "Status",
- "OrderCurrency": "Currency",
- "OrderProductTotalPrice": "Product total price",
- "OrderTotalDiscount": "Total discount",
- "OrderTotalPrice": "Total price",
- "OrderActualTotalPrice": "Actual total price",
- "OrderRefundAmount": "Refund amount",
- "OrderCustomerRemark": "Customer remark",
- "OrderStaffRemark": "Staff remark",
- "OrderPaidTime": "Paid time",
- "OrderCompletionTime": "Completion time",
- "OrderCanceledTime": "Canceled time",
- "OrderReducedInventoryAfterPlacingTime": "Time of inventory reduced after placing",
- "OrderReducedInventoryAfterPaymentTime": "Time of inventory reduced after payment",
- "OrderLine": "Order line",
- "OrderLineProductId": "Product ID",
- "OrderLineProductSkuId": "Product SKU ID",
- "OrderLineProductModificationTime": "Product modification time",
- "OrderLineProductDetailModificationTime": "Product detail modification time",
- "OrderLineProductGroupName": "Product group name",
- "OrderLineProductGroupDisplayName": "Product group",
- "OrderLineProductUniqueName": "Product unique name",
- "OrderLineProductDisplayName": "Product display name",
- "OrderLineSkuName": "SKU name",
- "OrderLineSkuDescription": "SKU description",
- "OrderLineMediaResources": "Media resources",
- "OrderLineCurrency": "Currency",
- "OrderLineUnitPrice": "Unit price",
- "OrderLineTotalPrice": "Total price",
- "OrderLineTotalDiscount": "Total discount",
- "OrderLineActualTotalPrice": "Actual total price",
- "OrderLineQuantity": "Quantity",
- "EasyAbp.EShop.Orders:UnexpectedCurrency": "Only the specified currency {expectedCurrency} is allowed.",
- "EasyAbp.EShop.Orders:OrderLineInvalidQuantity": "Invalid quantity {quantity} for product {productId} (SKU: {productSkuId}).",
- "EasyAbp.EShop.Orders:DiscountAmountOverflow": "The discount amount overflow.",
- "EasyAbp.EShop.Orders:DuplicateOrderExtraFee": "The extra fee {extraFeeName} (key: {extraFeeKey}) is existed.",
- "EasyAbp.EShop.Orders:InvalidOrderExtraFee": "The extra fee {extraFee} is invalid.",
- "EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
- "EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
- "EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/vi.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/vi.json
deleted file mode 100644
index 4fc7ff3e..00000000
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/vi.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:OrderManagement": "Orders",
- "Menu:Order": "Order",
- "Order": "Order",
- "OrderStoreId": "Store ID",
- "OrderOrderNumber": "Order number",
- "OrderCustomerUserId": "Customer user ID",
- "OrderOrderStatus": "Status",
- "OrderCurrency": "Currency",
- "OrderProductTotalPrice": "Product total price",
- "OrderTotalDiscount": "Total discount",
- "OrderTotalPrice": "Total price",
- "OrderActualTotalPrice": "Actual total price",
- "OrderRefundAmount": "Refund amount",
- "OrderCustomerRemark": "Customer remark",
- "OrderStaffRemark": "Staff remark",
- "OrderPaidTime": "Paid time",
- "OrderCompletionTime": "Completion time",
- "OrderCanceledTime": "Canceled time",
- "OrderReducedInventoryAfterPlacingTime": "Time of inventory reduced after placing",
- "OrderReducedInventoryAfterPaymentTime": "Time of inventory reduced after payment",
- "OrderLine": "Order line",
- "OrderLineProductId": "Product ID",
- "OrderLineProductSkuId": "Product SKU ID",
- "OrderLineProductModificationTime": "Product modification time",
- "OrderLineProductDetailModificationTime": "Product detail modification time",
- "OrderLineProductGroupName": "Product group name",
- "OrderLineProductGroupDisplayName": "Product group",
- "OrderLineProductUniqueName": "Product unique name",
- "OrderLineProductDisplayName": "Product display name",
- "OrderLineSkuName": "SKU name",
- "OrderLineSkuDescription": "SKU description",
- "OrderLineMediaResources": "Media resources",
- "OrderLineCurrency": "Currency",
- "OrderLineUnitPrice": "Unit price",
- "OrderLineTotalPrice": "Total price",
- "OrderLineTotalDiscount": "Total discount",
- "OrderLineActualTotalPrice": "Actual total price",
- "OrderLineQuantity": "Quantity",
- "EasyAbp.EShop.Orders:UnexpectedCurrency": "Only the specified currency {expectedCurrency} is allowed.",
- "EasyAbp.EShop.Orders:OrderLineInvalidQuantity": "Invalid quantity {quantity} for product {productId} (SKU: {productSkuId}).",
- "EasyAbp.EShop.Orders:DiscountAmountOverflow": "The discount amount overflow.",
- "EasyAbp.EShop.Orders:DuplicateOrderExtraFee": "The extra fee {extraFeeName} (key: {extraFeeKey}) is existed.",
- "EasyAbp.EShop.Orders:InvalidOrderExtraFee": "The extra fee {extraFee} is invalid.",
- "EasyAbp.EShop.Orders:InvalidPayment": "The payment {paymentId} has invalid configurations for the order {orderId}.",
- "EasyAbp.EShop.Orders:InvalidRefundAmount": "The refund amount ({amount}) is invalid.",
- "EasyAbp.EShop.Orders:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "The order {orderId} is in the wrong stage."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hans.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hans.json
index e5834c7b..e6c3385d 100644
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hans.json
+++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hans.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:OrderManagement": "订单",
- "ManageYourProfile": "管理个人资料",
"Menu:Order": "订单",
"Order": "订单",
"OrderStoreId": "店铺 ID",
@@ -49,6 +48,7 @@
"EasyAbp.EShop.Orders:InvalidPayment": "付款{paymentId}有无效的订单配置{orderId}",
"EasyAbp.EShop.Orders:InvalidRefundAmount": "退款金额({amount})无效",
"EasyAbp.EShop.Orders:InvalidRefundQuantity": "退款数量({quantity})无效",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "订单{orderId}处于错误的阶段"
+ "EasyAbp.EShop.Orders:OrderIsInWrongStage": "订单{orderId}处于错误的阶段",
+ "EasyAbp.EShop.Orders:ExistFlashSalesProduct": "清单中不允许存在闪购产品"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hant.json b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hant.json
index 72c277f7..a5efa664 100644
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hant.json
+++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hant.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:OrderManagement": "訂單",
- "ManageYourProfile": "管理個人資料",
"Menu:Order": "訂單",
"Order": "訂單",
"OrderStoreId": "店鋪 ID",
@@ -49,6 +48,7 @@
"EasyAbp.EShop.Orders:InvalidPayment": "付款{paymentId}有無效的訂單配置{orderId}",
"EasyAbp.EShop.Orders:InvalidRefundAmount": "退款金額({amount})無效",
"EasyAbp.EShop.Orders:InvalidRefundQuantity": "退款數量({quantity})無效",
- "EasyAbp.EShop.Orders:OrderIsInWrongStage": "訂單{orderId}處於錯誤的階段"
+ "EasyAbp.EShop.Orders:OrderIsInWrongStage": "訂單{orderId}處於錯誤的階段",
+ "EasyAbp.EShop.Orders:ExistFlashSalesProduct": "清單中不允許存在閃購產品"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/OrdersErrorCodes.cs b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/OrdersErrorCodes.cs
index 8a1af850..d87dd982 100644
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/OrdersErrorCodes.cs
+++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/OrdersErrorCodes.cs
@@ -11,5 +11,6 @@
public const string InvalidRefundAmount = "EasyAbp.EShop.Orders:InvalidRefundAmount";
public const string InvalidRefundQuantity = "EasyAbp.EShop.Orders:InvalidRefundQuantity";
public const string OrderIsInWrongStage = "EasyAbp.EShop.Orders:OrderIsInWrongStage";
+ public const string ExistFlashSalesProduct = "EasyAbp.EShop.Orders:ExistFlashSalesProduct";
}
}
diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Menus/OrdersMenuContributor.cs b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Menus/OrdersMenuContributor.cs
index f1660326..a31277c7 100644
--- a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Menus/OrdersMenuContributor.cs
+++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Menus/OrdersMenuContributor.cs
@@ -38,7 +38,7 @@ namespace EasyAbp.EShop.Orders.Web.Menus
if (!orderManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == OrdersMenus.ModuleGroupPrefix,
- () => new ApplicationMenuItem(OrdersMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"]));
+ () => new ApplicationMenuItem(OrdersMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"], icon: "fa fa-shopping-bag"));
eShopMenuItem.Items.Add(orderManagementMenuItem);
}
diff --git a/modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Application.Tests/Orders/OrderAppServiceTests.cs b/modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Application.Tests/Orders/OrderAppServiceTests.cs
index 18e5b70b..b7f2eebd 100644
--- a/modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Application.Tests/Orders/OrderAppServiceTests.cs
+++ b/modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Application.Tests/Orders/OrderAppServiceTests.cs
@@ -11,6 +11,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using NSubstitute;
using Shouldly;
+using Volo.Abp;
using Volo.Abp.Timing;
using Xunit;
@@ -21,6 +22,8 @@ namespace EasyAbp.EShop.Orders.Orders
private readonly IClock _clock;
private readonly IOrderAppService _orderAppService;
+ private ProductDto Product1 { get; set; }
+
public OrderAppServiceTests()
{
_clock = GetRequiredService();
@@ -29,8 +32,7 @@ namespace EasyAbp.EShop.Orders.Orders
protected override void AfterAddApplication(IServiceCollection services)
{
- var productAppService = Substitute.For();
- productAppService.GetAsync(OrderTestData.Product1Id).Returns(Task.FromResult(new ProductDto
+ Product1 = new ProductDto
{
CreationTime = DateTime.Now,
IsPublished = true,
@@ -79,10 +81,13 @@ namespace EasyAbp.EShop.Orders.Orders
},
InventoryStrategy = InventoryStrategy.NoNeed,
LastModificationTime = OrderTestData.ProductLastModificationTime
- }));
+ };
+
+ var productAppService = Substitute.For();
+ productAppService.GetAsync(OrderTestData.Product1Id).Returns(Task.FromResult(Product1));
services.AddTransient(_ => productAppService);
-
+
var productDetailAppService = Substitute.For();
productDetailAppService.GetAsync(OrderTestData.ProductDetail1Id).Returns(Task.FromResult(
@@ -186,7 +191,7 @@ namespace EasyAbp.EShop.Orders.Orders
orderLine1.ProductDetailModificationTime.ShouldBe(OrderTestData.ProductDetailLastModificationTime);
orderLine1.RefundAmount.ShouldBe(0m);
orderLine1.RefundedQuantity.ShouldBe(0);
-
+
var orderLine2 = response.OrderLines.Single(x => x.ProductSkuId == OrderTestData.ProductSku2Id);
orderLine2.ProductDetailId.ShouldBe(OrderTestData.ProductDetail2Id);
});
@@ -245,7 +250,7 @@ namespace EasyAbp.EShop.Orders.Orders
response.OrderStatus.ShouldBe(OrderStatus.Canceled);
response.CanceledTime.ShouldNotBeNull();
response.CancellationReason.ShouldBe("Repeat orders.");
-
+
UsingDbContext(db =>
{
var order = db.Orders.FirstOrDefault(o => o.Id == orderId);
@@ -280,7 +285,7 @@ namespace EasyAbp.EShop.Orders.Orders
order.SetPaymentId(null);
await orderRepository.UpdateAsync(order, true);
});
-
+
var response = await _orderAppService.GetAsync(orderId);
// Assert
@@ -290,7 +295,7 @@ namespace EasyAbp.EShop.Orders.Orders
response.OrderStatus.ShouldBe(OrderStatus.Canceled);
response.CanceledTime.ShouldNotBeNull();
response.CancellationReason.ShouldBe(OrdersConsts.UnpaidAutoCancellationReason);
-
+
UsingDbContext(db =>
{
var order = db.Orders.FirstOrDefault(o => o.Id == orderId);
@@ -349,7 +354,7 @@ namespace EasyAbp.EShop.Orders.Orders
response.OrderStatus.ShouldBe(OrderStatus.Processing);
response.CanceledTime.ShouldBeNull();
response.CancellationReason.ShouldBeNull();
-
+
UsingDbContext(db =>
{
var order = db.Orders.FirstOrDefault(o => o.Id == orderId);
@@ -361,7 +366,7 @@ namespace EasyAbp.EShop.Orders.Orders
order.CancellationReason.ShouldBeNull();
});
}
-
+
[Fact]
public async Task Unpaid_Order_Should_Be_Auto_Canceled_When_Payment_Overtime()
{
@@ -404,7 +409,7 @@ namespace EasyAbp.EShop.Orders.Orders
response.OrderStatus.ShouldBe(OrderStatus.Canceled);
response.CanceledTime.ShouldNotBeNull();
response.CancellationReason.ShouldBe(OrdersConsts.UnpaidAutoCancellationReason);
-
+
UsingDbContext(db =>
{
var order = db.Orders.FirstOrDefault(o => o.Id == orderId);
@@ -416,7 +421,7 @@ namespace EasyAbp.EShop.Orders.Orders
order.CancellationReason.ShouldBe(OrdersConsts.UnpaidAutoCancellationReason);
});
}
-
+
[Fact]
public async Task Payment_Pending_Order_Should_Be_Auto_Canceled_When_Payment_Overtime()
{
@@ -461,7 +466,7 @@ namespace EasyAbp.EShop.Orders.Orders
response.OrderStatus.ShouldBe(OrderStatus.Canceled);
response.CanceledTime.ShouldNotBeNull();
response.CancellationReason.ShouldBe(OrdersConsts.UnpaidAutoCancellationReason);
-
+
UsingDbContext(db =>
{
var order = db.Orders.FirstOrDefault(o => o.Id == orderId);
@@ -497,17 +502,47 @@ namespace EasyAbp.EShop.Orders.Orders
}
}
};
-
+
await WithUnitOfWorkAsync(async () =>
{
var order = await _orderAppService.CreateAsync(createOrderDto);
var orderLine = order.OrderLines.Find(x => x.ProductSkuId == OrderTestData.ProductSku3Id);
-
+
order.ProductTotalPrice.ShouldBe(10 * 1m + 2 * TestOrderLinePriceOverrider.Sku3UnitPrice);
orderLine.ShouldNotBeNull();
orderLine.UnitPrice.ShouldBe(TestOrderLinePriceOverrider.Sku3UnitPrice);
orderLine.TotalPrice.ShouldBe(orderLine.Quantity * orderLine.UnitPrice);
});
}
+
+ [Fact]
+ public async Task Should_Not_Create_Order_With_Flash_Sales_Products()
+ {
+ var createOrderDto = new CreateOrderDto
+ {
+ StoreId = OrderTestData.Store1Id,
+ OrderLines = new List
+ {
+ new()
+ {
+ ProductId = OrderTestData.Product1Id,
+ ProductSkuId = OrderTestData.ProductSku1Id,
+ Quantity = 1
+ }
+ }
+ };
+
+ Product1.InventoryStrategy = InventoryStrategy.FlashSales;
+
+ await WithUnitOfWorkAsync(async () =>
+ {
+ var exception =
+ await Should.ThrowAsync(() => _orderAppService.CreateAsync(createOrderDto));
+
+ exception.Code.ShouldBe(OrdersErrorCodes.ExistFlashSalesProduct);
+ });
+
+ Product1.InventoryStrategy = InventoryStrategy.NoNeed;
+ }
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/cs.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/cs.json
deleted file mode 100644
index 1c16f196..00000000
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/cs.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:PaymentManagement": "Payments",
- "Permission:Payments": "Payment",
- "PaymentItemStoreId": "Store ID",
- "Permission:Refunds": "Refund",
- "RefundItemStoreId": "Store ID",
- "EasyAbp.EShop.Payments:MultiStorePaymentNotSupported": "Should create payments for each store.",
- "EasyAbp.EShop.Payments:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Payments:OrderIsNotInSpecifiedPayment": "The order ({orderId}) is not in the specified payment ({paymentId}).",
- "EasyAbp.EShop.Payments:AnotherRefundTaskIsOnGoing": "Payment ({id}) has another ongoing refund task.",
- "EasyAbp.EShop.Payments:InvalidRefundAmount": "Refund amount ({refundAmount}) is invalid for the payment (id: {paymentId}, item id: {paymentItemId}).",
- "EasyAbp.EShop.Payments:OrderIdNotFound": "Cannot get valid OrderId from ExtraProperties.",
- "EasyAbp.EShop.Payments:StoreIdNotFound": "Cannot get valid StoreId from ExtraProperties.",
- "EasyAbp.EShop.Payments:OrderLineNotFound": "There is no such an order line. (order ID: {orderId}, order line ID: {orderLineId})",
- "EasyAbp.EShop.Payments:OrderExtraFeeNotFound": "There is no such an order extra fee. (order ID: {orderId}, name: {name}, key: {key})"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/en.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/en.json
index 7adde7bf..18625c2d 100644
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/en.json
+++ b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/en.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop",
"Menu:PaymentManagement": "Payments",
- "ManageYourProfile": "Manage your profile",
"Permission:Payments": "Payment",
"PaymentItemStoreId": "Store ID",
"Permission:Refunds": "Refund",
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/pl.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/pl.json
deleted file mode 100644
index d35cb742..00000000
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/pl.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "culture": "pl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:PaymentManagement": "Payments",
- "Permission:Payments": "Payment",
- "PaymentItemStoreId": "Store ID",
- "Permission:Refunds": "Refund",
- "RefundItemStoreId": "Store ID",
- "EasyAbp.EShop.Payments:MultiStorePaymentNotSupported": "Should create payments for each store.",
- "EasyAbp.EShop.Payments:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Payments:OrderIsNotInSpecifiedPayment": "The order ({orderId}) is not in the specified payment ({paymentId}).",
- "EasyAbp.EShop.Payments:AnotherRefundTaskIsOnGoing": "Payment ({id}) has another ongoing refund task.",
- "EasyAbp.EShop.Payments:InvalidRefundAmount": "Refund amount ({refundAmount}) is invalid for the payment (id: {paymentId}, item id: {paymentItemId}).",
- "EasyAbp.EShop.Payments:OrderIdNotFound": "Cannot get valid OrderId from ExtraProperties.",
- "EasyAbp.EShop.Payments:StoreIdNotFound": "Cannot get valid StoreId from ExtraProperties.",
- "EasyAbp.EShop.Payments:OrderLineNotFound": "There is no such an order line. (order ID: {orderId}, order line ID: {orderLineId})",
- "EasyAbp.EShop.Payments:OrderExtraFeeNotFound": "There is no such an order extra fee. (order ID: {orderId}, name: {name}, key: {key})"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/pt-BR.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/pt-BR.json
deleted file mode 100644
index 2509c01a..00000000
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/pt-BR.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:PaymentManagement": "Payments",
- "Permission:Payments": "Payment",
- "PaymentItemStoreId": "Store ID",
- "Permission:Refunds": "Refund",
- "RefundItemStoreId": "Store ID",
- "EasyAbp.EShop.Payments:MultiStorePaymentNotSupported": "Should create payments for each store.",
- "EasyAbp.EShop.Payments:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Payments:OrderIsNotInSpecifiedPayment": "The order ({orderId}) is not in the specified payment ({paymentId}).",
- "EasyAbp.EShop.Payments:AnotherRefundTaskIsOnGoing": "Payment ({id}) has another ongoing refund task.",
- "EasyAbp.EShop.Payments:InvalidRefundAmount": "Refund amount ({refundAmount}) is invalid for the payment (id: {paymentId}, item id: {paymentItemId}).",
- "EasyAbp.EShop.Payments:OrderIdNotFound": "Cannot get valid OrderId from ExtraProperties.",
- "EasyAbp.EShop.Payments:StoreIdNotFound": "Cannot get valid StoreId from ExtraProperties.",
- "EasyAbp.EShop.Payments:OrderLineNotFound": "There is no such an order line. (order ID: {orderId}, order line ID: {orderLineId})",
- "EasyAbp.EShop.Payments:OrderExtraFeeNotFound": "There is no such an order extra fee. (order ID: {orderId}, name: {name}, key: {key})"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/sl.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/sl.json
deleted file mode 100644
index 8a0b5718..00000000
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/sl.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:PaymentManagement": "Payments",
- "ManageYourProfile": "Upravljajte svojim profilom",
- "Permission:Payments": "Payment",
- "PaymentItemStoreId": "Store ID",
- "Permission:Refunds": "Refund",
- "RefundItemStoreId": "Store ID",
- "EasyAbp.EShop.Payments:MultiStorePaymentNotSupported": "Should create payments for each store.",
- "EasyAbp.EShop.Payments:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Payments:OrderIsNotInSpecifiedPayment": "The order ({orderId}) is not in the specified payment ({paymentId}).",
- "EasyAbp.EShop.Payments:AnotherRefundTaskIsOnGoing": "Payment ({id}) has another ongoing refund task.",
- "EasyAbp.EShop.Payments:InvalidRefundAmount": "Refund amount ({refundAmount}) is invalid for the payment (id: {paymentId}, item id: {paymentItemId}).",
- "EasyAbp.EShop.Payments:OrderIdNotFound": "Cannot get valid OrderId from ExtraProperties.",
- "EasyAbp.EShop.Payments:StoreIdNotFound": "Cannot get valid StoreId from ExtraProperties.",
- "EasyAbp.EShop.Payments:OrderLineNotFound": "There is no such an order line. (order ID: {orderId}, order line ID: {orderLineId})",
- "EasyAbp.EShop.Payments:OrderExtraFeeNotFound": "There is no such an order extra fee. (order ID: {orderId}, name: {name}, key: {key})"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/tr.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/tr.json
deleted file mode 100644
index 7ac014c8..00000000
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/tr.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:PaymentManagement": "Payments",
- "ManageYourProfile": "Profil y�netimi",
- "Permission:Payments": "Payment",
- "PaymentItemStoreId": "Store ID",
- "Permission:Refunds": "Refund",
- "RefundItemStoreId": "Store ID",
- "EasyAbp.EShop.Payments:MultiStorePaymentNotSupported": "Should create payments for each store.",
- "EasyAbp.EShop.Payments:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Payments:OrderIsNotInSpecifiedPayment": "The order ({orderId}) is not in the specified payment ({paymentId}).",
- "EasyAbp.EShop.Payments:AnotherRefundTaskIsOnGoing": "Payment ({id}) has another ongoing refund task.",
- "EasyAbp.EShop.Payments:InvalidRefundAmount": "Refund amount ({refundAmount}) is invalid for the payment (id: {paymentId}, item id: {paymentItemId}).",
- "EasyAbp.EShop.Payments:OrderIdNotFound": "Cannot get valid OrderId from ExtraProperties.",
- "EasyAbp.EShop.Payments:StoreIdNotFound": "Cannot get valid StoreId from ExtraProperties.",
- "EasyAbp.EShop.Payments:OrderLineNotFound": "There is no such an order line. (order ID: {orderId}, order line ID: {orderLineId})",
- "EasyAbp.EShop.Payments:OrderExtraFeeNotFound": "There is no such an order extra fee. (order ID: {orderId}, name: {name}, key: {key})"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/vi.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/vi.json
deleted file mode 100644
index f379bfca..00000000
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/vi.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:PaymentManagement": "Payments",
- "Permission:Payments": "Payment",
- "PaymentItemStoreId": "Store ID",
- "Permission:Refunds": "Refund",
- "RefundItemStoreId": "Store ID",
- "EasyAbp.EShop.Payments:MultiStorePaymentNotSupported": "Should create payments for each store.",
- "EasyAbp.EShop.Payments:InvalidRefundQuantity": "The refund quantity ({quantity}) is invalid.",
- "EasyAbp.EShop.Payments:OrderIsNotInSpecifiedPayment": "The order ({orderId}) is not in the specified payment ({paymentId}).",
- "EasyAbp.EShop.Payments:AnotherRefundTaskIsOnGoing": "Payment ({id}) has another ongoing refund task.",
- "EasyAbp.EShop.Payments:InvalidRefundAmount": "Refund amount ({refundAmount}) is invalid for the payment (id: {paymentId}, item id: {paymentItemId}).",
- "EasyAbp.EShop.Payments:OrderIdNotFound": "Cannot get valid OrderId from ExtraProperties.",
- "EasyAbp.EShop.Payments:StoreIdNotFound": "Cannot get valid StoreId from ExtraProperties.",
- "EasyAbp.EShop.Payments:OrderLineNotFound": "There is no such an order line. (order ID: {orderId}, order line ID: {orderLineId})",
- "EasyAbp.EShop.Payments:OrderExtraFeeNotFound": "There is no such an order extra fee. (order ID: {orderId}, name: {name}, key: {key})"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hans.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hans.json
index 37e4ff4d..75b30c4e 100644
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hans.json
+++ b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hans.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:PaymentManagement": "支付",
- "ManageYourProfile": "管理个人资料",
"Permission:Payments": "支付",
"PaymentItemStoreId": "店铺 ID",
"Permission:Refunds": "退款",
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hant.json b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hant.json
index 50656adf..214f935e 100644
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hant.json
+++ b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp/EShop/Payments/Localization/Payments/zh-Hant.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:PaymentManagement": "支付",
- "ManageYourProfile": "管理個人資料",
"Permission:Payments": "支付",
"PaymentItemStoreId": "店鋪 ID",
"Permission:Refunds": "退款",
diff --git a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/Menus/PaymentsMenuContributor.cs b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/Menus/PaymentsMenuContributor.cs
index 604c97e0..0896b069 100644
--- a/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/Menus/PaymentsMenuContributor.cs
+++ b/modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/Menus/PaymentsMenuContributor.cs
@@ -44,7 +44,7 @@ namespace EasyAbp.EShop.Payments.Web.Menus
if (!paymentManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == PaymentsMenus.ModuleGroupPrefix,
- () => new ApplicationMenuItem(PaymentsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"]));
+ () => new ApplicationMenuItem(PaymentsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"], icon: "fa fa-shopping-bag"));
eShopMenuItem.Items.Add(paymentManagementMenuItem);
}
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp.EShop.Plugins.Domain.Shared.csproj b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp.EShop.Plugins.Domain.Shared.csproj
index f69b25ca..5a122bca 100644
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp.EShop.Plugins.Domain.Shared.csproj
+++ b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp.EShop.Plugins.Domain.Shared.csproj
@@ -13,17 +13,8 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/cs.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/cs.json
deleted file mode 100644
index e84bbd26..00000000
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/cs.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/en.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/en.json
index f14075c0..91866139 100644
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/en.json
+++ b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/en.json
@@ -1,7 +1,6 @@
{
"culture": "en",
"texts": {
- "Menu:EasyAbpEShop": "EShop",
- "ManageYourProfile": "Manage your profile"
+ "Menu:EasyAbpEShop": "EShop"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pl.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pl.json
deleted file mode 100644
index 6e526d05..00000000
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pl.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "pl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pt-BR.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pt-BR.json
deleted file mode 100644
index cf245359..00000000
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pt-BR.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/sl.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/sl.json
deleted file mode 100644
index 5d85627a..00000000
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/sl.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "ManageYourProfile": "Upravljajte svojim profilom"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/tr.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/tr.json
deleted file mode 100644
index 1dbfdf6d..00000000
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/tr.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "ManageYourProfile": "Profil y�netimi"
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/vi.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/vi.json
deleted file mode 100644
index 9807bfd6..00000000
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/vi.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
-
- }
-}
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hans.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hans.json
index 3bd256c1..77990588 100644
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hans.json
+++ b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hans.json
@@ -1,7 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
- "Menu:EasyAbpEShop": "EShop 商城",
- "ManageYourProfile": "管理个人资料"
+ "Menu:EasyAbpEShop": "EShop 商城"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hant.json b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hant.json
index 4b545d34..d0d29f96 100644
--- a/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hant.json
+++ b/modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hant.json
@@ -1,7 +1,6 @@
{
"culture": "zh-Hant",
"texts": {
- "Menu:EasyAbpEShop": "EShop 商城",
- "ManageYourProfile": "管理個人資料"
+ "Menu:EasyAbpEShop": "EShop 商城"
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductCategories/ProductCategoryAppService.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductCategories/ProductCategoryAppService.cs
index 9b8dd950..991d7fd3 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductCategories/ProductCategoryAppService.cs
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductCategories/ProductCategoryAppService.cs
@@ -8,11 +8,12 @@ using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Products.ProductCategories
{
- public class ProductCategoryAppService : ReadOnlyAppService,
+ public class ProductCategoryAppService :
+ ReadOnlyAppService,
IProductCategoryAppService
{
protected override string GetListPolicyName { get; set; } = ProductsPermissions.Products.Manage;
-
+
private readonly IProductCategoryRepository _repository;
public ProductCategoryAppService(IProductCategoryRepository repository) : base(repository)
@@ -20,10 +21,11 @@ namespace EasyAbp.EShop.Products.ProductCategories
_repository = repository;
}
- protected override async Task> CreateFilteredQueryAsync(GetProductCategoryListDto input)
+ protected override async Task> CreateFilteredQueryAsync(
+ GetProductCategoryListDto input)
{
var queryable = await Repository.GetQueryableAsync();
-
+
if (input.CategoryId.HasValue)
{
queryable = queryable.Where(x => x.CategoryId == input.CategoryId);
@@ -37,6 +39,12 @@ namespace EasyAbp.EShop.Products.ProductCategories
return queryable;
}
+ protected override IQueryable ApplyDefaultSorting(IQueryable query)
+ {
+ return query.OrderBy(x => x.DisplayOrder)
+ .ThenBy(x => x.Id);
+ }
+
[RemoteService(false)]
public override Task GetAsync(Guid id)
{
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
index 0f9b052c..0018365b 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
@@ -64,6 +64,19 @@ namespace EasyAbp.EShop.Products.Products
.WhereIf(!input.ShowUnpublished, x => x.IsPublished);
}
+ protected override IQueryable ApplyDefaultSorting(IQueryable query)
+ {
+ return query.OrderBy(x => x.DisplayOrder)
+ .ThenBy(x => x.Id);
+ }
+
+ protected override Product MapToEntity(CreateUpdateProductDto createInput)
+ {
+ var product = base.MapToEntity(createInput);
+
+ return product;
+ }
+
public override async Task CreateAsync(CreateUpdateProductDto input)
{
var product = await MapToEntityAsync(input);
@@ -474,12 +487,12 @@ namespace EasyAbp.EShop.Products.Products
protected virtual ProductDto SortAttributesAndOptions(ProductDto productDto)
{
- productDto.ProductAttributes = productDto.ProductAttributes.OrderByDescending(x => x.DisplayOrder).ToList();
+ productDto.ProductAttributes = productDto.ProductAttributes.OrderBy(x => x.DisplayOrder).ToList();
foreach (var productAttributeDto in productDto.ProductAttributes)
{
productAttributeDto.ProductAttributeOptions = productAttributeDto.ProductAttributeOptions
- .OrderByDescending(x => x.DisplayOrder).ToList();
+ .OrderBy(x => x.DisplayOrder).ToList();
}
return productDto;
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductViewAppService.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductViewAppService.cs
index efd24881..69a83754 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductViewAppService.cs
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductViewAppService.cs
@@ -15,7 +15,8 @@ using Volo.Abp.Uow;
namespace EasyAbp.EShop.Products.Products
{
- public class ProductViewAppService : MultiStoreReadOnlyAppService,
+ public class ProductViewAppService :
+ MultiStoreReadOnlyAppService,
IProductViewAppService
{
protected override string GetPolicyName { get; set; } = null;
@@ -27,7 +28,7 @@ namespace EasyAbp.EShop.Products.Products
private readonly IProductManager _productManager;
private readonly IProductRepository _productRepository;
private readonly IProductViewRepository _repository;
-
+
public ProductViewAppService(
IProductViewCacheKeyProvider productViewCacheKeyProvider,
IDistributedCache cache,
@@ -41,7 +42,7 @@ namespace EasyAbp.EShop.Products.Products
_productRepository = productRepository;
_repository = repository;
}
-
+
protected override async Task> CreateFilteredQueryAsync(GetProductListInput input)
{
var query = input.CategoryId.HasValue
@@ -54,10 +55,16 @@ namespace EasyAbp.EShop.Products.Products
.WhereIf(!input.ShowUnpublished, x => x.IsPublished);
}
+ protected override IQueryable ApplyDefaultSorting(IQueryable query)
+ {
+ return query.OrderBy(x => x.DisplayOrder)
+ .ThenBy(x => x.Id);
+ }
+
public override async Task> GetListAsync(GetProductListInput input)
{
await CheckGetListPolicyAsync();
-
+
if (input.ShowHidden || input.ShowUnpublished)
{
await CheckMultiStorePolicyAsync(input.StoreId, ProductsPermissions.Products.Manage);
@@ -67,7 +74,7 @@ namespace EasyAbp.EShop.Products.Products
{
await BuildStoreProductViewsAsync(input.StoreId);
}
-
+
var query = await CreateFilteredQueryAsync(input);
var totalCount = await AsyncExecuter.CountAsync(query);
@@ -103,7 +110,7 @@ namespace EasyAbp.EShop.Products.Products
await BuildStoreProductViewsAsync(productView.StoreId);
productView = await GetEntityByIdAsync(id);
-
+
return await MapToGetOutputDtoAsync(productView);
}
@@ -120,7 +127,7 @@ namespace EasyAbp.EShop.Products.Products
var productView = ObjectMapper.Map(product);
await FillPriceInfoWithRealPriceAsync(product, productView);
-
+
await _repository.InsertAsync(productView);
}
@@ -134,7 +141,7 @@ namespace EasyAbp.EShop.Products.Products
await SettingProvider.GetOrNullAsync(ProductsSettings.ProductView.CacheDurationSeconds)))
});
}
-
+
protected virtual async Task FillPriceInfoWithRealPriceAsync(Product product, ProductView productView)
{
if (product.ProductSkus.IsNullOrEmpty())
@@ -143,7 +150,7 @@ namespace EasyAbp.EShop.Products.Products
}
decimal? min = null, max = null;
-
+
foreach (var productSku in product.ProductSkus)
{
var priceDataModel = await _productManager.GetRealPriceAsync(product, productSku);
@@ -162,4 +169,4 @@ namespace EasyAbp.EShop.Products.Products
productView.SetPrices(min, max);
}
}
-}
+}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json
deleted file mode 100644
index 5e2bde28..00000000
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:ProductManagement": "Products",
- "Menu:Product": "Product",
- "Product": "Product",
- "ProductStoreId": "Store ID",
- "ProductCategoryId": "Category ID",
- "ProductProductGroupName": "Product group name",
- "ProductProductGroupDisplayName": "Product group",
- "ProductDetailId": "Product detail ID",
- "ProductUniqueName": "Unique name",
- "ProductDisplayName": "Display name",
- "ProductDisplayOrder": "Display order",
- "ProductSold": "Sold",
- "ProductDetailDescription": "Description",
- "ProductCategory": "Categories",
- "ProductAttribute": "Attribute",
- "ProductAttributeNames": "Attribute names",
- "ProductAttributeNamesPlaceholder": "e.g. Color,Size",
- "ProductAttributeOption": "Attribute option",
- "ProductAttributeOptionNames": "Attribute option names",
- "ProductAttributeOptionNamesPlaceholder": "e.g.\nRed,Green,Blue\nS,M,L,XL",
- "ProductSku": "Product SKU",
- "ProductSkuAttributeOptionIds": "Attribute option IDs",
- "ProductSkuName": "SKU name",
- "ProductSkuCurrency": "Currency",
- "ProductSkuOriginalPrice": "Original price",
- "ProductSkuPrice": "Price",
- "ProductSkuInventory": "Inventory",
- "ProductSkuSold": "Sold",
- "ProductSkuOrderMinQuantity": "Minimum quantity per purchase",
- "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase",
- "ProductSkuPaymentExpireIn": "Payment expire in",
- "ProductSkuMediaResources": "Media resources",
- "ProductSkuContentDescription": "SKU content",
- "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.",
- "CreateProductSku": "New",
- "EditProductSku": "Edit",
- "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?",
- "ProductInventoryStrategy": "Inventory strategy",
- "ProductInventoryProviderName": "Inventory provider",
- "ProductInventoryProviderNamePlaceholder": "Keep it empty if you don't understand",
- "InventoryStrategy.NoNeed": "No need",
- "InventoryStrategy.ReduceAfterPlacing": "Reduce inventory after placing",
- "InventoryStrategy.ReduceAfterPayment": "Reduce inventory after payment",
- "ProductIsPublished": "Published",
- "ProductIsStatic": "Static",
- "ProductIsHidden": "Hidden",
- "ProductPaymentExpireIn": "Payment expire in",
- "ProductMediaResources": "Media resources",
- "ProductAttributeDisplayName": "Display name",
- "ProductAttributeDescription": "Description",
- "ProductAttributeDisplayOrder": "Display order",
- "ProductAttributeOptionDisplayName": "Display name",
- "ProductAttributeOptionDescription": "Description",
- "ProductAttributeOptionDisplayOrder": "Display order",
- "CreateProduct": "New",
- "EditProduct": "Edit",
- "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Menu:Category": "Category",
- "Category": "Category",
- "Subcategory": "Subcategory",
- "CategoryParentId": "Parent ID",
- "CategoryUniqueName": "Unique name",
- "CategoryDisplayName": "Display name",
- "CategoryDescription": "Description",
- "CategoryMediaResources": "Media resources",
- "CategoryIsHidden": "Hidden",
- "CreateCategory": "New",
- "EditCategory": "Edit",
- "CategoryDeletionConfirmationMessage": "Are you sure to delete the category {0}?",
- "Permission:ProductInventory": "Product inventory",
- "ProductInventory": "Product inventory",
- "ProductInventoryChangedInventory": "Changed inventory",
- "ProductInventoryChangeType": "Change type",
- "IncreaseInventory": "Increase",
- "DecreaseInventory": "Decrease",
- "ProductInventoryInventory": "Inventory",
- "ChangeProductInventory": "Change inventory",
- "EasyAbp.EShop.Products:DuplicateCategoryUniqueName": "The category unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:DuplicatedProductUniqueName": "The product unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:InventoryChangeFailed": "Inventory of product {productId} (SKU: {productSkuId}) cannot be changed by {changedInventory} from {originalInventory}",
- "EasyAbp.EShop.Products:NonexistentProductGroup": "The specified product group ({productGroupName}) is nonexistent.",
- "EasyAbp.EShop.Products:NonexistentInventoryProvider": "The specified inventory provider ({inventoryProviderName}) is nonexistent.",
- "EasyAbp.EShop.Products:ProductSkuCodeDuplicated": "Sku code {code} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuDuplicated": "Sku {serializedAttributeOptionIds} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuIncorrectAttributeOptions": "Sku {serializedAttributeOptionIds} is incorrect for the product {productId}",
- "EasyAbp.EShop.Products:NotAllowedToGetCategoryListWithShowHidden": "You have no permission to get category list with hidden categories.",
- "EasyAbp.EShop.Products:ProductAttributeOptionsDeletionFailed": "Should ensure there are no SKUs using the attribute option which you want to delete.",
- "EasyAbp.EShop.Products:ProductAttributesModificationFailed": "Should ensure SKUs are empty if you want to modify attributes of a product.",
- "EasyAbp.EShop.Products:StaticProductCannotBeModified": "Cannot modify the static product: {productId}",
- "EasyAbp.EShop.Products:StoreIsNotProductOwner": "Store {storeId} is not a owner of the product {productId}",
- "EasyAbp.EShop.Products:InventoryInsufficient": "The inventory of the product {productId} (SKU: {productSkuId}) is insufficient, {quantity} are needed, but only {inventory}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
index 62c0f8e0..bb5b900c 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop",
"Menu:ProductManagement": "Products",
- "ManageYourProfile": "Manage your profile",
"Menu:Product": "Product",
"Product": "Product",
"ProductStoreId": "Store ID",
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json
deleted file mode 100644
index b9d29fbc..00000000
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "culture": "pl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:ProductManagement": "Products",
- "Menu:Product": "Product",
- "Product": "Product",
- "ProductStoreId": "Store ID",
- "ProductCategoryId": "Category ID",
- "ProductProductGroupName": "Product group name",
- "ProductProductGroupDisplayName": "Product group",
- "ProductDetailId": "Product detail ID",
- "ProductUniqueName": "Unique name",
- "ProductDisplayName": "Display name",
- "ProductDisplayOrder": "Display order",
- "ProductSold": "Sold",
- "ProductDetailDescription": "Description",
- "ProductCategory": "Categories",
- "ProductAttribute": "Attribute",
- "ProductAttributeNames": "Attribute names",
- "ProductAttributeNamesPlaceholder": "e.g. Color,Size",
- "ProductAttributeOption": "Attribute option",
- "ProductAttributeOptionNames": "Attribute option names",
- "ProductAttributeOptionNamesPlaceholder": "e.g.\nRed,Green,Blue\nS,M,L,XL",
- "ProductSku": "Product SKU",
- "ProductSkuAttributeOptionIds": "Attribute option IDs",
- "ProductSkuName": "SKU name",
- "ProductSkuCurrency": "Currency",
- "ProductSkuOriginalPrice": "Original price",
- "ProductSkuPrice": "Price",
- "ProductSkuInventory": "Inventory",
- "ProductSkuSold": "Sold",
- "ProductSkuOrderMinQuantity": "Minimum quantity per purchase",
- "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase",
- "ProductSkuPaymentExpireIn": "Payment expire in",
- "ProductSkuMediaResources": "Media resources",
- "ProductSkuContentDescription": "SKU content",
- "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.",
- "CreateProductSku": "New",
- "EditProductSku": "Edit",
- "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?",
- "ProductInventoryStrategy": "Inventory strategy",
- "ProductInventoryProviderName": "Inventory provider",
- "ProductInventoryProviderNamePlaceholder": "Keep it empty if you don't understand",
- "InventoryStrategy.NoNeed": "No need",
- "InventoryStrategy.ReduceAfterPlacing": "Reduce inventory after placing",
- "InventoryStrategy.ReduceAfterPayment": "Reduce inventory after payment",
- "ProductIsPublished": "Published",
- "ProductIsStatic": "Static",
- "ProductIsHidden": "Hidden",
- "ProductPaymentExpireIn": "Payment expire in",
- "ProductMediaResources": "Media resources",
- "ProductAttributeDisplayName": "Display name",
- "ProductAttributeDescription": "Description",
- "ProductAttributeDisplayOrder": "Display order",
- "ProductAttributeOptionDisplayName": "Display name",
- "ProductAttributeOptionDescription": "Description",
- "ProductAttributeOptionDisplayOrder": "Display order",
- "CreateProduct": "New",
- "EditProduct": "Edit",
- "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Menu:Category": "Category",
- "Category": "Category",
- "Subcategory": "Subcategory",
- "CategoryParentId": "Parent ID",
- "CategoryUniqueName": "Unique name",
- "CategoryDisplayName": "Display name",
- "CategoryDescription": "Description",
- "CategoryMediaResources": "Media resources",
- "CategoryIsHidden": "Hidden",
- "CreateCategory": "New",
- "EditCategory": "Edit",
- "CategoryDeletionConfirmationMessage": "Are you sure to delete the category {0}?",
- "Permission:ProductInventory": "Product inventory",
- "ProductInventory": "Product inventory",
- "ProductInventoryChangedInventory": "Changed inventory",
- "ProductInventoryChangeType": "Change type",
- "IncreaseInventory": "Increase",
- "DecreaseInventory": "Decrease",
- "ProductInventoryInventory": "Inventory",
- "ChangeProductInventory": "Change inventory",
- "EasyAbp.EShop.Products:DuplicateCategoryUniqueName": "The category unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:DuplicatedProductUniqueName": "The product unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:InventoryChangeFailed": "Inventory of product {productId} (SKU: {productSkuId}) cannot be changed by {changedInventory} from {originalInventory}",
- "EasyAbp.EShop.Products:NonexistentProductGroup": "The specified product group ({productGroupName}) is nonexistent.",
- "EasyAbp.EShop.Products:NonexistentInventoryProvider": "The specified inventory provider ({inventoryProviderName}) is nonexistent.",
- "EasyAbp.EShop.Products:ProductSkuCodeDuplicated": "Sku code {code} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuDuplicated": "Sku {serializedAttributeOptionIds} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuIncorrectAttributeOptions": "Sku {serializedAttributeOptionIds} is incorrect for the product {productId}",
- "EasyAbp.EShop.Products:NotAllowedToGetCategoryListWithShowHidden": "You have no permission to get category list with hidden categories.",
- "EasyAbp.EShop.Products:ProductAttributeOptionsDeletionFailed": "Should ensure there are no SKUs using the attribute option which you want to delete.",
- "EasyAbp.EShop.Products:ProductAttributesModificationFailed": "Should ensure SKUs are empty if you want to modify attributes of a product.",
- "EasyAbp.EShop.Products:StaticProductCannotBeModified": "Cannot modify the static product: {productId}",
- "EasyAbp.EShop.Products:StoreIsNotProductOwner": "Store {storeId} is not a owner of the product {productId}",
- "EasyAbp.EShop.Products:InventoryInsufficient": "The inventory of the product {productId} (SKU: {productSkuId}) is insufficient, {quantity} are needed, but only {inventory}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
deleted file mode 100644
index 8bbec7b8..00000000
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:ProductManagement": "Products",
- "Menu:Product": "Product",
- "Product": "Product",
- "ProductStoreId": "Store ID",
- "ProductCategoryId": "Category ID",
- "ProductProductGroupName": "Product group name",
- "ProductProductGroupDisplayName": "Product group",
- "ProductDetailId": "Product detail ID",
- "ProductUniqueName": "Unique name",
- "ProductDisplayName": "Display name",
- "ProductDisplayOrder": "Display order",
- "ProductSold": "Sold",
- "ProductDetailDescription": "Description",
- "ProductCategory": "Categories",
- "ProductAttribute": "Attribute",
- "ProductAttributeNames": "Attribute names",
- "ProductAttributeNamesPlaceholder": "e.g. Color,Size",
- "ProductAttributeOption": "Attribute option",
- "ProductAttributeOptionNames": "Attribute option names",
- "ProductAttributeOptionNamesPlaceholder": "e.g.\nRed,Green,Blue\nS,M,L,XL",
- "ProductSku": "Product SKU",
- "ProductSkuAttributeOptionIds": "Attribute option IDs",
- "ProductSkuName": "SKU name",
- "ProductSkuCurrency": "Currency",
- "ProductSkuOriginalPrice": "Original price",
- "ProductSkuPrice": "Price",
- "ProductSkuInventory": "Inventory",
- "ProductSkuSold": "Sold",
- "ProductSkuOrderMinQuantity": "Minimum quantity per purchase",
- "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase",
- "ProductSkuPaymentExpireIn": "Payment expire in",
- "ProductSkuMediaResources": "Media resources",
- "ProductSkuContentDescription": "SKU content",
- "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.",
- "CreateProductSku": "New",
- "EditProductSku": "Edit",
- "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?",
- "ProductInventoryStrategy": "Inventory strategy",
- "ProductInventoryProviderName": "Inventory provider",
- "ProductInventoryProviderNamePlaceholder": "Keep it empty if you don't understand",
- "InventoryStrategy.NoNeed": "No need",
- "InventoryStrategy.ReduceAfterPlacing": "Reduce inventory after placing",
- "InventoryStrategy.ReduceAfterPayment": "Reduce inventory after payment",
- "ProductIsPublished": "Published",
- "ProductIsStatic": "Static",
- "ProductIsHidden": "Hidden",
- "ProductPaymentExpireIn": "Payment expire in",
- "ProductMediaResources": "Media resources",
- "ProductAttributeDisplayName": "Display name",
- "ProductAttributeDescription": "Description",
- "ProductAttributeDisplayOrder": "Display order",
- "ProductAttributeOptionDisplayName": "Display name",
- "ProductAttributeOptionDescription": "Description",
- "ProductAttributeOptionDisplayOrder": "Display order",
- "CreateProduct": "New",
- "EditProduct": "Edit",
- "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Menu:Category": "Category",
- "Category": "Category",
- "Subcategory": "Subcategory",
- "CategoryParentId": "Parent ID",
- "CategoryUniqueName": "Unique name",
- "CategoryDisplayName": "Display name",
- "CategoryDescription": "Description",
- "CategoryMediaResources": "Media resources",
- "CategoryIsHidden": "Hidden",
- "CreateCategory": "New",
- "EditCategory": "Edit",
- "CategoryDeletionConfirmationMessage": "Are you sure to delete the category {0}?",
- "Permission:ProductInventory": "Product inventory",
- "ProductInventory": "Product inventory",
- "ProductInventoryChangedInventory": "Changed inventory",
- "ProductInventoryChangeType": "Change type",
- "IncreaseInventory": "Increase",
- "DecreaseInventory": "Decrease",
- "ProductInventoryInventory": "Inventory",
- "ChangeProductInventory": "Change inventory",
- "EasyAbp.EShop.Products:DuplicateCategoryUniqueName": "The category unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:DuplicatedProductUniqueName": "The product unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:InventoryChangeFailed": "Inventory of product {productId} (SKU: {productSkuId}) cannot be changed by {changedInventory} from {originalInventory}",
- "EasyAbp.EShop.Products:NonexistentProductGroup": "The specified product group ({productGroupName}) is nonexistent.",
- "EasyAbp.EShop.Products:NonexistentInventoryProvider": "The specified inventory provider ({inventoryProviderName}) is nonexistent.",
- "EasyAbp.EShop.Products:ProductSkuCodeDuplicated": "Sku code {code} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuDuplicated": "Sku {serializedAttributeOptionIds} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuIncorrectAttributeOptions": "Sku {serializedAttributeOptionIds} is incorrect for the product {productId}",
- "EasyAbp.EShop.Products:NotAllowedToGetCategoryListWithShowHidden": "You have no permission to get category list with hidden categories.",
- "EasyAbp.EShop.Products:ProductAttributeOptionsDeletionFailed": "Should ensure there are no SKUs using the attribute option which you want to delete.",
- "EasyAbp.EShop.Products:ProductAttributesModificationFailed": "Should ensure SKUs are empty if you want to modify attributes of a product.",
- "EasyAbp.EShop.Products:StaticProductCannotBeModified": "Cannot modify the static product: {productId}",
- "EasyAbp.EShop.Products:StoreIsNotProductOwner": "Store {storeId} is not a owner of the product {productId}",
- "EasyAbp.EShop.Products:InventoryInsufficient": "The inventory of the product {productId} (SKU: {productSkuId}) is insufficient, {quantity} are needed, but only {inventory}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json
deleted file mode 100644
index 21e82951..00000000
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:ProductManagement": "Products",
- "ManageYourProfile": "Upravljajte svojim profilom",
- "Menu:Product": "Product",
- "Product": "Product",
- "ProductStoreId": "Store ID",
- "ProductCategoryId": "Category ID",
- "ProductProductGroupName": "Product group name",
- "ProductProductGroupDisplayName": "Product group",
- "ProductDetailId": "Product detail ID",
- "ProductUniqueName": "Unique name",
- "ProductDisplayName": "Display name",
- "ProductDisplayOrder": "Display order",
- "ProductSold": "Sold",
- "ProductDetailDescription": "Description",
- "ProductCategory": "Categories",
- "ProductAttribute": "Attribute",
- "ProductAttributeNames": "Attribute names",
- "ProductAttributeNamesPlaceholder": "e.g. Color,Size",
- "ProductAttributeOption": "Attribute option",
- "ProductAttributeOptionNames": "Attribute option names",
- "ProductAttributeOptionNamesPlaceholder": "e.g.\nRed,Green,Blue\nS,M,L,XL",
- "ProductSku": "Product SKU",
- "ProductSkuAttributeOptionIds": "Attribute option IDs",
- "ProductSkuName": "SKU name",
- "ProductSkuCurrency": "Currency",
- "ProductSkuOriginalPrice": "Original price",
- "ProductSkuPrice": "Price",
- "ProductSkuInventory": "Inventory",
- "ProductSkuSold": "Sold",
- "ProductSkuOrderMinQuantity": "Minimum quantity per purchase",
- "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase",
- "ProductSkuPaymentExpireIn": "Payment expire in",
- "ProductSkuMediaResources": "Media resources",
- "ProductSkuContentDescription": "SKU content",
- "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.",
- "CreateProductSku": "New",
- "EditProductSku": "Edit",
- "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?",
- "ProductInventoryStrategy": "Inventory strategy",
- "ProductInventoryProviderName": "Inventory provider",
- "ProductInventoryProviderNamePlaceholder": "Keep it empty if you don't understand",
- "InventoryStrategy.NoNeed": "No need",
- "InventoryStrategy.ReduceAfterPlacing": "Reduce inventory after placing",
- "InventoryStrategy.ReduceAfterPayment": "Reduce inventory after payment",
- "ProductIsPublished": "Published",
- "ProductIsStatic": "Static",
- "ProductIsHidden": "Hidden",
- "ProductPaymentExpireIn": "Payment expire in",
- "ProductMediaResources": "Media resources",
- "ProductAttributeDisplayName": "Display name",
- "ProductAttributeDescription": "Description",
- "ProductAttributeDisplayOrder": "Display order",
- "ProductAttributeOptionDisplayName": "Display name",
- "ProductAttributeOptionDescription": "Description",
- "ProductAttributeOptionDisplayOrder": "Display order",
- "CreateProduct": "New",
- "EditProduct": "Edit",
- "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Menu:Category": "Category",
- "Category": "Category",
- "Subcategory": "Subcategory",
- "CategoryParentId": "Parent ID",
- "CategoryUniqueName": "Unique name",
- "CategoryDisplayName": "Display name",
- "CategoryDescription": "Description",
- "CategoryMediaResources": "Media resources",
- "CategoryIsHidden": "Hidden",
- "CreateCategory": "New",
- "EditCategory": "Edit",
- "CategoryDeletionConfirmationMessage": "Are you sure to delete the category {0}?",
- "Permission:ProductInventory": "Product inventory",
- "ProductInventory": "Product inventory",
- "ProductInventoryChangedInventory": "Changed inventory",
- "ProductInventoryChangeType": "Change type",
- "IncreaseInventory": "Increase",
- "DecreaseInventory": "Decrease",
- "ProductInventoryInventory": "Inventory",
- "ChangeProductInventory": "Change inventory",
- "EasyAbp.EShop.Products:DuplicateCategoryUniqueName": "The category unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:DuplicatedProductUniqueName": "The product unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:InventoryChangeFailed": "Inventory of product {productId} (SKU: {productSkuId}) cannot be changed by {changedInventory} from {originalInventory}",
- "EasyAbp.EShop.Products:NonexistentProductGroup": "The specified product group ({productGroupName}) is nonexistent.",
- "EasyAbp.EShop.Products:NonexistentInventoryProvider": "The specified inventory provider ({inventoryProviderName}) is nonexistent.",
- "EasyAbp.EShop.Products:ProductSkuCodeDuplicated": "Sku code {code} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuDuplicated": "Sku {serializedAttributeOptionIds} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuIncorrectAttributeOptions": "Sku {serializedAttributeOptionIds} is incorrect for the product {productId}",
- "EasyAbp.EShop.Products:NotAllowedToGetCategoryListWithShowHidden": "You have no permission to get category list with hidden categories.",
- "EasyAbp.EShop.Products:ProductAttributeOptionsDeletionFailed": "Should ensure there are no SKUs using the attribute option which you want to delete.",
- "EasyAbp.EShop.Products:ProductAttributesModificationFailed": "Should ensure SKUs are empty if you want to modify attributes of a product.",
- "EasyAbp.EShop.Products:StaticProductCannotBeModified": "Cannot modify the static product: {productId}",
- "EasyAbp.EShop.Products:StoreIsNotProductOwner": "Store {storeId} is not a owner of the product {productId}",
- "EasyAbp.EShop.Products:InventoryInsufficient": "The inventory of the product {productId} (SKU: {productSkuId}) is insufficient, {quantity} are needed, but only {inventory}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json
deleted file mode 100644
index 193036ab..00000000
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:ProductManagement": "Products",
- "ManageYourProfile": "Profil y�netimi",
- "Menu:Product": "Product",
- "Product": "Product",
- "ProductStoreId": "Store ID",
- "ProductCategoryId": "Category ID",
- "ProductProductGroupName": "Product group name",
- "ProductProductGroupDisplayName": "Product group",
- "ProductDetailId": "Product detail ID",
- "ProductUniqueName": "Unique name",
- "ProductDisplayName": "Display name",
- "ProductDisplayOrder": "Display order",
- "ProductSold": "Sold",
- "ProductDetailDescription": "Description",
- "ProductCategory": "Categories",
- "ProductAttribute": "Attribute",
- "ProductAttributeNames": "Attribute names",
- "ProductAttributeNamesPlaceholder": "e.g. Color,Size",
- "ProductAttributeOption": "Attribute option",
- "ProductAttributeOptionNames": "Attribute option names",
- "ProductAttributeOptionNamesPlaceholder": "e.g.\nRed,Green,Blue\nS,M,L,XL",
- "ProductSku": "Product SKU",
- "ProductSkuAttributeOptionIds": "Attribute option IDs",
- "ProductSkuName": "SKU name",
- "ProductSkuCurrency": "Currency",
- "ProductSkuOriginalPrice": "Original price",
- "ProductSkuPrice": "Price",
- "ProductSkuInventory": "Inventory",
- "ProductSkuSold": "Sold",
- "ProductSkuOrderMinQuantity": "Minimum quantity per purchase",
- "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase",
- "ProductSkuPaymentExpireIn": "Payment expire in",
- "ProductSkuMediaResources": "Media resources",
- "ProductSkuContentDescription": "SKU content",
- "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.",
- "CreateProductSku": "New",
- "EditProductSku": "Edit",
- "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?",
- "ProductInventoryStrategy": "Inventory strategy",
- "ProductInventoryProviderName": "Inventory provider",
- "ProductInventoryProviderNamePlaceholder": "Keep it empty if you don't understand",
- "InventoryStrategy.NoNeed": "No need",
- "InventoryStrategy.ReduceAfterPlacing": "Reduce inventory after placing",
- "InventoryStrategy.ReduceAfterPayment": "Reduce inventory after payment",
- "ProductIsPublished": "Published",
- "ProductIsStatic": "Static",
- "ProductIsHidden": "Hidden",
- "ProductPaymentExpireIn": "Payment expire in",
- "ProductMediaResources": "Media resources",
- "ProductAttributeDisplayName": "Display name",
- "ProductAttributeDescription": "Description",
- "ProductAttributeDisplayOrder": "Display order",
- "ProductAttributeOptionDisplayName": "Display name",
- "ProductAttributeOptionDescription": "Description",
- "ProductAttributeOptionDisplayOrder": "Display order",
- "CreateProduct": "New",
- "EditProduct": "Edit",
- "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Menu:Category": "Category",
- "Category": "Category",
- "Subcategory": "Subcategory",
- "CategoryParentId": "Parent ID",
- "CategoryUniqueName": "Unique name",
- "CategoryDisplayName": "Display name",
- "CategoryDescription": "Description",
- "CategoryMediaResources": "Media resources",
- "CategoryIsHidden": "Hidden",
- "CreateCategory": "New",
- "EditCategory": "Edit",
- "CategoryDeletionConfirmationMessage": "Are you sure to delete the category {0}?",
- "Permission:ProductInventory": "Product inventory",
- "ProductInventory": "Product inventory",
- "ProductInventoryChangedInventory": "Changed inventory",
- "ProductInventoryChangeType": "Change type",
- "IncreaseInventory": "Increase",
- "DecreaseInventory": "Decrease",
- "ProductInventoryInventory": "Inventory",
- "ChangeProductInventory": "Change inventory",
- "EasyAbp.EShop.Products:DuplicateCategoryUniqueName": "The category unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:DuplicatedProductUniqueName": "The product unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:InventoryChangeFailed": "Inventory of product {productId} (SKU: {productSkuId}) cannot be changed by {changedInventory} from {originalInventory}",
- "EasyAbp.EShop.Products:NonexistentProductGroup": "The specified product group ({productGroupName}) is nonexistent.",
- "EasyAbp.EShop.Products:NonexistentInventoryProvider": "The specified inventory provider ({inventoryProviderName}) is nonexistent.",
- "EasyAbp.EShop.Products:ProductSkuCodeDuplicated": "Sku code {code} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuDuplicated": "Sku {serializedAttributeOptionIds} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuIncorrectAttributeOptions": "Sku {serializedAttributeOptionIds} is incorrect for the product {productId}",
- "EasyAbp.EShop.Products:NotAllowedToGetCategoryListWithShowHidden": "You have no permission to get category list with hidden categories.",
- "EasyAbp.EShop.Products:ProductAttributeOptionsDeletionFailed": "Should ensure there are no SKUs using the attribute option which you want to delete.",
- "EasyAbp.EShop.Products:ProductAttributesModificationFailed": "Should ensure SKUs are empty if you want to modify attributes of a product.",
- "EasyAbp.EShop.Products:StaticProductCannotBeModified": "Cannot modify the static product: {productId}",
- "EasyAbp.EShop.Products:StoreIsNotProductOwner": "Store {storeId} is not a owner of the product {productId}",
- "EasyAbp.EShop.Products:InventoryInsufficient": "The inventory of the product {productId} (SKU: {productSkuId}) is insufficient, {quantity} are needed, but only {inventory}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json
deleted file mode 100644
index a652814e..00000000
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:ProductManagement": "Products",
- "Menu:Product": "Product",
- "Product": "Product",
- "ProductStoreId": "Store ID",
- "ProductCategoryId": "Category ID",
- "ProductProductGroupName": "Product group name",
- "ProductProductGroupDisplayName": "Product group",
- "ProductDetailId": "Product detail ID",
- "ProductUniqueName": "Unique name",
- "ProductDisplayName": "Display name",
- "ProductDisplayOrder": "Display order",
- "ProductSold": "Sold",
- "ProductDetailDescription": "Description",
- "ProductCategory": "Categories",
- "ProductAttribute": "Attribute",
- "ProductAttributeNames": "Attribute names",
- "ProductAttributeNamesPlaceholder": "e.g. Color,Size",
- "ProductAttributeOption": "Attribute option",
- "ProductAttributeOptionNames": "Attribute option names",
- "ProductAttributeOptionNamesPlaceholder": "e.g.\nRed,Green,Blue\nS,M,L,XL",
- "ProductSku": "Product SKU",
- "ProductSkuAttributeOptionIds": "Attribute option IDs",
- "ProductSkuName": "SKU name",
- "ProductSkuCurrency": "Currency",
- "ProductSkuOriginalPrice": "Original price",
- "ProductSkuPrice": "Price",
- "ProductSkuInventory": "Inventory",
- "ProductSkuSold": "Sold",
- "ProductSkuOrderMinQuantity": "Minimum quantity per purchase",
- "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase",
- "ProductSkuPaymentExpireIn": "Payment expire in",
- "ProductSkuMediaResources": "Media resources",
- "ProductSkuContentDescription": "SKU content",
- "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.",
- "CreateProductSku": "New",
- "EditProductSku": "Edit",
- "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?",
- "ProductInventoryStrategy": "Inventory strategy",
- "ProductInventoryProviderName": "Inventory provider",
- "ProductInventoryProviderNamePlaceholder": "Keep it empty if you don't understand",
- "InventoryStrategy.NoNeed": "No need",
- "InventoryStrategy.ReduceAfterPlacing": "Reduce inventory after placing",
- "InventoryStrategy.ReduceAfterPayment": "Reduce inventory after payment",
- "ProductIsPublished": "Published",
- "ProductIsStatic": "Static",
- "ProductIsHidden": "Hidden",
- "ProductPaymentExpireIn": "Payment expire in",
- "ProductMediaResources": "Media resources",
- "ProductAttributeDisplayName": "Display name",
- "ProductAttributeDescription": "Description",
- "ProductAttributeDisplayOrder": "Display order",
- "ProductAttributeOptionDisplayName": "Display name",
- "ProductAttributeOptionDescription": "Description",
- "ProductAttributeOptionDisplayOrder": "Display order",
- "CreateProduct": "New",
- "EditProduct": "Edit",
- "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Menu:Category": "Category",
- "Category": "Category",
- "Subcategory": "Subcategory",
- "CategoryParentId": "Parent ID",
- "CategoryUniqueName": "Unique name",
- "CategoryDisplayName": "Display name",
- "CategoryDescription": "Description",
- "CategoryMediaResources": "Media resources",
- "CategoryIsHidden": "Hidden",
- "CreateCategory": "New",
- "EditCategory": "Edit",
- "CategoryDeletionConfirmationMessage": "Are you sure to delete the category {0}?",
- "Permission:ProductInventory": "Product inventory",
- "ProductInventory": "Product inventory",
- "ProductInventoryChangedInventory": "Changed inventory",
- "ProductInventoryChangeType": "Change type",
- "IncreaseInventory": "Increase",
- "DecreaseInventory": "Decrease",
- "ProductInventoryInventory": "Inventory",
- "ChangeProductInventory": "Change inventory",
- "EasyAbp.EShop.Products:DuplicateCategoryUniqueName": "The category unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:DuplicatedProductUniqueName": "The product unique name '{uniqueName}' is duplicated.",
- "EasyAbp.EShop.Products:InventoryChangeFailed": "Inventory of product {productId} (SKU: {productSkuId}) cannot be changed by {changedInventory} from {originalInventory}",
- "EasyAbp.EShop.Products:NonexistentProductGroup": "The specified product group ({productGroupName}) is nonexistent.",
- "EasyAbp.EShop.Products:NonexistentInventoryProvider": "The specified inventory provider ({inventoryProviderName}) is nonexistent.",
- "EasyAbp.EShop.Products:ProductSkuCodeDuplicated": "Sku code {code} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuDuplicated": "Sku {serializedAttributeOptionIds} is duplicate for the product {productId}",
- "EasyAbp.EShop.Products:ProductSkuIncorrectAttributeOptions": "Sku {serializedAttributeOptionIds} is incorrect for the product {productId}",
- "EasyAbp.EShop.Products:NotAllowedToGetCategoryListWithShowHidden": "You have no permission to get category list with hidden categories.",
- "EasyAbp.EShop.Products:ProductAttributeOptionsDeletionFailed": "Should ensure there are no SKUs using the attribute option which you want to delete.",
- "EasyAbp.EShop.Products:ProductAttributesModificationFailed": "Should ensure SKUs are empty if you want to modify attributes of a product.",
- "EasyAbp.EShop.Products:StaticProductCannotBeModified": "Cannot modify the static product: {productId}",
- "EasyAbp.EShop.Products:StoreIsNotProductOwner": "Store {storeId} is not a owner of the product {productId}",
- "EasyAbp.EShop.Products:InventoryInsufficient": "The inventory of the product {productId} (SKU: {productSkuId}) is insufficient, {quantity} are needed, but only {inventory}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
index b6eb22b0..40c661f6 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:ProductManagement": "商品",
- "ManageYourProfile": "管理个人资料",
"Menu:Product": "商品",
"Product": "商品",
"ProductStoreId": "店铺 ID",
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
index 395a71e0..87809c53 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:ProductManagement": "商品",
- "ManageYourProfile": "管理個人資料",
"Menu:Product": "商品",
"Product": "商品",
"ProductStoreId": "店鋪 ID",
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/InventoryStrategy.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/InventoryStrategy.cs
index 301d6684..257d0b13 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/InventoryStrategy.cs
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/InventoryStrategy.cs
@@ -7,6 +7,7 @@ namespace EasyAbp.EShop.Products.Products
{
NoNeed = 1,
ReduceAfterPlacing = 2,
- ReduceAfterPayment = 4
+ ReduceAfterPayment = 4,
+ FlashSales = 8
}
}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Menus/ProductsMenuContributor.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Menus/ProductsMenuContributor.cs
index a202f774..591364de 100644
--- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Menus/ProductsMenuContributor.cs
+++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Menus/ProductsMenuContributor.cs
@@ -41,7 +41,7 @@ namespace EasyAbp.EShop.Products.Web.Menus
if (!productManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == ProductsMenus.ModuleGroupPrefix,
- () => new ApplicationMenuItem(ProductsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"]));
+ () => new ApplicationMenuItem(ProductsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"], icon: "fa fa-shopping-bag"));
eShopMenuItem.Items.Add(productManagementMenuItem);
}
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json
deleted file mode 100644
index e642917f..00000000
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:StoreManagement": "Stores",
- "Menu:Store": "Store",
- "Store": "Store",
- "StoreName": "Name",
- "CreateStore": "New",
- "EditStore": "Edit",
- "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "StoreOwner": "Store owner",
- "Menu:StoreOwner": "Store owner",
- "StoreOwnerUserName": "Username",
- "CreateStoreOwner": "New",
- "EditStoreOwner": "Edit",
- "StoreOwnerDeletionConfirmationMessage": "Are you sure to delete the store owner {0}?",
- "Permission:Transaction": "Transaction",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:Transaction": "Transaction",
- "Transaction": "Transaction",
- "TransactionStoreId": "Store ID",
- "TransactionOrderId": "Order ID",
- "TransactionTransactionType": "Transaction type",
- "TransactionActionName": "Action name",
- "TransactionCurrency": "Currency",
- "TransactionAmount": "Amount",
- "CreateTransaction": "New",
- "EditTransaction": "Edit",
- "TransactionDeletionConfirmationMessage": "Are you sure to delete the transaction {0}?",
- "EasyAbp.EShop.Stores:StoreOwnerDuplicated": "Owner {ownerUserId} is duplicate for the store {storeId}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json
index 3657b4ec..cd2338f5 100644
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json
+++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop",
"Menu:StoreManagement": "Stores",
- "ManageYourProfile": "Manage your profile",
"Menu:Store": "Store",
"Store": "Store",
"StoreName": "Name",
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json
deleted file mode 100644
index 9d994cb9..00000000
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "culture": "pl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:StoreManagement": "Stores",
- "Menu:Store": "Store",
- "Store": "Store",
- "StoreName": "Name",
- "CreateStore": "New",
- "EditStore": "Edit",
- "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "StoreOwner": "Store owner",
- "Menu:StoreOwner": "Store owner",
- "StoreOwnerUserName": "Username",
- "CreateStoreOwner": "New",
- "EditStoreOwner": "Edit",
- "StoreOwnerDeletionConfirmationMessage": "Are you sure to delete the store owner {0}?",
- "Permission:Transaction": "Transaction",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:Transaction": "Transaction",
- "Transaction": "Transaction",
- "TransactionStoreId": "Store ID",
- "TransactionOrderId": "Order ID",
- "TransactionTransactionType": "Transaction type",
- "TransactionActionName": "Action name",
- "TransactionCurrency": "Currency",
- "TransactionAmount": "Amount",
- "CreateTransaction": "New",
- "EditTransaction": "Edit",
- "TransactionDeletionConfirmationMessage": "Are you sure to delete the transaction {0}?",
- "EasyAbp.EShop.Stores:StoreOwnerDuplicated": "Owner {ownerUserId} is duplicate for the store {storeId}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json
deleted file mode 100644
index d693f391..00000000
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:StoreManagement": "Stores",
- "Menu:Store": "Store",
- "Store": "Store",
- "StoreName": "Name",
- "CreateStore": "New",
- "EditStore": "Edit",
- "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "StoreOwner": "Store owner",
- "Menu:StoreOwner": "Store owner",
- "StoreOwnerUserName": "Username",
- "CreateStoreOwner": "New",
- "EditStoreOwner": "Edit",
- "StoreOwnerDeletionConfirmationMessage": "Are you sure to delete the store owner {0}?",
- "Permission:Transaction": "Transaction",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:Transaction": "Transaction",
- "Transaction": "Transaction",
- "TransactionStoreId": "Store ID",
- "TransactionOrderId": "Order ID",
- "TransactionTransactionType": "Transaction type",
- "TransactionActionName": "Action name",
- "TransactionCurrency": "Currency",
- "TransactionAmount": "Amount",
- "CreateTransaction": "New",
- "EditTransaction": "Edit",
- "TransactionDeletionConfirmationMessage": "Are you sure to delete the transaction {0}?",
- "EasyAbp.EShop.Stores:StoreOwnerDuplicated": "Owner {ownerUserId} is duplicate for the store {storeId}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json
deleted file mode 100644
index 6baa416e..00000000
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:StoreManagement": "Stores",
- "ManageYourProfile": "Upravljajte svojim profilom",
- "Menu:Store": "Store",
- "Store": "Store",
- "StoreName": "Name",
- "CreateStore": "New",
- "EditStore": "Edit",
- "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "StoreOwner": "Store owner",
- "Menu:StoreOwner": "Store owner",
- "StoreOwnerUserName": "Username",
- "CreateStoreOwner": "New",
- "EditStoreOwner": "Edit",
- "StoreOwnerDeletionConfirmationMessage": "Are you sure to delete the store owner {0}?",
- "Permission:Transaction": "Transaction",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:Transaction": "Transaction",
- "Transaction": "Transaction",
- "TransactionStoreId": "Store ID",
- "TransactionOrderId": "Order ID",
- "TransactionTransactionType": "Transaction type",
- "TransactionActionName": "Action name",
- "TransactionCurrency": "Currency",
- "TransactionAmount": "Amount",
- "CreateTransaction": "New",
- "EditTransaction": "Edit",
- "TransactionDeletionConfirmationMessage": "Are you sure to delete the transaction {0}?",
- "EasyAbp.EShop.Stores:StoreOwnerDuplicated": "Owner {ownerUserId} is duplicate for the store {storeId}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json
deleted file mode 100644
index 35c0b87b..00000000
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:StoreManagement": "Stores",
- "ManageYourProfile": "Profil y�netimi",
- "Menu:Store": "Store",
- "Store": "Store",
- "StoreName": "Name",
- "CreateStore": "New",
- "EditStore": "Edit",
- "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "StoreOwner": "Store owner",
- "Menu:StoreOwner": "Store owner",
- "StoreOwnerUserName": "Username",
- "CreateStoreOwner": "New",
- "EditStoreOwner": "Edit",
- "StoreOwnerDeletionConfirmationMessage": "Are you sure to delete the store owner {0}?",
- "Permission:Transaction": "Transaction",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:Transaction": "Transaction",
- "Transaction": "Transaction",
- "TransactionStoreId": "Store ID",
- "TransactionOrderId": "Order ID",
- "TransactionTransactionType": "Transaction type",
- "TransactionActionName": "Action name",
- "TransactionCurrency": "Currency",
- "TransactionAmount": "Amount",
- "CreateTransaction": "New",
- "EditTransaction": "Edit",
- "TransactionDeletionConfirmationMessage": "Are you sure to delete the transaction {0}?",
- "EasyAbp.EShop.Stores:StoreOwnerDuplicated": "Owner {ownerUserId} is duplicate for the store {storeId}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json
deleted file mode 100644
index c546a397..00000000
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:StoreManagement": "Stores",
- "Menu:Store": "Store",
- "Store": "Store",
- "StoreName": "Name",
- "CreateStore": "New",
- "EditStore": "Edit",
- "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "StoreOwner": "Store owner",
- "Menu:StoreOwner": "Store owner",
- "StoreOwnerUserName": "Username",
- "CreateStoreOwner": "New",
- "EditStoreOwner": "Edit",
- "StoreOwnerDeletionConfirmationMessage": "Are you sure to delete the store owner {0}?",
- "Permission:Transaction": "Transaction",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:Transaction": "Transaction",
- "Transaction": "Transaction",
- "TransactionStoreId": "Store ID",
- "TransactionOrderId": "Order ID",
- "TransactionTransactionType": "Transaction type",
- "TransactionActionName": "Action name",
- "TransactionCurrency": "Currency",
- "TransactionAmount": "Amount",
- "CreateTransaction": "New",
- "EditTransaction": "Edit",
- "TransactionDeletionConfirmationMessage": "Are you sure to delete the transaction {0}?",
- "EasyAbp.EShop.Stores:StoreOwnerDuplicated": "Owner {ownerUserId} is duplicate for the store {storeId}."
- }
-}
\ No newline at end of file
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hans.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hans.json
index 1954d4ac..976abe36 100644
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hans.json
+++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hans.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:StoreManagement": "店铺",
- "ManageYourProfile": "管理个人资料",
"Menu:Store": "店铺",
"Store": "店铺",
"StoreName": "店铺名称",
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hant.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hant.json
index 75b9a190..4b3b58f0 100644
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hant.json
+++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/zh-Hant.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:StoreManagement": "店鋪",
- "ManageYourProfile": "管理個人資料",
"Menu:Store": "店鋪",
"Store": "店鋪",
"StoreName": "店鋪名稱",
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain/EasyAbp/EShop/Stores/StoresDataSeedContributor.cs b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain/EasyAbp/EShop/Stores/StoresDataSeedContributor.cs
index 0f02cfc7..e7c9bbe5 100644
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain/EasyAbp/EShop/Stores/StoresDataSeedContributor.cs
+++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain/EasyAbp/EShop/Stores/StoresDataSeedContributor.cs
@@ -15,8 +15,8 @@ namespace EasyAbp.EShop.Stores
_storeDataSeeder = storeDataSeeder;
}
- [UnitOfWork(true)]
- public async Task SeedAsync(DataSeedContext context)
+ [UnitOfWork]
+ public virtual async Task SeedAsync(DataSeedContext context)
{
await _storeDataSeeder.SeedAsync(context);
}
diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Web/Menus/StoresMenuContributor.cs b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Web/Menus/StoresMenuContributor.cs
index d320bae3..4d4b4b92 100644
--- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Web/Menus/StoresMenuContributor.cs
+++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Web/Menus/StoresMenuContributor.cs
@@ -51,7 +51,7 @@ namespace EasyAbp.EShop.Stores.Web.Menus
if (!storeManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == StoresMenus.ModuleGroupPrefix,
- () => new ApplicationMenuItem(StoresMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"]));
+ () => new ApplicationMenuItem(StoresMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"], icon: "fa fa-shopping-bag"));
eShopMenuItem.Items.Add(storeManagementMenuItem);
}
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/cs.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/cs.json
deleted file mode 100644
index 329af5d4..00000000
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/cs.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:BasketManagement": "Baskets",
- "ManageYourProfile": "Spravovat profil",
- "Permission:BasketItem": "Basket item",
- "Menu:BasketItem": "Basket item",
- "BasketItem": "Basket item",
- "BasketItemBasketName": "Basket name",
- "BasketItemUserId": "User ID",
- "BasketItemStoreId": "Store ID",
- "BasketItemProductId": "Product ID",
- "BasketItemProductSkuId": "Product SKU ID",
- "BasketItemQuantity": "Quantity",
- "BasketItemMediaResources": "Media resources",
- "BasketItemProductUniqueName": "Product unique name",
- "BasketItemProductDisplayName": "Product display name",
- "BasketItemSkuName": "SKU name",
- "BasketItemSkuDescription": "SKU description",
- "BasketItemCurrency": "Currency",
- "BasketItemUnitPrice": "Unit price",
- "BasketItemTotalPrice": "Total price",
- "BasketItemTotalDiscount": "Total discount",
- "BasketItemInventory": "Inventory",
- "BasketItemIsInvalid": "Invalid",
- "CreateBasketItem": "New",
- "EditBasketItem": "Edit",
- "BasketItemDeletionConfirmationMessage": "Are you sure to delete the basket item {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "EasyAbp.EShop.Plugins.Baskets:ProductSkuNotFound": "Product {productId} (SKU: {productSkuId}) not found."
- }
-}
\ No newline at end of file
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/en.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/en.json
index 7bdc4712..dd7ff74c 100644
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/en.json
+++ b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/en.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop",
"Menu:BasketManagement": "Baskets",
- "ManageYourProfile": "Manage your profile",
"Permission:BasketItem": "Basket item",
"Menu:BasketItem": "Basket item",
"BasketItem": "Basket item",
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/pl-PL.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/pl-PL.json
deleted file mode 100644
index 56b1e7db..00000000
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/pl-PL.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "culture": "pl-PL",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:BasketManagement": "Baskets",
- "Permission:BasketItem": "Basket item",
- "Menu:BasketItem": "Basket item",
- "BasketItem": "Basket item",
- "BasketItemBasketName": "Basket name",
- "BasketItemUserId": "User ID",
- "BasketItemStoreId": "Store ID",
- "BasketItemProductId": "Product ID",
- "BasketItemProductSkuId": "Product SKU ID",
- "BasketItemQuantity": "Quantity",
- "BasketItemMediaResources": "Media resources",
- "BasketItemProductUniqueName": "Product unique name",
- "BasketItemProductDisplayName": "Product display name",
- "BasketItemSkuName": "SKU name",
- "BasketItemSkuDescription": "SKU description",
- "BasketItemCurrency": "Currency",
- "BasketItemUnitPrice": "Unit price",
- "BasketItemTotalPrice": "Total price",
- "BasketItemTotalDiscount": "Total discount",
- "BasketItemInventory": "Inventory",
- "BasketItemIsInvalid": "Invalid",
- "CreateBasketItem": "New",
- "EditBasketItem": "Edit",
- "BasketItemDeletionConfirmationMessage": "Are you sure to delete the basket item {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "EasyAbp.EShop.Plugins.Baskets:ProductSkuNotFound": "Product {productId} (SKU: {productSkuId}) not found."
- }
-}
\ No newline at end of file
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/pt-BR.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/pt-BR.json
deleted file mode 100644
index 580aa88f..00000000
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/pt-BR.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:BasketManagement": "Baskets",
- "Permission:BasketItem": "Basket item",
- "Menu:BasketItem": "Basket item",
- "BasketItem": "Basket item",
- "BasketItemBasketName": "Basket name",
- "BasketItemUserId": "User ID",
- "BasketItemStoreId": "Store ID",
- "BasketItemProductId": "Product ID",
- "BasketItemProductSkuId": "Product SKU ID",
- "BasketItemQuantity": "Quantity",
- "BasketItemMediaResources": "Media resources",
- "BasketItemProductUniqueName": "Product unique name",
- "BasketItemProductDisplayName": "Product display name",
- "BasketItemSkuName": "SKU name",
- "BasketItemSkuDescription": "SKU description",
- "BasketItemCurrency": "Currency",
- "BasketItemUnitPrice": "Unit price",
- "BasketItemTotalPrice": "Total price",
- "BasketItemTotalDiscount": "Total discount",
- "BasketItemInventory": "Inventory",
- "BasketItemIsInvalid": "Invalid",
- "CreateBasketItem": "New",
- "EditBasketItem": "Edit",
- "BasketItemDeletionConfirmationMessage": "Are you sure to delete the basket item {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "EasyAbp.EShop.Plugins.Baskets:ProductSkuNotFound": "Product {productId} (SKU: {productSkuId}) not found."
- }
-}
\ No newline at end of file
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/sl.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/sl.json
deleted file mode 100644
index f09cb13f..00000000
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/sl.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:BasketManagement": "Baskets",
- "ManageYourProfile": "Upravljajte svojim profilom",
- "Permission:BasketItem": "Basket item",
- "Menu:BasketItem": "Basket item",
- "BasketItem": "Basket item",
- "BasketItemBasketName": "Basket name",
- "BasketItemUserId": "User ID",
- "BasketItemStoreId": "Store ID",
- "BasketItemProductId": "Product ID",
- "BasketItemProductSkuId": "Product SKU ID",
- "BasketItemQuantity": "Quantity",
- "BasketItemMediaResources": "Media resources",
- "BasketItemProductUniqueName": "Product unique name",
- "BasketItemProductDisplayName": "Product display name",
- "BasketItemSkuName": "SKU name",
- "BasketItemSkuDescription": "SKU description",
- "BasketItemCurrency": "Currency",
- "BasketItemUnitPrice": "Unit price",
- "BasketItemTotalPrice": "Total price",
- "BasketItemTotalDiscount": "Total discount",
- "BasketItemInventory": "Inventory",
- "BasketItemIsInvalid": "Invalid",
- "CreateBasketItem": "New",
- "EditBasketItem": "Edit",
- "BasketItemDeletionConfirmationMessage": "Are you sure to delete the basket item {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "EasyAbp.EShop.Plugins.Baskets:ProductSkuNotFound": "Product {productId} (SKU: {productSkuId}) not found."
- }
-}
\ No newline at end of file
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/tr.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/tr.json
deleted file mode 100644
index 71209c87..00000000
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/tr.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:BasketManagement": "Baskets",
- "ManageYourProfile": "Profil yönetimi",
- "SamplePageMessage": "Baskets modulünden örnek bir sayfa",
- "Permission:BasketItem": "Basket item",
- "Menu:BasketItem": "Basket item",
- "BasketItem": "Basket item",
- "BasketItemBasketName": "Basket name",
- "BasketItemUserId": "User ID",
- "BasketItemStoreId": "Store ID",
- "BasketItemProductId": "Product ID",
- "BasketItemProductSkuId": "Product SKU ID",
- "BasketItemQuantity": "Quantity",
- "BasketItemMediaResources": "Media resources",
- "BasketItemProductUniqueName": "Product unique name",
- "BasketItemProductDisplayName": "Product display name",
- "BasketItemSkuName": "SKU name",
- "BasketItemSkuDescription": "SKU description",
- "BasketItemCurrency": "Currency",
- "BasketItemUnitPrice": "Unit price",
- "BasketItemTotalPrice": "Total price",
- "BasketItemTotalDiscount": "Total discount",
- "BasketItemInventory": "Inventory",
- "BasketItemIsInvalid": "Invalid",
- "CreateBasketItem": "New",
- "EditBasketItem": "Edit",
- "BasketItemDeletionConfirmationMessage": "Are you sure to delete the basket item {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "EasyAbp.EShop.Plugins.Baskets:ProductSkuNotFound": "Product {productId} (SKU: {productSkuId}) not found."
- }
-}
\ No newline at end of file
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/vi.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/vi.json
deleted file mode 100644
index 3f46938f..00000000
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/vi.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:BasketManagement": "Baskets",
- "Permission:BasketItem": "Basket item",
- "Menu:BasketItem": "Basket item",
- "BasketItem": "Basket item",
- "BasketItemBasketName": "Basket name",
- "BasketItemUserId": "User ID",
- "BasketItemStoreId": "Store ID",
- "BasketItemProductId": "Product ID",
- "BasketItemProductSkuId": "Product SKU ID",
- "BasketItemQuantity": "Quantity",
- "BasketItemMediaResources": "Media resources",
- "BasketItemProductUniqueName": "Product unique name",
- "BasketItemProductDisplayName": "Product display name",
- "BasketItemSkuName": "SKU name",
- "BasketItemSkuDescription": "SKU description",
- "BasketItemCurrency": "Currency",
- "BasketItemUnitPrice": "Unit price",
- "BasketItemTotalPrice": "Total price",
- "BasketItemTotalDiscount": "Total discount",
- "BasketItemInventory": "Inventory",
- "BasketItemIsInvalid": "Invalid",
- "CreateBasketItem": "New",
- "EditBasketItem": "Edit",
- "BasketItemDeletionConfirmationMessage": "Are you sure to delete the basket item {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "EasyAbp.EShop.Plugins.Baskets:ProductSkuNotFound": "Product {productId} (SKU: {productSkuId}) not found."
- }
-}
\ No newline at end of file
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hans.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hans.json
index c592b7e8..31ebc3d7 100644
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hans.json
+++ b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hans.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:BasketManagement": "购物车",
- "ManageYourProfile": "管理个人资料",
"Permission:BasketItem": "购物车项",
"Menu:BasketItem": "购物车项",
"BasketItem": "购物车项",
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hant.json b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hant.json
index 573079a8..a88995bb 100644
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hant.json
+++ b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Domain.Shared/EasyAbp/EShop/Plugins/Baskets/Localization/zh-Hant.json
@@ -3,7 +3,6 @@
"texts": {
"Menu:EasyAbpEShop": "EShop 商城",
"Menu:BasketManagement": "購物車",
- "ManageYourProfile": "管理個人資料",
"Permission:BasketItem": "購物車項",
"Menu:BasketItem": "購物車項",
"BasketItem": "購物車項",
diff --git a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Menus/BasketsMenuContributor.cs b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Menus/BasketsMenuContributor.cs
index 9badbcb4..ad964b3e 100644
--- a/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Menus/BasketsMenuContributor.cs
+++ b/plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Menus/BasketsMenuContributor.cs
@@ -28,7 +28,7 @@ namespace EasyAbp.EShop.Plugins.Baskets.Web.Menus
if (!basketManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == BasketsMenus.ModuleGroupPrefix,
- () => new ApplicationMenuItem(BasketsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"]));
+ () => new ApplicationMenuItem(BasketsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"], icon: "fa fa-shopping-bag"));
eShopMenuItem.Items.Add(basketManagementMenuItem);
}
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json
deleted file mode 100644
index 8f2f0c1b..00000000
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "ManageYourProfile": "Spravovat profil",
- "SamplePageMessage": "Ukázková stránka pro modul Coupons",
- "Menu:CouponManagement": "Coupons",
- "Permission:CouponTemplate": "Coupon template",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:CouponTemplate": "Coupon template",
- "CouponTemplate": "Coupon template",
- "CouponTemplateStoreId": "Store ID",
- "CouponTemplateCouponType": "Coupon type",
- "CouponTemplateUniqueName": "Unique name",
- "CouponTemplateDisplayName": "Display name",
- "CouponTemplateDescription": "Description",
- "CouponTemplateUsableDuration": "Usable duration",
- "CouponTemplateUsableBeginTime": "Usable begin time",
- "CouponTemplateUsableEndTime": "Usable end time",
- "CouponTemplateConditionAmount": "Condition amount",
- "CouponTemplateDiscountAmount": "Discount amount",
- "CouponTemplateCurrency": "Currency",
- "CouponTemplateIsUnscoped": "Unscoped",
- "CreateCouponTemplate": "New",
- "EditCouponTemplate": "Edit",
- "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?",
- "CouponTemplateScope": "Coupon template scope",
- "CouponTemplateScopeStoreId": "Store ID",
- "CouponTemplateScopeProductGroupName": "Product group name",
- "CouponTemplateScopeProductId": "Product ID",
- "CouponTemplateScopeProductSkuId": "Product SKU ID",
- "CreateCouponTemplateScope": "New",
- "EditCouponTemplateScope": "Edit",
- "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Permission:Coupon": "Coupon",
- "Menu:Coupon": "Coupon",
- "Coupon": "Coupon",
- "CouponCouponTemplateId": "Coupon template ID",
- "CouponUserId": "User ID",
- "CouponOrderId": "Order ID",
- "CouponExpirationTime": "Expiration time",
- "CouponUsedTime": "Used time",
- "CouponDiscountedAmount": "Discounted amount",
- "CreateCoupon": "New",
- "EditCoupon": "Edit",
- "CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?",
- "EasyAbp.EShop.Plugins.Coupons:CouponNotFoundOrHasExpired": "Coupon not found or has expired.",
- "EasyAbp.EShop.Plugins.Coupons:CouponTemplateNotFoundOrUnavailable": "Coupon template not found or unavailable.",
- "EasyAbp.EShop.Plugins.Coupons:OrderDoesNotMeetCouponUsageCondition": "Order does not meet the coupon usage condition.",
- "EasyAbp.EShop.Plugins.Coupons:CouponHasBeenOccupied": "Coupon has been occupied.",
- "EasyAbp.EShop.Plugins.Coupons:InvalidCouponOrderId": "The expected order ID is {expectedOrderId}, but the actual order ID is {actualOrderId}.",
- "EasyAbp.EShop.Plugins.Coupons:UserCouponQuantityExceedsLimit": "User's coupon quantity exceeds the limit: {maxQuantity}."
- }
-}
\ No newline at end of file
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json
index 1e2b5ae4..f919fc2b 100644
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json
+++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json
@@ -1,8 +1,6 @@
{
"culture": "en",
"texts": {
- "ManageYourProfile": "Manage your profile",
- "SamplePageMessage": "A sample page for the Coupons module",
"Menu:CouponManagement": "Coupons",
"Permission:CouponTemplate": "Coupon template",
"Permission:Create": "Create",
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json
deleted file mode 100644
index 4fe97fee..00000000
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "culture": "pl-PL",
- "texts": {
- "Permission:CouponTemplate": "Coupon template",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:CouponTemplate": "Coupon template",
- "CouponTemplate": "Coupon template",
- "CouponTemplateStoreId": "Store ID",
- "CouponTemplateCouponType": "Coupon type",
- "CouponTemplateUniqueName": "Unique name",
- "CouponTemplateDisplayName": "Display name",
- "CouponTemplateDescription": "Description",
- "CouponTemplateUsableDuration": "Usable duration",
- "CouponTemplateUsableBeginTime": "Usable begin time",
- "CouponTemplateUsableEndTime": "Usable end time",
- "CouponTemplateConditionAmount": "Condition amount",
- "CouponTemplateDiscountAmount": "Discount amount",
- "CouponTemplateCurrency": "Currency",
- "CouponTemplateIsUnscoped": "Unscoped",
- "CreateCouponTemplate": "New",
- "EditCouponTemplate": "Edit",
- "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?",
- "CouponTemplateScope": "Coupon template scope",
- "CouponTemplateScopeStoreId": "Store ID",
- "CouponTemplateScopeProductGroupName": "Product group name",
- "CouponTemplateScopeProductId": "Product ID",
- "CouponTemplateScopeProductSkuId": "Product SKU ID",
- "CreateCouponTemplateScope": "New",
- "EditCouponTemplateScope": "Edit",
- "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Permission:Coupon": "Coupon",
- "Menu:Coupon": "Coupon",
- "Coupon": "Coupon",
- "CouponCouponTemplateId": "Coupon template ID",
- "CouponUserId": "User ID",
- "CouponOrderId": "Order ID",
- "CouponExpirationTime": "Expiration time",
- "CouponUsedTime": "Used time",
- "CouponDiscountedAmount": "Discounted amount",
- "CreateCoupon": "New",
- "EditCoupon": "Edit",
- "CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?",
- "EasyAbp.EShop.Plugins.Coupons:CouponNotFoundOrHasExpired": "Coupon not found or has expired.",
- "EasyAbp.EShop.Plugins.Coupons:CouponTemplateNotFoundOrUnavailable": "Coupon template not found or unavailable.",
- "EasyAbp.EShop.Plugins.Coupons:OrderDoesNotMeetCouponUsageCondition": "Order does not meet the coupon usage condition.",
- "EasyAbp.EShop.Plugins.Coupons:CouponHasBeenOccupied": "Coupon has been occupied.",
- "EasyAbp.EShop.Plugins.Coupons:InvalidCouponOrderId": "The expected order ID is {expectedOrderId}, but the actual order ID is {actualOrderId}.",
- "EasyAbp.EShop.Plugins.Coupons:UserCouponQuantityExceedsLimit": "User's coupon quantity exceeds the limit: {maxQuantity}."
- }
-}
\ No newline at end of file
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json
deleted file mode 100644
index dc507aa3..00000000
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Permission:CouponTemplate": "Coupon template",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:CouponTemplate": "Coupon template",
- "CouponTemplate": "Coupon template",
- "CouponTemplateStoreId": "Store ID",
- "CouponTemplateCouponType": "Coupon type",
- "CouponTemplateUniqueName": "Unique name",
- "CouponTemplateDisplayName": "Display name",
- "CouponTemplateDescription": "Description",
- "CouponTemplateUsableDuration": "Usable duration",
- "CouponTemplateUsableBeginTime": "Usable begin time",
- "CouponTemplateUsableEndTime": "Usable end time",
- "CouponTemplateConditionAmount": "Condition amount",
- "CouponTemplateDiscountAmount": "Discount amount",
- "CouponTemplateCurrency": "Currency",
- "CouponTemplateIsUnscoped": "Unscoped",
- "CreateCouponTemplate": "New",
- "EditCouponTemplate": "Edit",
- "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?",
- "CouponTemplateScope": "Coupon template scope",
- "CouponTemplateScopeStoreId": "Store ID",
- "CouponTemplateScopeProductGroupName": "Product group name",
- "CouponTemplateScopeProductId": "Product ID",
- "CouponTemplateScopeProductSkuId": "Product SKU ID",
- "CreateCouponTemplateScope": "New",
- "EditCouponTemplateScope": "Edit",
- "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Permission:Coupon": "Coupon",
- "Menu:Coupon": "Coupon",
- "Coupon": "Coupon",
- "CouponCouponTemplateId": "Coupon template ID",
- "CouponUserId": "User ID",
- "CouponOrderId": "Order ID",
- "CouponExpirationTime": "Expiration time",
- "CouponUsedTime": "Used time",
- "CouponDiscountedAmount": "Discounted amount",
- "CreateCoupon": "New",
- "EditCoupon": "Edit",
- "CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?",
- "EasyAbp.EShop.Plugins.Coupons:CouponNotFoundOrHasExpired": "Coupon not found or has expired.",
- "EasyAbp.EShop.Plugins.Coupons:CouponTemplateNotFoundOrUnavailable": "Coupon template not found or unavailable.",
- "EasyAbp.EShop.Plugins.Coupons:OrderDoesNotMeetCouponUsageCondition": "Order does not meet the coupon usage condition.",
- "EasyAbp.EShop.Plugins.Coupons:CouponHasBeenOccupied": "Coupon has been occupied.",
- "EasyAbp.EShop.Plugins.Coupons:InvalidCouponOrderId": "The expected order ID is {expectedOrderId}, but the actual order ID is {actualOrderId}.",
- "EasyAbp.EShop.Plugins.Coupons:UserCouponQuantityExceedsLimit": "User's coupon quantity exceeds the limit: {maxQuantity}."
- }
-}
\ No newline at end of file
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json
deleted file mode 100644
index 810c227a..00000000
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "ManageYourProfile": "Upravljajte svojim profilom",
- "Menu:CouponManagement": "Coupons",
- "Permission:CouponTemplate": "Coupon template",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:CouponTemplate": "Coupon template",
- "CouponTemplate": "Coupon template",
- "CouponTemplateStoreId": "Store ID",
- "CouponTemplateCouponType": "Coupon type",
- "CouponTemplateUniqueName": "Unique name",
- "CouponTemplateDisplayName": "Display name",
- "CouponTemplateDescription": "Description",
- "CouponTemplateUsableDuration": "Usable duration",
- "CouponTemplateUsableBeginTime": "Usable begin time",
- "CouponTemplateUsableEndTime": "Usable end time",
- "CouponTemplateConditionAmount": "Condition amount",
- "CouponTemplateDiscountAmount": "Discount amount",
- "CouponTemplateCurrency": "Currency",
- "CouponTemplateIsUnscoped": "Unscoped",
- "CreateCouponTemplate": "New",
- "EditCouponTemplate": "Edit",
- "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?",
- "CouponTemplateScope": "Coupon template scope",
- "CouponTemplateScopeStoreId": "Store ID",
- "CouponTemplateScopeProductGroupName": "Product group name",
- "CouponTemplateScopeProductId": "Product ID",
- "CouponTemplateScopeProductSkuId": "Product SKU ID",
- "CreateCouponTemplateScope": "New",
- "EditCouponTemplateScope": "Edit",
- "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Permission:Coupon": "Coupon",
- "Menu:Coupon": "Coupon",
- "Coupon": "Coupon",
- "CouponCouponTemplateId": "Coupon template ID",
- "CouponUserId": "User ID",
- "CouponOrderId": "Order ID",
- "CouponExpirationTime": "Expiration time",
- "CouponUsedTime": "Used time",
- "CouponDiscountedAmount": "Discounted amount",
- "CreateCoupon": "New",
- "EditCoupon": "Edit",
- "CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?",
- "EasyAbp.EShop.Plugins.Coupons:CouponNotFoundOrHasExpired": "Coupon not found or has expired.",
- "EasyAbp.EShop.Plugins.Coupons:CouponTemplateNotFoundOrUnavailable": "Coupon template not found or unavailable.",
- "EasyAbp.EShop.Plugins.Coupons:OrderDoesNotMeetCouponUsageCondition": "Order does not meet the coupon usage condition.",
- "EasyAbp.EShop.Plugins.Coupons:CouponHasBeenOccupied": "Coupon has been occupied.",
- "EasyAbp.EShop.Plugins.Coupons:InvalidCouponOrderId": "The expected order ID is {expectedOrderId}, but the actual order ID is {actualOrderId}.",
- "EasyAbp.EShop.Plugins.Coupons:UserCouponQuantityExceedsLimit": "User's coupon quantity exceeds the limit: {maxQuantity}."
- }
-}
\ No newline at end of file
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json
deleted file mode 100644
index 27d7537f..00000000
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "ManageYourProfile": "Profil yönetimi",
- "SamplePageMessage": "Coupons modulünden örnek bir sayfa",
- "Menu:CouponManagement": "Coupons",
- "Permission:CouponTemplate": "Coupon template",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:CouponTemplate": "Coupon template",
- "CouponTemplate": "Coupon template",
- "CouponTemplateStoreId": "Store ID",
- "CouponTemplateCouponType": "Coupon type",
- "CouponTemplateUniqueName": "Unique name",
- "CouponTemplateDisplayName": "Display name",
- "CouponTemplateDescription": "Description",
- "CouponTemplateUsableDuration": "Usable duration",
- "CouponTemplateUsableBeginTime": "Usable begin time",
- "CouponTemplateUsableEndTime": "Usable end time",
- "CouponTemplateConditionAmount": "Condition amount",
- "CouponTemplateDiscountAmount": "Discount amount",
- "CouponTemplateCurrency": "Currency",
- "CouponTemplateIsUnscoped": "Unscoped",
- "CreateCouponTemplate": "New",
- "EditCouponTemplate": "Edit",
- "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?",
- "CouponTemplateScope": "Coupon template scope",
- "CouponTemplateScopeStoreId": "Store ID",
- "CouponTemplateScopeProductGroupName": "Product group name",
- "CouponTemplateScopeProductId": "Product ID",
- "CouponTemplateScopeProductSkuId": "Product SKU ID",
- "CreateCouponTemplateScope": "New",
- "EditCouponTemplateScope": "Edit",
- "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Permission:Coupon": "Coupon",
- "Menu:Coupon": "Coupon",
- "Coupon": "Coupon",
- "CouponCouponTemplateId": "Coupon template ID",
- "CouponUserId": "User ID",
- "CouponOrderId": "Order ID",
- "CouponExpirationTime": "Expiration time",
- "CouponUsedTime": "Used time",
- "CouponDiscountedAmount": "Discounted amount",
- "CreateCoupon": "New",
- "EditCoupon": "Edit",
- "CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?",
- "EasyAbp.EShop.Plugins.Coupons:CouponNotFoundOrHasExpired": "Coupon not found or has expired.",
- "EasyAbp.EShop.Plugins.Coupons:CouponTemplateNotFoundOrUnavailable": "Coupon template not found or unavailable.",
- "EasyAbp.EShop.Plugins.Coupons:OrderDoesNotMeetCouponUsageCondition": "Order does not meet the coupon usage condition.",
- "EasyAbp.EShop.Plugins.Coupons:CouponHasBeenOccupied": "Coupon has been occupied.",
- "EasyAbp.EShop.Plugins.Coupons:InvalidCouponOrderId": "The expected order ID is {expectedOrderId}, but the actual order ID is {actualOrderId}.",
- "EasyAbp.EShop.Plugins.Coupons:UserCouponQuantityExceedsLimit": "User's coupon quantity exceeds the limit: {maxQuantity}."
- }
-}
\ No newline at end of file
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json
deleted file mode 100644
index 9c5f9dc7..00000000
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Permission:CouponTemplate": "Coupon template",
- "Permission:Create": "Create",
- "Permission:Update": "Update",
- "Permission:Delete": "Delete",
- "Menu:CouponTemplate": "Coupon template",
- "CouponTemplate": "Coupon template",
- "CouponTemplateStoreId": "Store ID",
- "CouponTemplateCouponType": "Coupon type",
- "CouponTemplateUniqueName": "Unique name",
- "CouponTemplateDisplayName": "Display name",
- "CouponTemplateDescription": "Description",
- "CouponTemplateUsableDuration": "Usable duration",
- "CouponTemplateUsableBeginTime": "Usable begin time",
- "CouponTemplateUsableEndTime": "Usable end time",
- "CouponTemplateConditionAmount": "Condition amount",
- "CouponTemplateDiscountAmount": "Discount amount",
- "CouponTemplateCurrency": "Currency",
- "CouponTemplateIsUnscoped": "Unscoped",
- "CreateCouponTemplate": "New",
- "EditCouponTemplate": "Edit",
- "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?",
- "CouponTemplateScope": "Coupon template scope",
- "CouponTemplateScopeStoreId": "Store ID",
- "CouponTemplateScopeProductGroupName": "Product group name",
- "CouponTemplateScopeProductId": "Product ID",
- "CouponTemplateScopeProductSkuId": "Product SKU ID",
- "CreateCouponTemplateScope": "New",
- "EditCouponTemplateScope": "Edit",
- "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?",
- "SuccessfullyDeleted": "Successfully deleted",
- "CouponType.Normal": "Normal (X discount)",
- "CouponType.PerMeet": "PerMeet (X discount for every Y)",
- "CouponType.Custom": "Custom",
- "Permission:Coupon": "Coupon",
- "Menu:Coupon": "Coupon",
- "Coupon": "Coupon",
- "CouponCouponTemplateId": "Coupon template ID",
- "CouponUserId": "User ID",
- "CouponOrderId": "Order ID",
- "CouponExpirationTime": "Expiration time",
- "CouponUsedTime": "Used time",
- "CouponDiscountedAmount": "Discounted amount",
- "CreateCoupon": "New",
- "EditCoupon": "Edit",
- "CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?",
- "EasyAbp.EShop.Plugins.Coupons:CouponNotFoundOrHasExpired": "Coupon not found or has expired.",
- "EasyAbp.EShop.Plugins.Coupons:CouponTemplateNotFoundOrUnavailable": "Coupon template not found or unavailable.",
- "EasyAbp.EShop.Plugins.Coupons:OrderDoesNotMeetCouponUsageCondition": "Order does not meet the coupon usage condition.",
- "EasyAbp.EShop.Plugins.Coupons:CouponHasBeenOccupied": "Coupon has been occupied.",
- "EasyAbp.EShop.Plugins.Coupons:InvalidCouponOrderId": "The expected order ID is {expectedOrderId}, but the actual order ID is {actualOrderId}.",
- "EasyAbp.EShop.Plugins.Coupons:UserCouponQuantityExceedsLimit": "User's coupon quantity exceeds the limit: {maxQuantity}."
- }
-}
\ No newline at end of file
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json
index 628e77df..2a9a4011 100644
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json
+++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json
@@ -1,7 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
- "ManageYourProfile": "管理个人资料",
"Menu:CouponManagement": "优惠券",
"Permission:CouponTemplate": "优惠券模板",
"Permission:Create": "新建",
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json
index 0b638ea5..9c6295aa 100644
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json
+++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json
@@ -1,7 +1,6 @@
{
"culture": "zh-Hant",
"texts": {
- "ManageYourProfile": "管理個人資料",
"Menu:CouponManagement": "優惠券",
"Permission:CouponTemplate": "優惠券模板",
"Permission:Create": "新建",
diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenuContributor.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenuContributor.cs
index bd324755..b80d3aea 100644
--- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenuContributor.cs
+++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenuContributor.cs
@@ -39,7 +39,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web.Menus
if (!couponManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == CouponsMenus.ModuleGroupPrefix,
- () => new ApplicationMenuItem(CouponsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"]));
+ () => new ApplicationMenuItem(CouponsMenus.ModuleGroupPrefix, l["Menu:EasyAbpEShop"], icon: "fa fa-shopping-bag"));
eShopMenuItem.Items.Add(couponManagementMenuItem);
}
diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs
index 14d4faa5..86ebb124 100644
--- a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs
+++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Dapr.Actors;
+using Dapr.Actors.Client;
using EasyAbp.EShop.Plugins.Inventories.DaprActors;
using EasyAbp.EShop.Products.ProductInventories;
using Microsoft.Extensions.Logging;
@@ -11,6 +12,7 @@ namespace EasyAbp.EShop.Products.DaprActorsInventory;
public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITransientDependency
{
+ public static string ActorType { get; set; } = "InventoryActor";
public static string DaprActorsProductInventoryProviderName { get; set; } = "DaprActors";
public static string DaprActorsProductInventoryProviderDisplayName { get; set; } = "DaprActors";
public static string DaprActorsProductInventoryProviderDescription { get; set; } = "DaprActors";
@@ -18,13 +20,13 @@ public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITr
public string InventoryProviderName { get; } = DaprActorsProductInventoryProviderName;
private readonly ILogger _logger;
- protected IInventoryActorProvider InventoryActorProvider { get; }
+ protected IActorProxyFactory ActorProxyFactory { get; }
public DaprActorsProductInventoryProvider(
- IInventoryActorProvider inventoryActorProvider,
+ IActorProxyFactory actorProxyFactory,
ILogger logger)
{
- InventoryActorProvider = inventoryActorProvider;
+ ActorProxyFactory = actorProxyFactory;
_logger = logger;
}
@@ -98,9 +100,9 @@ public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITr
return true;
}
- protected virtual async Task GetActorAsync(InventoryQueryModel model)
+ protected virtual Task GetActorAsync(InventoryQueryModel model)
{
- return await InventoryActorProvider.GetAsync(GetActorId(model));
+ return Task.FromResult(ActorProxyFactory.CreateActorProxy(GetActorId(model), ActorType));
}
protected virtual ActorId GetActorId(InventoryQueryModel model)
diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs
deleted file mode 100644
index fc1dc827..00000000
--- a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Threading.Tasks;
-using Dapr.Actors;
-using EasyAbp.EShop.Plugins.Inventories.DaprActors;
-
-namespace EasyAbp.EShop.Products.DaprActorsInventory;
-
-public interface IInventoryActorProvider
-{
- Task GetAsync(ActorId actorId);
-}
\ No newline at end of file
diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs
deleted file mode 100644
index 16dd18f1..00000000
--- a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Threading.Tasks;
-using Dapr.Actors;
-using Dapr.Actors.Client;
-using EasyAbp.EShop.Plugins.Inventories.DaprActors;
-using Volo.Abp.DependencyInjection;
-
-namespace EasyAbp.EShop.Products.DaprActorsInventory;
-
-public class InventoryActorProvider : IInventoryActorProvider, ITransientDependency
-{
- public static string ActorType { get; set; } = "InventoryActor";
-
- public virtual Task GetAsync(ActorId actorId)
- {
- return Task.FromResult(ActorProxy.Create(actorId, ActorType));
- }
-}
\ No newline at end of file
diff --git a/plugins/Inventories/DaprActors/test/EasyAbp.EShop.Products.DaprActorsInventory.Domain.Tests/TestActorProxyFactory.cs b/plugins/Inventories/DaprActors/test/EasyAbp.EShop.Products.DaprActorsInventory.Domain.Tests/TestActorProxyFactory.cs
new file mode 100644
index 00000000..a2f540e5
--- /dev/null
+++ b/plugins/Inventories/DaprActors/test/EasyAbp.EShop.Products.DaprActorsInventory.Domain.Tests/TestActorProxyFactory.cs
@@ -0,0 +1,50 @@
+using System;
+using Dapr.Actors;
+using Dapr.Actors.Client;
+using EasyAbp.EShop.Plugins.Inventories.DaprActors;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+
+namespace EasyAbp.EShop.Products.DaprActorsInventory.Domain;
+
+[Dependency(ReplaceServices = true)]
+public class TestActorProxyFactory : IActorProxyFactory, ITransientDependency
+{
+ private IInventoryActor Actor { get; set; }
+
+ private readonly IServiceProvider _serviceProvider;
+
+ public TestActorProxyFactory(IServiceProvider serviceProvider)
+ {
+ _serviceProvider = serviceProvider;
+ }
+
+ public TActorInterface CreateActorProxy(ActorId actorId, string actorType,
+ ActorProxyOptions options = null) where TActorInterface : IActor
+ {
+ if (typeof(TActorInterface) != typeof(IInventoryActor))
+ {
+ throw new ApplicationException();
+ }
+
+ if (Actor is not null)
+ {
+ return (TActorInterface)Actor;
+ }
+
+ Actor = _serviceProvider.GetRequiredService();
+
+ return (TActorInterface)Actor;
+ }
+
+ public object CreateActorProxy(ActorId actorId, Type actorInterfaceType, string actorType,
+ ActorProxyOptions options = null)
+ {
+ throw new NotSupportedException();
+ }
+
+ public ActorProxy Create(ActorId actorId, string actorType, ActorProxyOptions options = null)
+ {
+ throw new NotSupportedException();
+ }
+}
\ No newline at end of file
diff --git a/plugins/Inventories/DaprActors/test/EasyAbp.EShop.Products.DaprActorsInventory.Domain.Tests/TestInventoryActorProvider.cs b/plugins/Inventories/DaprActors/test/EasyAbp.EShop.Products.DaprActorsInventory.Domain.Tests/TestInventoryActorProvider.cs
deleted file mode 100644
index 1b889758..00000000
--- a/plugins/Inventories/DaprActors/test/EasyAbp.EShop.Products.DaprActorsInventory.Domain.Tests/TestInventoryActorProvider.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System;
-using System.Threading.Tasks;
-using Dapr.Actors;
-using EasyAbp.EShop.Plugins.Inventories.DaprActors;
-using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp.DependencyInjection;
-
-namespace EasyAbp.EShop.Products.DaprActorsInventory.Domain;
-
-[Dependency(ReplaceServices = true)]
-public class TestInventoryActorProvider : IInventoryActorProvider, ITransientDependency
-{
- private IInventoryActor Actor { get; set; }
-
- private readonly IServiceProvider _serviceProvider;
-
- public TestInventoryActorProvider(IServiceProvider serviceProvider)
- {
- _serviceProvider = serviceProvider;
- }
-
- public Task GetAsync(ActorId actorId)
- {
- return Task.FromResult(Actor ??= _serviceProvider.GetRequiredService());
- }
-}
\ No newline at end of file
diff --git a/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/IInventoryGrainProvider.cs b/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/IInventoryGrainProvider.cs
deleted file mode 100644
index 5f5d1966..00000000
--- a/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/IInventoryGrainProvider.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System.Threading.Tasks;
-using EasyAbp.EShop.Plugins.Inventories.OrleansGrains;
-
-namespace EasyAbp.EShop.Products.OrleansGrainsInventory;
-
-public interface IInventoryGrainProvider
-{
- Task GetAsync(string grainKey);
-}
\ No newline at end of file
diff --git a/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/InventoryGrainProvider.cs b/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/InventoryGrainProvider.cs
deleted file mode 100644
index 0ef6d00f..00000000
--- a/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/InventoryGrainProvider.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.Threading.Tasks;
-using EasyAbp.EShop.Plugins.Inventories.OrleansGrains;
-using Orleans;
-using Volo.Abp.DependencyInjection;
-
-namespace EasyAbp.EShop.Products.OrleansGrainsInventory;
-
-public class InventoryGrainProvider : IInventoryGrainProvider, ITransientDependency
-{
- private readonly IGrainFactory _grainFactory;
-
- public InventoryGrainProvider(IGrainFactory grainFactory)
- {
- _grainFactory = grainFactory;
- }
-
- public virtual Task GetAsync(string grainKey)
- {
- return Task.FromResult(_grainFactory.GetGrain(grainKey));
- }
-}
\ No newline at end of file
diff --git a/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/OrleansGrainsProductInventoryProvider.cs b/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/OrleansGrainsProductInventoryProvider.cs
index 54a95b54..19a7edb2 100644
--- a/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/OrleansGrainsProductInventoryProvider.cs
+++ b/plugins/Inventories/OrleansGrains/src/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain/EasyAbp/EShop/Products/OrleansGrainsInventory/OrleansGrainsProductInventoryProvider.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using EasyAbp.EShop.Plugins.Inventories.OrleansGrains;
using EasyAbp.EShop.Products.ProductInventories;
using Microsoft.Extensions.Logging;
+using Orleans;
using Volo.Abp.DependencyInjection;
namespace EasyAbp.EShop.Products.OrleansGrainsInventory;
@@ -17,13 +18,13 @@ public class OrleansGrainsProductInventoryProvider : IProductInventoryProvider,
public string InventoryProviderName { get; } = OrleansGrainsProductInventoryProviderName;
private readonly ILogger _logger;
- protected IInventoryGrainProvider InventoryGrainProvider { get; }
+ protected IGrainFactory GrainFactory { get; }
public OrleansGrainsProductInventoryProvider(
- IInventoryGrainProvider inventoryGrainProvider,
+ IGrainFactory grainFactory,
ILogger logger)
{
- InventoryGrainProvider = inventoryGrainProvider;
+ GrainFactory = grainFactory;
_logger = logger;
}
@@ -97,9 +98,9 @@ public class OrleansGrainsProductInventoryProvider : IProductInventoryProvider,
return true;
}
- protected virtual async Task GetGrainAsync(InventoryQueryModel model)
+ protected virtual Task GetGrainAsync(InventoryQueryModel model)
{
- return await InventoryGrainProvider.GetAsync(GetGrainId(model));
+ return Task.FromResult(GrainFactory.GetGrain(GetGrainId(model)));
}
protected virtual string GetGrainId(InventoryQueryModel model)
diff --git a/plugins/Inventories/OrleansGrains/test/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain.Tests/TestGrainFactory.cs b/plugins/Inventories/OrleansGrains/test/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain.Tests/TestGrainFactory.cs
new file mode 100644
index 00000000..19973fc4
--- /dev/null
+++ b/plugins/Inventories/OrleansGrains/test/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain.Tests/TestGrainFactory.cs
@@ -0,0 +1,136 @@
+using System;
+using System.Threading.Tasks;
+using EasyAbp.EShop.Plugins.Inventories.OrleansGrains;
+using Microsoft.Extensions.DependencyInjection;
+using Orleans;
+using Orleans.Runtime;
+using Volo.Abp.DependencyInjection;
+
+namespace EasyAbp.EShop.Products.OrleansGrainsInventory.Domain;
+
+[Dependency(ReplaceServices = true)]
+public class TestGrainFactory : IGrainFactory, ITransientDependency
+{
+ private IInventoryGrain Grain { get; set; }
+
+ private readonly IServiceProvider _serviceProvider;
+
+ public TestGrainFactory(IServiceProvider serviceProvider)
+ {
+ _serviceProvider = serviceProvider;
+ }
+
+ public TGrainInterface GetGrain(Guid primaryKey, string grainClassNamePrefix = null)
+ where TGrainInterface : IGrainWithGuidKey
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(long primaryKey, string grainClassNamePrefix = null)
+ where TGrainInterface : IGrainWithIntegerKey
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(string primaryKey, string grainClassNamePrefix = null)
+ where TGrainInterface : IGrainWithStringKey
+ {
+ if (typeof(TGrainInterface) != typeof(IInventoryGrain))
+ {
+ throw new ApplicationException();
+ }
+
+ if (Grain is not null)
+ {
+ return (TGrainInterface)Grain;
+ }
+
+ Grain = _serviceProvider.GetRequiredService();
+
+ return (TGrainInterface)Grain;
+ }
+
+ public TGrainInterface GetGrain(Guid primaryKey, string keyExtension,
+ string grainClassNamePrefix = null) where TGrainInterface : IGrainWithGuidCompoundKey
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(long primaryKey, string keyExtension,
+ string grainClassNamePrefix = null) where TGrainInterface : IGrainWithIntegerCompoundKey
+ {
+ throw new NotSupportedException();
+ }
+
+ public async Task CreateObjectReference(IGrainObserver obj)
+ where TGrainObserverInterface : IGrainObserver
+ {
+ throw new NotSupportedException();
+ }
+
+ public async Task DeleteObjectReference(IGrainObserver obj)
+ where TGrainObserverInterface : IGrainObserver
+ {
+ throw new NotSupportedException();
+ }
+
+ public void BindGrainReference(IAddressable grain)
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(Type grainInterfaceType, Guid grainPrimaryKey)
+ where TGrainInterface : IGrain
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(Type grainInterfaceType, long grainPrimaryKey)
+ where TGrainInterface : IGrain
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(Type grainInterfaceType, string grainPrimaryKey)
+ where TGrainInterface : IGrain
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(Type grainInterfaceType, Guid grainPrimaryKey, string keyExtension)
+ where TGrainInterface : IGrain
+ {
+ throw new NotSupportedException();
+ }
+
+ public TGrainInterface GetGrain(Type grainInterfaceType, long grainPrimaryKey, string keyExtension)
+ where TGrainInterface : IGrain
+ {
+ throw new NotSupportedException();
+ }
+
+ public IGrain GetGrain(Type grainInterfaceType, Guid grainPrimaryKey)
+ {
+ throw new NotSupportedException();
+ }
+
+ public IGrain GetGrain(Type grainInterfaceType, long grainPrimaryKey)
+ {
+ throw new NotSupportedException();
+ }
+
+ public IGrain GetGrain(Type grainInterfaceType, string grainPrimaryKey)
+ {
+ throw new NotSupportedException();
+ }
+
+ public IGrain GetGrain(Type grainInterfaceType, Guid grainPrimaryKey, string keyExtension)
+ {
+ throw new NotSupportedException();
+ }
+
+ public IGrain GetGrain(Type grainInterfaceType, long grainPrimaryKey, string keyExtension)
+ {
+ throw new NotSupportedException();
+ }
+}
\ No newline at end of file
diff --git a/plugins/Inventories/OrleansGrains/test/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain.Tests/TestInventoryGrainProvider.cs b/plugins/Inventories/OrleansGrains/test/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain.Tests/TestInventoryGrainProvider.cs
deleted file mode 100644
index 42c9990e..00000000
--- a/plugins/Inventories/OrleansGrains/test/EasyAbp.EShop.Products.OrleansGrainsInventory.Domain.Tests/TestInventoryGrainProvider.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Threading.Tasks;
-using EasyAbp.EShop.Plugins.Inventories.OrleansGrains;
-using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp.DependencyInjection;
-
-namespace EasyAbp.EShop.Products.OrleansGrainsInventory.Domain;
-
-[Dependency(ReplaceServices = true)]
-public class TestInventoryGrainProvider : IInventoryGrainProvider, ITransientDependency
-{
- private IInventoryGrain Grain { get; set; }
-
- private readonly IServiceProvider _serviceProvider;
-
- public TestInventoryGrainProvider(IServiceProvider serviceProvider)
- {
- _serviceProvider = serviceProvider;
- }
-
- public Task GetAsync(string grainKey)
- {
- return Task.FromResult(Grain ??= _serviceProvider.GetRequiredService());
- }
-}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/DbMigratorHostedService.cs b/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/DbMigratorHostedService.cs
index 3249eda3..3fc10cbf 100644
--- a/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/DbMigratorHostedService.cs
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/DbMigratorHostedService.cs
@@ -1,43 +1,49 @@
using System.Threading;
using System.Threading.Tasks;
+using EShopSample.Data;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using EShopSample.Data;
using Serilog;
using Volo.Abp;
-namespace EShopSample.DbMigrator
+namespace EShopSample.DbMigrator;
+
+public class DbMigratorHostedService : IHostedService
{
- public class DbMigratorHostedService : IHostedService
+ private readonly IHostApplicationLifetime _hostApplicationLifetime;
+ private readonly IConfiguration _configuration;
+
+ public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime, IConfiguration configuration)
{
- private readonly IHostApplicationLifetime _hostApplicationLifetime;
+ _hostApplicationLifetime = hostApplicationLifetime;
+ _configuration = configuration;
+ }
- public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime)
+ public async Task StartAsync(CancellationToken cancellationToken)
+ {
+ using (var application = await AbpApplicationFactory.CreateAsync(options =>
+ {
+ options.Services.ReplaceConfiguration(_configuration);
+ options.UseAutofac();
+ options.Services.AddLogging(c => c.AddSerilog());
+ }))
{
- _hostApplicationLifetime = hostApplicationLifetime;
- }
+ await application.InitializeAsync();
- public async Task StartAsync(CancellationToken cancellationToken)
- {
- using (var application = await AbpApplicationFactory.CreateAsync(options =>
- {
- options.UseAutofac();
- options.Services.AddLogging(c => c.AddSerilog());
- }))
- {
- await application.InitializeAsync();
-
- await application
- .ServiceProvider
- .GetRequiredService()
- .MigrateAsync();
-
- await application.ShutdownAsync();
-
- _hostApplicationLifetime.StopApplication();
- }
+ await application
+ .ServiceProvider
+ .GetRequiredService()
+ .MigrateAsync();
+
+ await application.ShutdownAsync();
+
+ _hostApplicationLifetime.StopApplication();
}
+ }
- public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
+ public Task StopAsync(CancellationToken cancellationToken)
+ {
+ return Task.CompletedTask;
}
-}
+}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/EShopSample.DbMigrator.csproj b/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/EShopSample.DbMigrator.csproj
index 6d7ea54f..d7d19cc5 100644
--- a/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/EShopSample.DbMigrator.csproj
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/EShopSample.DbMigrator.csproj
@@ -1,34 +1,43 @@
-
-
-
- Exe
- net6.0
-
-
-
-
-
-
-
-
- PreserveNewest
- Always
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Exe
+ net6.0
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+ Always
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/Program.cs b/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/Program.cs
index dd877906..b99ff760 100644
--- a/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/Program.cs
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.DbMigrator/Program.cs
@@ -1,38 +1,39 @@
-using System.IO;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
-namespace EShopSample.DbMigrator
+namespace EShopSample.DbMigrator;
+
+class Program
{
- class Program
+ static async Task Main(string[] args)
{
- static async Task Main(string[] args)
- {
- Log.Logger = new LoggerConfiguration()
- .MinimumLevel.Information()
- .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
- .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning)
+ Log.Logger = new LoggerConfiguration()
+ .MinimumLevel.Information()
+ .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
+ .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning)
#if DEBUG
- .MinimumLevel.Override("EShopSample", LogEventLevel.Debug)
+ .MinimumLevel.Override("EShopSample", LogEventLevel.Debug)
#else
.MinimumLevel.Override("EShopSample", LogEventLevel.Information)
#endif
- .Enrich.FromLogContext()
- .WriteTo.File(Path.Combine(Directory.GetCurrentDirectory(), "Logs/logs.txt"))
- .WriteTo.Console()
- .CreateLogger();
-
- await CreateHostBuilder(args).RunConsoleAsync();
- }
+ .Enrich.FromLogContext()
+ .WriteTo.Async(c => c.File("Logs/logs.txt"))
+ .WriteTo.Async(c => c.Console())
+ .CreateLogger();
- public static IHostBuilder CreateHostBuilder(string[] args) =>
- Host.CreateDefaultBuilder(args)
- .ConfigureServices((hostContext, services) =>
- {
- services.AddHostedService();
- });
+ await CreateHostBuilder(args).RunConsoleAsync();
}
-}
+
+ public static IHostBuilder CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .AddAppSettingsSecretsJson()
+ .ConfigureLogging((context, logging) => logging.ClearProviders())
+ .ConfigureServices((hostContext, services) =>
+ {
+ services.AddHostedService();
+ });
+}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/cs.json b/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/cs.json
deleted file mode 100644
index 44106717..00000000
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/cs.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "culture": "cs",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:Home": "Úvod",
- "Welcome": "Vítejte",
- "LongWelcomeMessage": "Vítejte v aplikaci. Toto je startovací projekt založený na ABP frameworku. Pro více informací, navštivte abp.io."
- }
-}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/pl.json b/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/pl.json
deleted file mode 100644
index 0521319e..00000000
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/pl.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "culture": "pl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:Home": "Home",
- "Welcome": "Witaj",
- "LongWelcomeMessage": "Witaj w aplikacji. To jest inicjalny projekt bazujący na ABP framework. Po więcej informacji odwiedź stronę abp.io."
- }
-}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/pt-BR.json b/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/pt-BR.json
deleted file mode 100644
index 135dd6fa..00000000
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/pt-BR.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "culture": "pt-BR",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:Home": "Principal",
- "Welcome": "Seja bem-vindo!",
- "LongWelcomeMessage": "Bem-vindo a esta aplicação. Este é um projeto inicial baseado no ABP framework. Para mais informações, visite abp.io."
- }
-}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/sl.json b/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/sl.json
deleted file mode 100644
index 2f3e17fa..00000000
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/sl.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "culture": "sl",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:Home": "Domov",
- "Welcome": "Dobrodošli",
- "LongWelcomeMessage": "Dobrodošli v aplikaciji. To je začetni projekt na osnovi okolja ABP. Za več informacij obiščite abp.io."
- }
-}
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/tr.json b/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/tr.json
deleted file mode 100644
index b877e7b7..00000000
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/tr.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "culture": "tr",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:Home": "Ana sayfa",
- "Welcome": "Hoşgeldiniz",
- "LongWelcomeMessage": "Uygulamaya hoşgeldiniz. Bu, ABP framework'ü üzerine bina edilmiş bir başlangıç projesidir. Daha fazla bilgi için abp.io adresini ziyaret edebilirsiniz."
- }
-}
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/vi.json b/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/vi.json
deleted file mode 100644
index 0552a6ae..00000000
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Domain.Shared/Localization/EShopSample/vi.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "culture": "vi",
- "texts": {
- "Menu:EasyAbpEShop": "EShop",
- "Menu:Home": "Trang chủ",
- "Welcome": "Chào mừng bạn",
- "LongWelcomeMessage": "Chào mừng bạn đến ứng dụng. Đây là một dự án khởi nghiệp dựa trên khung ABP. Để biết thêm thông tin, hãy truy cập abp.io."
- }
-}
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSample.Web.csproj b/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSample.Web.csproj
index 12e9ed86..408f1fdf 100644
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSample.Web.csproj
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSample.Web.csproj
@@ -48,7 +48,7 @@
-
+
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSampleWebModule.cs b/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSampleWebModule.cs
index 302e2815..6801e606 100644
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSampleWebModule.cs
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.Web/EShopSampleWebModule.cs
@@ -32,13 +32,14 @@ using EShopSample.Localization;
using EShopSample.MultiTenancy;
using EShopSample.Web.Menus;
using Microsoft.OpenApi.Models;
-using NUglify.JavaScript.Syntax;
using Volo.Abp;
using Volo.Abp.Account.Web;
using Volo.Abp.AspNetCore.Authentication.JwtBearer;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.Localization;
-using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic;
+using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
+using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite;
+using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.Autofac;
@@ -63,7 +64,7 @@ namespace EShopSample.Web
typeof(AbpAutofacModule),
typeof(AbpIdentityWebModule),
typeof(AbpAccountWebIdentityServerModule),
- typeof(AbpAspNetCoreMvcUiBasicThemeModule),
+ typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule),
typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
typeof(AbpTenantManagementWebModule),
typeof(AbpFeatureManagementWebModule),
@@ -101,6 +102,7 @@ namespace EShopSample.Web
var configuration = context.Services.GetConfiguration();
ConfigureUrls(configuration);
+ ConfigureBundles();
ConfigureAuthentication(context, configuration);
ConfigureAutoMapper();
ConfigureVirtualFileSystem(hostingEnvironment);
@@ -108,22 +110,16 @@ namespace EShopSample.Web
ConfigureNavigationServices();
ConfigureAutoApiControllers();
ConfigureSwaggerServices(context.Services);
- ConfigureConventionalControllers();
}
- private void ConfigureConventionalControllers()
+ private void ConfigureBundles()
{
- Configure(options =>
- {
- options.ConventionalControllers.Create(typeof(EShopSampleApplicationModule).Assembly);
- });
- }
-
- private void ConfigureUrls(IConfiguration configuration)
- {
- Configure(options =>
+ Configure(options =>
{
- options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
+ options.StyleBundles.Configure(
+ LeptonXLiteThemeBundles.Styles.Global,
+ bundle => { bundle.AddFiles("/global-styles.css"); }
+ );
});
}
@@ -133,11 +129,19 @@ namespace EShopSample.Web
.AddJwtBearer(options =>
{
options.Authority = configuration["AuthServer:Authority"];
- options.RequireHttpsMetadata = false;
+ options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "EShopSample";
});
}
+ private void ConfigureUrls(IConfiguration configuration)
+ {
+ Configure(options =>
+ {
+ options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
+ });
+ }
+
private void ConfigureAutoMapper()
{
Configure(options =>
@@ -226,10 +230,7 @@ namespace EShopSample.Web
typeof(AbpUiResource)
);
- options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
- options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
- options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文"));
});
@@ -284,7 +285,6 @@ namespace EShopSample.Web
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
- app.UseJwtTokenMiddleware();
if (MultiTenancyConsts.IsEnabled)
{
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/global-styles.css b/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/global-styles.css
new file mode 100644
index 00000000..056b01e3
--- /dev/null
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/global-styles.css
@@ -0,0 +1 @@
+/* Your Global Styles */
\ No newline at end of file
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/abp/jquery/abp.jquery.js b/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/abp/jquery/abp.jquery.js
index 81ebf1e2..76dfd389 100644
--- a/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/abp/jquery/abp.jquery.js
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/abp/jquery/abp.jquery.js
@@ -205,14 +205,16 @@ var abp = abp || {};
handleAbpErrorResponse: function (jqXHR, userOptions, $dfd) {
var messagePromise = null;
+ var responseJSON = jqXHR.responseJSON ? jqXHR.responseJSON : JSON.parse(jqXHR.responseText);
+
if (userOptions.abpHandleError !== false) {
- messagePromise = abp.ajax.showError(jqXHR.responseJSON.error);
+ messagePromise = abp.ajax.showError(responseJSON.error);
}
- abp.ajax.logError(jqXHR.responseJSON.error);
+ abp.ajax.logError(responseJSON.error);
- $dfd && $dfd.reject(jqXHR.responseJSON.error, jqXHR);
- userOptions.error && userOptions.error(jqXHR.responseJSON.error, jqXHR);
+ $dfd && $dfd.reject(responseJSON.error, jqXHR);
+ userOptions.error && userOptions.error(responseJSON.error, jqXHR);
if (jqXHR.status === 401 && userOptions.abpHandleError !== false) {
abp.ajax.handleUnAuthorizedRequest(messagePromise);
diff --git a/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/bootstrap/js/bootstrap.enable.popovers.everywhere.js b/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/bootstrap/js/bootstrap.enable.popovers.everywhere.js
new file mode 100644
index 00000000..a02a2a7a
--- /dev/null
+++ b/samples/EShopSample/aspnet-core/src/EShopSample.Web/wwwroot/libs/bootstrap/js/bootstrap.enable.popovers.everywhere.js
@@ -0,0 +1,5 @@
+(function () {
+ [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).map(function (popoverTriggerEl) {
+ return new bootstrap.Popover(popoverTriggerEl)
+ })
+})();