初始化

This commit is contained in:
2026-07-18 05:58:41 +08:00
commit e4b95eb05e
69 changed files with 2289 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: template-single
labels:
app: template-single
spec:
replicas: 1
selector:
matchLabels:
app: template-single
template:
metadata:
labels:
app: template-single
spec:
containers:
- name : main
image: template-single
imagePullPolicy: Always

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: template-single
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8000
selector:
app: template-single

View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: template-single-configmap
data:
config.yaml: |
server:
address: ":8000"
openapiPath: "/api.json"
swaggerPath: "/swagger"
logger:
level : "all"
stdout: true

View File

@@ -0,0 +1,10 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: template-single
spec:
template:
spec:
containers:
- name : main
image: template-single:develop

View File

@@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
- configmap.yaml
patchesStrategicMerge:
- deployment.yaml
namespace: default

View File

@@ -0,0 +1,16 @@
FROM loads/alpine:3.8
###############################################################################
# INSTALLATION
###############################################################################
ENV WORKDIR /app
ADD resource $WORKDIR/
ADD ./temp/linux_amd64/main $WORKDIR/main
RUN chmod +x $WORKDIR/main
###############################################################################
# START
###############################################################################
WORKDIR $WORKDIR
CMD ./main

View File

@@ -0,0 +1,8 @@
#!/bin/bash
# This shell is executed before docker build.

0
manifest/i18n/.gitkeep Normal file
View File

View File

View File

@@ -0,0 +1,371 @@
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();