完整记录名:{{ formData.record_prefix }}.网络名称。域名
只能包含字母、数字、点、下划线和连字符
```
---
### 方案三:混合模式(最佳实践)🏆
**设计思路**:
```
系统预设 + 管理员自定义组合
├─ 预设类型:快速选择,安全可靠
└─ 自定义:高级选项,满足特殊需求
```
**数据库设计**:
```go
type DDNSUsage struct {
ID string `gorm:"primaryKey;type:varchar(36)"`
ServiceID string `gorm:"type:varchar(36);index"`
// ✅ 方案 C:混合模式
PrefixMode string `gorm:"type:varchar(16);not null;default:'preset'"`
/*
- "preset" → 使用预设类型
- "custom" → 使用自定义前缀
*/
PrefixType string `gorm:"type:varchar(32)"` // preset 模式下使用
RecordPrefix string `gorm:"type:varchar(255)"` // custom 模式下使用
NetworkID *uint64 `gorm:"type:bigint;index"`
Enabled bool `gorm:"default:true"`
}
// 方法:获取实际前缀
func (u *DDNSUsage) GetRecordPrefix() string {
if u.PrefixMode == "preset" {
return u.GetPresetPrefix()
} else {
return u.RecordPrefix
}
}
func (u *DDNSUsage) GetPresetPrefix() string {
switch u.PrefixType {
case "MESHSEED_SYNC":
return "_meshray._mesh"
case "CONFIG_SYNC":
return "_meshray.config"
default:
return "_meshray._mesh" // 默认回退
}
}
```
**前端实现**:
```vue