| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- -- ============================================================
- -- 小程序系统设置 → 模板消息 / 分享设置 / 默认设置
- -- 日期: 2026-08-21
- -- 说明: 新增三个真实页面所需的数据表、默认数据、菜单组件和接口权限
- -- ============================================================
- CREATE TABLE IF NOT EXISTS `sa_mini_program_template_message` (
- `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '编号',
- `code` VARCHAR(64) NOT NULL COMMENT '业务消息编码',
- `title` VARCHAR(100) NOT NULL COMMENT '标题',
- `usage_detail` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '使用详情',
- `keywords` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '关键词',
- `template_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '微信模板 ID',
- `appid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信小程序 APPID',
- `type` VARCHAR(32) NOT NULL DEFAULT '一次性订阅' COMMENT '订阅类型',
- `created_by` INT(11) NULL COMMENT '创建者',
- `updated_by` INT(11) NULL COMMENT '更新者',
- `create_time` DATETIME(0) NULL COMMENT '创建时间',
- `update_time` DATETIME(0) NULL COMMENT '更新时间',
- `delete_time` DATETIME(0) NULL COMMENT '删除时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_template_message_code` (`code`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小程序模板消息设置';
- CREATE TABLE IF NOT EXISTS `sa_mini_program_share_settings` (
- `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '编号',
- `share_name` VARCHAR(100) NOT NULL COMMENT '分享名称',
- `share_title` VARCHAR(255) NOT NULL COMMENT '分享标题',
- `share_image` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '分享图片',
- `created_by` INT(11) NULL COMMENT '创建者',
- `updated_by` INT(11) NULL COMMENT '更新者',
- `create_time` DATETIME(0) NULL COMMENT '创建时间',
- `update_time` DATETIME(0) NULL COMMENT '更新时间',
- `delete_time` DATETIME(0) NULL COMMENT '删除时间',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小程序分享设置';
- CREATE TABLE IF NOT EXISTS `sa_mini_program_default_settings` (
- `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '编号',
- `device_type` VARCHAR(64) NOT NULL COMMENT '设备类型',
- `device_name` VARCHAR(100) NOT NULL COMMENT '设备计费名称',
- `free_minutes` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '免费时长(分钟)',
- `overdue_deposit` DECIMAL(12,2) NOT NULL DEFAULT 15.00 COMMENT '超时订单押金',
- `min_deposit` DECIMAL(12,2) NOT NULL DEFAULT 3.00 COMMENT '最低押金',
- `max_deposit` DECIMAL(12,2) NOT NULL DEFAULT 30.00 COMMENT '最高押金',
- `sort` INT(11) NOT NULL DEFAULT 0 COMMENT '排序',
- `created_by` INT(11) NULL COMMENT '创建者',
- `updated_by` INT(11) NULL COMMENT '更新者',
- `create_time` DATETIME(0) NULL COMMENT '创建时间',
- `update_time` DATETIME(0) NULL COMMENT '更新时间',
- `delete_time` DATETIME(0) NULL COMMENT '删除时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_default_setting_device_type` (`device_type`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小程序默认计费设置';
- -- 优先使用已经绑定的微信小程序 APPID;本地尚未绑定时使用参考页面中的 APPID。
- SET @template_default_appid = (
- SELECT `appid` FROM `sa_wechat_mini_program`
- WHERE `delete_time` IS NULL AND `appid` <> ''
- ORDER BY `id` ASC LIMIT 1
- );
- SET @template_default_appid = COALESCE(NULLIF(@template_default_appid, ''), 'wx6b15e8b6653a0f79');
- INSERT INTO `sa_mini_program_template_message`
- (`code`, `title`, `usage_detail`, `keywords`, `template_id`, `appid`, `type`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'withdraw_apply', '提现申请通知', '提现到账通知', '提现金额,提现状态,到账类型,', '', @template_default_appid, '一次性订阅', 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_template_message` WHERE `code` = 'withdraw_apply');
- INSERT INTO `sa_mini_program_template_message`
- (`code`, `title`, `usage_detail`, `keywords`, `template_id`, `appid`, `type`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'deposit_refund', '退款成功通知', '押金退还通知', '应退金额,备注,', '', @template_default_appid, '一次性订阅', 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_template_message` WHERE `code` = 'deposit_refund');
- INSERT INTO `sa_mini_program_template_message`
- (`code`, `title`, `usage_detail`, `keywords`, `template_id`, `appid`, `type`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'rental_return', '租借归还通知', '租借归还通知', '归还地点,订单号,产生费用,收费标准,归还时间,', '', @template_default_appid, '一次性订阅', 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_template_message` WHERE `code` = 'rental_return');
- INSERT INTO `sa_mini_program_default_settings`
- (`device_type`, `device_name`, `free_minutes`, `overdue_deposit`, `min_deposit`, `max_deposit`, `sort`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'vehicle_charger', '车载充电器计费', 0, 15.00, 3.00, 30.00, 10, 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_default_settings` WHERE `device_type` = 'vehicle_charger');
- INSERT INTO `sa_mini_program_default_settings`
- (`device_type`, `device_name`, `free_minutes`, `overdue_deposit`, `min_deposit`, `max_deposit`, `sort`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'karaoke_device', 'K歌宝计费', 0, 15.00, 3.00, 30.00, 20, 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_default_settings` WHERE `device_type` = 'karaoke_device');
- INSERT INTO `sa_mini_program_default_settings`
- (`device_type`, `device_name`, `free_minutes`, `overdue_deposit`, `min_deposit`, `max_deposit`, `sort`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'bluetooth_cable', '蓝牙线充计费', 0, 15.00, 3.00, 30.00, 30, 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_default_settings` WHERE `device_type` = 'bluetooth_cable');
- INSERT INTO `sa_mini_program_default_settings`
- (`device_type`, `device_name`, `free_minutes`, `overdue_deposit`, `min_deposit`, `max_deposit`, `sort`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'power_bank', '充电宝计费', 0, 15.00, 3.00, 30.00, 40, 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_default_settings` WHERE `device_type` = 'power_bank');
- INSERT INTO `sa_mini_program_default_settings`
- (`device_type`, `device_name`, `free_minutes`, `overdue_deposit`, `min_deposit`, `max_deposit`, `sort`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'password_cable', '密码线充计费', 0, 15.00, 3.00, 30.00, 50, 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_default_settings` WHERE `device_type` = 'password_cable');
- INSERT INTO `sa_mini_program_default_settings`
- (`device_type`, `device_name`, `free_minutes`, `overdue_deposit`, `min_deposit`, `max_deposit`, `sort`, `created_by`, `updated_by`, `create_time`, `update_time`)
- SELECT 'password_bluetooth_cable', '密码蓝牙线充计费', 0, 15.00, 3.00, 30.00, 60, 1, 1, NOW(), NOW()
- WHERE NOT EXISTS (SELECT 1 FROM `sa_mini_program_default_settings` WHERE `device_type` = 'password_bluetooth_cable');
- -- 将三个占位菜单切换到真实组件。
- UPDATE `sa_system_menu`
- SET `component` = CASE `code`
- WHEN 'MiniProgramTemplateMessage' THEN '/mini-program/template-message'
- WHEN 'MiniProgramShareSettings' THEN '/mini-program/share-settings'
- WHEN 'MiniProgramDefaultSettings' THEN '/mini-program/default-settings'
- END,
- `remark` = CASE `code`
- WHEN 'MiniProgramTemplateMessage' THEN '小程序模板消息设置'
- WHEN 'MiniProgramShareSettings' THEN '小程序分享设置'
- WHEN 'MiniProgramDefaultSettings' THEN '小程序默认计费设置'
- END,
- `update_time` = NOW()
- WHERE `code` IN ('MiniProgramTemplateMessage', 'MiniProgramShareSettings', 'MiniProgramDefaultSettings')
- AND `delete_time` IS NULL;
- -- 页面接口权限。
- INSERT INTO `sa_system_menu` (
- `parent_id`, `name`, `code`, `slug`, `type`, `path`, `component`, `method`, `icon`, `sort`,
- `link_url`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`,
- `generate_id`, `generate_key`, `status`, `remark`, `created_by`, `updated_by`, `create_time`, `update_time`, `delete_time`
- )
- SELECT parent_menu.`id`, permission_data.`name`, permission_data.`code`, permission_data.`slug`, 3,
- NULL, NULL, permission_data.`method`, NULL, permission_data.`sort`, NULL, 2, 2, 2, 2, 2,
- 0, NULL, 1, NULL, 1, 1, NOW(), NOW(), NULL
- FROM `sa_system_menu` parent_menu
- INNER JOIN (
- SELECT 'MiniProgramTemplateMessage' AS `parent_code`, '读取模板消息' AS `name`, 'MiniProgramTemplateMessageIndex' AS `code`, 'core:miniProgram:templateMessage:index' AS `slug`, 'GET' AS `method`, 100 AS `sort`
- UNION ALL
- SELECT 'MiniProgramTemplateMessage', '设置模板消息', 'MiniProgramTemplateMessageUpdate', 'core:miniProgram:templateMessage:update', 'PUT', 90
- UNION ALL
- SELECT 'MiniProgramShareSettings', '读取分享设置', 'MiniProgramShareSettingsIndex', 'core:miniProgram:shareSettings:index', 'GET', 100
- UNION ALL
- SELECT 'MiniProgramShareSettings', '设置分享内容', 'MiniProgramShareSettingsUpdate', 'core:miniProgram:shareSettings:update', 'PUT', 90
- UNION ALL
- SELECT 'MiniProgramDefaultSettings', '读取默认设置', 'MiniProgramDefaultSettingsIndex', 'core:miniProgram:defaultSettings:index', 'GET', 100
- UNION ALL
- SELECT 'MiniProgramDefaultSettings', '保存默认设置', 'MiniProgramDefaultSettingsUpdate', 'core:miniProgram:defaultSettings:update', 'PUT', 90
- ) permission_data ON permission_data.`parent_code` = parent_menu.`code`
- LEFT JOIN `sa_system_menu` existing_menu
- ON existing_menu.`slug` = permission_data.`slug` AND existing_menu.`delete_time` IS NULL
- WHERE parent_menu.`delete_time` IS NULL
- AND existing_menu.`id` IS NULL;
- -- 已拥有父菜单的角色自动获得新增接口权限。
- INSERT INTO `sa_system_role_menu` (`role_id`, `menu_id`)
- SELECT DISTINCT parent_role.`role_id`, permission_menu.`id`
- FROM `sa_system_role_menu` parent_role
- INNER JOIN `sa_system_menu` parent_menu
- ON parent_menu.`id` = parent_role.`menu_id`
- AND parent_menu.`code` IN ('MiniProgramTemplateMessage', 'MiniProgramShareSettings', 'MiniProgramDefaultSettings')
- AND parent_menu.`delete_time` IS NULL
- INNER JOIN `sa_system_menu` permission_menu
- ON permission_menu.`parent_id` = parent_menu.`id`
- AND permission_menu.`type` = 3
- AND permission_menu.`delete_time` IS NULL
- LEFT JOIN `sa_system_role_menu` existing_role
- ON existing_role.`role_id` = parent_role.`role_id`
- AND existing_role.`menu_id` = permission_menu.`id`
- WHERE existing_role.`id` IS NULL;
|