12 KiB
门户配置模型
**本文档引用的文件** - [Enterprise.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs) - [EnterpriseDto.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseDto.cs) - [EnterpriseCreateDto.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateDto.cs) - [EnterpriseCreateOrUpdateDto.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateOrUpdateDto.cs) - [EnterpriseUpdateDto.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseUpdateDto.cs) - [EnterpriseAppService.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/Portal/EnterpriseAppService.cs) - [EnterpriseController.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.HttpApi/LINGYUN/Platform/Portal/EnterpriseController.cs) - [EnterpriseConsts.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Portal/EnterpriseConsts.cs) - [ThemeSettingDto.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingDto.cs) - [ProjectConfigDto.cs](file://aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ProjectConfigDto.cs)目录
介绍
门户配置模型是平台管理系统中的核心实体,用于定义和管理企业门户的各项配置信息。该模型不仅包含基本的企业信息,还支持与平台的关联、主题配置以及多门户管理。通过该模型,系统能够实现灵活的门户配置管理,满足不同企业用户的个性化需求。
门户实体设计
门户实体(Enterprise)是平台管理系统中的核心数据模型,用于存储企业门户的配置信息。该实体继承自FullAuditedAggregateRoot<Guid>,具备完整的审计功能,包括创建时间、创建人、最后修改时间等。
classDiagram
class Enterprise {
+Guid? TenantId
+string Name
+string EnglishName
+string Logo
+string Address
+string LegalMan
+string TaxCode
+string OrganizationCode
+string RegistrationCode
+DateTime? RegistrationDate
+DateTime? ExpirationDate
+setTenantId(tenantId)
+setName(name, englishName)
+setOrganization(organizationCode)
+setRegistration(registrationCode, registrationDate, expirationDate)
}
Enterprise <|-- FullAuditedAggregateRoot
图源
- Enterprise.cs
本节来源
- Enterprise.cs
核心属性详解
门户实体包含多个核心属性,每个属性都有明确的数据类型、默认值和验证规则。
基本信息属性
| 属性名 | 数据类型 | 最大长度 | 是否必填 | 描述 |
|---|---|---|---|---|
| 名称 | string | 255 | 是 | 企业的中文名称 |
| 英文名称 | string | 512 | 否 | 企业的英文名称 |
| Logo | string | 512 | 否 | 企业Logo的URL地址 |
| 地址 | string | 255 | 是 | 企业注册地址 |
| 法人代表 | string | 60 | 否 | 企业法人代表姓名 |
| 税务登记号 | string | 40 | 是 | 企业税务登记号码 |
| 组织机构代码 | string | 16 | 否 | 企业组织机构代码 |
| 注册代码 | string | 30 | 否 | 企业注册代码 |
| 注册日期 | DateTime? | - | 否 | 企业注册日期 |
| 过期日期 | DateTime? | - | 否 | 企业信息过期日期 |
验证规则
门户实体的属性验证通过EnterpriseConsts类进行集中管理,确保所有验证规则的一致性:
classDiagram
class EnterpriseConsts {
+int MaxNameLength = 255
+int MaxEnglishNameLength = 512
+int MaxLogoLength = 512
+int MaxAddressLength = 255
+int MaxLegalManLength = 60
+int MaxTaxCodeLength = 40
+int MaxOrganizationCodeLength = 16
+int MaxRegistrationCodeLength = 30
}
图源
- EnterpriseConsts.cs
本节来源
- EnterpriseConsts.cs
- Enterprise.cs
多门户支持与平台关联
门户实体支持多门户配置,通过TenantId属性实现与不同租户的关联。这种设计允许平台为多个企业客户提供独立的门户配置服务。
关联关系
门户实体与平台的关联主要体现在以下几个方面:
- 租户关联:通过
TenantId属性关联到特定租户,实现多租户支持 - 权限控制:基于平台权限系统进行访问控制
- 数据隔离:确保不同租户的门户配置数据相互隔离
数据结构设计
erDiagram
ENTERPRISE {
guid Id PK
guid? TenantId FK
string Name
string EnglishName
string Logo
string Address
string LegalMan
string TaxCode
string OrganizationCode
string RegistrationCode
datetime? RegistrationDate
datetime? ExpirationDate
}
TENANT {
guid Id PK
string Name
string Email
}
ENTERPRISE ||--o{ TENANT : "belongs to"
图源
- Enterprise.cs
本节来源
- Enterprise.cs
配置继承与覆盖策略
门户配置支持继承和覆盖机制,允许子配置继承父配置的默认值,并根据需要进行个性化覆盖。
主题配置继承
主题配置通过ThemeSettingDto和ProjectConfigDto实现继承和覆盖:
classDiagram
class ThemeSettingDto {
+string DarkMode = "light"
+ProjectConfigDto ProjectConfig
+BeforeMiniStateDto BeforeMiniInfo
}
class ProjectConfigDto {
+int PermissionCacheType = 1
+bool ShowSettingButton = true
+bool ShowDarkModeToggle = true
+string ThemeColor = "#0960bd"
+bool ShowLogo = true
+HeaderSettingDto HeaderSetting
+MenuSettingDto MenuSetting
+MultiTabsSettingDto MultiTabsSetting
}
ThemeSettingDto --> ProjectConfigDto : "contains"
ProjectConfigDto --> HeaderSettingDto : "contains"
ProjectConfigDto --> MenuSettingDto : "contains"
ProjectConfigDto --> MultiTabsSettingDto : "contains"
图源
- ThemeSettingDto.cs
- ProjectConfigDto.cs
本节来源
- ThemeSettingDto.cs
- ProjectConfigDto.cs
覆盖策略
当子配置需要覆盖父配置时,系统遵循以下策略:
- 显式覆盖:子配置中明确设置的属性值将覆盖继承的值
- 空值继承:如果子配置中某属性为空,则继承父配置的对应值
- 类型安全:确保覆盖的值符合属性的数据类型要求
API管理与配置生效机制
门户配置通过标准的RESTful API进行管理,支持创建、读取、更新和删除操作。
API端点
sequenceDiagram
participant Client
participant Controller
participant Service
participant Repository
Client->>Controller : POST /api/platform/enterprise
Controller->>Service : CreateAsync(input)
Service->>Repository : FindByNameAsync(name)
Repository-->>Service : null
Service->>Service : new Enterprise(id, name, ...)
Service->>Repository : InsertAsync(enterprise)
Repository-->>Service : Enterprise
Service-->>Controller : EnterpriseDto
Controller-->>Client : 201 Created
Client->>Controller : PUT /api/platform/enterprise/{id}
Controller->>Service : UpdateAsync(id, input)
Service->>Repository : GetAsync(id)
Repository-->>Service : Enterprise
Service->>Service : UpdateByInput(enterprise, input)
Service->>Repository : UpdateAsync(enterprise)
Repository-->>Service : Enterprise
Service-->>Controller : EnterpriseDto
Controller-->>Client : 200 OK
图源
- EnterpriseController.cs
- EnterpriseAppService.cs
本节来源
- EnterpriseController.cs
- EnterpriseAppService.cs
配置生效机制
当门户配置发生变更时,系统通过以下机制确保配置及时生效:
- 并发控制:使用
ConcurrencyStamp属性防止并发修改冲突 - 缓存更新:配置变更后自动更新相关缓存
- 事件通知:发布配置变更事件,通知相关组件刷新状态
实际应用场景示例
企业门户创建流程
flowchart TD
Start([开始]) --> ValidateInput["验证输入参数"]
ValidateInput --> NameValid{"名称有效?"}
NameValid --> |否| ReturnError["返回错误"]
NameValid --> |是| CheckDuplicate["检查名称重复"]
CheckDuplicate --> NameExists{"名称已存在?"}
NameExists --> |是| ReturnDuplicateError["返回重复错误"]
NameExists --> |否| CreateEntity["创建企业实体"]
CreateEntity --> SetProperties["设置属性值"]
SetProperties --> SaveToDatabase["保存到数据库"]
SaveToDatabase --> ReturnSuccess["返回成功结果"]
ReturnError --> End([结束])
ReturnDuplicateError --> End
ReturnSuccess --> End
图源
- EnterpriseAppService.cs
本节来源
- EnterpriseAppService.cs
主题配置应用
在实际应用中,企业可以根据自身品牌需求定制门户主题:
- 基础配置:设置企业名称、Logo、主题色等基本信息
- 布局选择:选择适合的页面布局和导航模式
- 功能开关:启用或禁用特定功能模块
- 权限配置:设置不同用户角色的访问权限
结论
门户配置模型是平台管理系统的核心组成部分,通过精心设计的实体结构和配置机制,实现了灵活、可扩展的门户管理功能。该模型不仅支持基本的企业信息管理,还提供了强大的主题配置、多门户支持和继承覆盖机制,能够满足不同企业用户的个性化需求。通过标准的API接口,系统能够高效地管理门户配置,并确保配置变更的及时生效。