Browse Source

Add Currency property to Coupon and CouponTemplate

pull/107/head
gdlcf88 6 years ago
parent
commit
f74a331dc9
  1. 8
      plugins/Coupons/src/EasyAbp.EShop.Orders.Plugins.Coupons/EasyAbp/EShop/Orders/Plugins/Coupons/OrderDiscount/CouponOrderDiscountProvider.cs
  2. 2
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CouponTemplateDto.cs
  3. 2
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CreateUpdateCouponTemplateDto.cs
  4. 2
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/CouponDto.cs
  5. 2
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateData.cs
  6. 3
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/ICouponTemplate.cs
  7. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json
  8. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json
  9. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json
  10. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json
  11. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json
  12. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json
  13. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json
  14. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json
  15. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json
  16. 6
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate.cs
  17. 5
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/Coupon.cs
  18. 2
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponOrderCanceledEventHandler.cs
  19. 2
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponOrderCreatedEventHandler.cs
  20. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/Index.cshtml
  21. 3
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/ViewModels/CreateEditCouponTemplateViewModel.cs
  22. 1
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js
  23. 4548
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200930070240_AddedCurrencyToCouponAndCouponTemplate.Designer.cs
  24. 31
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200930070240_AddedCurrencyToCouponAndCouponTemplate.cs
  25. 6
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/EShopSampleMigrationsDbContextModelSnapshot.cs

8
plugins/Coupons/src/EasyAbp.EShop.Orders.Plugins.Coupons/EasyAbp/EShop/Orders/Plugins/Coupons/OrderDiscount/CouponOrderDiscountProvider.cs

@ -58,7 +58,8 @@ namespace EasyAbp.EShop.Orders.Plugins.Coupons.OrderDiscount
var couponTemplate = await _couponTemplateLookupService.FindByIdAsync(coupon.CouponTemplateId);
if (couponTemplate == null ||
!IsInUsableTime(couponTemplate, now))
!IsInUsableTime(couponTemplate, now) ||
!IsCurrencyExpected(couponTemplate, order))
{
throw new CouponTemplateNotFoundOrUnavailableException();
}
@ -72,6 +73,11 @@ namespace EasyAbp.EShop.Orders.Plugins.Coupons.OrderDiscount
return order;
}
protected virtual bool IsCurrencyExpected(CouponTemplateData couponTemplate, Order order)
{
return couponTemplate.Currency == order.Currency;
}
protected virtual void DiscountOrderLines(CouponTemplateData couponTemplate, Order order,
List<OrderLine> orderLinesInScope)
{

2
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CouponTemplateDto.cs

@ -26,6 +26,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos
public decimal ConditionAmount { get; set; }
public decimal DiscountAmount { get; set; }
public string Currency { get; set; }
public bool IsUnscoped { get; set; }

2
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CreateUpdateCouponTemplateDto.cs

@ -27,6 +27,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos
public decimal ConditionAmount { get; set; }
public decimal DiscountAmount { get; set; }
public string Currency { get; set; }
public bool IsUnscoped { get; set; }

2
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/CouponDto.cs

@ -19,6 +19,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos
public decimal? DiscountedAmount { get; set; }
public string Currency { get; set; }
public CouponTemplateDto CouponTemplate { get; set; }
}
}

2
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateData.cs

@ -28,6 +28,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
public decimal ConditionAmount { get; set; }
public decimal DiscountAmount { get; set; }
public string Currency { get; set; }
public bool IsUnscoped { get; set; }

3
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/ICouponTemplate.cs

@ -29,6 +29,9 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
decimal DiscountAmount { get; }
[NotNull]
string Currency { get; }
bool IsUnscoped { get; }
}
}

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json

@ -20,6 +20,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json

@ -20,6 +20,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json

@ -17,6 +17,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json

@ -17,6 +17,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json

@ -19,6 +19,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json

@ -20,6 +20,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json

@ -17,6 +17,7 @@
"CouponTemplateUsableEndTime": "Usable end time",
"CouponTemplateConditionAmount": "Condition amount",
"CouponTemplateDiscountAmount": "Discount amount",
"CouponTemplateCurrency": "Currency",
"CouponTemplateIsUnscoped": "Unscoped",
"CreateCouponTemplate": "New",
"EditCouponTemplate": "Edit",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json

@ -19,6 +19,7 @@
"CouponTemplateUsableEndTime": "可用截止时间",
"CouponTemplateConditionAmount": "条件金额",
"CouponTemplateDiscountAmount": "减免金额",
"CouponTemplateCurrency": "币种",
"CouponTemplateIsUnscoped": "不限使用范围",
"CreateCouponTemplate": "新建",
"EditCouponTemplate": "编辑",

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json

@ -19,6 +19,7 @@
"CouponTemplateUsableEndTime": "可用截止時間",
"CouponTemplateConditionAmount": "條件金額",
"CouponTemplateDiscountAmount": "減免金額",
"CouponTemplateCurrency": "幣種",
"CouponTemplateIsUnscoped": "不限使用範圍",
"CreateCouponTemplate": "新建",
"EditCouponTemplate": "編輯",

6
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate.cs

@ -43,6 +43,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
public virtual decimal ConditionAmount { get; protected set; }
public virtual decimal DiscountAmount { get; protected set; }
public virtual string Currency { get; protected set; }
/// <summary>
/// The coupon can be used for any product of any store if this property is set to true.
@ -68,7 +70,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
DateTime? usableBeginTime,
DateTime? usableEndTime,
decimal conditionAmount,
decimal discountAmount,
decimal discountAmount,
[NotNull] string currency,
bool isUnscoped,
List<CouponTemplateScope> scopes
) : base(id)
@ -84,6 +87,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
UsableEndTime = usableEndTime;
ConditionAmount = conditionAmount;
DiscountAmount = discountAmount;
Currency = currency;
IsUnscoped = isUnscoped;
Scopes = scopes ?? new List<CouponTemplateScope>();
}

5
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/Coupon.cs

@ -19,6 +19,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons
public virtual DateTime? UsedTime { get; protected set; }
public virtual decimal? DiscountedAmount { get; protected set; }
public virtual string Currency { get; protected set; }
protected Coupon()
{
@ -49,10 +51,11 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons
ExpirationTime = expirationTime;
}
public void SetUsed(DateTime? usedTime, decimal? discountedAmount)
public void SetUsed(DateTime? usedTime, decimal? discountedAmount, string currency)
{
UsedTime = usedTime;
DiscountedAmount = discountedAmount;
Currency = currency;
}
}
}

2
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponOrderCanceledEventHandler.cs

@ -29,7 +29,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons
var coupon = await _couponRepository.GetAsync(couponId);
coupon.SetOrderId(null);
coupon.SetUsed(null, null);
coupon.SetUsed(null, null, null);
await _couponRepository.UpdateAsync(coupon, true);
}

2
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponOrderCreatedEventHandler.cs

@ -41,7 +41,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons
throw new InvalidCouponOrderIdException(eventData.Entity.Id, coupon.OrderId);
}
coupon.SetUsed(_clock.Now, discountAmount);
coupon.SetUsed(_clock.Now, discountAmount, eventData.Entity.Currency);
await _couponRepository.UpdateAsync(coupon, true);
}

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/Index.cshtml

@ -57,6 +57,7 @@
<th>@L["CouponTemplateUsableEndTime"]</th>
<th>@L["CouponTemplateConditionAmount"]</th>
<th>@L["CouponTemplateDiscountAmount"]</th>
<th>@L["CouponTemplateCurrency"]</th>
<th>@L["CouponTemplateIsUnscoped"]</th>
</tr>
</thead>

3
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/ViewModels/CreateEditCouponTemplateViewModel.cs

@ -36,6 +36,9 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTe
[Display(Name = "CouponTemplateDiscountAmount")]
public decimal DiscountAmount { get; set; }
[Display(Name = "CouponTemplateCurrency")]
public string Currency { get; set; }
[Display(Name = "CouponTemplateIsUnscoped")]
public bool IsUnscoped { get; set; }

1
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js

@ -61,6 +61,7 @@ $(function () {
{ data: "usableEndTime" },
{ data: "conditionAmount" },
{ data: "discountAmount" },
{ data: "currency" },
{ data: "isUnscoped" },
]
}));

4548
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200930070240_AddedCurrencyToCouponAndCouponTemplate.Designer.cs

File diff suppressed because it is too large

31
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200930070240_AddedCurrencyToCouponAndCouponTemplate.cs

@ -0,0 +1,31 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace EShopSample.Migrations
{
public partial class AddedCurrencyToCouponAndCouponTemplate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Currency",
table: "EasyAbpEShopPluginsCouponsCouponTemplates",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Currency",
table: "EasyAbpEShopPluginsCouponsCoupons",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Currency",
table: "EasyAbpEShopPluginsCouponsCouponTemplates");
migrationBuilder.DropColumn(
name: "Currency",
table: "EasyAbpEShopPluginsCouponsCoupons");
}
}
}

6
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/EShopSampleMigrationsDbContextModelSnapshot.cs

@ -762,6 +762,9 @@ namespace EShopSample.Migrations
.HasColumnName("CreatorId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Currency")
.HasColumnType("nvarchar(max)");
b.Property<Guid?>("DeleterId")
.HasColumnName("DeleterId")
.HasColumnType("uniqueidentifier");
@ -905,6 +908,9 @@ namespace EShopSample.Migrations
.HasColumnName("CreatorId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Currency")
.HasColumnType("nvarchar(max)");
b.Property<Guid?>("DeleterId")
.HasColumnName("DeleterId")
.HasColumnType("uniqueidentifier");

Loading…
Cancel
Save