1. 增加了几种模板

This commit is contained in:
李琦
2026-08-24 13:06:04 +08:00
parent 1617baec19
commit 287e428e87
124 changed files with 11330 additions and 142 deletions

View File

@@ -6,6 +6,7 @@ import (
"time"
"github.com/niangaodev/art-code/config"
"github.com/niangaodev/art-code/models"
)
// MigrateToBigInt performs schema migration to BigInt timestamps
@@ -332,6 +333,77 @@ func MigratePptTemplates() {
EnsureSystemPptTemplate()
}
// MigrateTemplates 创建 templates 表并种入内置模板(classic / ubuntu-terminal)
func MigrateTemplates() {
log.Printf("Migrating templates...")
if !tableExists("templates") {
execSQL(`CREATE TABLE templates (
id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板ID',
slug VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '唯一标识(classic/ubuntu-terminal/自定义slug)',
name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板显示名称',
type VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'custom' COMMENT '类型(builtin内置/custom自定义)',
description TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '模板描述',
manifest LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'manifest.json 内容(custom)',
layout_json LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'layout.json 内容(custom)',
skin_css_path VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '皮肤CSS相对路径(/uploads/templates/{slug}/skin.css)',
is_system TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否系统内置模板(0否 1是,不可删除)',
is_active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用(0否 1是)',
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序(越小越靠前)',
deleted_at BIGINT NOT NULL DEFAULT 0 COMMENT '软删除时间戳',
created_at BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间(Unix秒)',
updated_at BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间(Unix秒)',
PRIMARY KEY (id),
UNIQUE INDEX idx_slug (slug)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='前端页面模板表'`)
}
ensureBuiltinTemplate(BuiltinTemplateClassic, "经典", "系统内置经典布局", 0)
ensureBuiltinTemplate(BuiltinTemplateTerminal, "Ubuntu 终端", "系统内置终端风格(ls/search/cat 命令交互)", 1)
ensureBuiltinTemplate(BuiltinTemplatePixel, "像素", "系统内置像素风(8-bit 游戏机界面)", 2)
ensureBuiltinTemplate(BuiltinTemplateMagazine, "杂志", "系统内置杂志风(衬线多栏编辑排版)", 3)
ensureBuiltinTemplate(BuiltinTemplateNewspaper, "报纸", "系统内置报纸风(报头多栏纸感排版)", 4)
ensureBuiltinTemplate(BuiltinTemplateBento, "Bento 宫格", "系统内置 Bento 宫格风(圆角几何色块)", 5)
ensureBuiltinTemplate(BuiltinTemplateGlass, "玻璃拟态", "系统内置玻璃拟态(毛玻璃光感)", 6)
ensureBuiltinTemplate(BuiltinTemplateRetro, "复古印刷", "系统内置复古印刷(旧印刷烫金质感)", 7)
ensureBuiltinTemplate(BuiltinTemplateGuofeng, "国风水墨", "系统内置国风水墨(宣纸印章山水)", 8)
// 种入 site_template 默认配置
if s, err := GetSettingByKey(SettingKeySiteTemplate); err == nil && s == nil {
_ = CreateSetting(&models.Setting{
KeyName: SettingKeySiteTemplate,
Value: DefaultSiteTemplateSlug,
Description: "当前启用的前端页面模板 slug",
})
}
}
// ensureBuiltinTemplate 幂等种入内置模板
func ensureBuiltinTemplate(slug, name, desc string, sortOrder int) {
var count int64
config.DB.Model(&models.Template{}).
Where("slug = ? AND deleted_at = ?", slug, 0).
Count(&count)
if count > 0 {
return
}
now := time.Now().Unix()
t := models.Template{
Slug: slug,
Name: name,
Type: TemplateTypeBuiltin,
Description: desc,
IsSystem: true,
IsActive: true,
SortOrder: sortOrder,
CreatedAt: now,
UpdatedAt: now,
}
if err := config.DB.Create(&t).Error; err != nil {
log.Printf("Failed to seed builtin template %s: %v", slug, err)
}
}
// MigrateOSSConfigFields 为 oss_configs 补齐各云厂商专用列(幂等)
func MigrateOSSConfigFields() {
log.Printf("Migrating oss_configs provider fields...")