66 lines
2.8 KiB
C#
66 lines
2.8 KiB
C#
using System.Text.Json;
|
|
using Tiku.Domain.Tenancy;
|
|
|
|
namespace Tiku.Infrastructure.Tenancy;
|
|
|
|
internal static class TenantFrontendConfigDefaults
|
|
{
|
|
public static TenantFrontendConfig Create(Guid tenantId, string tenantName)
|
|
{
|
|
var shortName = tenantName.Length <= 4 ? tenantName : tenantName[..4];
|
|
var branding = JsonSerializer.SerializeToElement(new
|
|
{
|
|
brandName = tenantName,
|
|
shortName,
|
|
slogan = "让每一次学习都有方向",
|
|
logoUrl = "",
|
|
faviconUrl = "",
|
|
serviceWechat = ""
|
|
});
|
|
var theme = JsonSerializer.SerializeToElement(new
|
|
{
|
|
primaryColor = "#3157d5",
|
|
secondaryColor = "#20b486",
|
|
backgroundColor = "#f5f7fb",
|
|
textColor = "#172033",
|
|
fontFamily = "system-ui, sans-serif",
|
|
radius = 18
|
|
});
|
|
var features = JsonSerializer.SerializeToElement(new { template = "clarity" });
|
|
var navigation = JsonSerializer.SerializeToElement(new[]
|
|
{
|
|
new { id = "home", label = "首页", href = "/", visible = true },
|
|
new { id = "learning", label = "学习中心", href = "/learning", visible = true },
|
|
new { id = "scoreline", label = "院校分数线", href = "/scoreline", visible = true },
|
|
new { id = "profile", label = "个人中心", href = "/profile", visible = true }
|
|
});
|
|
var modules = JsonSerializer.SerializeToElement(new[]
|
|
{
|
|
new { id = "hero", type = "hero", title = "首页主视觉", visible = true },
|
|
new { id = "announcement", type = "announcement", title = "最新公告", visible = true },
|
|
new { id = "features", type = "feature-grid", title = "学习服务", visible = true },
|
|
new { id = "subjects", type = "subject-entry", title = "热门学科", visible = true },
|
|
new { id = "scoreline", type = "scoreline-entry", title = "院校分数线", visible = true },
|
|
new { id = "store", type = "store-entry", title = "精选课程", visible = true },
|
|
new { id = "contact", type = "contact-cta", title = "学习顾问", visible = true }
|
|
});
|
|
|
|
return new TenantFrontendConfig
|
|
{
|
|
TenantId = tenantId,
|
|
SchemaVersion = 1,
|
|
ConfigVersion = 1,
|
|
PublishedBranding = branding.Clone(),
|
|
PublishedTheme = theme.Clone(),
|
|
PublishedFeatures = features.Clone(),
|
|
PublishedNavigation = navigation.Clone(),
|
|
PublishedHomeModules = modules.Clone(),
|
|
DraftBranding = branding.Clone(),
|
|
DraftTheme = theme.Clone(),
|
|
DraftFeatures = features.Clone(),
|
|
DraftNavigation = navigation.Clone(),
|
|
DraftHomeModules = modules.Clone()
|
|
};
|
|
}
|
|
}
|