chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
@@ -0,0 +1,17 @@
-- 友情链接管理完善:软删除字段 + 后台权限种子
-- 适用:已安装(数据来自 abc.sql / 线上库)需要手动执行以下语句
-- 1) 给 wxapp_links 增加软删除时间字段(启用回收站功能)
ALTER TABLE `wxapp_links`
ADD COLUMN `delete_at` int DEFAULT NULL COMMENT '软删除时间' AFTER `update_at`;
-- 2) 补充 links 子权限(父级为 links:indexid=61
-- 注意:若你们的 user_rule 已存在同名 name,请先确认 id 不冲突再执行
INSERT INTO `wxapp_user_rule`
(`id`, `pid`, `title`, `name`, `type`, `module`, `route`, `icon`, `sort`, `status`, `create_at`, `update_at`, `delete_at`)
VALUES
(621, 61, '添加友链', 'links:add', 3, 'links/save', 'layui-icon ', 0, NULL, 1, 0, 0, 0),
(622, 61, '编辑友链', 'links:edit', 3, 'links/edit', 'layui-icon ', 0, NULL, 1, 0, 0, 0),
(623, 61, '删除友链', 'links:delete', 3, 'links/delete', 'layui-icon ', 0, NULL, 1, 0, 0, 0),
(624, 61, '友链回收站', 'links:recyclebin', 3, 'links/recyclebin', 'layui-icon ', 0, NULL, 1, 0, 0, 0),
(625, 61, '恢复友链', 'links:restore', 3, 'links/restore', 'layui-icon ', 0, NULL, 1, 0, 0, 0);
@@ -0,0 +1,75 @@
-- ============================================================
-- 远程库时间字段规范化迁移 SQL
-- 作用:把曾由错误代码(createTime='create_time')写入的
-- 旧列 create_time / update_time / delete_time
-- 重命名为规范列 create_at / update_at / delete_at
-- 并修正列类型/默认值/注释,与 install.sql 保持一致。
-- 覆盖表(前缀示例 wxapp_,执行前全部替换为线上真实前缀):
-- card, help, medal, member_medal, prop, score_log,
-- shop, sms, task, member_prop, member_task, notice
-- 说明:
-- 1) 旧列若不存在(线上已是新列名),自动跳过,不报错。
-- 2) 新列若已存在(说明之前已改过),CHANGE 会失败——故先 DROP 旧列再 ADD 新列,
-- 但为安全采用「先探测旧列是否存在」的方式。
-- 3) 本脚本幂等:重复执行安全(旧列不存在时整段跳过)。
-- ============================================================
DELIMITER //
-- 通用迁移存储过程:仅当旧列存在且新列不存在时才改
DROP PROCEDURE IF EXISTS `__migrate_time_col`//
CREATE PROCEDURE `__migrate_time_col`(
IN p_table VARCHAR(64),
IN p_old VARCHAR(64),
IN p_new VARCHAR(64),
IN p_def VARCHAR(255)
)
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = p_table
AND COLUMN_NAME = p_old
) AND NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = p_table
AND COLUMN_NAME = p_new
) THEN
SET @sql = CONCAT('ALTER TABLE `', p_table, '` CHANGE `', p_old, '` `', p_new, '` ', p_def);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END//
DROP PROCEDURE IF EXISTS `__migrate_table`//
CREATE PROCEDURE `__migrate_table`(IN p_table VARCHAR(64))
BEGIN
-- 三列全改(按各自 install.sql 定义)
CALL __migrate_time_col(p_table, 'create_time', 'create_at', "int(11) NOT NULL DEFAULT 0 COMMENT '创建时间'");
CALL __migrate_time_col(p_table, 'update_time', 'update_at', "int(11) NOT NULL DEFAULT 0 COMMENT '更新时间'");
CALL __migrate_time_col(p_table, 'delete_time', 'delete_at', "int(11) NOT NULL DEFAULT 0 COMMENT '删除时间'");
END//
DELIMITER ;
-- 逐表迁移(member_medal / member_prop / member_task 只有 create_at,无 update/delete
CALL __migrate_table('wxapp_card');
CALL __migrate_table('wxapp_help');
CALL __migrate_table('wxapp_medal');
CALL __migrate_table('wxapp_prop');
CALL __migrate_table('wxapp_shop');
CALL __migrate_table('wxapp_sms');
CALL __migrate_table('wxapp_task');
CALL __migrate_table('wxapp_notice');
CALL __migrate_table('wxapp_score_log');
-- 仅含 create_at 的表
CALL __migrate_time_col('wxapp_member_medal', 'create_time', 'create_at', "int(11) NOT NULL DEFAULT 0 COMMENT '获得时间'");
CALL __migrate_time_col('wxapp_member_prop', 'create_time', 'create_at', "int(11) NOT NULL DEFAULT '0' COMMENT '获得时间'");
CALL __migrate_time_col('wxapp_member_task', 'create_time', 'create_at', "int(11) NOT NULL DEFAULT '0' COMMENT '领取时间'");
-- 清理临时存储过程
DROP PROCEDURE IF EXISTS `__migrate_time_col`;
DROP PROCEDURE IF EXISTS `__migrate_table`;
+161
View File
@@ -0,0 +1,161 @@
-- ============================================================
-- 营运模块缺失表建表 SQL(远程库手动执行)
-- 前缀示例 wxapp_,执行前全部替换为线上真实前缀。
-- 安全:使用 CREATE TABLE IF NOT EXISTS,重复执行不报错。
-- 来源:public/install/install.sql 的规范定义。
-- 说明:sms 表 COLLATE 已统一为 utf8mb4 以兼容 MySQL 5.7+。
-- ============================================================
CREATE TABLE IF NOT EXISTS `wxapp_card` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT 0 COMMENT '兑换会员ID0未兑换)',
`batch_no` varchar(30) NOT NULL DEFAULT '' COMMENT '批量生成批次号',
`cardno` varchar(100) NOT NULL DEFAULT '' COMMENT '卡号',
`password` varchar(100) NOT NULL DEFAULT '' COMMENT '密码',
`amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '面值',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0未售1已售2已用',
`use_time` int(11) NOT NULL DEFAULT 0 COMMENT '使用时间',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`),
KEY `idx_cardno` (`cardno`),
KEY `idx_batch_no` (`batch_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='充值卡密';
CREATE TABLE IF NOT EXISTS `wxapp_prop` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '' COMMENT '道具名称',
`icon` varchar(255) NOT NULL DEFAULT '' COMMENT '图标',
`price` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '价格',
`description` text COMMENT '描述',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='道具中心';
CREATE TABLE IF NOT EXISTS `wxapp_shop` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '' COMMENT '商品名称',
`price` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '价格',
`stock` int(11) NOT NULL DEFAULT 0 COMMENT '库存',
`description` text COMMENT '描述',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电子商务';
CREATE TABLE IF NOT EXISTS `wxapp_sms` (
`id` int NOT NULL AUTO_INCREMENT,
`mobile` varchar(20) NOT NULL COMMENT '手机号',
`code` varchar(10) NOT NULL COMMENT '验证码',
`event` varchar(20) DEFAULT 'login' COMMENT '类型 login:登录 register:注册',
`times` int DEFAULT '0' COMMENT '验证次数',
`ip` varchar(50) DEFAULT NULL COMMENT '发送IP',
`create_at` int DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_mobile` (`mobile`),
KEY `idx_times` (`times`),
KEY `idx_create_at` (`create_at`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='短信日志表';
CREATE TABLE IF NOT EXISTS `wxapp_task` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '' COMMENT '任务标题',
`description` text COMMENT '任务描述',
`reward_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '奖励类型',
`reward_num` int(11) NOT NULL DEFAULT 0 COMMENT '奖励数量/道具ID',
`prop_num` int(11) NOT NULL DEFAULT 1 COMMENT '道具数量(奖励类型为道具时生效)',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='站点任务';
CREATE TABLE IF NOT EXISTS `wxapp_member_prop` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`prop_id` int unsigned NOT NULL DEFAULT '0' COMMENT '道具ID',
`num` int unsigned NOT NULL DEFAULT '1' COMMENT '数量',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '获得时间',
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`),
KEY `idx_uid_prop` (`uid`,`prop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户拥有道具';
CREATE TABLE IF NOT EXISTS `wxapp_member_task` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`task_id` int unsigned NOT NULL DEFAULT '0' COMMENT '任务ID',
`reward_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '实际发放奖励类型',
`reward_num` int(11) NOT NULL DEFAULT '0' COMMENT '实际发放数量',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '领取时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_uid_task` (`uid`,`task_id`),
KEY `idx_uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户任务领取记录';
-- 以下两张已在原自愈覆盖(medal / score_log / score_rule),
-- 一并补上保证完整,IF NOT EXISTS 不会冲突。
CREATE TABLE IF NOT EXISTS `wxapp_medal` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '' COMMENT '勋章名称',
`image` varchar(255) NOT NULL DEFAULT '' COMMENT '图片',
`description` text COMMENT '描述',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='勋章中心';
CREATE TABLE IF NOT EXISTS `wxapp_member_medal` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`medal_id` int unsigned NOT NULL DEFAULT '0' COMMENT '勋章ID',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '获得时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_uid_medal` (`uid`,`medal_id`),
KEY `idx_uid` (`uid`),
KEY `idx_medal` (`medal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户拥有勋章';
CREATE TABLE IF NOT EXISTS `wxapp_score_log` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
`rule_id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '关联规则ID',
`type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1收入2支出',
`value` int(11) NOT NULL DEFAULT 0 COMMENT '变动值',
`balance` int(11) NOT NULL DEFAULT 0 COMMENT '变动后余额',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`),
KEY `idx_uid_create` (`uid`,`create_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分流水';
CREATE TABLE IF NOT EXISTS `wxapp_score_rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '规则名称',
`action` varchar(50) NOT NULL DEFAULT '' COMMENT '触发动作标识(task_complete/signin/register等)',
`type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1获取2消费',
`value` int(11) NOT NULL DEFAULT 0 COMMENT '变动值',
`status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态 0禁用1启用',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`),
KEY `idx_action` (`action`),
KEY `idx_status_sort` (`status`,`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分规则';
@@ -0,0 +1,32 @@
-- ============================================================
-- 修复:wxapp_notice 表缺失(线上报 1146
-- ============================================================
-- 背景:
-- ywxapp/model/Notice.php 的 ensureSchema() 会尝试自建 wxapp_notice
-- 但若线上数据库账号无 CREATE TABLE 权限,建表语句会被 try/catch 静默吞掉,
-- 后续 SELECT 即报 1146 Table 'ywxapp_www.wxapp_notice' doesn't exist。
-- 用法:
-- ① 先确认前缀:SELECT @@global.version 不重要,看报错里的表名前缀即可(此处为 wxapp_)。
-- ② 把下面的 wxapp_ 替换成你线上实际前缀(若不同),然后在线上库执行本文件。
-- ③ 优先方案是给线上 DB 账号授予 CREATE/ALTER 权限,自愈会自动补齐,无需手动。
-- ============================================================
CREATE TABLE IF NOT EXISTS `wxapp_notice` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '' COMMENT '公告标题',
`content` text COMMENT '公告内容',
`author` varchar(50) NOT NULL DEFAULT '' COMMENT '发布人',
`type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '类型 1系统维护 2活动公告 3版本更新 4其他',
`is_top` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否置顶 0否 1是',
`start_time` int(11) NOT NULL DEFAULT 0 COMMENT '展示开始时间 0=长期',
`end_time` int(11) NOT NULL DEFAULT 0 COMMENT '展示结束时间 0=长期',
`view_count` int(11) NOT NULL DEFAULT 0 COMMENT '浏览量',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态 0禁用 1启用',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`),
KEY `idx_type` (`type`),
KEY `idx_is_top` (`is_top`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='站点公告';
+65
View File
@@ -0,0 +1,65 @@
-- ============================================================
-- 远程服务器修复整合 SQL
-- 适用:ywxapp 线上库(前缀示例 wxapp_,请按实际替换)
-- 背景:
-- 1) 自愈引擎因线上 Db::getConfig('prefix') 取空,把 wxapp_notice 建成了无前缀 notice 表,
-- 导致 SELECT wxapp_notice 报 1146。已修复代码改用 BaseModel::currentPrefix()
-- 但线上已误建的表需要手动清理并重建。
-- 2) install.sql 种子未含后台「营运」菜单,需补充插入。
-- 用法:
-- ① 把本文件所有 `wxapp_` 替换成你线上实际表前缀(如保持不变则直接执行)。
-- ② 一次性执行全部语句(含清理旧表 + 建正确表 + 插菜单)。
-- ============================================================
-- ---------- 1. 修复 wxapp_notice 表 ----------
-- 1.1 清理自愈误建的无前缀表(若存在)
DROP TABLE IF EXISTS `notice`;
-- 1.2 重建正确前缀的表
CREATE TABLE IF NOT EXISTS `wxapp_notice` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '' COMMENT '公告标题',
`content` text COMMENT '公告内容',
`author` varchar(50) NOT NULL DEFAULT '' COMMENT '发布人',
`type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '类型 1系统维护 2活动公告 3版本更新 4其他',
`is_top` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否置顶 0否 1是',
`start_time` int(11) NOT NULL DEFAULT 0 COMMENT '展示开始时间 0=长期',
`end_time` int(11) NOT NULL DEFAULT 0 COMMENT '展示结束时间 0=长期',
`view_count` int(11) NOT NULL DEFAULT 0 COMMENT '浏览量',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态 0禁用 1启用',
`create_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_at` int(11) NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`),
KEY `idx_type` (`type`),
KEY `idx_is_top` (`is_top`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='站点公告';
-- ---------- 2. 补充后台「营运」菜单 ----------
-- 2.1 若线上已存在同名菜单,先清理(避免 Duplicate entry
DELETE FROM `wxapp_backend_power` WHERE `name` IN ('operate','links:index','notice:index','ad:index','task:index','prop:index','medal:index','sms:index','help:index','shop:index','card:index','score:index');
-- 2.2 营运(顶级目录)
INSERT INTO `wxapp_backend_power`
(`pid`, `title`, `name`, `type`, `route`, `icon`, `sort`, `addon`, `status`, `create_at`, `update_at`, `delete_at`)
VALUES
(0, '营运', 'operate', 1, '/operate', 'layui-icon layui-icon-engine', 4, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0);
SET @operate_id = LAST_INSERT_ID();
-- 2.3 营运下子菜单
INSERT INTO `wxapp_backend_power`
(`pid`, `title`, `name`, `type`, `route`, `icon`, `sort`, `addon`, `status`, `create_at`, `update_at`, `delete_at`)
VALUES
(@operate_id, '友情链接', 'links:index', 2, 'links/index', '', 0, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点公告', 'notice:index', 2, 'notice/index', '', 1, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点广告', 'ad:index', 2, 'ad/index', '', 2, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点任务', 'task:index', 2, 'task/index', '', 3, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '道具中心', 'prop:index', 2, 'prop/index', '', 4, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '勋章中心', 'medal:index', 2, 'medal/index', '', 5, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '短信服务', 'sms:index', 2, 'sms/index', '', 6, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点帮助', 'help:index', 2, 'help/index', '', 7, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '电子商务', 'shop:index', 2, 'shop/index', '', 8, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '充值卡密', 'card:index', 2, 'card/index', '', 10, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '积分规则', 'score:index', 2, 'score/index', '', 11, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0);
@@ -0,0 +1,34 @@
-- ============================================================
-- 后台「营运」菜单及其子菜单 插入 SQL
-- 来源:public/install/install.sql 的 backend_power 数据(name=operate 营运 + 其下子菜单)
-- 用法:
-- 1. 把 wxapp_ 替换为线上实际表前缀后执行;
-- 2. 本脚本用 @operate_id 变量避免硬编码 id 冲突(父菜单插入后取 LAST_INSERT_ID,子菜单 pid 引用它);
-- 3. name 唯一约束:若线上已存在 operate 等菜单,会报 Duplicate entry,请先删除同名菜单或忽略;
-- DELETE FROM `wxapp_backend_power` WHERE `name` IN ('operate','links:index','notice:index','ad:index','task:index','prop:index','medal:index','sms:index','help:index','shop:index','card:index','score:index');
-- 4. 仅含菜单节点(type 1/2),未含按钮权限(type 3/4);如需完整权限按钮请用 Menu::export('operate') 生成。
-- ============================================================
-- 营运(顶级目录)
INSERT INTO `wxapp_backend_power`
(`pid`, `title`, `name`, `type`, `route`, `icon`, `sort`, `addon`, `status`, `create_at`, `update_at`, `delete_at`)
VALUES
(0, '营运', 'operate', 1, '/operate', 'layui-icon layui-icon-engine', 4, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0);
SET @operate_id = LAST_INSERT_ID();
-- 营运下子菜单
INSERT INTO `wxapp_backend_power`
(`pid`, `title`, `name`, `type`, `route`, `icon`, `sort`, `addon`, `status`, `create_at`, `update_at`, `delete_at`)
VALUES
(@operate_id, '友情链接', 'links:index', 2, 'links/index', '', 0, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点公告', 'notice:index', 2, 'notice/index', '', 1, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点广告', 'ad:index', 2, 'ad/index', '', 2, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点任务', 'task:index', 2, 'task/index', '', 3, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '道具中心', 'prop:index', 2, 'prop/index', '', 4, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '勋章中心', 'medal:index', 2, 'medal/index', '', 5, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '短信服务', 'sms:index', 2, 'sms/index', '', 6, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '站点帮助', 'help:index', 2, 'help/index', '', 7, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '电子商务', 'shop:index', 2, 'shop/index', '', 8, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '充值卡密', 'card:index', 2, 'card/index', '', 10, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0),
(@operate_id, '积分规则', 'score:index', 2, 'score/index', '', 11, NULL, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0);