Files
xk-of-api/manifest/sql/xk_of_schema.sql
2026-07-18 05:58:41 +08:00

372 lines
25 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
CREATE DATABASE IF NOT EXISTS `xk_of` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '萧康云医官网与SaaS后台数据库';
USE `xk_of`;
CREATE TABLE IF NOT EXISTS `nl_admin` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`open_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'OpenID后期整合萧康服务中心会用到',
`wx_open_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '微信小程序OpenID',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '头像',
`nick_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '昵称',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
`phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户手机',
`email` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户邮箱',
`code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '业务员推广码',
`role_id` int NOT NULL DEFAULT '0' COMMENT '角色',
`province_id` int NOT NULL DEFAULT '0' COMMENT '省',
`city_id` int NOT NULL DEFAULT '0' COMMENT '市',
`reg_ip` bigint NOT NULL DEFAULT '0' COMMENT '注册IP',
`last_login_time` int NOT NULL DEFAULT '0' COMMENT '最后登录时间',
`ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '0' COMMENT '最后登录IP',
`ip_table` json NOT NULL COMMENT '常用登录IP地址列表',
`operation_password` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '操作密码',
`desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '用户状态 0正常 1禁用',
`last_reset_password_at` datetime DEFAULT NULL COMMENT '最后一次更新密码时间',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_phone` (`phone`) USING BTREE,
KEY `idx_role_id` (`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='管理员表';
CREATE TABLE IF NOT EXISTS `nl_role` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`name` varchar(32) NOT NULL DEFAULT '' COMMENT '角色名称',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '角色编码',
`desc` varchar(255) NOT NULL DEFAULT '' COMMENT '角色说明',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_code` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色表';
CREATE TABLE IF NOT EXISTS `nl_admin_role` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '关联ID',
`admin_id` int unsigned NOT NULL DEFAULT '0' COMMENT '管理员ID',
`role_id` int unsigned NOT NULL DEFAULT '0' COMMENT '角色ID',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_admin_role` (`admin_id`,`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='管理员角色关联表';
CREATE TABLE IF NOT EXISTS `nl_menu` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
`parent_id` int unsigned NOT NULL DEFAULT '0' COMMENT '父级菜单ID',
`title` varchar(64) NOT NULL DEFAULT '' COMMENT '菜单标题',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '路由名称',
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '路由路径',
`component` varchar(255) NOT NULL DEFAULT '' COMMENT '前端组件路径',
`redirect` varchar(255) NOT NULL DEFAULT '' COMMENT '重定向地址',
`icon` varchar(64) NOT NULL DEFAULT '' COMMENT '菜单图标',
`type` tinyint NOT NULL DEFAULT '1' COMMENT '菜单类型 1目录 2菜单 3按钮',
`permission` varchar(128) NOT NULL DEFAULT '' COMMENT '权限标识',
`visible` tinyint NOT NULL DEFAULT '1' COMMENT '是否显示 0隐藏 1显示',
`keep_alive` tinyint NOT NULL DEFAULT '0' COMMENT '是否缓存页面 0 1',
`menu_area` tinyint NOT NULL DEFAULT '1' COMMENT '双列菜单区域 1主列 2次列',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_parent_id` (`parent_id`) USING BTREE,
KEY `idx_permission` (`permission`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='后台多级菜单表';
CREATE TABLE IF NOT EXISTS `nl_role_menu` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '授权ID',
`role_id` int unsigned NOT NULL DEFAULT '0' COMMENT '角色ID',
`menu_id` int unsigned NOT NULL DEFAULT '0' COMMENT '菜单ID',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_role_menu` (`role_id`,`menu_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色菜单授权表';
CREATE TABLE IF NOT EXISTS `nl_system_config` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '配置ID',
`config_key` varchar(128) NOT NULL DEFAULT '' COMMENT '配置键',
`config_value` text NOT NULL COMMENT '配置值',
`desc` varchar(255) NOT NULL DEFAULT '' COMMENT '配置说明',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_config_key` (`config_key`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统配置表';
CREATE TABLE IF NOT EXISTS `nl_admin_preference` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '偏好ID',
`admin_id` int unsigned NOT NULL DEFAULT '0' COMMENT '管理员ID',
`menu_layout` varchar(16) NOT NULL DEFAULT '' COMMENT '菜单布局 single单列 double双列 空则使用全局配置',
`theme` varchar(16) NOT NULL DEFAULT '' COMMENT '后台主题 light明亮 dark暗色 空则跟随系统',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_admin_id` (`admin_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='管理员个人偏好表';
CREATE TABLE IF NOT EXISTS `nl_site_page` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '页面ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '页面编码',
`title` varchar(128) NOT NULL DEFAULT '' COMMENT '页面标题',
`seo_title` varchar(255) NOT NULL DEFAULT '' COMMENT 'SEO标题',
`seo_keywords` varchar(255) NOT NULL DEFAULT '' COMMENT 'SEO关键词',
`seo_description` varchar(500) NOT NULL DEFAULT '' COMMENT 'SEO描述',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_code` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='官网页面表';
CREATE TABLE IF NOT EXISTS `nl_site_section` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '模块ID',
`page_id` int unsigned NOT NULL DEFAULT '0' COMMENT '页面ID',
`section_key` varchar(64) NOT NULL DEFAULT '' COMMENT '模块标识',
`title` varchar(128) NOT NULL DEFAULT '' COMMENT '模块标题',
`subtitle` varchar(255) NOT NULL DEFAULT '' COMMENT '模块副标题',
`content` json NOT NULL COMMENT '模块内容JSON',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_page_id` (`page_id`) USING BTREE,
KEY `idx_section_key` (`section_key`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='官网页面模块表';
CREATE TABLE IF NOT EXISTS `nl_site_lead` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '线索ID',
`name` varchar(32) NOT NULL DEFAULT '' COMMENT '联系人姓名',
`phone` char(11) NOT NULL DEFAULT '' COMMENT '联系电话',
`clinic_name` varchar(128) NOT NULL DEFAULT '' COMMENT '诊所名称',
`city` varchar(64) NOT NULL DEFAULT '' COMMENT '所在城市',
`plan_code` varchar(64) NOT NULL DEFAULT '' COMMENT '意向套餐编码',
`source_page` varchar(64) NOT NULL DEFAULT '' COMMENT '来源页面',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`follow_status` tinyint NOT NULL DEFAULT '0' COMMENT '跟进状态 0待跟进 1跟进中 2已成交 3无效',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_phone` (`phone`) USING BTREE,
KEY `idx_plan_code` (`plan_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='官网咨询线索表';
CREATE TABLE IF NOT EXISTS `nl_saas_plan` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '套餐ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '套餐编码',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '套餐名称',
`description` varchar(500) NOT NULL DEFAULT '' COMMENT '套餐说明',
`monthly_fee` int unsigned NOT NULL DEFAULT '0' COMMENT '月付金额单位分',
`yearly_fee` int unsigned NOT NULL DEFAULT '0' COMMENT '年付金额单位分',
`recommended` tinyint NOT NULL DEFAULT '0' COMMENT '是否推荐 0 1',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_code` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SaaS套餐表';
CREATE TABLE IF NOT EXISTS `nl_saas_plan_feature` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '权益ID',
`plan_id` int unsigned NOT NULL DEFAULT '0' COMMENT '套餐ID',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '权益名称',
`value` varchar(255) NOT NULL DEFAULT '' COMMENT '权益值',
`highlight` tinyint NOT NULL DEFAULT '0' COMMENT '是否重点展示 0 1',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_plan_id` (`plan_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SaaS套餐权益表';
CREATE TABLE IF NOT EXISTS `nl_tenant` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '租户ID',
`tenant_name` varchar(128) NOT NULL DEFAULT '' COMMENT '租户名称或诊所名称',
`contact_name` varchar(32) NOT NULL DEFAULT '' COMMENT '联系人姓名',
`phone` char(11) NOT NULL DEFAULT '' COMMENT '联系电话',
`city` varchar(64) NOT NULL DEFAULT '' COMMENT '所在城市',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_phone` (`phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SaaS订购主体表';
CREATE TABLE IF NOT EXISTS `nl_subscription` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '订阅ID',
`tenant_id` int unsigned NOT NULL DEFAULT '0' COMMENT '租户ID',
`plan_id` int unsigned NOT NULL DEFAULT '0' COMMENT '套餐ID',
`start_at` int NOT NULL DEFAULT '0' COMMENT '订阅开始时间',
`end_at` int NOT NULL DEFAULT '0' COMMENT '订阅结束时间',
`auto_renew` tinyint NOT NULL DEFAULT '0' COMMENT '是否自动续费 0 1',
`subscription_status` tinyint NOT NULL DEFAULT '0' COMMENT '订阅状态 0待生效 1生效中 2已过期 3已取消',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
KEY `idx_plan_id` (`plan_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SaaS订阅关系表';
CREATE TABLE IF NOT EXISTS `nl_order` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`order_no` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',
`tenant_id` int unsigned NOT NULL DEFAULT '0' COMMENT '租户ID',
`plan_id` int unsigned NOT NULL DEFAULT '0' COMMENT '套餐ID',
`billing_cycle` varchar(16) NOT NULL DEFAULT 'month' COMMENT '订购周期 month月付 year年付',
`amount` int unsigned NOT NULL DEFAULT '0' COMMENT '订单金额单位分',
`pay_status` tinyint NOT NULL DEFAULT '0' COMMENT '支付状态 0待支付 1已支付 2已退款 3已关闭',
`order_status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态 0待支付 1已完成 2已取消 3已关闭',
`expired_at` int NOT NULL DEFAULT '0' COMMENT '订单过期时间',
`paid_at` int NOT NULL DEFAULT '0' COMMENT '支付完成时间',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_order_no` (`order_no`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
KEY `idx_plan_id` (`plan_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SaaS套餐订购订单表';
CREATE TABLE IF NOT EXISTS `nl_payment` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '支付ID',
`order_no` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',
`channel` varchar(32) NOT NULL DEFAULT '' COMMENT '支付渠道 wxpay微信 alipay支付宝 manual线下',
`channel_trade_no` varchar(128) NOT NULL DEFAULT '' COMMENT '渠道交易号',
`amount` int unsigned NOT NULL DEFAULT '0' COMMENT '支付金额单位分',
`pay_status` tinyint NOT NULL DEFAULT '0' COMMENT '支付状态 0待支付 1成功 2失败 3退款',
`notify_payload` json NOT NULL COMMENT '支付回调原始数据',
`paid_at` int NOT NULL DEFAULT '0' COMMENT '支付完成时间',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_order_no` (`order_no`) USING BTREE,
KEY `idx_channel_trade_no` (`channel_trade_no`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SaaS支付流水表';
INSERT INTO `nl_system_config` (`config_key`, `config_value`, `desc`, `status`, `created_at`, `updated_at`)
VALUES ('admin_menu_layout', 'double', '后台默认菜单布局 single单列 double双列', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `config_value` = VALUES(`config_value`), `updated_at` = UNIX_TIMESTAMP();
INSERT INTO `nl_role` (`id`, `name`, `code`, `desc`, `status`, `sort`, `created_at`, `updated_at`)
VALUES
(1, '超级管理员', 'super_admin', '拥有后台全部权限', 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(2, '运营人员', 'operator', '管理官网内容线索套餐和订单', 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `updated_at` = UNIX_TIMESTAMP();
INSERT INTO `nl_menu` (`id`, `parent_id`, `title`, `name`, `path`, `component`, `icon`, `type`, `permission`, `visible`, `menu_area`, `status`, `sort`, `created_at`, `updated_at`)
VALUES
(1, 0, '控制台', 'Dashboard', '/dashboard', 'Dashboard', 'dashboard', 2, 'dashboard:view', 1, 1, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(2, 0, '官网运营', 'Site', '/site', 'Layout', 'global', 1, 'site:view', 1, 1, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(21, 2, '页面模块', 'SiteSections', '/site/sections', 'SiteSections', 'blocks', 2, 'site:section:view', 1, 2, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(22, 2, '咨询线索', 'SiteLeads', '/site/leads', 'SiteLeads', 'message', 2, 'site:lead:view', 1, 2, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(3, 0, '商业化', 'Commerce', '/commerce', 'Layout', 'wallet', 1, 'commerce:view', 1, 1, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(31, 3, '套餐管理', 'PlanList', '/commerce/plans', 'PlanList', 'package', 2, 'plan:view', 1, 2, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(32, 3, '订单管理', 'OrderList', '/commerce/orders', 'OrderList', 'orders', 2, 'order:view', 1, 2, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(4, 0, '系统管理', 'System', '/system', 'Layout', 'setting', 1, 'system:view', 1, 1, 1, 4, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(41, 4, '管理员', 'AdminList', '/system/admins', 'AdminList', 'user', 2, 'admin:view', 1, 2, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(42, 4, '角色权限', 'RoleList', '/system/roles', 'RoleList', 'safety', 2, 'role:view', 1, 2, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(43, 4, '菜单管理', 'MenuList', '/system/menus', 'MenuList', 'menu', 2, 'menu:view', 1, 2, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `title` = VALUES(`title`), `updated_at` = UNIX_TIMESTAMP();
INSERT INTO `nl_saas_plan` (`id`, `code`, `name`, `description`, `monthly_fee`, `yearly_fee`, `recommended`, `status`, `sort`, `created_at`, `updated_at`)
VALUES
(1, 'starter', '基础版', '适合单店诊所快速上线线上预约和基础经营管理', 19900, 199000, 0, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(2, 'growth', '增长版', '适合需要推广员获客医生协同和经营分析的成长型诊所', 39900, 399000, 1, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(3, 'enterprise', '连锁版', '适合连锁门店和需要深度配置的诊所集团', 89900, 899000, 0, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `updated_at` = UNIX_TIMESTAMP();
INSERT INTO `nl_saas_plan_feature` (`id`, `plan_id`, `name`, `value`, `highlight`, `status`, `sort`, `created_at`, `updated_at`)
VALUES
(1, 1, '患者端小程序', '基础预约与提醒', 1, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(2, 1, 'PC后台', '线索与订单管理', 1, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(3, 1, '账号数量', '5个员工账号', 0, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(4, 2, '四端小程序', '患者端医生端老板端推广员端', 1, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(5, 2, '经营看板', '收入转化复购分析', 1, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(6, 2, '账号数量', '20个员工账号', 0, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(7, 3, '多门店能力', '预留连锁门店扩展', 1, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(8, 3, '专属服务', '部署辅导和运营顾问', 1, 1, 2, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(9, 3, '账号数量', '不限账号数量', 0, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = UNIX_TIMESTAMP();
-- 官网 CMS 扩展页面 GSO/GEO素材招聘站点配置
ALTER TABLE `nl_site_page` ADD COLUMN `gso_content` json DEFAULT NULL COMMENT 'GSO/GEO生成式搜索优化内容JSON' AFTER `seo_description`;
CREATE TABLE IF NOT EXISTS `nl_site_media` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '素材ID',
`media_type` varchar(32) NOT NULL DEFAULT '' COMMENT '素材类型 logo标志 favicon站点图标 page_image页面图片 share_image分享图 job_image招聘图',
`group_code` varchar(64) NOT NULL DEFAULT '' COMMENT '素材分组编码',
`title` varchar(128) NOT NULL DEFAULT '' COMMENT '素材标题',
`url` varchar(500) NOT NULL DEFAULT '' COMMENT '素材地址',
`alt` varchar(255) NOT NULL DEFAULT '' COMMENT '图片替代文本',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0禁用 1启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_media_type` (`media_type`) USING BTREE,
KEY `idx_group_code` (`group_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='官网素材表';
CREATE TABLE IF NOT EXISTS `nl_recruit_job` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '职位ID',
`title` varchar(128) NOT NULL DEFAULT '' COMMENT '职位名称',
`department` varchar(64) NOT NULL DEFAULT '' COMMENT '所属部门',
`job_type` varchar(32) NOT NULL DEFAULT '' COMMENT '职位类型',
`city` varchar(64) NOT NULL DEFAULT '' COMMENT '工作城市',
`salary` varchar(64) NOT NULL DEFAULT '' COMMENT '薪资范围',
`experience` varchar(64) NOT NULL DEFAULT '' COMMENT '经验要求',
`description` varchar(1000) NOT NULL DEFAULT '' COMMENT '职位描述',
`requirements` json NOT NULL COMMENT '岗位要求JSON',
`manager` varchar(32) NOT NULL DEFAULT '' COMMENT '招聘负责人',
`manager_title` varchar(64) NOT NULL DEFAULT '' COMMENT '负责人职位',
`email` varchar(128) NOT NULL DEFAULT '' COMMENT '投递邮箱',
`phone` varchar(32) NOT NULL DEFAULT '' COMMENT '联系电话',
`featured` tinyint NOT NULL DEFAULT '0' COMMENT '是否重点招聘 0 1',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 0下架 1上架',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`created_at` int NOT NULL DEFAULT '0' COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT '0' COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_department` (`department`) USING BTREE,
KEY `idx_status_sort` (`status`,`sort`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='招聘职位表';
INSERT INTO `nl_system_config` (`config_key`, `config_value`, `desc`, `status`, `created_at`, `updated_at`)
VALUES
('site_title', '萧康云医官网', '站点标题', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('site_logo', '/src/assets/images/logo.png', '站点LOGO', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('site_favicon', '/favicon.ico', '站点favicon图标', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('site_seo', '{"title":"萧康云医官网","keywords":"诊所SaaS,云医,诊所管理","description":"萧康云医为诊所提供全链路经营赋能。"}', '默认SEO配置JSON', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('site_gso', '{"brand":"萧康云医","summary":"诊所赋能SaaS平台","services":["患者端","医生端","老板端","推广员端","PC后台"]}', '默认GSO/GEO配置JSON', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('amap_key', '', '高德地图Key', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
('amap_security_code', '', '高德地图安全密钥', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `config_value` = VALUES(`config_value`), `updated_at` = UNIX_TIMESTAMP();
INSERT INTO `nl_menu` (`id`, `parent_id`, `title`, `name`, `path`, `component`, `icon`, `type`, `permission`, `visible`, `menu_area`, `status`, `sort`, `created_at`, `updated_at`)
VALUES
(23, 2, '图片管理', 'SiteMedia', '/site/media', 'SiteMedia', 'image', 2, 'site:media:view', 1, 2, 1, 3, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(24, 2, '招聘管理', 'RecruitJobs', '/site/jobs', 'RecruitJobs', 'briefcase', 2, 'site:job:view', 1, 2, 1, 4, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(25, 2, '站点设置', 'SiteSettings', '/site/settings', 'SiteSettings', 'setting', 2, 'site:settings:view', 1, 2, 1, 5, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `title` = VALUES(`title`), `updated_at` = UNIX_TIMESTAMP();