初始化

缺陷:主题配色需要优化整体的同风格
This commit is contained in:
2026-08-14 23:21:21 +08:00
parent 6e2769c528
commit bcf54c2727
152 changed files with 13521 additions and 141 deletions

View File

@@ -14,6 +14,12 @@
Date: 23/01/2026 17:08:01
*/
/*
注意:本文件是全新安装脚本,每张 nl_ 表都带 DROP TABLE。
账号与角色迁移完成后再执行会清空已迁移的管理员和角色,请勿在已投产的库上重跑。
只涉及 nl_ 前缀的系统表,同库的 cc_ 业务表不受影响。
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
@@ -27,10 +33,13 @@ CREATE TABLE `nl_admin` (
`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 '密码',
`legacy_password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '老系统无盐sha1密码登录成功后清空',
`legacy_password_expire_at` int NOT NULL DEFAULT 0 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 '角色',
`department_id` int NOT NULL DEFAULT 0 COMMENT '所属部门ID对应 cc_department.id',
`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',
@@ -39,17 +48,30 @@ CREATE TABLE `nl_admin` (
`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禁用',
`status` tinyint NOT NULL DEFAULT 0 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
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '管理员表' ROW_FORMAT = DYNAMIC;
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_phone`(`phone` ASC) USING BTREE,
INDEX `idx_role`(`role_id` ASC, `deleted_at` ASC) USING BTREE,
INDEX `idx_department`(`department_id` ASC, `deleted_at` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 171 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '管理员表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_admin
-- ----------------------------
INSERT INTO `nl_admin` VALUES (1, 'nl_28686ad68682180e26836c721a52', '', '超管', '$2y$12$FXKlnItms3NoCLsJKQyVa.03kuRq8ltzdmc.ksf7rLKKPfGznpjnu', '15100000000', 'workerqi@163.com', '517117', 1, 0, 0, 0, 0, '127.0.0.1', '[\"127.0.0.1\"]', '0', '', 1, 0, 1747026536, 0);
-- id=1 系统超管bcrypt其余为 cc_user 迁移id=老id+100密码进 legacy_password
-- 跳过phone 非 11 位id 30/39/66/67/68/70、与超管撞号 15100000000id 51
-- status 必须为 00正常 1禁用legacy 过期约 2026-11-12安装日起 90 天)
INSERT INTO `nl_admin` VALUES (1, 'nl_28686ad68682180e26836c721a52', '', '超管', '$2y$12$FXKlnItms3NoCLsJKQyVa.03kuRq8ltzdmc.ksf7rLKKPfGznpjnu', '', 0, '15100000000', 'workerqi@163.com', '517117', 1, 0, 0, 0, 0, 0, '127.0.0.1', '[\"127.0.0.1\"]', '0', '', 0, 0, 1747026536, 0);
INSERT INTO `nl_admin` VALUES (101, 'nl_mig000000000000000000000001', 'https://www.nailaoyun.cn/upload/R-C.png', '王二狗', '', 'ec650f6add68310c8120af969afe074ef35681aa', 1794441600, '15110873723', 'workerqi1@163.com', '', 101, 1, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#1 account=cc_3TuS4qoE0g1K20240491679] cs123111', 0, 1712660865, 1776144272, 0);
INSERT INTO `nl_admin` VALUES (119, 'nl_mig000000000000000000000013', 'https://www.nailaoyun.cn/upload/R-C.png', '林国朋', '', '541ab6a364236754d7c84e134a3c944303bc1621', 1794441600, '15626165388', '734593134@qq.com', '', 102, 1, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#19 account=cc_yPjIvucyoqTM2024106088X] 管理员账号', 0, 1728315965, 1781754211, 0);
INSERT INTO `nl_admin` VALUES (135, 'nl_mig000000000000000000000023', 'https://www.nailaoyun.cn/upload/R-C.png', '测试业务员', '', '7dbd69aaf8c211ea8b2702651bf8612567a724c9', 1794441600, '15110811111', 'workerqi@163.com', '', 123, 15, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#35 account=cc_9Aj9LgG36zwX20241061834] 123', 0, 1729470521, 0, 0);
INSERT INTO `nl_admin` VALUES (160, 'nl_mig00000000000000000000003c', 'https://www.nailaoyun.cn/upload/R-C.png', '莫海琴', '', 'acff09fac846a5c140f2fb314bac980793e991bc', 1794441600, '15018054745', '15018054745', '', 123, 15, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#60 account=cc_lx7r8QGGAoLN20260319600]', 0, 1772502022, 1773368699, 0);
INSERT INTO `nl_admin` VALUES (161, 'nl_mig00000000000000000000003d', 'https://www.nailaoyun.cn/upload/R-C.png', '王娇瑜', '', 'd8b53d4b0234105489ee64b553f478502cc93ef4', 1794441600, '18924693886', '18924693886', '', 123, 15, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#61 account=cc_1Fi89gWXDvT320260338347]', 0, 1772528112, 1773368674, 0);
INSERT INTO `nl_admin` VALUES (163, 'nl_mig00000000000000000000003f', 'https://www.nailaoyun.cn/upload/R-C.png', '林国比', '', 'a1e511650d60f7fa3673c6308654f7b7d4405672', 1794441600, '17811563575', '', '', 126, 16, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#63 account=cc_nQn2TyAfZWcg20260320421]', 0, 1773368558, 1783925179, 0);
INSERT INTO `nl_admin` VALUES (164, 'nl_mig000000000000000000000040', 'https://www.nailaoyun.cn/upload/R-C.png', '王如渊', '', '04061e84b7eb069ebf6cc47633f5fc24d147e3af', 1794441600, '18520478342', '18520478342', '', 123, 15, 0, 0, 0, 0, '0', '[]', '0', '[migrated:cc_user#64 account=cc_KuFpw5zeTgSx20260364658]', 0, 1773457968, 1773458184, 0);
-- ----------------------------
-- Table structure for nl_admin_notice
@@ -147,25 +169,65 @@ CREATE TABLE `nl_database_change_log` (
-- ----------------------------
-- ----------------------------
-- Table structure for nl_file
-- Table structure for nl_file(素材库主表)
-- 与 database/migrations/2026_08_13_000003_extend_file_table_for_material.php 等价,
-- 两条路都做了存在性判断,先跑哪个都行
-- ----------------------------
DROP TABLE IF EXISTS `nl_file`;
CREATE TABLE `nl_file` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` int NOT NULL DEFAULT 0 COMMENT '用户ID',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '文件地址',
`type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '文件类型 0图片 1视频 2音频 3excel 4压缩包 ',
`source` tinyint(1) NOT NULL DEFAULT 0 COMMENT '来源 0后台 1用户端',
`oss_config_id` int NOT NULL DEFAULT 0 COMMENT '所属存储配置 nl_oss_config.id0 表示未知',
`folder_id` int NOT NULL DEFAULT 0 COMMENT '素材文件夹 nl_file_folder.id0 根目录',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '素材名称',
`url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '文件地址',
`path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '对象键,已去掉处理参数',
`ext` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '扩展名,小写不带点',
`type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '文件类型 0图片 1视频 2音频 3excel 4压缩包 5文档 6其他',
`size` bigint NOT NULL DEFAULT 0 COMMENT '字节数',
`width` int NOT NULL DEFAULT 0 COMMENT '图片宽,非图片为 0',
`height` int NOT NULL DEFAULT 0 COMMENT '图片高,非图片为 0',
`hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '内容哈希 / ETag',
`ref_count` int NOT NULL DEFAULT 0 COMMENT '引用次数,由引用扫描回填',
`last_scan_at` int NOT NULL DEFAULT 0 COMMENT '最后一次引用扫描时间0 表示从未扫描过',
`source` tinyint(1) NOT NULL DEFAULT 0 COMMENT '来源 0上传 1OSS拉取',
`created_at` int NOT NULL COMMENT '上传时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
PRIMARY KEY (`id`) USING BTREE,
INDEX `nl_file_path_index`(`path` ASC) USING BTREE,
INDEX `nl_file_hash_index`(`hash` ASC) USING BTREE,
INDEX `nl_file_folder_id_index`(`folder_id` ASC) USING BTREE,
INDEX `nl_file_ref_count_index`(`ref_count` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 84 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_file
-- ----------------------------
-- ----------------------------
-- Table structure for nl_file_folder素材文件夹
-- 只做素材的逻辑归类,不影响对象在 OSS 上的实际路径:
-- 移动素材若跟着改对象键,历史地址会全部 404
-- ----------------------------
DROP TABLE IF EXISTS `nl_file_folder`;
CREATE TABLE `nl_file_folder` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`pid` int NOT NULL DEFAULT 0 COMMENT '上级文件夹0 根目录',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '文件夹名称',
`sort` int NOT NULL DEFAULT 0 COMMENT '排序,越小越靠前',
`status` tinyint(1) NOT NULL DEFAULT 0 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,
INDEX `nl_file_folder_pid_index`(`pid` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '素材文件夹表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_file_folder
-- ----------------------------
-- ----------------------------
-- Table structure for nl_menu
-- ----------------------------
@@ -192,11 +254,13 @@ CREATE TABLE `nl_menu` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 164 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_menu
-- ----------------------------
-- 1~11 脚手架12 部门100+ 来自 config/lgp_menu.php与 lgp:menu-sync 口径一致)
-- keep_alive0=开启缓存 1=关闭affix_tab0=固定 1=不固定(输出到前端 meta 时取反)
INSERT INTO `nl_menu` VALUES (1, '概览', 'twemoji:house-with-garden', 'Dashboard', '/dashobard', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, -1, '', 1734485082, 1734486088, 0);
INSERT INTO `nl_menu` VALUES (2, '分析页', 'lucide:area-chart', 'Analytics', '/analytics', '/dashboard/analytics/index', '', 1, 0, 0, '', 0, 0, '', 1, 0, '', 1734485206, 1734485814, 0);
INSERT INTO `nl_menu` VALUES (3, '工作台', 'carbon:workspace', 'Workspace', '/workspace', '/dashboard/workspace/index', '', 1, 0, 1, '', 0, 0, '', 1, 0, '', 1734486030, 0, 0);
@@ -205,9 +269,39 @@ INSERT INTO `nl_menu` VALUES (5, '基础管理', 'logos:openjs-foundation-icon',
INSERT INTO `nl_menu` VALUES (6, '管理员管理', 'grommet-icons:user-admin', 'SystemUser', '/system/user', '/system/admin/index', '', 1, 0, 1, '', 0, 0, '', 5, 0, '', 1734486178, 0, 0);
INSERT INTO `nl_menu` VALUES (7, '角色管理', 'carbon:user-role', 'SystemRole', '/system/role', '/system/role/index', '', 1, 0, 1, '', 0, 0, '', 5, 1, '', 1734486291, 1734489429, 0);
INSERT INTO `nl_menu` VALUES (8, '菜单管理', 'line-md:menu', 'SystemMenu', '/system/menu', '/system/menu/index', '', 1, 0, 1, '', 0, 0, '', 5, 2, '', 1734486345, 0, 0);
INSERT INTO `nl_menu` VALUES (9, '代码生成', 'fluent-color:code-20', 'CodeGeneration', '/code-generation', '/code-generation/index', '', 1, 0, 1, '', 0, 0, '', 0, 99999999, '', 0, 0, 0);
INSERT INTO `nl_menu` VALUES (9, '代码生成', 'lucide:wand-sparkles', 'CodeGeneration', '/code-generation', '/code-generation/index', '', 1, 0, 1, '', 0, 0, '', 0, 800, '', 0, 0, 0);
INSERT INTO `nl_menu` VALUES (10, '数据库管理', 'material-symbols:database', 'SystemDatabase', '/system/database', '/system/database/index', '', 1, 0, 1, '', 0, 0, '', 5, 3, '', 1734486345, 0, 0);
INSERT INTO `nl_menu` VALUES (11, '系统配置', 'lucide:settings-2', 'SystemConfig', '/system/config', '/system/config/index', '', 1, 0, 1, '', 0, 0, '', 5, 50, '', 1786329600, 0, 0);
INSERT INTO `nl_menu` VALUES (12, '部门管理', 'lucide:network', 'SystemDepartment', '/system/department', '/system/department/index', '', 1, 0, 1, '', 0, 0, '', 5, 4, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (100, '商品中心', 'lucide:sofa', 'Goods', '/goods', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 100, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (101, '商品图册', 'lucide:book-image', 'GoodsCatalogue', '/goods/catalogue', '/goods/catalogue/index', '', 1, 0, 1, '', 0, 0, '', 100, 0, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (102, '商品分类', 'lucide:folder-tree', 'GoodsCategory', '/goods/category', '/goods/category/index', '', 1, 0, 1, '', 0, 0, '', 100, 1, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (103, '规格报价', 'lucide:ruler', 'GoodsPriceSheet', '/goods/price-sheet', '/goods/price-sheet/index', '', 1, 0, 1, '', 0, 0, '', 100, 2, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (104, '商品相册', 'lucide:images', 'GoodsImage', '/goods/image', '/goods/image/index', '', 1, 0, 1, '', 0, 0, '', 100, 3, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (105, '轮播图', 'lucide:gallery-horizontal', 'GoodsCarousel', '/goods/carousel', '/goods/carousel/index', '', 1, 0, 1, '', 0, 0, '', 100, 4, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (106, '报价单', 'lucide:file-text', 'GoodsQuote', '/goods/quote', '/goods/quote/index', '', 1, 0, 1, '', 0, 0, '', 100, 5, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (110, '工厂产品', 'lucide:factory', 'Factory', '/factory', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 200, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (111, '工厂管理', 'lucide:building-2', 'FactoryInfo', '/factory/info', '/factory/info/index', '', 1, 0, 1, '', 0, 0, '', 110, 0, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (112, '工厂分类', 'lucide:tags', 'FactoryClass', '/factory/class', '/factory/class/index', '', 1, 0, 1, '', 0, 0, '', 110, 1, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (113, '工厂产品图片', 'lucide:image-plus', 'FactoryImage', '/factory/image', '/factory/image/index', '', 1, 0, 1, '', 0, 0, '', 110, 2, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (120, '色卡管理', 'lucide:palette', 'Color', '/color', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 300, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (121, '公司管理', 'lucide:landmark', 'ColorCompany', '/color/company', '/color/company/index', '', 1, 0, 1, '', 0, 0, '', 120, 0, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (122, '色卡分类', 'lucide:layers', 'ColorCardClass', '/color/card-class', '/color/card-class/index', '', 1, 0, 1, '', 0, 0, '', 120, 1, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (123, '色卡列表', 'lucide:swatch-book', 'ColorCard', '/color/card', '/color/card/index', '', 1, 0, 1, '', 0, 0, '', 120, 2, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (130, '客户中心', 'lucide:users', 'Customer', '/customer', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 400, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (131, '微信用户', 'ic:baseline-wechat', 'CustomerWxUser', '/customer/wx-user', '/customer/wx-user/index', '', 1, 0, 1, '', 0, 0, '', 130, 0, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (135, '经销商管理', 'lucide:handshake', 'CustomerDealer', '/customer/dealer', '/customer/dealer/index', '', 1, 0, 1, '', 0, 0, '', 130, 1, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (132, '企业管理', 'lucide:building', 'CustomerEnterprise', '/customer/enterprise', '/customer/enterprise/index', '', 1, 0, 1, '', 0, 0, '', 130, 2, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (133, '清单管理', 'lucide:clipboard-list', 'CustomerList', '/customer/list', '/customer/list/index', '', 1, 0, 1, '', 0, 0, '', 130, 3, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (134, '订单管理', 'lucide:receipt-text', 'CustomerOrder', '/customer/order', '/customer/order/index', '', 1, 0, 1, '', 0, 0, '', 130, 4, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (140, '素材库', 'lucide:folder-open', 'Material', '/material', '/material/index', '', 1, 0, 1, '', 0, 0, '', 0, 500, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (150, '小程序', 'lucide:smartphone', 'Wx', '/wx', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 600, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (151, '装修模板', 'lucide:paintbrush', 'WxTemplate', '/wx/template', '/wx/template/index', '', 1, 0, 1, '', 0, 0, '', 150, 0, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (152, '应用配置', 'lucide:settings-2', 'WxApp', '/wx/app', '/wx/app/index', '', 1, 0, 1, '', 0, 0, '', 150, 1, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (160, '内容创作', 'lucide:newspaper', 'Media', '/media', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 700, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (161, '公众号账号', 'ic:baseline-wechat', 'MediaWechatAccount', '/media/wechat-account', '/media/wechat-account/index', '', 1, 0, 1, '', 0, 0, '', 160, 0, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (162, '图文创作', 'lucide:file-pen-line', 'MediaWechatArticle', '/media/wechat-article', '/media/wechat-article/index', '', 1, 0, 1, '', 0, 0, '', 160, 1, '', 1786636800, 0, 0);
INSERT INTO `nl_menu` VALUES (163, '图文编辑器', 'lucide:file-pen-line', 'MediaWechatArticleEdit', '/media/wechat-article/editor', '/media/wechat-article/editor/index', '', 1, 1, 1, '', 0, 0, '', 160, 2, '', 1786636800, 0, 0);
-- ----------------------------
-- Table structure for nl_role
@@ -219,16 +313,23 @@ CREATE TABLE `nl_role` (
`value` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色值',
`pid` int NOT NULL DEFAULT 0 COMMENT '上级角色',
`desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '角色说明',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`color` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' 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
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 127 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_role
-- ----------------------------
INSERT INTO `nl_role` VALUES (1, '超级管理员', 'admin', 0, '', 0, 0, 0);
-- id=1 系统超管(代码硬判断全量放行);其余 = 老 cc_role.id + 100
INSERT INTO `nl_role` VALUES (1, '超级管理员', 'admin', 0, '', 0, '', 0, 0, 0);
INSERT INTO `nl_role` VALUES (101, '超级管理员', 'role_1', 0, '[migrated:cc_role#1] 作为系统或团队的终极管理者,超级管理员享有最高级别的权限和责任。他们负责制定和执行长期战略计划,监督和管理所有下属角色,确保整个团队的高效运作和目标的达成。金色标签象征着尊贵和权威,与超级管理员的职位相匹配。', 0, 'gold', 1712671937, 1745540892, 0);
INSERT INTO `nl_role` VALUES (102, '林国朋专用管理', 'role_2', 0, '[migrated:cc_role#2] 拥有系统或团队的至高权限,负责维护整个系统的稳定运行、数据安全和策略制定。超级管理员能够对系统进行全面的监控和管理,解决各种复杂问题,确保团队工作的顺利进行。', 0, '', 1712671937, 1746596976, 0);
INSERT INTO `nl_role` VALUES (123, '业务员', 'role_23', 0, '[migrated:cc_role#23] 业务人员', 0, '', 1727269523, 1729433224, 0);
INSERT INTO `nl_role` VALUES (126, '管理员号', 'role_26', 0, '[migrated:cc_role#26] 内部人员管理', 0, '', 1728900873, 1783925228, 0);
-- ----------------------------
-- Table structure for nl_role_menu_relations
@@ -240,11 +341,12 @@ CREATE TABLE `nl_role_menu_relations` (
`menu_id` int NOT NULL DEFAULT 0 COMMENT '菜单ID',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色权限绑定表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 200 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色权限绑定表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_role_menu_relations
-- ----------------------------
-- 角色 1/101/102/126全部菜单角色 123 业务员:业务菜单(不含基础管理/代码生成/内容创作)
INSERT INTO `nl_role_menu_relations` VALUES (1, 1, 1, 1747033198);
INSERT INTO `nl_role_menu_relations` VALUES (2, 1, 2, 1747033198);
INSERT INTO `nl_role_menu_relations` VALUES (3, 1, 3, 1747033198);
@@ -256,6 +358,69 @@ INSERT INTO `nl_role_menu_relations` VALUES (8, 1, 8, 1747033198);
INSERT INTO `nl_role_menu_relations` VALUES (9, 1, 9, 1747033198);
INSERT INTO `nl_role_menu_relations` VALUES (10, 1, 10, 1747033198);
INSERT INTO `nl_role_menu_relations` VALUES (11, 1, 11, 1786329600);
INSERT INTO `nl_role_menu_relations` VALUES (12, 1, 12, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (13, 1, 100, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (14, 1, 101, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (15, 1, 102, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (16, 1, 103, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (17, 1, 104, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (18, 1, 105, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (19, 1, 106, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (20, 1, 110, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (21, 1, 111, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (22, 1, 112, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (23, 1, 113, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (24, 1, 120, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (25, 1, 121, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (26, 1, 122, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (27, 1, 123, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (28, 1, 130, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (29, 1, 131, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (41, 1, 135, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (30, 1, 132, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (31, 1, 133, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (32, 1, 134, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (33, 1, 140, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (34, 1, 150, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (35, 1, 151, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (36, 1, 152, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (37, 1, 160, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (38, 1, 161, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (39, 1, 162, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (40, 1, 163, 1786636800);
-- 迁入角色 101/102/126 绑全部(与超管同权,菜单可见;接口授权另走 endpoint
INSERT INTO `nl_role_menu_relations` SELECT NULL, 101, menu_id, 1786636800 FROM nl_role_menu_relations WHERE role_id = 1;
INSERT INTO `nl_role_menu_relations` SELECT NULL, 102, menu_id, 1786636800 FROM nl_role_menu_relations WHERE role_id = 1;
INSERT INTO `nl_role_menu_relations` SELECT NULL, 126, menu_id, 1786636800 FROM nl_role_menu_relations WHERE role_id = 1;
-- 业务员 123概览 + 业务模块
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 1, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 2, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 3, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 100, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 101, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 102, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 103, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 104, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 105, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 106, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 110, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 111, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 112, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 113, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 120, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 121, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 122, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 123, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 130, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 131, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 135, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 132, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 133, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 134, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 140, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 150, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 151, 1786636800);
INSERT INTO `nl_role_menu_relations` VALUES (NULL, 123, 152, 1786636800);
-- ----------------------------
-- Table structure for nl_system_config
@@ -549,4 +714,165 @@ CREATE TABLE `nl_login_log` (
INDEX `idx_created_at`(`created_at` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '登录日志' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for nl_wechat_account
-- ----------------------------
DROP TABLE IF EXISTS `nl_wechat_account`;
CREATE TABLE `nl_wechat_account` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '公众号名称',
`appid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '公众号 AppID',
`app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT 'AppSecretAES 密文(前缀 nl_ase_256_永不回显明文',
`original_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '公众号原始ID',
`is_default` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否默认发布账号 0否1是全局仅一个',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '1启用0禁用',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '备注',
`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 '删除时间0表示未删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_appid`(`appid` ASC, `deleted_at` ASC) USING BTREE,
INDEX `idx_default`(`is_default` ASC, `status` ASC, `deleted_at` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '公众号账号配置表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for nl_wechat_article
-- ----------------------------
DROP TABLE IF EXISTS `nl_wechat_article`;
CREATE TABLE `nl_wechat_article` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`account_id` int NOT NULL DEFAULT 0 COMMENT '发布所用公众号账号ID',
`title` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '文章标题,发布时截断 64 字',
`author` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '作者',
`digest` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '摘要,发布时截断 120 字',
`cover_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '封面图地址',
`content_md` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '正文 Markdown 源码,可能数百 KB列表接口不查此字段',
`theme_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '排版主题标识',
`theme_color` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '主题主色 HEX',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0草稿 1发布中 2已发布 3发布失败',
`version_no` int NOT NULL DEFAULT 1 COMMENT '当前版本号,每次编辑 +1',
`media_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '微信侧草稿 media_id',
`article_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '发布成功后的文章链接',
`publish_error` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '发布失败原因',
`created_by` int NOT NULL DEFAULT 0 COMMENT '创建人管理员ID',
`updated_by` int NOT NULL DEFAULT 0 COMMENT '最后修改人管理员ID',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间0表示未删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_account_status`(`account_id` ASC, `status` ASC, `deleted_at` ASC) USING BTREE,
INDEX `idx_deleted_at`(`deleted_at` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '公众号图文文章表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for nl_wechat_article_version
-- ----------------------------
DROP TABLE IF EXISTS `nl_wechat_article_version`;
CREATE TABLE `nl_wechat_article_version` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`article_id` int NOT NULL DEFAULT 0 COMMENT '文章ID',
`version_no` int NOT NULL DEFAULT 0 COMMENT '版本号快照',
`action` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1创建 2修改 3删除 4回退 5发布',
`title` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '标题快照',
`digest` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '摘要快照',
`content_md` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '正文快照',
`theme_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '主题标识快照',
`theme_color` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '主题主色快照',
`operator_id` int NOT NULL DEFAULT 0 COMMENT '操作人管理员ID',
`operator_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '操作人昵称快照',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '备注',
`created_at` int NOT NULL DEFAULT 0 COMMENT '产生时间。日志型表,无 updated_at / deleted_at',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_article_version`(`article_id` ASC, `version_no` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '公众号图文版本流水表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for nl_wechat_theme
-- ----------------------------
DROP TABLE IF EXISTS `nl_wechat_theme`;
CREATE TABLE `nl_wechat_theme` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '模板名称',
`palette` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '色板 JSON最多 8 个 HEX',
`styles` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '样式表 JSON仅白名单元素键',
`created_by` int NOT NULL DEFAULT 0 COMMENT '导入人管理员ID',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间0表示未删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_deleted_at`(`deleted_at` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '公众号自定义排版主题表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_api_endpoint公众号模块
-- ----------------------------
INSERT INTO `nl_api_endpoint` (`url`, `method`, `name`, `description`, `controller`, `is_log`, `status`, `created_at`, `updated_at`, `deleted_at`) VALUES
('wechat-account/list', 1, '公众号账号列表', '账号配置分页', 'WechatAccountController', 0, 1, 1786329600, 0, 0),
('wechat-account/option', 1, '公众号账号下拉', '启用账号选项', 'WechatAccountController', 0, 1, 1786329600, 0, 0),
('wechat-account/detail', 1, '公众号账号详情', '账号配置详情', 'WechatAccountController', 0, 1, 1786329600, 0, 0),
('wechat-account/create', 2, '创建公众号账号', '新增账号配置', 'WechatAccountController', 1, 1, 1786329600, 0, 0),
('wechat-account/update', 2, '更新公众号账号', '编辑账号配置', 'WechatAccountController', 1, 1, 1786329600, 0, 0),
('wechat-account/delete', 2, '删除公众号账号', '软删账号配置', 'WechatAccountController', 1, 1, 1786329600, 0, 0),
('wechat-account/set-default', 2, '设为默认账号', '切换默认发布账号', 'WechatAccountController', 1, 1, 1786329600, 0, 0),
('wechat-account/test-connection', 2, '测试公众号连通性', '直连微信换 token 验证', 'WechatAccountController', 1, 1, 1786329600, 0, 0),
('wechat-article/list', 1, '图文列表', '图文文章分页', 'WechatArticleController', 0, 1, 1786329600, 0, 0),
('wechat-article/detail', 1, '图文详情', '含正文全文', 'WechatArticleController', 0, 1, 1786329600, 0, 0),
('wechat-article/create', 2, '创建图文', '新增图文并落 v1 流水', 'WechatArticleController', 1, 1, 1786329600, 0, 0),
('wechat-article/update', 2, '更新图文', '版本号+1 并落流水', 'WechatArticleController', 1, 1, 1786329600, 0, 0),
('wechat-article/delete', 2, '删除图文', '软删并落流水', 'WechatArticleController', 1, 1, 1786329600, 0, 0),
('wechat-article/version-list', 1, '图文版本流水', '版本流水分页', 'WechatArticleController', 0, 1, 1786329600, 0, 0),
('wechat-article/version-detail', 1, '图文版本详情', '单版本正文快照', 'WechatArticleController', 0, 1, 1786329600, 0, 0),
('wechat-article/rollback', 2, '图文版本回退', '回退到指定版本', 'WechatArticleController', 1, 1, 1786329600, 0, 0),
('wechat-article/publish', 2, '发布图文', '推送到公众号草稿箱', 'WechatArticleController', 1, 1, 1786329600, 0, 0),
('wechat-article/publish-status', 1, '查询发布状态', '回填发布结果', 'WechatArticleController', 0, 1, 1786329600, 0, 0),
('wechat-theme/list', 1, '排版主题列表', '自定义模板全量列表', 'WechatThemeController', 0, 1, 1786329600, 0, 0),
('wechat-theme/create', 2, '导入排版主题', '模板 JSON 清洗入库', 'WechatThemeController', 1, 1, 1786329600, 0, 0),
('wechat-theme/update', 2, '更新排版主题', '整体覆盖模板', 'WechatThemeController', 1, 1, 1786329600, 0, 0),
('wechat-theme/delete', 2, '删除排版主题', '软删自定义模板', 'WechatThemeController', 1, 1, 1786329600, 0, 0);
-- ----------------------------
-- Table structure for nl_role_endpoint_relation接口级权限
-- 与 database/migrations 里的同名迁移等价,两条路都做了存在性判断,先跑哪个都行
-- ----------------------------
DROP TABLE IF EXISTS `nl_role_endpoint_relation`;
CREATE TABLE `nl_role_endpoint_relation` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`role_id` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '角色ID',
`endpoint_id` int UNSIGNED NOT NULL DEFAULT 0 COMMENT 'nl_api_endpoint 主键',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_role_endpoint`(`role_id` ASC, `endpoint_id` ASC) USING BTREE,
INDEX `idx_endpoint`(`endpoint_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色接口授权表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for nl_wx_app小程序应用配置
-- 与 database/migrations/2026_08_13_000005_create_wx_app_table.php 等价;
-- migrate 内有 hasTable 幂等,先跑本 SQL 再 migrate 安全
-- AppSecret 等敏感字段由后台加密入库,不要在本文件写明文密钥
-- ----------------------------
DROP TABLE IF EXISTS `nl_wx_app`;
CREATE TABLE `nl_wx_app` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT,
`code` varchar(20) NOT NULL DEFAULT '' COMMENT '品牌标识 brm/wl',
`name` varchar(50) NOT NULL DEFAULT '',
`app_id` varchar(50) NOT NULL DEFAULT '',
`app_secret` varchar(255) NOT NULL DEFAULT '' COMMENT '密文存储',
`mch_id` varchar(50) NOT NULL DEFAULT '' COMMENT '微信支付商户号',
`mch_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'APIv3 密钥,密文存储',
`mch_serial_no` varchar(100) NOT NULL DEFAULT '' COMMENT '商户证书序列号',
`mch_private_key` text NULL COMMENT '商户私钥,密文存储',
`platform_public_key` text NULL COMMENT '微信支付平台证书公钥',
`notify_url` varchar(255) NOT NULL DEFAULT '' COMMENT '支付回调地址',
`template_code` varchar(50) NOT NULL DEFAULT '' COMMENT '默认装修模板 code',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0=启用 1=停用',
`remark` varchar(255) NOT NULL DEFAULT '',
`created_at` int NOT NULL DEFAULT 0,
`updated_at` int NOT NULL DEFAULT 0,
`deleted_at` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_wx_app_code`(`code` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '小程序应用配置' ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;