From ed32b988673b3cf6a4ad50f66a45a75cf31ac291 Mon Sep 17 00:00:00 2001
From: Seany <17074267@qq.com>
Date: Tue, 16 Dec 2025 11:26:55 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE=E5=BA=93?=
=?UTF-8?q?=E7=BB=93=E6=9E=84=EF=BC=8C=E5=AE=9E=E7=8E=B0=E6=B6=88=E6=81=AF?=
=?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Models/MaterialSearch.cs | 20 --
.../Models/MessageTemplateModel.cs | 15 +
.../Models/MessageTemplateSearch.cs | 2 +
.../Atomx.Admin.Client/Pages/Home.razor | 3 +
.../Pages/Settings/CountryEdit.razor | 5 +
.../Pages/Settings/CountryList.razor | 5 +
.../Pages/Settings/CurrencyList.razor | 22 ++
.../Pages/Settings/MessageTemplateList.razor | 326 ++++++++++--------
.../Pages/Settings/Settings.razor | 19 +-
.../Pages/SiteApps/AppVersionList.razor | 23 +-
.../Pages/SiteApps/SiteAppList.razor | 17 +-
.../Pages/Storages/UploadList.razor | 190 +++++-----
.../Pages/Systems/CurrencyList.razor | 9 -
.../Pages/Systems/Info.razor | 13 +-
.../Pages/Systems/LanguageList.razor | 205 +++++------
.../Pages/Systems/LocaleResourceDetail.razor | 165 ++++-----
.../Pages/Systems/LocaleResourceList.razor | 206 +++++------
.../Pages/Systems/MenuList.razor | 266 +++++++-------
.../Pages/Systems/Tools.razor | 13 +-
.../Validators/MaterialBatchValidator.cs | 13 -
.../Validators/MaterialRecordValidator.cs | 13 -
.../Validators/MaterialValidator.cs | 13 -
.../MessageTemplateModelValidator.cs | 3 +-
.../Controllers/CurrencyController.cs | 13 +-
.../Controllers/MessageTemplateController.cs | 108 +++---
.../Atomx.Admin/wwwroot/data/country.json | 3 +
Atomx.Common/Entities/Area.cs | 1 +
Atomx.Common/Entities/Category.cs | 1 +
.../{PaymentChannel.cs => Channel.cs} | 27 +-
.../CorporationManufacturerRelation.cs | 35 --
.../Entities/CorporationUserRelation.cs | 43 ---
Atomx.Common/Entities/Currency.cs | 6 +
.../Entities/CurrencyChannelRelation.cs | 1 +
Atomx.Common/Entities/Material.cs | 45 ---
Atomx.Common/Entities/MaterialBatch.cs | 66 ----
Atomx.Common/Entities/MaterialRecord.cs | 81 -----
Atomx.Common/Entities/MessageTemplate.cs | 11 +
Atomx.Common/Entities/PriceTrend.cs | 72 ----
Atomx.Common/Entities/Setting.cs | 14 +-
Atomx.Common/Entities/SiteApp.cs | 1 +
Atomx.Common/Entities/WarehouseStockRecord.cs | 41 ---
Atomx.Data/DataContext.cs | 10 +-
...gner.cs => 20251216011300_0.1.Designer.cs} | 110 +++---
...214094758_0.1.cs => 20251216011300_0.1.cs} | 56 +--
.../Migrations/DataContextModelSnapshot.cs | 108 +++---
45 files changed, 1100 insertions(+), 1319 deletions(-)
delete mode 100644 Atomx.Admin/Atomx.Admin.Client/Models/MaterialSearch.cs
create mode 100644 Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor
create mode 100644 Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryList.razor
create mode 100644 Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CurrencyList.razor
delete mode 100644 Atomx.Admin/Atomx.Admin.Client/Pages/Systems/CurrencyList.razor
delete mode 100644 Atomx.Admin/Atomx.Admin.Client/Validators/MaterialBatchValidator.cs
delete mode 100644 Atomx.Admin/Atomx.Admin.Client/Validators/MaterialRecordValidator.cs
delete mode 100644 Atomx.Admin/Atomx.Admin.Client/Validators/MaterialValidator.cs
create mode 100644 Atomx.Admin/Atomx.Admin/wwwroot/data/country.json
rename Atomx.Common/Entities/{PaymentChannel.cs => Channel.cs} (78%)
delete mode 100644 Atomx.Common/Entities/CorporationManufacturerRelation.cs
delete mode 100644 Atomx.Common/Entities/CorporationUserRelation.cs
delete mode 100644 Atomx.Common/Entities/Material.cs
delete mode 100644 Atomx.Common/Entities/MaterialBatch.cs
delete mode 100644 Atomx.Common/Entities/MaterialRecord.cs
delete mode 100644 Atomx.Common/Entities/PriceTrend.cs
delete mode 100644 Atomx.Common/Entities/WarehouseStockRecord.cs
rename Atomx.Data/Migrations/{20251214094758_0.1.Designer.cs => 20251216011300_0.1.Designer.cs} (98%)
rename Atomx.Data/Migrations/{20251214094758_0.1.cs => 20251216011300_0.1.cs} (98%)
diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/MaterialSearch.cs b/Atomx.Admin/Atomx.Admin.Client/Models/MaterialSearch.cs
deleted file mode 100644
index 5b5630c..0000000
--- a/Atomx.Admin/Atomx.Admin.Client/Models/MaterialSearch.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace Atomx.Admin.Client.Models
-{
- public class MaterialSearch : BaseSearch
- {
- ///
- /// 类型
- ///
- public int? Type { get; set; }
-
- ///
- /// 原料归属公司ID
- ///
- public long CorporationId { get; set; }
-
- ///
- /// 原料归属店铺网点ID
- ///
- public long StoreId { get; set; }
- }
-}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateModel.cs b/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateModel.cs
index 94095d5..91c931f 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateModel.cs
+++ b/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateModel.cs
@@ -7,6 +7,16 @@
///
public long Id { get; set; }
+ ///
+ /// 站点ID
+ ///
+ public long SiteId { get; set; }
+
+ ///
+ /// 语言编码
+ ///
+ public int LanguageId { get; set; }
+
///
/// 消息模板类型
///
@@ -32,6 +42,11 @@
///
public string Body { get; set; } = string.Empty;
+ ///
+ /// 附件文件地址列表,多个附件以逗号分隔
+ ///
+ public string Attachments { get; set; } = string.Empty;
+
///
/// 是否可用
///
diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateSearch.cs b/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateSearch.cs
index a906ad2..45d6097 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateSearch.cs
+++ b/Atomx.Admin/Atomx.Admin.Client/Models/MessageTemplateSearch.cs
@@ -4,6 +4,8 @@
{
public int? Type { get; set; }
+ public int? Language { get; set; }
+
public string Key { get; set; } = string.Empty;
}
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor
index b0ea21b..e7c88e0 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor
@@ -24,6 +24,9 @@
角色管理
+
+ 货币设置
+
@code {
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor
new file mode 100644
index 0000000..4668b07
--- /dev/null
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor
@@ -0,0 +1,5 @@
+CountryEdit
+
+@code {
+
+}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryList.razor
new file mode 100644
index 0000000..abc05a2
--- /dev/null
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryList.razor
@@ -0,0 +1,5 @@
+CountryList
+
+@code {
+
+}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CurrencyList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CurrencyList.razor
new file mode 100644
index 0000000..c962082
--- /dev/null
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CurrencyList.razor
@@ -0,0 +1,22 @@
+@page "/currency/list"
+@page "/{locale}/currency/list"
+@inject ILogger Logger
+@attribute [Authorize]
+
+
+
+
+ 管理后台
+ 系统功能
+ 货币管理
+
+
+
+ Tools
+
+
+
+@code {
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
+}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/MessageTemplateList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/MessageTemplateList.razor
index be0f184..7acf83c 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/MessageTemplateList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/MessageTemplateList.razor
@@ -1,144 +1,162 @@
@page "/setting/messagetemplate/list"
-
+@page "/{locale}/setting/messagetemplate/list"
@inject ILogger Logger
@attribute [Authorize]
-消息模板
-消息模版管理
-
-
-
+
+
+
+ 管理后台
+ 系统功能
+ 系统设置
+
+
+
+
+
+
+
+
+
+
+
+ 菜单列表
+
+
+
+
+
+
+
+ @if (context.Type == (int)MessageTemplateType.Message)
+ {
+ 站内信
+ }
+ else if (context.Type == (int)MessageTemplateType.Email)
+ {
+ 邮件
+ }
+ else if (context.Type == (int)MessageTemplateType.Sms)
+ {
+ 短信
+ }
+
+
+
+ @GetLanuageName(context.LanguageId)
+
+
+
+
+ @if (context.Enabled)
+ {
+
-
-
-
-
- 菜单列表
-
-
-
-
-
-
-
- @if (context.Type == (int)MessageTemplateType.Message)
- {
- 站内信
- }
- else if (context.Type == (int)MessageTemplateType.Email)
- {
- 邮件
- }
- else if (context.Type == (int)MessageTemplateType.Sms)
- {
- 短信
- }
-
-
-
-
-
- @if (context.Enabled)
- {
-
+ }
+ else
+ {
+
+ }
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
@code {
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
+
[SupplyParameterFromQuery]
int? Page { get; set; }
@@ -147,10 +165,10 @@
Form searchForm = null!;
[SupplyParameterFromForm]
- MessageTemplateModel template { get; set; } = new();
+ MessageTemplateModel model { get; set; } = new();
Form editForm = null!;
-
+ List languages = new();
PagingList PagingList = new();
bool loading { get; set; } = true;
bool searchExpand { get; set; } = false;
@@ -166,7 +184,7 @@
{
loadQueryString();
LoadList();
-
+ _ = LoadLanguages();
base.OnParametersSet();
}
@@ -177,6 +195,20 @@
search.Key = query.GetQueryString("Key");
}
+ private async Task LoadLanguages()
+ {
+ var url = $"/api/language/enabled";
+ var apiResult = await HttpService.Get>>(url);
+ if (apiResult.Success)
+ {
+ if (apiResult.Data != null)
+ {
+ languages = apiResult.Data;
+ StateHasChanged();
+ }
+ }
+ }
+
private async void LoadList()
{
@@ -265,13 +297,13 @@
void OnCreateClick()
{
- template = new();
+ model = new();
modalVisible = true;
}
- void HandleEdit(MessageTemplate model)
+ void HandleEdit(MessageTemplate data)
{
- template = model.Adapt();
+ model = data.Adapt();
modalVisible = true;
}
@@ -285,18 +317,8 @@
if (editForm.Validate())
{
var result = new ApiResult();
- var data = template.Adapt();
-
- if (template.Id > 0)
- {
- var url = $"api/messagetemplate/edit";
- result = await HttpService.Post>(url, data);
- }
- else
- {
- var url = $"api/messagetemplate/add";
- result = await HttpService.Post>(url, data);
- }
+ var url = $"api/messagetemplate/save";
+ result = await HttpService.Post>(url, model);
if (result.Code == (int)ResultCode.Success)
{
@@ -314,4 +336,14 @@
{
modalVisible = false;
}
+
+ string GetLanuageName(int languageId)
+ {
+ var language = languages.FirstOrDefault(l => l.Id == languageId);
+ if (language != null)
+ {
+ return language.Title;
+ }
+ return "-";
+ }
}
\ No newline at end of file
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/Settings.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/Settings.razor
index 7dfc28c..f1d86a0 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/Settings.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/Settings.razor
@@ -1,7 +1,22 @@
@page "/settings"
+@page "/{locale}/settings"
@attribute [Authorize]
@inject ILogger Logger
-@code {
+
+
+
+ 管理后台
+ 系统功能
+ 系统设置
+
+
+
+ Tools
+
+
-}
+@code {
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor
index be2b21b..74843a8 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor
@@ -3,20 +3,19 @@
@inject ILogger Logger
@attribute [Authorize]
-
-
+
+
+
-
- 管理后台
- 系统配置
- 版本管理
-
+ 管理后台
+ 系统配置
+ 版本管理
-
- App Version List
-
-
-
+
+
+ App Version List
+
+
@code {
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/SiteAppList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/SiteAppList.razor
index 3c54523..3997660 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/SiteAppList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/SiteAppList.razor
@@ -1,7 +1,22 @@
@page "/system/app/list"
+@page "/{locale}/system/app/list"
@inject ILogger Logger
@attribute [Authorize]
-@code {
+
+
+
+ 管理后台
+ 系统功能
+ 系统工具
+
+
+
+ Tools
+
+
+@code {
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Storages/UploadList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Storages/UploadList.razor
index 37fe40e..86957f9 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Storages/UploadList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Storages/UploadList.razor
@@ -1,103 +1,113 @@
@page "/system/file/list"
+@page "/{locale}/system/file/list"
@inject ILogger Logger
@attribute [Authorize]
-上传文件
-上传文件
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @language.Name
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@code {
bool loading = false;
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
[Parameter]
public int Id { get; set; }
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/MenuList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/MenuList.razor
index 20d42db..991015c 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/MenuList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/MenuList.razor
@@ -1,142 +1,152 @@
@page "/system/menu/list"
-
+@page "/{locale}/system/menu/list"
@inject ILogger Logger
@using MenuItem = Atomx.Admin.Client.Models.MenuItem
@using Menu = Atomx.Common.Entities.Menu
@attribute [Authorize]
-菜单管理
+
+
+
+ 管理后台
+ 系统功能
+ 菜单管理
+
+
+
+
+
+
+
+
+
+
+
-菜单管理
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @if (menu.ParentId == 0)
- {
-
-
-
-
- }
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@code {
-
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
[SupplyParameterFromQuery]
int? Page { get; set; }
@@ -285,7 +295,7 @@
CloseDrawer();
LoadList();
- await ModalService.InfoAsync(new ConfirmOptions() { Title="提示", Content="数据提交成功!" });
+ await ModalService.InfoAsync(new ConfirmOptions() { Title = "提示", Content = "数据提交成功!" });
}
else
{
@@ -294,7 +304,7 @@
}
-
+
}
private string GetPath(string path)
@@ -335,7 +345,7 @@
return name;
}
-
+
private void OpenDrawer()
{
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor
index b0a5a07..96666c5 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor
@@ -1,7 +1,18 @@
@page "/system/tools"
@page "/{locale}/system/tools"
-Tools
+
+
+
+ 管理后台
+ 系统功能
+ 系统工具
+
+
+
+ Tools
+
+
@code {
[Parameter]
diff --git a/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialBatchValidator.cs b/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialBatchValidator.cs
deleted file mode 100644
index 5c1dc3d..0000000
--- a/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialBatchValidator.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Atomx.Common.Entities;
-using FluentValidation;
-
-namespace Atomx.Admin.Client.Validators
-{
- public class MaterialBatchValidator : AbstractValidator
- {
- public MaterialBatchValidator()
- {
- RuleFor(p => p.Price).NotEmpty().WithMessage("价格不能为空");
- }
- }
-}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialRecordValidator.cs b/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialRecordValidator.cs
deleted file mode 100644
index bc46a79..0000000
--- a/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialRecordValidator.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Atomx.Common.Entities;
-using FluentValidation;
-
-namespace Atomx.Admin.Client.Validators
-{
- public class MaterialRecordValidator : AbstractValidator
- {
- public MaterialRecordValidator()
- {
- RuleFor(p => p.UserId).NotEmpty().WithMessage("名称不能为空");
- }
- }
-}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialValidator.cs b/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialValidator.cs
deleted file mode 100644
index 0d89f26..0000000
--- a/Atomx.Admin/Atomx.Admin.Client/Validators/MaterialValidator.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Atomx.Common.Entities;
-using FluentValidation;
-
-namespace Atomx.Admin.Client.Validators
-{
- public class MaterialValidator : AbstractValidator
- {
- public MaterialValidator()
- {
- //RuleFor(p => p.Name).NotEmpty().WithMessage("名称不能为空");
- }
- }
-}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Validators/MessageTemplateModelValidator.cs b/Atomx.Admin/Atomx.Admin.Client/Validators/MessageTemplateModelValidator.cs
index 3cac7c9..6176f1d 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Validators/MessageTemplateModelValidator.cs
+++ b/Atomx.Admin/Atomx.Admin.Client/Validators/MessageTemplateModelValidator.cs
@@ -1,11 +1,12 @@
using Atomx.Admin.Client.Models;
using FluentValidation;
+using Microsoft.Extensions.Localization;
namespace Atomx.Admin.Client.Validators
{
public class MessageTemplateModelValidator : AbstractValidator
{
- public MessageTemplateModelValidator()
+ public MessageTemplateModelValidator(IStringLocalizer localizer)
{
RuleFor(p => p.Name).NotEmpty().WithMessage("消息模板名称不能为空");
RuleFor(p => p.Title).NotEmpty().WithMessage("消息模板标题不能为空");
diff --git a/Atomx.Admin/Atomx.Admin/Controllers/CurrencyController.cs b/Atomx.Admin/Atomx.Admin/Controllers/CurrencyController.cs
index 34a8035..627e493 100644
--- a/Atomx.Admin/Atomx.Admin/Controllers/CurrencyController.cs
+++ b/Atomx.Admin/Atomx.Admin/Controllers/CurrencyController.cs
@@ -1,16 +1,14 @@
using Atomx.Admin.Client.Models;
-using Atomx.Admin.Client.Validators;
using Atomx.Admin.Services;
-using Atomx.Common.Entities;
using Atomx.Common.Models;
using Atomx.Data;
using Atomx.Data.CacheServices;
using Atomx.Data.Services;
-using Atomx.Utils.Extension;
-using Atomx.Utils.Models;
+using FluentValidation;
using MapsterMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Localization;
namespace Atomx.Admin.Controllers
{
@@ -26,6 +24,8 @@ namespace Atomx.Admin.Controllers
private readonly IMapper _mapper;
private readonly JwtSetting _jwtSettings;
private readonly ICacheService _cacheService;
+ readonly IValidator _validator;
+ readonly IStringLocalizer _localizer;
///
@@ -38,7 +38,8 @@ namespace Atomx.Admin.Controllers
///
///
///
- public CurrencyController(ILogger logger, IIdCreatorService idCreator, IIdentityService identityService, DataContext dbContext, IMapper mapper, JwtSetting jwtSettings, ICacheService cacheService)
+ public CurrencyController(ILogger logger, IIdCreatorService idCreator, IIdentityService identityService,
+ DataContext dbContext, IMapper mapper, JwtSetting jwtSettings, ICacheService cacheService,IValidator validator, IStringLocalizer stringLocalizer)
{
_logger = logger;
_idCreator = idCreator;
@@ -47,6 +48,8 @@ namespace Atomx.Admin.Controllers
_mapper = mapper;
_jwtSettings = jwtSettings;
_cacheService = cacheService;
+ _validator = validator;
+ _localizer = stringLocalizer;
}
/////
diff --git a/Atomx.Admin/Atomx.Admin/Controllers/MessageTemplateController.cs b/Atomx.Admin/Atomx.Admin/Controllers/MessageTemplateController.cs
index 4c111e0..6276c4e 100644
--- a/Atomx.Admin/Atomx.Admin/Controllers/MessageTemplateController.cs
+++ b/Atomx.Admin/Atomx.Admin/Controllers/MessageTemplateController.cs
@@ -1,4 +1,5 @@
-using Atomx.Admin.Client.Models;
+using AntDesign;
+using Atomx.Admin.Client.Models;
using Atomx.Admin.Client.Validators;
using Atomx.Admin.Services;
using Atomx.Common.Entities;
@@ -6,9 +7,11 @@ using Atomx.Common.Models;
using Atomx.Data;
using Atomx.Data.CacheServices;
using Atomx.Data.Services;
+using FluentValidation;
using MapsterMapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Localization;
namespace Atomx.Admin.Controllers
{
@@ -22,6 +25,8 @@ namespace Atomx.Admin.Controllers
readonly IMapper _mapper;
readonly DataContext _dbContext;
readonly ICacheService _cacheService;
+ readonly IValidator _validator;
+ readonly IStringLocalizer _localizer;
///
///
@@ -31,7 +36,8 @@ namespace Atomx.Admin.Controllers
///
///
///
- public MessageTemplateController(ILogger logger, IIdentityService identityService, IIdCreatorService idCreator, IMapper mapper, DataContext dataContext, ICacheService cacheService)
+ public MessageTemplateController(ILogger logger, IIdentityService identityService,
+ IIdCreatorService idCreator, IMapper mapper, DataContext dataContext, ICacheService cacheService, IValidator validator, IStringLocalizer stringLocalizer)
{
_logger = logger;
_identityService = identityService;
@@ -39,6 +45,8 @@ namespace Atomx.Admin.Controllers
_mapper = mapper;
_dbContext = dataContext;
_cacheService = cacheService;
+ _validator = validator;
+ _localizer = stringLocalizer;
}
@@ -64,6 +72,12 @@ namespace Atomx.Admin.Controllers
where p.Type == search.Type
select p;
}
+ if (search.Language.HasValue)
+ {
+ query = from p in query
+ where p.LanguageId == search.Language
+ select p;
+ }
if (!string.IsNullOrEmpty(search.Key))
{
query = from p in query
@@ -107,81 +121,57 @@ namespace Atomx.Admin.Controllers
}
///
- /// 添加版本信息
+ /// 保存消息模板配置
///
///
///
- [HttpPost("add")]
- public IActionResult Add(MessageTemplateModel model)
+ [HttpPost("save")]
+ public async Task SaveAsync(MessageTemplateModel model)
{
- var result = new ApiResult();
- var validator = new MessageTemplateModelValidator();
- var validation = validator.Validate(model);
+ var validation = await _validator.ValidateAsync(model);
if (!validation.IsValid)
{
- var message = validation.Errors.FirstOrDefault()?.ErrorMessage;
- result = result.IsFail(message ?? string.Empty, null);
- return new JsonResult(result);
+ var message = validation.Errors.FirstOrDefault()?.ErrorMessage ?? string.Empty;
+ return new JsonResult(new ApiResult().IsFail(message, null));
}
try
{
- model.Id = _idCreator.CreateId();
- var message = _mapper.Map(model);
- message.CreateTime = DateTime.UtcNow;
+ var data = _dbContext.MessageTemplates.SingleOrDefault(p => p.Key == model.Key && p.LanguageId == model.LanguageId && p.SiteId == model.SiteId && p.Id != model.Id);
+ if (data != null)
+ {
+ return new JsonResult(new ApiResult().IsFail("当前站点语言下已经存在这个配置,请认真检查", null));
+ }
- _dbContext.MessageTemplates.Add(message);
- var count = _dbContext.SaveChanges();
+ if (model.Id > 0)
+ {
+ data = _dbContext.MessageTemplates.SingleOrDefault(p => p.Id == model.Id);
+ if (data == null)
+ {
+ return new JsonResult(new ApiResult().IsFail("数据不存在", null));
+ }
+ data = _mapper.Map(model, data);
+ data.UpdateTime = DateTime.UtcNow;
+ _dbContext.SaveChanges();
+ }
+ else
+ {
+ model.Id = _idCreator.CreateId();
+ data = _mapper.Map(model);
+ data.CreateTime = DateTime.UtcNow;
+ _dbContext.MessageTemplates.Add(data);
+ _dbContext.SaveChanges();
+ }
- result = result.IsSuccess(count.ToString());
+
+ return new JsonResult(new ApiResult().IsSuccess("操作成功"));
}
catch (Exception ex)
{
- result = result.IsFail(ex.Message);
_logger.LogError(ex.Message);
+ return new JsonResult(new ApiResult().IsFail(ex.Message, null));
}
- return new JsonResult(result);
}
- ///
- /// 编辑
- ///
- ///
- ///
- [HttpPost("edit")]
- public IActionResult Edit(MessageTemplateModel model)
- {
- var result = new ApiResult();
- var validator = new MessageTemplateModelValidator();
- var validation = validator.Validate(model);
- if (!validation.IsValid)
- {
- var message = validation.Errors.FirstOrDefault()?.ErrorMessage;
- result = result.IsFail(message ?? string.Empty, null);
- return new JsonResult(result);
- }
-
- var data = _dbContext.MessageTemplates.SingleOrDefault(p => p.Id == model.Id);
- if (data == null)
- {
- result = result.IsFail("数据不存在");
- return new JsonResult(result);
- }
-
- data.UpdateTime = DateTime.UtcNow;
-
- try
- {
- int count = _dbContext.SaveChanges();
- result = result.IsSuccess(count.ToString());
- }
- catch (Exception ex)
- {
- result = result.IsFail(ex.Message);
- _logger.LogError(ex.Message);
- Console.WriteLine(ex.Message);
- }
- return new JsonResult(result);
- }
///
/// 根据ID删除
diff --git a/Atomx.Admin/Atomx.Admin/wwwroot/data/country.json b/Atomx.Admin/Atomx.Admin/wwwroot/data/country.json
new file mode 100644
index 0000000..0db3279
--- /dev/null
+++ b/Atomx.Admin/Atomx.Admin/wwwroot/data/country.json
@@ -0,0 +1,3 @@
+{
+
+}
diff --git a/Atomx.Common/Entities/Area.cs b/Atomx.Common/Entities/Area.cs
index 9977090..9879c46 100644
--- a/Atomx.Common/Entities/Area.cs
+++ b/Atomx.Common/Entities/Area.cs
@@ -6,6 +6,7 @@ namespace Atomx.Common.Entities
///
/// 地区(国家、省、市、区)
///
+ [Table("Areas")]
public class Area
{
///
diff --git a/Atomx.Common/Entities/Category.cs b/Atomx.Common/Entities/Category.cs
index 4015c14..0224bfd 100644
--- a/Atomx.Common/Entities/Category.cs
+++ b/Atomx.Common/Entities/Category.cs
@@ -6,6 +6,7 @@ namespace Atomx.Common.Entities
///
/// 分类
///
+ [Table("Categories")]
public class Category
{
///
diff --git a/Atomx.Common/Entities/PaymentChannel.cs b/Atomx.Common/Entities/Channel.cs
similarity index 78%
rename from Atomx.Common/Entities/PaymentChannel.cs
rename to Atomx.Common/Entities/Channel.cs
index 68cb92a..d8c6637 100644
--- a/Atomx.Common/Entities/PaymentChannel.cs
+++ b/Atomx.Common/Entities/Channel.cs
@@ -3,7 +3,8 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
- public class PaymentChannel
+ [Table("Channels")]
+ public class Channel
{
///
/// 数据ID
@@ -13,26 +14,31 @@ namespace Atomx.Common.Entities
public int Id { get; set; }
///
- /// 付款方式,银行、微信、支付宝,USDT
+ /// 站点ID
+ ///
+ public long SiteId { get; set; }
+
+ ///
+ /// 通道类型,例如通知、支付、登录等
///
public int Type { get; set; }
///
- /// 支付网络,区块链-TRC20,Online-Wechat,Bank-ICBC
+ /// 通道网络,例如API、SMS、Email,MQTT,区块链网络等
///
public int Network { get; set; }
///
- /// 支付渠道名称
+ /// 通道名称
///
[Column(TypeName = "varchar(20)")]
public string Name { get; set; } = string.Empty;
///
- /// 支付渠道标题名称
+ /// 通道标题名称
///
[Column(TypeName = "varchar(20)")]
- public string Title { get; set; }=string.Empty;
+ public string Title { get; set; } = string.Empty;
///
/// 描述说明
@@ -40,15 +46,8 @@ namespace Atomx.Common.Entities
[Column(TypeName = "varchar(512)")]
public string Description { get; set; } = string.Empty;
-
///
- /// 收款账号
- ///
- [Column(TypeName = "varchar(256)")]
- public string Account { get; set; } = string.Empty;
-
- ///
- /// 支付通道的设置
+ /// 通道的设置
///
[Column(TypeName = "text")]
public string Config { get; set; } = string.Empty;
diff --git a/Atomx.Common/Entities/CorporationManufacturerRelation.cs b/Atomx.Common/Entities/CorporationManufacturerRelation.cs
deleted file mode 100644
index 749a4ea..0000000
--- a/Atomx.Common/Entities/CorporationManufacturerRelation.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 企业供应商关系
- ///
- [Table("CorporationManufacturerRelations")]
- public class CorporationManufacturerRelation
- {
- ///
- /// 产品属性关联数据ID
- ///
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 企业ID
- ///
- public long CorporationId { get; set; }
-
- ///
- /// 供应制造商ID
- ///
- public long ManufacturerId { get; set; }
-
- ///
- /// 创建时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime CreateTime { get; set; }
- }
-}
diff --git a/Atomx.Common/Entities/CorporationUserRelation.cs b/Atomx.Common/Entities/CorporationUserRelation.cs
deleted file mode 100644
index ae72c38..0000000
--- a/Atomx.Common/Entities/CorporationUserRelation.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 用户公司关系
- ///
- [Table("CorporationUserRelations")]
- public class CorporationUserRelation
- {
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 公司ID
- ///
- public long CorporationId { get; set; }
-
- ///
- /// 用户ID
- ///
- public long UserId { get; set; }
-
- ///
- /// 数据状态
- ///
- public int Status { get; set; }
-
- ///
- /// 数据创建时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime CreateTime { get; set; } = DateTime.UtcNow;
-
- ///
- /// 数据更新时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime? UpdateTime { get; set; }
- }
-}
diff --git a/Atomx.Common/Entities/Currency.cs b/Atomx.Common/Entities/Currency.cs
index 800b97d..05a3a99 100644
--- a/Atomx.Common/Entities/Currency.cs
+++ b/Atomx.Common/Entities/Currency.cs
@@ -6,6 +6,7 @@ namespace Atomx.Common.Entities
///
/// 货币信息
///
+ [Table("Currencies")]
public class Currency
{
///
@@ -15,6 +16,11 @@ namespace Atomx.Common.Entities
[Key]
public int Id { get; set; }
+ ///
+ /// 站点ID
+ ///
+ public long SiteId { get; set; }
+
///
/// 货币名称,系统
///
diff --git a/Atomx.Common/Entities/CurrencyChannelRelation.cs b/Atomx.Common/Entities/CurrencyChannelRelation.cs
index 1808a46..ff91baa 100644
--- a/Atomx.Common/Entities/CurrencyChannelRelation.cs
+++ b/Atomx.Common/Entities/CurrencyChannelRelation.cs
@@ -6,6 +6,7 @@ namespace Atomx.Common.Entities
///
/// 货币与支付通道关联表
///
+ [Table("CurrencyChannelRelations")]
public class CurrencyChannelRelation
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
diff --git a/Atomx.Common/Entities/Material.cs b/Atomx.Common/Entities/Material.cs
deleted file mode 100644
index 3578a4b..0000000
--- a/Atomx.Common/Entities/Material.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 物料原料类型数据
- ///
- [Table("Materials")]
- public class Material
- {
- ///
- /// 数据ID
- ///
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 原料类型
- ///
- public int Type { get; set; }
-
- ///
- /// 原料归属公司ID
- ///
- public long CorporationId { get; set; }
-
- ///
- /// 原料归属店铺网点ID
- ///
- public long StoreId { get; set; }
-
- ///
- /// 原料数量
- ///
- public decimal Quantity { get; set; }
-
- ///
- /// 数据最后更新时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime? UpdateTime { get; set; }
- }
-}
diff --git a/Atomx.Common/Entities/MaterialBatch.cs b/Atomx.Common/Entities/MaterialBatch.cs
deleted file mode 100644
index 9eef400..0000000
--- a/Atomx.Common/Entities/MaterialBatch.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 原料采购批次
- ///
- [Table("MaterialBatchs")]
- public class MaterialBatch
- {
- ///
- /// 数据ID
- ///
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 类型:采购、借调、借调归还
- ///
- public int Type { get; set; }
-
- ///
- /// 原料数据ID
- ///
- public long MaterialId { get; set; }
-
- ///
- /// 原料归属公司ID
- ///
- public long CorporationId { get; set; }
-
- ///
- /// 原料归属店铺网点ID
- ///
- public long StoreId { get; set; }
-
- ///
- /// 原料当前数量
- ///
- public decimal Quantity { get; set; }
-
- ///
- /// 原料批次总量
- ///
- public decimal TotalQuantity { get; set; }
-
- ///
- /// 原料采购价格
- ///
- public decimal Price { get; set; }
-
- ///
- /// 数据创建时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime CreateTime { get; set; } = DateTime.UtcNow;
-
- ///
- /// 数据最后更新时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime? UpdateTime { get; set; }
- }
-}
diff --git a/Atomx.Common/Entities/MaterialRecord.cs b/Atomx.Common/Entities/MaterialRecord.cs
deleted file mode 100644
index 1c594db..0000000
--- a/Atomx.Common/Entities/MaterialRecord.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 原料详细记录,采购入库、使用出库、借调、归还、盘点校对
- ///
- [Table("MaterialRecords")]
- public class MaterialRecord
- {
- ///
- /// 数据ID
- ///
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 操作类型,采购入库、使用出库、借调出库、归还入库、盘点校对
- ///
- public int Type { get; set; }
-
- ///
- /// 原料Id
- ///
- public long MaterialId { get; set; }
-
- ///
- /// 归属原料批次ID
- ///
- public long MaterialBatchId { get; set; }
-
- ///
- /// 归属公司id
- ///
- public long CorporationId { get; set; }
-
- ///
- /// 数据店铺网点id
- ///
- public long StoreId { get; set; }
-
- ///
- /// 操作用户ID
- ///
- public long UserId { get; set; }
-
- ///
- /// 原料价格
- ///
- public decimal Price { get; set; }
-
- ///
- /// 数量
- ///
- public decimal Quantity { get; set; }
-
- ///
- /// 使用原料产生的费用
- ///
- public decimal Expenses { get; set; }
-
- ///
- /// 标记
- ///
- public int Mark { get; set; }
-
- ///
- /// 备注说明
- ///
- [Column(TypeName = "varchar(256)")]
- public string Note { get; set; } = string.Empty;
-
- ///
- /// 注册数据创建时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime CreateTime { get; set; } = DateTime.UtcNow;
- }
-}
diff --git a/Atomx.Common/Entities/MessageTemplate.cs b/Atomx.Common/Entities/MessageTemplate.cs
index 5c23b13..4589b2e 100644
--- a/Atomx.Common/Entities/MessageTemplate.cs
+++ b/Atomx.Common/Entities/MessageTemplate.cs
@@ -16,6 +16,11 @@ namespace Atomx.Common.Entities
[Key]
public long Id { get; set; }
+ ///
+ /// 站点ID
+ ///
+ public long SiteId { get; set; }
+
///
/// 语言编码
///
@@ -50,6 +55,12 @@ namespace Atomx.Common.Entities
[Column(TypeName = "text")]
public string Body { get; set; } = string.Empty;
+ ///
+ /// 附件文件地址列表,多个附件以逗号分隔
+ ///
+ [Column(TypeName = "varchar(1024)")]
+ public string Attachments { get; set; } = string.Empty;
+
///
/// 是否可用
///
diff --git a/Atomx.Common/Entities/PriceTrend.cs b/Atomx.Common/Entities/PriceTrend.cs
deleted file mode 100644
index 18337ce..0000000
--- a/Atomx.Common/Entities/PriceTrend.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 价格走势
- ///
- [Table("PriceTrends")]
- public class PriceTrend
- {
- ///
- /// 数据ID
- ///
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 日期
- ///
- public int Date { get; set; }
-
- ///
- /// 类型
- ///
- public int Type { get; set; }
-
- ///
- /// 当前价格
- ///
- public decimal Price { get; set; }
-
- ///
- /// 最低价格
- ///
- public decimal LowestPrice { get; set; }
-
- ///
- /// 最高价格
- ///
- public decimal HighestPrice { get; set; }
-
- ///
- /// 当前零售价格
- ///
- public decimal RetailPrice { get; set; }
-
- ///
- /// 最低零售价格
- ///
- public decimal LowestRetailPrice { get; set; }
-
- ///
- /// 最高零售价格
- ///
- public decimal HighestRetailPrice { get; set; }
-
- ///
- /// 创建时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime CreateTime { get; set; }
-
- ///
- /// 更新时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime? UpdateTime { get; set; }
-
- }
-}
diff --git a/Atomx.Common/Entities/Setting.cs b/Atomx.Common/Entities/Setting.cs
index 6e01bac..419a6fd 100644
--- a/Atomx.Common/Entities/Setting.cs
+++ b/Atomx.Common/Entities/Setting.cs
@@ -22,13 +22,7 @@ namespace Atomx.Common.Entities
public long SiteId { get; set; }
///
- /// 系统设置KEY
- ///
- [Column(TypeName = "varchar(64)")]
- public string Key { get; set; } = string.Empty;
-
- ///
- /// 配置类型,0 系统设置,
+ /// 配置类型,见 SettingType 枚举
///
public int Type { get; set; }
@@ -38,6 +32,12 @@ namespace Atomx.Common.Entities
[Column(TypeName = "varchar(64)")]
public string Name { get; set; } = string.Empty;
+ ///
+ /// 系统设置KEY
+ ///
+ [Column(TypeName = "varchar(64)")]
+ public string Key { get; set; } = string.Empty;
+
///
/// 系统设置项
///
diff --git a/Atomx.Common/Entities/SiteApp.cs b/Atomx.Common/Entities/SiteApp.cs
index 10e235b..e970615 100644
--- a/Atomx.Common/Entities/SiteApp.cs
+++ b/Atomx.Common/Entities/SiteApp.cs
@@ -6,6 +6,7 @@ namespace Atomx.Common.Entities
///
/// 站点应用
///
+ [Table("SiteApps")]
public class SiteApp
{
///
diff --git a/Atomx.Common/Entities/WarehouseStockRecord.cs b/Atomx.Common/Entities/WarehouseStockRecord.cs
deleted file mode 100644
index ece6fc9..0000000
--- a/Atomx.Common/Entities/WarehouseStockRecord.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Atomx.Common.Entities
-{
- ///
- /// 出入库记录
- ///
- [Table("WarehouseStockRecords")]
- public class WarehouseStockRecord
- {
- ///
- /// 数据ID
- ///
- [DatabaseGenerated(DatabaseGeneratedOption.None)]
- [Key]
- public long Id { get; set; }
-
- ///
- /// 类型,0入库,1出库,初始
- ///
- public int? Type { get; set; }
-
- ///
- /// 产生动作的用户ID
- ///
- public long? Operator { get; set; }
-
- ///
- /// 备注说明
- ///
- [Column(TypeName = "varchar(256)")]
- public string Note { get; set; } = string.Empty;
-
- ///
- /// 注册数据创建时间
- ///
- [Column(TypeName = "timestamptz")]
- public DateTime CreateTime { get; set; } = DateTime.UtcNow;
- }
-}
diff --git a/Atomx.Data/DataContext.cs b/Atomx.Data/DataContext.cs
index 5b31b7d..4d75beb 100644
--- a/Atomx.Data/DataContext.cs
+++ b/Atomx.Data/DataContext.cs
@@ -51,6 +51,11 @@ namespace Atomx.Data
///
public DbSet Categories { get; set; }
+ ///
+ /// 系统通道
+ ///
+ public DbSet Channels { get; set; }
+
///
/// 货币信息
///
@@ -71,11 +76,6 @@ namespace Atomx.Data
///
public DbSet LocalizedProperties { get; set; }
- ///
- /// 支付通道信息
- ///
- public DbSet PaymentChannels { get; set; }
-
///
/// 权限信息
///
diff --git a/Atomx.Data/Migrations/20251214094758_0.1.Designer.cs b/Atomx.Data/Migrations/20251216011300_0.1.Designer.cs
similarity index 98%
rename from Atomx.Data/Migrations/20251214094758_0.1.Designer.cs
rename to Atomx.Data/Migrations/20251216011300_0.1.Designer.cs
index 88220ac..5bb4b6b 100644
--- a/Atomx.Data/Migrations/20251214094758_0.1.Designer.cs
+++ b/Atomx.Data/Migrations/20251216011300_0.1.Designer.cs
@@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace Atomx.Data.Migrations
{
[DbContext(typeof(DataContext))]
- [Migration("20251214094758_0.1")]
+ [Migration("20251216011300_0.1")]
partial class _01
{
///
@@ -347,6 +347,53 @@ namespace Atomx.Data.Migrations
b.ToTable("Categories");
});
+ modelBuilder.Entity("Atomx.Common.Entities.Channel", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer");
+
+ b.Property("Config")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CreateTime")
+ .HasColumnType("timestamptz");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("varchar(512)");
+
+ b.Property("DisplayOrder")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("varchar(20)");
+
+ b.Property("Network")
+ .HasColumnType("integer");
+
+ b.Property("SiteId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("varchar(20)");
+
+ b.Property("Type")
+ .HasColumnType("integer");
+
+ b.Property("UpdateTime")
+ .HasColumnType("timestamptz");
+
+ b.HasKey("Id");
+
+ b.ToTable("Channels");
+ });
+
modelBuilder.Entity("Atomx.Common.Entities.Currency", b =>
{
b.Property("Id")
@@ -386,6 +433,9 @@ namespace Atomx.Data.Migrations
b.Property("Rate")
.HasColumnType("decimal(16, 4)");
+ b.Property("SiteId")
+ .HasColumnType("bigint");
+
b.Property("Symbolic")
.IsRequired()
.HasColumnType("varchar(8)");
@@ -606,6 +656,10 @@ namespace Atomx.Data.Migrations
b.Property("Id")
.HasColumnType("bigint");
+ b.Property("Attachments")
+ .IsRequired()
+ .HasColumnType("varchar(1024)");
+
b.Property("Body")
.IsRequired()
.HasColumnType("text");
@@ -620,10 +674,16 @@ namespace Atomx.Data.Migrations
.IsRequired()
.HasColumnType("varchar(64)");
+ b.Property("LanguageId")
+ .HasColumnType("integer");
+
b.Property("Name")
.IsRequired()
.HasColumnType("varchar(256)");
+ b.Property("SiteId")
+ .HasColumnType("bigint");
+
b.Property("Title")
.IsRequired()
.HasColumnType("varchar(256)");
@@ -639,54 +699,6 @@ namespace Atomx.Data.Migrations
b.ToTable("MessageTemplates");
});
- modelBuilder.Entity("Atomx.Common.Entities.PaymentChannel", b =>
- {
- b.Property("Id")
- .HasColumnType("integer");
-
- b.Property("Account")
- .IsRequired()
- .HasColumnType("varchar(256)");
-
- b.Property("Config")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("CreateTime")
- .HasColumnType("timestamptz");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("varchar(512)");
-
- b.Property("DisplayOrder")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(20)");
-
- b.Property("Network")
- .HasColumnType("integer");
-
- b.Property("Status")
- .HasColumnType("integer");
-
- b.Property("Title")
- .IsRequired()
- .HasColumnType("varchar(20)");
-
- b.Property("Type")
- .HasColumnType("integer");
-
- b.Property("UpdateTime")
- .HasColumnType("timestamptz");
-
- b.HasKey("Id");
-
- b.ToTable("PaymentChannels");
- });
-
modelBuilder.Entity("Atomx.Common.Entities.Permission", b =>
{
b.Property("Id")
diff --git a/Atomx.Data/Migrations/20251214094758_0.1.cs b/Atomx.Data/Migrations/20251216011300_0.1.cs
similarity index 98%
rename from Atomx.Data/Migrations/20251214094758_0.1.cs
rename to Atomx.Data/Migrations/20251216011300_0.1.cs
index e80751c..0273e9d 100644
--- a/Atomx.Data/Migrations/20251214094758_0.1.cs
+++ b/Atomx.Data/Migrations/20251216011300_0.1.cs
@@ -145,11 +145,34 @@ namespace Atomx.Data.Migrations
table.PrimaryKey("PK_Categories", x => x.Id);
});
+ migrationBuilder.CreateTable(
+ name: "Channels",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false),
+ SiteId = table.Column(type: "bigint", nullable: false),
+ Type = table.Column(type: "integer", nullable: false),
+ Network = table.Column(type: "integer", nullable: false),
+ Name = table.Column(type: "varchar(20)", nullable: false),
+ Title = table.Column(type: "varchar(20)", nullable: false),
+ Description = table.Column(type: "varchar(512)", nullable: false),
+ Config = table.Column(type: "text", nullable: false),
+ DisplayOrder = table.Column(type: "integer", nullable: false),
+ Status = table.Column(type: "integer", nullable: false),
+ CreateTime = table.Column(type: "timestamptz", nullable: false),
+ UpdateTime = table.Column(type: "timestamptz", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Channels", x => x.Id);
+ });
+
migrationBuilder.CreateTable(
name: "Currencies",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false),
+ SiteId = table.Column(type: "bigint", nullable: false),
Name = table.Column(type: "varchar(50)", nullable: false),
Title = table.Column(type: "varchar(50)", nullable: false),
CurrencyCode = table.Column(type: "varchar(10)", nullable: false),
@@ -273,11 +296,14 @@ namespace Atomx.Data.Migrations
columns: table => new
{
Id = table.Column(type: "bigint", nullable: false),
+ SiteId = table.Column(type: "bigint", nullable: false),
+ LanguageId = table.Column(type: "integer", nullable: false),
Type = table.Column(type: "integer", nullable: false),
Key = table.Column(type: "varchar(64)", nullable: false),
Name = table.Column(type: "varchar(256)", nullable: false),
Title = table.Column(type: "varchar(256)", nullable: false),
Body = table.Column(type: "text", nullable: false),
+ Attachments = table.Column(type: "varchar(1024)", nullable: false),
Enabled = table.Column(type: "boolean", nullable: false),
CreateTime = table.Column(type: "timestamptz", nullable: false),
UpdateTime = table.Column(type: "timestamptz", nullable: true)
@@ -287,28 +313,6 @@ namespace Atomx.Data.Migrations
table.PrimaryKey("PK_MessageTemplates", x => x.Id);
});
- migrationBuilder.CreateTable(
- name: "PaymentChannels",
- columns: table => new
- {
- Id = table.Column(type: "integer", nullable: false),
- Type = table.Column(type: "integer", nullable: false),
- Network = table.Column(type: "integer", nullable: false),
- Name = table.Column(type: "varchar(20)", nullable: false),
- Title = table.Column(type: "varchar(20)", nullable: false),
- Description = table.Column(type: "varchar(512)", nullable: false),
- Account = table.Column(type: "varchar(256)", nullable: false),
- Config = table.Column(type: "text", nullable: false),
- DisplayOrder = table.Column(type: "integer", nullable: false),
- Status = table.Column(type: "integer", nullable: false),
- CreateTime = table.Column(type: "timestamptz", nullable: false),
- UpdateTime = table.Column(type: "timestamptz", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_PaymentChannels", x => x.Id);
- });
-
migrationBuilder.CreateTable(
name: "Permissions",
columns: table => new
@@ -563,9 +567,9 @@ namespace Atomx.Data.Migrations
{
Id = table.Column(type: "bigint", nullable: false),
SiteId = table.Column(type: "bigint", nullable: false),
- Key = table.Column(type: "varchar(64)", nullable: false),
Type = table.Column(type: "integer", nullable: false),
Name = table.Column(type: "varchar(64)", nullable: false),
+ Key = table.Column(type: "varchar(64)", nullable: false),
Content = table.Column(type: "text", nullable: false)
},
constraints: table =>
@@ -691,6 +695,9 @@ namespace Atomx.Data.Migrations
migrationBuilder.DropTable(
name: "Categories");
+ migrationBuilder.DropTable(
+ name: "Channels");
+
migrationBuilder.DropTable(
name: "Currencies");
@@ -712,9 +719,6 @@ namespace Atomx.Data.Migrations
migrationBuilder.DropTable(
name: "MessageTemplates");
- migrationBuilder.DropTable(
- name: "PaymentChannels");
-
migrationBuilder.DropTable(
name: "Permissions");
diff --git a/Atomx.Data/Migrations/DataContextModelSnapshot.cs b/Atomx.Data/Migrations/DataContextModelSnapshot.cs
index 78a3d8f..8a5f1d1 100644
--- a/Atomx.Data/Migrations/DataContextModelSnapshot.cs
+++ b/Atomx.Data/Migrations/DataContextModelSnapshot.cs
@@ -344,6 +344,53 @@ namespace Atomx.Data.Migrations
b.ToTable("Categories");
});
+ modelBuilder.Entity("Atomx.Common.Entities.Channel", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer");
+
+ b.Property("Config")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CreateTime")
+ .HasColumnType("timestamptz");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("varchar(512)");
+
+ b.Property("DisplayOrder")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("varchar(20)");
+
+ b.Property("Network")
+ .HasColumnType("integer");
+
+ b.Property("SiteId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("varchar(20)");
+
+ b.Property("Type")
+ .HasColumnType("integer");
+
+ b.Property("UpdateTime")
+ .HasColumnType("timestamptz");
+
+ b.HasKey("Id");
+
+ b.ToTable("Channels");
+ });
+
modelBuilder.Entity("Atomx.Common.Entities.Currency", b =>
{
b.Property("Id")
@@ -383,6 +430,9 @@ namespace Atomx.Data.Migrations
b.Property("Rate")
.HasColumnType("decimal(16, 4)");
+ b.Property("SiteId")
+ .HasColumnType("bigint");
+
b.Property("Symbolic")
.IsRequired()
.HasColumnType("varchar(8)");
@@ -603,6 +653,10 @@ namespace Atomx.Data.Migrations
b.Property("Id")
.HasColumnType("bigint");
+ b.Property("Attachments")
+ .IsRequired()
+ .HasColumnType("varchar(1024)");
+
b.Property("Body")
.IsRequired()
.HasColumnType("text");
@@ -617,10 +671,16 @@ namespace Atomx.Data.Migrations
.IsRequired()
.HasColumnType("varchar(64)");
+ b.Property("LanguageId")
+ .HasColumnType("integer");
+
b.Property("Name")
.IsRequired()
.HasColumnType("varchar(256)");
+ b.Property("SiteId")
+ .HasColumnType("bigint");
+
b.Property("Title")
.IsRequired()
.HasColumnType("varchar(256)");
@@ -636,54 +696,6 @@ namespace Atomx.Data.Migrations
b.ToTable("MessageTemplates");
});
- modelBuilder.Entity("Atomx.Common.Entities.PaymentChannel", b =>
- {
- b.Property("Id")
- .HasColumnType("integer");
-
- b.Property("Account")
- .IsRequired()
- .HasColumnType("varchar(256)");
-
- b.Property("Config")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("CreateTime")
- .HasColumnType("timestamptz");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("varchar(512)");
-
- b.Property("DisplayOrder")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(20)");
-
- b.Property("Network")
- .HasColumnType("integer");
-
- b.Property("Status")
- .HasColumnType("integer");
-
- b.Property("Title")
- .IsRequired()
- .HasColumnType("varchar(20)");
-
- b.Property("Type")
- .HasColumnType("integer");
-
- b.Property("UpdateTime")
- .HasColumnType("timestamptz");
-
- b.HasKey("Id");
-
- b.ToTable("PaymentChannels");
- });
-
modelBuilder.Entity("Atomx.Common.Entities.Permission", b =>
{
b.Property("Id")