Browse Source

Create CRUD files for the Coupons module

pull/103/head
gdlcf88 6 years ago
parent
commit
babf013904
  1. 33
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CouponTemplateDto.cs
  2. 15
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CouponTemplateScopeDto.cs
  3. 35
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CreateUpdateCouponTemplateDto.cs
  4. 14
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CreateUpdateCouponTemplateScopeDto.cs
  5. 18
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/ICouponTemplateAppService.cs
  6. 23
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/CouponDto.cs
  7. 12
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/CreateUpdateCouponDto.cs
  8. 18
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/ICouponAppService.cs
  9. 14
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissionDefinitionProvider.cs
  10. 20
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissions.cs
  11. 25
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/CouponTemplates/CouponTemplateAppService.cs
  12. 25
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/Coupons/CouponAppService.cs
  13. 16
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/CouponsApplicationAutoMapperProfile.cs
  14. 39
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json
  15. 39
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json
  16. 36
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json
  17. 36
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json
  18. 37
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json
  19. 39
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json
  20. 38
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json
  21. 37
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json
  22. 37
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json
  23. 42
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate.cs
  24. 9
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/ICouponTemplateRepository.cs
  25. 30
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/Coupon.cs
  26. 9
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/ICouponRepository.cs
  27. 20
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateEfCoreQuerableExtensions.cs
  28. 14
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateRepository.cs
  29. 20
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponEfCoreQuerableExtensions.cs
  30. 14
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponRepository.cs
  31. 8
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/CouponsDbContext.cs
  32. 28
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/CouponsDbContextModelCreatingExtensions.cs
  33. 8
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/EShopPluginsCouponsEntityFrameworkCoreModule.cs
  34. 9
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/ICouponsDbContext.cs
  35. 55
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.HttpApi/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateController.cs
  36. 55
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.HttpApi/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponController.cs
  37. 14
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/CouponsWebAutoMapperProfile.cs
  38. 6
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/EasyAbp.EShop.Plugins.Coupons.Web.csproj
  39. 19
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenuContributor.cs
  40. 6
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenus.cs
  41. 18
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/CreateModal.cshtml
  42. 28
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/CreateModal.cshtml.cs
  43. 19
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml
  44. 39
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml.cs
  45. 67
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/Index.cshtml
  46. 12
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/Index.cshtml.cs
  47. 46
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/ViewModels/CreateEditCouponTemplateViewModel.cs
  48. 0
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.css
  49. 74
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js
  50. 18
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/CreateModal.cshtml
  51. 28
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/CreateModal.cshtml.cs
  52. 19
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/EditModal.cshtml
  53. 39
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/EditModal.cshtml.cs
  54. 61
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/Index.cshtml
  55. 12
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/Index.cshtml.cs
  56. 15
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/ViewModels/CreateEditCouponViewModel.cs
  57. 0
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/index.css
  58. 69
      plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/index.js
  59. 28
      plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Application.Tests/CouponTemplates/CouponTemplateAppServiceTests.cs
  60. 28
      plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Application.Tests/Coupons/CouponAppServiceTests.cs
  61. 25
      plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Domain.Tests/CouponTemplates/CouponTemplateDomainTests.cs
  62. 25
      plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Domain.Tests/Coupons/CouponDomainTests.cs
  63. 33
      plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore.Tests/EntityFrameworkCore/CouponTemplates/CouponTemplateRepositoryTests.cs
  64. 33
      plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore.Tests/EntityFrameworkCore/Coupons/CouponRepositoryTests.cs
  65. 4550
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923111614_AddedCouponsModule.Designer.cs
  66. 117
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923111614_AddedCouponsModule.cs
  67. 4550
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923112020_ConfiguredColumnTypeForCouponEntities.Designer.cs
  68. 63
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923112020_ConfiguredColumnTypeForCouponEntities.cs
  69. 220
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/EShopSampleMigrationsDbContextModelSnapshot.cs

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

@ -0,0 +1,33 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos
{
[Serializable]
public class CouponTemplateDto : FullAuditedEntityDto<Guid>
{
public Guid? StoreId { get; set; }
public CouponType CouponType { get; set; }
public string UniqueName { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
public TimeSpan? UsableDuration { get; set; }
public DateTime? UsableBeginTime { get; set; }
public DateTime? UsableEndTime { get; set; }
public decimal ConditionAmount { get; set; }
public decimal DiscountAmount { get; set; }
public bool IsCrossProductAllowed { get; set; }
public bool IsUnscoped { get; set; }
}
}

15
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CouponTemplateScopeDto.cs

@ -0,0 +1,15 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos
{
[Serializable]
public class CouponTemplateScopeDto : FullAuditedEntityDto<Guid>
{
public Guid StoreId { get; set; }
public Guid? ProductId { get; set; }
public Guid? ProductSkuId { get; set; }
}
}

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

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos
{
[Serializable]
public class CreateUpdateCouponTemplateDto
{
public Guid? StoreId { get; set; }
public CouponType CouponType { get; set; }
public string UniqueName { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
public TimeSpan? UsableDuration { get; set; }
public DateTime? UsableBeginTime { get; set; }
public DateTime? UsableEndTime { get; set; }
public decimal ConditionAmount { get; set; }
public decimal DiscountAmount { get; set; }
public bool IsCrossProductAllowed { get; set; }
public bool IsUnscoped { get; set; }
public List<CreateUpdateCouponTemplateScopeDto> Scopes { get; set; }
}
}

14
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/Dtos/CreateUpdateCouponTemplateScopeDto.cs

@ -0,0 +1,14 @@
using System;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos
{
[Serializable]
public class CreateUpdateCouponTemplateScopeDto
{
public Guid StoreId { get; set; }
public Guid? ProductId { get; set; }
public Guid? ProductSkuId { get; set; }
}
}

18
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/ICouponTemplateAppService.cs

@ -0,0 +1,18 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public interface ICouponTemplateAppService :
ICrudAppService<
CouponTemplateDto,
Guid,
PagedAndSortedResultRequestDto,
CreateUpdateCouponTemplateDto,
CreateUpdateCouponTemplateDto>
{
}
}

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

@ -0,0 +1,23 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos
{
[Serializable]
public class CouponDto : FullAuditedEntityDto<Guid>
{
public Guid CouponTemplateId { get; set; }
public Guid UserId { get; set; }
public Guid? OrderId { get; set; }
public DateTime? UsableBeginTime { get; set; }
public DateTime? UsableEndTime { get; set; }
public DateTime? UsedTime { get; set; }
public decimal? DiscountedAmount { get; set; }
}
}

12
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/CreateUpdateCouponDto.cs

@ -0,0 +1,12 @@
using System;
using System.ComponentModel;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos
{
[Serializable]
public class CreateUpdateCouponDto
{
public Guid CouponTemplateId { get; set; }
public Guid UserId { get; set; }
}
}

18
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/ICouponAppService.cs

@ -0,0 +1,18 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public interface ICouponAppService :
ICrudAppService<
CouponDto,
Guid,
PagedAndSortedResultRequestDto,
CreateUpdateCouponDto,
CreateUpdateCouponDto>
{
}
}

14
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissionDefinitionProvider.cs

@ -1,4 +1,4 @@
using EasyAbp.EShop.Plugins.Coupons.Localization;
using EasyAbp.EShop.Plugins.Coupons.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization;
@ -9,6 +9,16 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions
public override void Define(IPermissionDefinitionContext context)
{
var myGroup = context.AddGroup(CouponsPermissions.GroupName, L("Permission:Coupons"));
var couponTemplatePermission = myGroup.AddPermission(CouponsPermissions.CouponTemplate.Default, L("Permission:CouponTemplate"));
couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.Create, L("Permission:Create"));
couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.Update, L("Permission:Update"));
couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.Delete, L("Permission:Delete"));
var couponPermission = myGroup.AddPermission(CouponsPermissions.Coupon.Default, L("Permission:Coupon"));
couponPermission.AddChild(CouponsPermissions.Coupon.Create, L("Permission:Create"));
couponPermission.AddChild(CouponsPermissions.Coupon.Update, L("Permission:Update"));
couponPermission.AddChild(CouponsPermissions.Coupon.Delete, L("Permission:Delete"));
}
private static LocalizableString L(string name)
@ -16,4 +26,4 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions
return LocalizableString.Create<CouponsResource>(name);
}
}
}
}

20
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissions.cs

@ -1,4 +1,4 @@
using Volo.Abp.Reflection;
using Volo.Abp.Reflection;
namespace EasyAbp.EShop.Plugins.Coupons.Permissions
{
@ -10,5 +10,21 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions
{
return ReflectionHelper.GetPublicConstantsRecursively(typeof(CouponsPermissions));
}
public class CouponTemplate
{
public const string Default = GroupName + ".CouponTemplate";
public const string Update = Default + ".Update";
public const string Create = Default + ".Create";
public const string Delete = Default + ".Delete";
}
public class Coupon
{
public const string Default = GroupName + ".Coupon";
public const string Update = Default + ".Update";
public const string Create = Default + ".Create";
public const string Delete = Default + ".Delete";
}
}
}
}

25
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/CouponTemplates/CouponTemplateAppService.cs

@ -0,0 +1,25 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.Permissions;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public class CouponTemplateAppService : CrudAppService<CouponTemplate, CouponTemplateDto, Guid, PagedAndSortedResultRequestDto, CreateUpdateCouponTemplateDto, CreateUpdateCouponTemplateDto>,
ICouponTemplateAppService
{
protected override string GetPolicyName { get; set; } = CouponsPermissions.CouponTemplate.Default;
protected override string GetListPolicyName { get; set; } = CouponsPermissions.CouponTemplate.Default;
protected override string CreatePolicyName { get; set; } = CouponsPermissions.CouponTemplate.Create;
protected override string UpdatePolicyName { get; set; } = CouponsPermissions.CouponTemplate.Update;
protected override string DeletePolicyName { get; set; } = CouponsPermissions.CouponTemplate.Delete;
private readonly ICouponTemplateRepository _repository;
public CouponTemplateAppService(ICouponTemplateRepository repository) : base(repository)
{
_repository = repository;
}
}
}

25
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/Coupons/CouponAppService.cs

@ -0,0 +1,25 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.Permissions;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public class CouponAppService : CrudAppService<Coupon, CouponDto, Guid, PagedAndSortedResultRequestDto, CreateUpdateCouponDto, CreateUpdateCouponDto>,
ICouponAppService
{
protected override string GetPolicyName { get; set; } = CouponsPermissions.Coupon.Default;
protected override string GetListPolicyName { get; set; } = CouponsPermissions.Coupon.Default;
protected override string CreatePolicyName { get; set; } = CouponsPermissions.Coupon.Create;
protected override string UpdatePolicyName { get; set; } = CouponsPermissions.Coupon.Update;
protected override string DeletePolicyName { get; set; } = CouponsPermissions.Coupon.Delete;
private readonly ICouponRepository _repository;
public CouponAppService(ICouponRepository repository) : base(repository)
{
_repository = repository;
}
}
}

16
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/CouponsApplicationAutoMapperProfile.cs

@ -1,4 +1,8 @@
using AutoMapper;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using AutoMapper;
namespace EasyAbp.EShop.Plugins.Coupons
{
@ -9,6 +13,14 @@ namespace EasyAbp.EShop.Plugins.Coupons
/* You can configure your AutoMapper mapping configuration here.
* Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */
CreateMap<CouponTemplate, CouponTemplateDto>();
CreateMap<CreateUpdateCouponTemplateDto, CouponTemplate>(MemberList.Source);
CreateMap<CouponTemplateScope, CouponTemplateScopeDto>();
CreateMap<CreateUpdateCouponTemplateScopeDto, CouponTemplateScope>(MemberList.Source);
CreateMap<Coupon, CouponDto>();
CreateMap<CreateUpdateCouponDto, Coupon>(MemberList.Source);
}
}
}
}

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

@ -2,6 +2,41 @@
"culture": "cs",
"texts": {
"ManageYourProfile": "Spravovat profil",
"SamplePageMessage": "Ukázková stránka pro modul Coupons"
"SamplePageMessage": "Ukázková stránka pro modul Coupons",
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}
}

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

@ -1,7 +1,42 @@
{
"culture": "en",
"texts": {
"ManageYourProfile": "Manage your profile",
"SamplePageMessage": "A sample page for the Coupons module"
"ManageYourProfile": "Manage your profile",
"SamplePageMessage": "A sample page for the Coupons module",
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,6 +1,40 @@
{
"culture": "pl-PL",
"texts": {
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,6 +1,40 @@
{
"culture": "pt-BR",
"texts": {
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,6 +1,41 @@
{
"culture": "sl",
"texts": {
"ManageYourProfile": "Upravljajte svojim profilom"
"ManageYourProfile": "Upravljajte svojim profilom",
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,7 +1,42 @@
{
"culture": "tr",
"texts": {
"ManageYourProfile": "Profil yönetimi",
"SamplePageMessage": "Coupons modulünden örnek bir sayfa"
"ManageYourProfile": "Profil yönetimi",
"SamplePageMessage": "Coupons modulünden örnek bir sayfa",
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,6 +1,40 @@
{
"culture": "vi",
"texts": {
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}
}

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

@ -1,6 +1,41 @@
{
"culture": "zh-Hans",
"texts": {
"ManageYourProfile": "管理个人资料"
"ManageYourProfile": "管理个人资料",
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,6 +1,41 @@
{
"culture": "zh-Hant",
"texts": {
"ManageYourProfile": "管理個人資料"
"ManageYourProfile": "管理個人資料",
"Permission:CouponTemplate": "CouponTemplate",
"Permission:Create": "Create",
"Permission:Update": "Update",
"Permission:Delete": "Delete",
"Menu:CouponTemplate": "MenuCouponTemplate",
"CouponTemplate": "CouponTemplate",
"CouponTemplateStoreId": "CouponTemplateStoreId",
"CouponTemplateCouponType": "CouponTemplateCouponType",
"CouponTemplateUniqueName": "CouponTemplateUniqueName",
"CouponTemplateDisplayName": "CouponTemplateDisplayName",
"CouponTemplateDescription": "CouponTemplateDescription",
"CouponTemplateUsableDuration": "CouponTemplateUsableDuration",
"CouponTemplateUsableBeginTime": "CouponTemplateUsableBeginTime",
"CouponTemplateUsableEndTime": "CouponTemplateUsableEndTime",
"CouponTemplateConditionAmount": "CouponTemplateConditionAmount",
"CouponTemplateDiscountAmount": "CouponTemplateDiscountAmount",
"CouponTemplateIsCrossProductAllowed": "CouponTemplateIsCrossProductAllowed",
"CouponTemplateIsUnscoped": "CouponTemplateIsUnscoped",
"CreateCouponTemplate": "CreateCouponTemplate",
"EditCouponTemplate": "EditCouponTemplate",
"CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the couponTemplate {0}?",
"SuccessfullyDeleted": "Successfully deleted",
"Permission:Coupon": "Coupon",
"Menu:Coupon": "MenuCoupon",
"Coupon": "Coupon",
"CouponCouponTemplateId": "CouponCouponTemplateId",
"CouponUserId": "CouponUserId",
"CouponOrderId": "CouponOrderId",
"CouponUsableBeginTime": "CouponUsableBeginTime",
"CouponUsableEndTime": "CouponUsableEndTime",
"CouponUsedTime": "CouponUsedTime",
"CouponDiscountedAmount": "CouponDiscountedAmount",
"CreateCoupon": "CreateCoupon",
"EditCoupon": "EditCoupon",
"CouponDeletionConfirmationMessage": "Are you sure to delete the coupon {0}?"
}
}

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

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using JetBrains.Annotations;
using Volo.Abp.Domain.Entities.Auditing;
@ -55,5 +55,43 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
public virtual bool IsUnscoped { get; protected set; }
public virtual List<CouponTemplateScope> Scopes { get; protected set; }
protected CouponTemplate()
{
}
public CouponTemplate(
Guid id,
Guid? tenantId,
Guid? storeId,
CouponType couponType,
string uniqueName,
string displayName,
string description,
TimeSpan? usableDuration,
DateTime? usableBeginTime,
DateTime? usableEndTime,
decimal conditionAmount,
decimal discountAmount,
bool isCrossProductAllowed,
bool isUnscoped,
List<CouponTemplateScope> scopes
) : base(id)
{
TenantId = tenantId;
StoreId = storeId;
CouponType = couponType;
UniqueName = uniqueName;
DisplayName = displayName;
Description = description;
UsableDuration = usableDuration;
UsableBeginTime = usableBeginTime;
UsableEndTime = usableEndTime;
ConditionAmount = conditionAmount;
DiscountAmount = discountAmount;
IsCrossProductAllowed = isCrossProductAllowed;
IsUnscoped = isUnscoped;
Scopes = scopes;
}
}
}
}

9
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/ICouponTemplateRepository.cs

@ -0,0 +1,9 @@
using System;
using Volo.Abp.Domain.Repositories;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public interface ICouponTemplateRepository : IRepository<CouponTemplate, Guid>
{
}
}

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

@ -1,4 +1,4 @@
using System;
using System;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
@ -21,5 +21,31 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons
public virtual DateTime? UsedTime { get; protected set; }
public virtual decimal? DiscountedAmount { get; protected set; }
protected Coupon()
{
}
public Coupon(
Guid id,
Guid? tenantId,
Guid couponTemplateId,
Guid userId,
Guid? orderId,
DateTime? usableBeginTime,
DateTime? usableEndTime,
DateTime? usedTime,
decimal? discountedAmount
) : base(id)
{
TenantId = tenantId;
CouponTemplateId = couponTemplateId;
UserId = userId;
OrderId = orderId;
UsableBeginTime = usableBeginTime;
UsableEndTime = usableEndTime;
UsedTime = usedTime;
DiscountedAmount = discountedAmount;
}
}
}
}

9
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain/EasyAbp/EShop/Plugins/Coupons/Coupons/ICouponRepository.cs

@ -0,0 +1,9 @@
using System;
using Volo.Abp.Domain.Repositories;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public interface ICouponRepository : IRepository<Coupon, Guid>
{
}
}

20
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateEfCoreQuerableExtensions.cs

@ -0,0 +1,20 @@
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public static class CouponTemplateEfCoreQueryableExtensions
{
public static IQueryable<CouponTemplate> IncludeDetails(this IQueryable<CouponTemplate> queryable, bool include = true)
{
if (!include)
{
return queryable;
}
return queryable
// .Include(x => x.xxx) // TODO: AbpHelper generated
;
}
}
}

14
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateRepository.cs

@ -0,0 +1,14 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public class CouponTemplateRepository : EfCoreRepository<ICouponsDbContext, CouponTemplate, Guid>, ICouponTemplateRepository
{
public CouponTemplateRepository(IDbContextProvider<ICouponsDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}

20
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponEfCoreQuerableExtensions.cs

@ -0,0 +1,20 @@
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public static class CouponEfCoreQueryableExtensions
{
public static IQueryable<Coupon> IncludeDetails(this IQueryable<Coupon> queryable, bool include = true)
{
if (!include)
{
return queryable;
}
return queryable
// .Include(x => x.xxx) // TODO: AbpHelper generated
;
}
}
}

14
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponRepository.cs

@ -0,0 +1,14 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public class CouponRepository : EfCoreRepository<ICouponsDbContext, Coupon, Guid>, ICouponRepository
{
public CouponRepository(IDbContextProvider<ICouponsDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}

8
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/CouponsDbContext.cs

@ -1,6 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
{
@ -10,6 +12,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
/* Add DbSet for each Aggregate Root here. Example:
* public DbSet<Question> Questions { get; set; }
*/
public DbSet<CouponTemplate> CouponTemplates { get; set; }
public DbSet<Coupon> Coupons { get; set; }
public CouponsDbContext(DbContextOptions<CouponsDbContext> options)
: base(options)
@ -24,4 +28,4 @@ namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
builder.ConfigureEShopPluginsCoupons();
}
}
}
}

28
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/CouponsDbContextModelCreatingExtensions.cs

@ -1,6 +1,9 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using System;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
{
@ -38,6 +41,27 @@ namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
b.HasIndex(q => q.CreationTime);
});
*/
builder.Entity<CouponTemplate>(b =>
{
b.ToTable(options.TablePrefix + "CouponTemplates", options.Schema);
b.ConfigureByConvention();
/* Configure more properties here */
b.Property(x => x.ConditionAmount).HasColumnType("decimal(20,8)");
b.Property(x => x.DiscountAmount).HasColumnType("decimal(20,8)");
});
builder.Entity<Coupon>(b =>
{
b.ToTable(options.TablePrefix + "Coupons", options.Schema);
b.ConfigureByConvention();
/* Configure more properties here */
b.Property(x => x.DiscountedAmount).HasColumnType("decimal(20,8)");
});
}
}
}
}

8
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/EShopPluginsCouponsEntityFrameworkCoreModule.cs

@ -1,4 +1,6 @@
using Microsoft.Extensions.DependencyInjection;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
@ -17,7 +19,9 @@ namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
/* Add custom repositories here. Example:
* options.AddRepository<Question, EfCoreQuestionRepository>();
*/
options.AddRepository<CouponTemplate, CouponTemplateRepository>();
options.AddRepository<Coupon, CouponRepository>();
});
}
}
}
}

9
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore/EasyAbp/EShop/Plugins/Coupons/EntityFrameworkCore/ICouponsDbContext.cs

@ -1,5 +1,8 @@
using Volo.Abp.Data;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
{
@ -9,5 +12,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore
/* Add DbSet for each Aggregate Root here. Example:
* DbSet<Question> Questions { get; }
*/
DbSet<CouponTemplate> CouponTemplates { get; set; }
DbSet<Coupon> Coupons { get; set; }
}
}
}

55
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.HttpApi/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateController.cs

@ -0,0 +1,55 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using Volo.Abp.Application.Dtos;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
[RemoteService(Name = "EasyAbpEShopPluginsCoupons")]
[Route("/api/eShop/plugins/coupons/couponTemplate")]
public class CouponTemplateController : CouponsController, ICouponTemplateAppService
{
private readonly ICouponTemplateAppService _service;
public CouponTemplateController(ICouponTemplateAppService service)
{
_service = service;
}
[HttpPost]
public virtual Task<CouponTemplateDto> CreateAsync(CreateUpdateCouponTemplateDto input)
{
return _service.CreateAsync(input);
}
[HttpPut]
[Route("{id}")]
public virtual Task<CouponTemplateDto> UpdateAsync(Guid id, CreateUpdateCouponTemplateDto input)
{
return _service.UpdateAsync(id, input);
}
[HttpDelete]
[Route("{id}")]
public virtual Task DeleteAsync(Guid id)
{
return _service.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
public virtual Task<CouponTemplateDto> GetAsync(Guid id)
{
return _service.GetAsync(id);
}
[HttpGet]
public virtual Task<PagedResultDto<CouponTemplateDto>> GetListAsync(PagedAndSortedResultRequestDto input)
{
return _service.GetListAsync(input);
}
}
}

55
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.HttpApi/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponController.cs

@ -0,0 +1,55 @@
using System;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using Volo.Abp.Application.Dtos;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
[RemoteService(Name = "EasyAbpEShopPluginsCoupons")]
[Route("/api/eShop/plugins/coupons/coupon")]
public class CouponController : CouponsController, ICouponAppService
{
private readonly ICouponAppService _service;
public CouponController(ICouponAppService service)
{
_service = service;
}
[HttpPost]
public virtual Task<CouponDto> CreateAsync(CreateUpdateCouponDto input)
{
return _service.CreateAsync(input);
}
[HttpPut]
[Route("{id}")]
public virtual Task<CouponDto> UpdateAsync(Guid id, CreateUpdateCouponDto input)
{
return _service.UpdateAsync(id, input);
}
[HttpDelete]
[Route("{id}")]
public virtual Task DeleteAsync(Guid id)
{
return _service.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
public virtual Task<CouponDto> GetAsync(Guid id)
{
return _service.GetAsync(id);
}
[HttpGet]
public virtual Task<PagedResultDto<CouponDto>> GetListAsync(PagedAndSortedResultRequestDto input)
{
return _service.GetListAsync(input);
}
}
}

14
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/CouponsWebAutoMapperProfile.cs

@ -1,4 +1,9 @@
using AutoMapper;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.ViewModels;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.ViewModels;
using AutoMapper;
using Volo.Abp.AutoMapper;
namespace EasyAbp.EShop.Plugins.Coupons.Web
{
@ -9,6 +14,11 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web
/* You can configure your AutoMapper mapping configuration here.
* Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */
CreateMap<CouponTemplateDto, CreateEditCouponTemplateViewModel>();
CreateMap<CreateEditCouponTemplateViewModel, CreateUpdateCouponTemplateDto>()
.Ignore(x => x.Scopes);
CreateMap<CouponDto, CreateEditCouponViewModel>();
CreateMap<CreateEditCouponViewModel, CreateUpdateCouponDto>();
}
}
}
}

6
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/EasyAbp.EShop.Plugins.Coupons.Web.csproj

@ -42,4 +42,10 @@
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="Pages\Coupons\CouponTemplates\CouponTemplate\CreateModal.cshtml" />
<_ContentIncludedByDefault Remove="Pages\Coupons\CouponTemplates\CouponTemplate\EditModal.cshtml" />
<_ContentIncludedByDefault Remove="Pages\Coupons\CouponTemplates\CouponTemplate\Index.cshtml" />
</ItemGroup>
</Project>

19
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenuContributor.cs

@ -1,4 +1,6 @@
using System.Collections.Generic;
using System.Collections.Generic;
using EasyAbp.EShop.Plugins.Coupons.Localization;
using EasyAbp.EShop.Plugins.Coupons.Permissions;
using System.Threading.Tasks;
using EasyAbp.EShop.Plugins.Coupons.Localization;
using Volo.Abp.UI.Navigation;
@ -21,6 +23,19 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web.Menus
var couponManagementMenuItem = new ApplicationMenuItem(CouponsMenus.Prefix, l["Menu:CouponManagement"]);
if (await context.IsGrantedAsync(CouponsPermissions.CouponTemplate.Default))
{
couponManagementMenuItem.AddItem(
new ApplicationMenuItem(CouponsMenus.CouponTemplate, l["Menu:CouponTemplate"], "/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate")
);
}
if (await context.IsGrantedAsync(CouponsPermissions.Coupon.Default))
{
couponManagementMenuItem.AddItem(
new ApplicationMenuItem(CouponsMenus.Coupon, l["Menu:Coupon"], "/EShop/Plugins/Coupons/Coupons/Coupon")
);
}
if (!couponManagementMenuItem.Items.IsNullOrEmpty())
{
var eShopMenuItem = context.Menu.Items.GetOrAdd(i => i.Name == CouponsMenus.ModuleGroupPrefix,
@ -30,4 +45,4 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web.Menus
}
}
}
}
}

6
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Menus/CouponsMenus.cs

@ -1,4 +1,4 @@
namespace EasyAbp.EShop.Plugins.Coupons.Web.Menus
namespace EasyAbp.EShop.Plugins.Coupons.Web.Menus
{
public class CouponsMenus
{
@ -8,5 +8,7 @@
//Add your menu items here...
//public const string Home = Prefix + ".MyNewMenuItem";
public const string CouponTemplate = Prefix + ".CouponTemplate";
public const string Coupon = Prefix + ".Coupon";
}
}
}

18
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/CreateModal.cshtml

@ -0,0 +1,18 @@
@page
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal;
@using EasyAbp.EShop.Plugins.Coupons.Localization
@inject IHtmlLocalizer<CouponsResource> L
@model EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.CreateModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" data-ajaxForm="true" asp-page="CreateModal">
<abp-modal>
<abp-modal-header title="@L["CreateCouponTemplate"].Value"></abp-modal-header>
<abp-modal-body>
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

28
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/CreateModal.cshtml.cs

@ -0,0 +1,28 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.ViewModels;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate
{
public class CreateModalModel : CouponsPageModel
{
[BindProperty]
public CreateEditCouponTemplateViewModel ViewModel { get; set; }
private readonly ICouponTemplateAppService _service;
public CreateModalModel(ICouponTemplateAppService service)
{
_service = service;
}
public virtual async Task<IActionResult> OnPostAsync()
{
var dto = ObjectMapper.Map<CreateEditCouponTemplateViewModel, CreateUpdateCouponTemplateDto>(ViewModel);
await _service.CreateAsync(dto);
return NoContent();
}
}
}

19
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml

@ -0,0 +1,19 @@
@page
@using EasyAbp.EShop.Plugins.Coupons.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal;
@inject IHtmlLocalizer<CouponsResource> L
@model EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.EditModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" data-ajaxForm="true" asp-page="EditModal">
<abp-modal>
<abp-modal-header title="@L["EditCouponTemplate"].Value"></abp-modal-header>
<abp-modal-body>
<abp-input asp-for="Id" />
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

39
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml.cs

@ -0,0 +1,39 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.ViewModels;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate
{
public class EditModalModel : CouponsPageModel
{
[HiddenInput]
[BindProperty(SupportsGet = true)]
public Guid Id { get; set; }
[BindProperty]
public CreateEditCouponTemplateViewModel ViewModel { get; set; }
private readonly ICouponTemplateAppService _service;
public EditModalModel(ICouponTemplateAppService service)
{
_service = service;
}
public virtual async Task OnGetAsync()
{
var dto = await _service.GetAsync(Id);
ViewModel = ObjectMapper.Map<CouponTemplateDto, CreateEditCouponTemplateViewModel>(dto);
}
public virtual async Task<IActionResult> OnPostAsync()
{
var dto = ObjectMapper.Map<CreateEditCouponTemplateViewModel, CreateUpdateCouponTemplateDto>(ViewModel);
await _service.UpdateAsync(Id, dto);
return NoContent();
}
}
}

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

@ -0,0 +1,67 @@
@page
@using EasyAbp.EShop.Plugins.Coupons.Permissions
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Layout
@using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate
@using EasyAbp.EShop.Plugins.Coupons.Localization
@using EasyAbp.EShop.Plugins.Coupons.Web.Menus
@model IndexModel
@inject IPageLayout PageLayout
@inject IHtmlLocalizer<CouponsResource> L
@inject IAuthorizationService Authorization
@{
PageLayout.Content.Title = L["CouponTemplate"].Value;
PageLayout.Content.BreadCrumb.Add(L["Menu:CouponTemplate"].Value);
PageLayout.Content.MenuItemName = CouponsMenus.CouponTemplate;
}
@section scripts
{
<abp-script src="/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js" />
}
@section styles
{
<abp-style src="/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.css"/>
}
<abp-card>
<abp-card-header>
<abp-row>
<abp-column size-md="_6">
<abp-card-title>@L["CouponTemplate"]</abp-card-title>
</abp-column>
<abp-column size-md="_6" class="text-right">
@if (await Authorization.IsGrantedAsync(CouponsPermissions.CouponTemplate.Create))
{
<abp-button id="NewCouponTemplateButton"
text="@L["CreateCouponTemplate"].Value"
icon="plus"
button-type="Primary" />
}
</abp-column>
</abp-row>
</abp-card-header>
<abp-card-body>
<abp-table striped-rows="true" id="CouponTemplateTable" class="nowrap">
<thead>
<tr>
<th>@L["Actions"]</th>
<th>@L["CouponTemplateStoreId"]</th>
<th>@L["CouponTemplateCouponType"]</th>
<th>@L["CouponTemplateUniqueName"]</th>
<th>@L["CouponTemplateDisplayName"]</th>
<th>@L["CouponTemplateDescription"]</th>
<th>@L["CouponTemplateUsableDuration"]</th>
<th>@L["CouponTemplateUsableBeginTime"]</th>
<th>@L["CouponTemplateUsableEndTime"]</th>
<th>@L["CouponTemplateConditionAmount"]</th>
<th>@L["CouponTemplateDiscountAmount"]</th>
<th>@L["CouponTemplateIsCrossProductAllowed"]</th>
<th>@L["CouponTemplateIsUnscoped"]</th>
<th>@L["CouponTemplateScopes"]</th>
</tr>
</thead>
</abp-table>
</abp-card-body>
</abp-card>

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

@ -0,0 +1,12 @@
using System.Threading.Tasks;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate
{
public class IndexModel : CouponsPageModel
{
public virtual async Task OnGetAsync()
{
await Task.CompletedTask;
}
}
}

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

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.ViewModels
{
public class CreateEditCouponTemplateViewModel
{
[Display(Name = "CouponTemplateStoreId")]
public Guid? StoreId { get; set; }
[Display(Name = "CouponTemplateCouponType")]
public CouponType CouponType { get; set; }
[Display(Name = "CouponTemplateUniqueName")]
public string UniqueName { get; set; }
[Display(Name = "CouponTemplateDisplayName")]
public string DisplayName { get; set; }
[Display(Name = "CouponTemplateDescription")]
public string Description { get; set; }
[Display(Name = "CouponTemplateUsableDuration")]
public TimeSpan? UsableDuration { get; set; }
[Display(Name = "CouponTemplateUsableBeginTime")]
public DateTime? UsableBeginTime { get; set; }
[Display(Name = "CouponTemplateUsableEndTime")]
public DateTime? UsableEndTime { get; set; }
[Display(Name = "CouponTemplateConditionAmount")]
public decimal ConditionAmount { get; set; }
[Display(Name = "CouponTemplateDiscountAmount")]
public decimal DiscountAmount { get; set; }
[Display(Name = "CouponTemplateIsCrossProductAllowed")]
public bool IsCrossProductAllowed { get; set; }
[Display(Name = "CouponTemplateIsUnscoped")]
public bool IsUnscoped { get; set; }
}
}

0
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.css

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

@ -0,0 +1,74 @@
$(function () {
var l = abp.localization.getResource('EasyAbpEShopPluginsCoupons');
var service = easyAbp.eShop.plugins.coupons.couponTemplates.couponTemplate;
var createModal = new abp.ModalManager(abp.appPath + 'EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/CreateModal');
var editModal = new abp.ModalManager(abp.appPath + 'EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal');
var dataTable = $('#CouponTemplateTable').DataTable(abp.libs.datatables.normalizeConfiguration({
processing: true,
serverSide: true,
paging: true,
searching: false,
autoWidth: false,
scrollCollapse: true,
order: [[0, "asc"]],
ajax: abp.libs.datatables.createAjax(service.getList),
columnDefs: [
{
rowAction: {
items:
[
{
text: l('Edit'),
visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.CouponTemplate.Update'),
action: function (data) {
editModal.open({ id: data.record.id });
}
},
{
text: l('Delete'),
visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.CouponTemplate.Delete'),
confirmMessage: function (data) {
return l('CouponTemplateDeletionConfirmationMessage', data.record.id);
},
action: function (data) {
service.delete(data.record.id)
.then(function () {
abp.notify.info(l('SuccessfullyDeleted'));
dataTable.ajax.reload();
});
}
}
]
}
},
{ data: "storeId" },
{ data: "couponType" },
{ data: "uniqueName" },
{ data: "displayName" },
{ data: "description" },
{ data: "usableDuration" },
{ data: "usableBeginTime" },
{ data: "usableEndTime" },
{ data: "conditionAmount" },
{ data: "discountAmount" },
{ data: "isCrossProductAllowed" },
{ data: "isUnscoped" },
]
}));
createModal.onResult(function () {
dataTable.ajax.reload();
});
editModal.onResult(function () {
dataTable.ajax.reload();
});
$('#NewCouponTemplateButton').click(function (e) {
e.preventDefault();
createModal.open();
});
});

18
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/CreateModal.cshtml

@ -0,0 +1,18 @@
@page
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal;
@using EasyAbp.EShop.Plugins.Coupons.Localization
@inject IHtmlLocalizer<CouponsResource> L
@model EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.CreateModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" data-ajaxForm="true" asp-page="CreateModal">
<abp-modal>
<abp-modal-header title="@L["CreateCoupon"].Value"></abp-modal-header>
<abp-modal-body>
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

28
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/CreateModal.cshtml.cs

@ -0,0 +1,28 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.ViewModels;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon
{
public class CreateModalModel : CouponsPageModel
{
[BindProperty]
public CreateEditCouponViewModel ViewModel { get; set; }
private readonly ICouponAppService _service;
public CreateModalModel(ICouponAppService service)
{
_service = service;
}
public virtual async Task<IActionResult> OnPostAsync()
{
var dto = ObjectMapper.Map<CreateEditCouponViewModel, CreateUpdateCouponDto>(ViewModel);
await _service.CreateAsync(dto);
return NoContent();
}
}
}

19
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/EditModal.cshtml

@ -0,0 +1,19 @@
@page
@using EasyAbp.EShop.Plugins.Coupons.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal;
@inject IHtmlLocalizer<CouponsResource> L
@model EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.EditModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" data-ajaxForm="true" asp-page="EditModal">
<abp-modal>
<abp-modal-header title="@L["EditCoupon"].Value"></abp-modal-header>
<abp-modal-body>
<abp-input asp-for="Id" />
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

39
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/EditModal.cshtml.cs

@ -0,0 +1,39 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos;
using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.ViewModels;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon
{
public class EditModalModel : CouponsPageModel
{
[HiddenInput]
[BindProperty(SupportsGet = true)]
public Guid Id { get; set; }
[BindProperty]
public CreateEditCouponViewModel ViewModel { get; set; }
private readonly ICouponAppService _service;
public EditModalModel(ICouponAppService service)
{
_service = service;
}
public virtual async Task OnGetAsync()
{
var dto = await _service.GetAsync(Id);
ViewModel = ObjectMapper.Map<CouponDto, CreateEditCouponViewModel>(dto);
}
public virtual async Task<IActionResult> OnPostAsync()
{
var dto = ObjectMapper.Map<CreateEditCouponViewModel, CreateUpdateCouponDto>(ViewModel);
await _service.UpdateAsync(Id, dto);
return NoContent();
}
}
}

61
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/Index.cshtml

@ -0,0 +1,61 @@
@page
@using EasyAbp.EShop.Plugins.Coupons.Permissions
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Layout
@using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon
@using EasyAbp.EShop.Plugins.Coupons.Localization
@using EasyAbp.EShop.Plugins.Coupons.Web.Menus
@model IndexModel
@inject IPageLayout PageLayout
@inject IHtmlLocalizer<CouponsResource> L
@inject IAuthorizationService Authorization
@{
PageLayout.Content.Title = L["Coupon"].Value;
PageLayout.Content.BreadCrumb.Add(L["Menu:Coupon"].Value);
PageLayout.Content.MenuItemName = CouponsMenus.Coupon;
}
@section scripts
{
<abp-script src="/Pages/EShop/Plugins/Coupons/Coupons/Coupon/index.js" />
}
@section styles
{
<abp-style src="/Pages/EShop/Plugins/Coupons/Coupons/Coupon/index.css"/>
}
<abp-card>
<abp-card-header>
<abp-row>
<abp-column size-md="_6">
<abp-card-title>@L["Coupon"]</abp-card-title>
</abp-column>
<abp-column size-md="_6" class="text-right">
@if (await Authorization.IsGrantedAsync(CouponsPermissions.Coupon.Create))
{
<abp-button id="NewCouponButton"
text="@L["CreateCoupon"].Value"
icon="plus"
button-type="Primary" />
}
</abp-column>
</abp-row>
</abp-card-header>
<abp-card-body>
<abp-table striped-rows="true" id="CouponTable" class="nowrap">
<thead>
<tr>
<th>@L["Actions"]</th>
<th>@L["CouponCouponTemplateId"]</th>
<th>@L["CouponUserId"]</th>
<th>@L["CouponOrderId"]</th>
<th>@L["CouponUsableBeginTime"]</th>
<th>@L["CouponUsableEndTime"]</th>
<th>@L["CouponUsedTime"]</th>
<th>@L["CouponDiscountedAmount"]</th>
</tr>
</thead>
</abp-table>
</abp-card-body>
</abp-card>

12
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/Index.cshtml.cs

@ -0,0 +1,12 @@
using System.Threading.Tasks;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon
{
public class IndexModel : CouponsPageModel
{
public virtual async Task OnGetAsync()
{
await Task.CompletedTask;
}
}
}

15
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/ViewModels/CreateEditCouponViewModel.cs

@ -0,0 +1,15 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.ViewModels
{
public class CreateEditCouponViewModel
{
[Display(Name = "CouponCouponTemplateId")]
public Guid CouponTemplateId { get; set; }
[Display(Name = "CouponUserId")]
public Guid UserId { get; set; }
}
}

0
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/index.css

69
plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/Coupons/Coupon/index.js

@ -0,0 +1,69 @@
$(function () {
var l = abp.localization.getResource('EasyAbpEShopPlugins');
var service = easyAbp.eShop.plugins.coupons.coupons.coupon;
var createModal = new abp.ModalManager(abp.appPath + 'EShop/Plugins/Coupons/Coupons/Coupon/CreateModal');
var editModal = new abp.ModalManager(abp.appPath + 'EShop/Plugins/Coupons/Coupons/Coupon/EditModal');
var dataTable = $('#CouponTable').DataTable(abp.libs.datatables.normalizeConfiguration({
processing: true,
serverSide: true,
paging: true,
searching: false,
autoWidth: false,
scrollCollapse: true,
order: [[0, "asc"]],
ajax: abp.libs.datatables.createAjax(service.getList),
columnDefs: [
{
rowAction: {
items:
[
{
text: l('Edit'),
visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.Coupon.Update'),
action: function (data) {
editModal.open({ id: data.record.id });
}
},
{
text: l('Delete'),
visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.Coupon.Delete'),
confirmMessage: function (data) {
return l('CouponDeletionConfirmationMessage', data.record.id);
},
action: function (data) {
service.delete(data.record.id)
.then(function () {
abp.notify.info(l('SuccessfullyDeleted'));
dataTable.ajax.reload();
});
}
}
]
}
},
{ data: "couponTemplateId" },
{ data: "userId" },
{ data: "orderId" },
{ data: "usableBeginTime" },
{ data: "usableEndTime" },
{ data: "usedTime" },
{ data: "discountedAmount" },
]
}));
createModal.onResult(function () {
dataTable.ajax.reload();
});
editModal.onResult(function () {
dataTable.ajax.reload();
});
$('#NewCouponButton').click(function (e) {
e.preventDefault();
createModal.open();
});
});

28
plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Application.Tests/CouponTemplates/CouponTemplateAppServiceTests.cs

@ -0,0 +1,28 @@
using Shouldly;
using System.Threading.Tasks;
using Xunit;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public class CouponTemplateAppServiceTests : CouponsApplicationTestBase
{
private readonly ICouponTemplateAppService _couponTemplateAppService;
public CouponTemplateAppServiceTests()
{
_couponTemplateAppService = GetRequiredService<ICouponTemplateAppService>();
}
/*
[Fact]
public async Task Test1()
{
// Arrange
// Act
// Assert
}
*/
}
}

28
plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Application.Tests/Coupons/CouponAppServiceTests.cs

@ -0,0 +1,28 @@
using Shouldly;
using System.Threading.Tasks;
using Xunit;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public class CouponAppServiceTests : CouponsApplicationTestBase
{
private readonly ICouponAppService _couponAppService;
public CouponAppServiceTests()
{
_couponAppService = GetRequiredService<ICouponAppService>();
}
/*
[Fact]
public async Task Test1()
{
// Arrange
// Act
// Assert
}
*/
}
}

25
plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Domain.Tests/CouponTemplates/CouponTemplateDomainTests.cs

@ -0,0 +1,25 @@
using System.Threading.Tasks;
using Shouldly;
using Xunit;
namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates
{
public class CouponTemplateDomainTests : CouponsDomainTestBase
{
public CouponTemplateDomainTests()
{
}
/*
[Fact]
public async Task Test1()
{
// Arrange
// Assert
// Assert
}
*/
}
}

25
plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.Domain.Tests/Coupons/CouponDomainTests.cs

@ -0,0 +1,25 @@
using System.Threading.Tasks;
using Shouldly;
using Xunit;
namespace EasyAbp.EShop.Plugins.Coupons.Coupons
{
public class CouponDomainTests : CouponsDomainTestBase
{
public CouponDomainTests()
{
}
/*
[Fact]
public async Task Test1()
{
// Arrange
// Assert
// Assert
}
*/
}
}

33
plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore.Tests/EntityFrameworkCore/CouponTemplates/CouponTemplateRepositoryTests.cs

@ -0,0 +1,33 @@
using System;
using System.Threading.Tasks;
using EasyAbp.EShop.Plugins.Coupons.CouponTemplates;
using Volo.Abp.Domain.Repositories;
using Xunit;
namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore.CouponTemplates
{
public class CouponTemplateRepositoryTests : CouponsEntityFrameworkCoreTestBase
{
private readonly ICouponTemplateRepository _couponTemplateRepository;
public CouponTemplateRepositoryTests()
{
_couponTemplateRepository = GetRequiredService<ICouponTemplateRepository>();
}
/*
[Fact]
public async Task Test1()
{
await WithUnitOfWorkAsync(async () =>
{
// Arrange
// Act
//Assert
});
}
*/
}
}

33
plugins/Coupons/test/EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore.Tests/EntityFrameworkCore/Coupons/CouponRepositoryTests.cs

@ -0,0 +1,33 @@
using System;
using System.Threading.Tasks;
using EasyAbp.EShop.Plugins.Coupons.Coupons;
using Volo.Abp.Domain.Repositories;
using Xunit;
namespace EasyAbp.EShop.Plugins.Coupons.EntityFrameworkCore.Coupons
{
public class CouponRepositoryTests : CouponsEntityFrameworkCoreTestBase
{
private readonly ICouponRepository _couponRepository;
public CouponRepositoryTests()
{
_couponRepository = GetRequiredService<ICouponRepository>();
}
/*
[Fact]
public async Task Test1()
{
await WithUnitOfWorkAsync(async () =>
{
// Arrange
// Act
//Assert
});
}
*/
}
}

4550
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923111614_AddedCouponsModule.Designer.cs

File diff suppressed because it is too large

117
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923111614_AddedCouponsModule.cs

@ -0,0 +1,117 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace EShopSample.Migrations
{
public partial class AddedCouponsModule : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "EasyAbpEShopPluginsCouponsCoupons",
columns: table => new
{
Id = table.Column<Guid>(nullable: false),
ExtraProperties = table.Column<string>(nullable: true),
ConcurrencyStamp = table.Column<string>(maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(nullable: false),
CreatorId = table.Column<Guid>(nullable: true),
LastModificationTime = table.Column<DateTime>(nullable: true),
LastModifierId = table.Column<Guid>(nullable: true),
IsDeleted = table.Column<bool>(nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(nullable: true),
DeletionTime = table.Column<DateTime>(nullable: true),
TenantId = table.Column<Guid>(nullable: true),
CouponTemplateId = table.Column<Guid>(nullable: false),
UserId = table.Column<Guid>(nullable: false),
OrderId = table.Column<Guid>(nullable: true),
UsableBeginTime = table.Column<DateTime>(nullable: true),
UsableEndTime = table.Column<DateTime>(nullable: true),
UsedTime = table.Column<DateTime>(nullable: true),
DiscountedAmount = table.Column<decimal>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_EasyAbpEShopPluginsCouponsCoupons", x => x.Id);
});
migrationBuilder.CreateTable(
name: "EasyAbpEShopPluginsCouponsCouponTemplates",
columns: table => new
{
Id = table.Column<Guid>(nullable: false),
ExtraProperties = table.Column<string>(nullable: true),
ConcurrencyStamp = table.Column<string>(maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(nullable: false),
CreatorId = table.Column<Guid>(nullable: true),
LastModificationTime = table.Column<DateTime>(nullable: true),
LastModifierId = table.Column<Guid>(nullable: true),
IsDeleted = table.Column<bool>(nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(nullable: true),
DeletionTime = table.Column<DateTime>(nullable: true),
TenantId = table.Column<Guid>(nullable: true),
StoreId = table.Column<Guid>(nullable: true),
CouponType = table.Column<int>(nullable: false),
UniqueName = table.Column<string>(nullable: true),
DisplayName = table.Column<string>(nullable: true),
Description = table.Column<string>(nullable: true),
UsableDuration = table.Column<TimeSpan>(nullable: true),
UsableBeginTime = table.Column<DateTime>(nullable: true),
UsableEndTime = table.Column<DateTime>(nullable: true),
ConditionAmount = table.Column<decimal>(nullable: false),
DiscountAmount = table.Column<decimal>(nullable: false),
IsCrossProductAllowed = table.Column<bool>(nullable: false),
IsUnscoped = table.Column<bool>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_EasyAbpEShopPluginsCouponsCouponTemplates", x => x.Id);
});
migrationBuilder.CreateTable(
name: "CouponTemplateScope",
columns: table => new
{
Id = table.Column<Guid>(nullable: false),
CreationTime = table.Column<DateTime>(nullable: false),
CreatorId = table.Column<Guid>(nullable: true),
LastModificationTime = table.Column<DateTime>(nullable: true),
LastModifierId = table.Column<Guid>(nullable: true),
IsDeleted = table.Column<bool>(nullable: false),
DeleterId = table.Column<Guid>(nullable: true),
DeletionTime = table.Column<DateTime>(nullable: true),
StoreId = table.Column<Guid>(nullable: false),
ProductId = table.Column<Guid>(nullable: true),
ProductSkuId = table.Column<Guid>(nullable: true),
CouponTemplateId = table.Column<Guid>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_CouponTemplateScope", x => x.Id);
table.ForeignKey(
name: "FK_CouponTemplateScope_EasyAbpEShopPluginsCouponsCouponTemplates_CouponTemplateId",
column: x => x.CouponTemplateId,
principalTable: "EasyAbpEShopPluginsCouponsCouponTemplates",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex(
name: "IX_CouponTemplateScope_CouponTemplateId",
table: "CouponTemplateScope",
column: "CouponTemplateId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "CouponTemplateScope");
migrationBuilder.DropTable(
name: "EasyAbpEShopPluginsCouponsCoupons");
migrationBuilder.DropTable(
name: "EasyAbpEShopPluginsCouponsCouponTemplates");
}
}
}

4550
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923112020_ConfiguredColumnTypeForCouponEntities.Designer.cs

File diff suppressed because it is too large

63
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200923112020_ConfiguredColumnTypeForCouponEntities.cs

@ -0,0 +1,63 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace EShopSample.Migrations
{
public partial class ConfiguredColumnTypeForCouponEntities : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<decimal>(
name: "DiscountAmount",
table: "EasyAbpEShopPluginsCouponsCouponTemplates",
type: "decimal(20,8)",
nullable: false,
oldClrType: typeof(decimal),
oldType: "decimal(18,2)");
migrationBuilder.AlterColumn<decimal>(
name: "ConditionAmount",
table: "EasyAbpEShopPluginsCouponsCouponTemplates",
type: "decimal(20,8)",
nullable: false,
oldClrType: typeof(decimal),
oldType: "decimal(18,2)");
migrationBuilder.AlterColumn<decimal>(
name: "DiscountedAmount",
table: "EasyAbpEShopPluginsCouponsCoupons",
type: "decimal(20,8)",
nullable: true,
oldClrType: typeof(decimal),
oldType: "decimal(18,2)",
oldNullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<decimal>(
name: "DiscountAmount",
table: "EasyAbpEShopPluginsCouponsCouponTemplates",
type: "decimal(18,2)",
nullable: false,
oldClrType: typeof(decimal),
oldType: "decimal(20,8)");
migrationBuilder.AlterColumn<decimal>(
name: "ConditionAmount",
table: "EasyAbpEShopPluginsCouponsCouponTemplates",
type: "decimal(18,2)",
nullable: false,
oldClrType: typeof(decimal),
oldType: "decimal(20,8)");
migrationBuilder.AlterColumn<decimal>(
name: "DiscountedAmount",
table: "EasyAbpEShopPluginsCouponsCoupons",
type: "decimal(18,2)",
nullable: true,
oldClrType: typeof(decimal),
oldType: "decimal(20,8)",
oldNullable: true);
}
}
}

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

@ -736,6 +736,219 @@ namespace EShopSample.Migrations
b.ToTable("EasyAbpEShopPluginsBasketsProductUpdates");
});
modelBuilder.Entity("EasyAbp.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp")
.HasColumnType("nvarchar(40)")
.HasMaxLength(40);
b.Property<decimal>("ConditionAmount")
.HasColumnType("decimal(20,8)");
b.Property<int>("CouponType")
.HasColumnType("int");
b.Property<DateTime>("CreationTime")
.HasColumnName("CreationTime")
.HasColumnType("datetime2");
b.Property<Guid?>("CreatorId")
.HasColumnName("CreatorId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("DeleterId")
.HasColumnName("DeleterId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime?>("DeletionTime")
.HasColumnName("DeletionTime")
.HasColumnType("datetime2");
b.Property<string>("Description")
.HasColumnType("nvarchar(max)");
b.Property<decimal>("DiscountAmount")
.HasColumnType("decimal(20,8)");
b.Property<string>("DisplayName")
.HasColumnType("nvarchar(max)");
b.Property<string>("ExtraProperties")
.HasColumnName("ExtraProperties")
.HasColumnType("nvarchar(max)");
b.Property<bool>("IsCrossProductAllowed")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnName("IsDeleted")
.HasColumnType("bit")
.HasDefaultValue(false);
b.Property<bool>("IsUnscoped")
.HasColumnType("bit");
b.Property<DateTime?>("LastModificationTime")
.HasColumnName("LastModificationTime")
.HasColumnType("datetime2");
b.Property<Guid?>("LastModifierId")
.HasColumnName("LastModifierId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("StoreId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("TenantId")
.HasColumnName("TenantId")
.HasColumnType("uniqueidentifier");
b.Property<string>("UniqueName")
.HasColumnType("nvarchar(max)");
b.Property<DateTime?>("UsableBeginTime")
.HasColumnType("datetime2");
b.Property<TimeSpan?>("UsableDuration")
.HasColumnType("time");
b.Property<DateTime?>("UsableEndTime")
.HasColumnType("datetime2");
b.HasKey("Id");
b.ToTable("EasyAbpEShopPluginsCouponsCouponTemplates");
});
modelBuilder.Entity("EasyAbp.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("CouponTemplateId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2");
b.Property<bool>("IsDeleted")
.HasColumnType("bit");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("ProductId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("ProductSkuId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("StoreId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.HasIndex("CouponTemplateId");
b.ToTable("CouponTemplateScope");
});
modelBuilder.Entity("EasyAbp.EShop.Plugins.Coupons.Coupons.Coupon", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp")
.HasColumnType("nvarchar(40)")
.HasMaxLength(40);
b.Property<Guid>("CouponTemplateId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnName("CreationTime")
.HasColumnType("datetime2");
b.Property<Guid?>("CreatorId")
.HasColumnName("CreatorId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("DeleterId")
.HasColumnName("DeleterId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime?>("DeletionTime")
.HasColumnName("DeletionTime")
.HasColumnType("datetime2");
b.Property<decimal?>("DiscountedAmount")
.HasColumnType("decimal(20,8)");
b.Property<string>("ExtraProperties")
.HasColumnName("ExtraProperties")
.HasColumnType("nvarchar(max)");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnName("IsDeleted")
.HasColumnType("bit")
.HasDefaultValue(false);
b.Property<DateTime?>("LastModificationTime")
.HasColumnName("LastModificationTime")
.HasColumnType("datetime2");
b.Property<Guid?>("LastModifierId")
.HasColumnName("LastModifierId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("OrderId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("TenantId")
.HasColumnName("TenantId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime?>("UsableBeginTime")
.HasColumnType("datetime2");
b.Property<DateTime?>("UsableEndTime")
.HasColumnType("datetime2");
b.Property<DateTime?>("UsedTime")
.HasColumnType("datetime2");
b.Property<Guid>("UserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("EasyAbpEShopPluginsCouponsCoupons");
});
modelBuilder.Entity("EasyAbp.EShop.Products.Categories.Category", b =>
{
b.Property<Guid>("Id")
@ -4031,6 +4244,13 @@ namespace EShopSample.Migrations
.HasForeignKey("RefundItemId");
});
modelBuilder.Entity("EasyAbp.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope", b =>
{
b.HasOne("EasyAbp.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate", null)
.WithMany("Scopes")
.HasForeignKey("CouponTemplateId");
});
modelBuilder.Entity("EasyAbp.EShop.Products.Categories.Category", b =>
{
b.HasOne("EasyAbp.EShop.Products.Categories.Category", "Parent")

Loading…
Cancel
Save