-- ====================================================
-- 洗车系统数据库初始化脚本
-- 包含系统管理核心表结构和初始数据
-- 执行顺序：先执行建表语句，再执行初始化数据
-- ====================================================

-- ----------------------------
-- 1. 公司表（租户）
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_company` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID（租户隔离）',
    `company_name` VARCHAR(100) NOT NULL COMMENT '公司名称',
    `super_admin_id` BIGINT DEFAULT NULL COMMENT '超级管理员ID',
    `super_admin_name` VARCHAR(50) DEFAULT NULL COMMENT '超级管理员用户名',
    `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-禁用，1-启用',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公司表（租户）';

-- ----------------------------
-- 2. 管理员用户表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_admin_user` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `username` VARCHAR(50) NOT NULL COMMENT '用户名',
    `password` VARCHAR(100) NOT NULL COMMENT '密码',
    `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称',
    `mobile_phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
    `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像',
    `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-禁用，1-启用',
    `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间',
    `open_id` VARCHAR(100) DEFAULT NULL COMMENT '微信OpenID',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_username` (`username`),
    KEY `idx_company_id` (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员用户表';

-- ----------------------------
-- 3. 角色表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_role` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `parent_id` BIGINT DEFAULT 0 COMMENT '父角色ID',
    `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
    `role_desc` VARCHAR(200) DEFAULT NULL COMMENT '角色描述',
    `permissions` TEXT DEFAULT NULL COMMENT '权限列表（JSON）',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_company_id` (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';

-- ----------------------------
-- 4. 权限表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_permission` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `name` VARCHAR(50) NOT NULL COMMENT '权限名称',
    `value` VARCHAR(100) NOT NULL COMMENT '权限码值',
    `pid` BIGINT DEFAULT 0 COMMENT '父级权限ID',
    `weight` INT DEFAULT 0 COMMENT '排序权重',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_value` (`value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';

-- ----------------------------
-- 5. 用户角色关联表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_admin_user_role` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `admin_user_id` BIGINT NOT NULL COMMENT '管理员用户ID',
    `role_id` BIGINT NOT NULL COMMENT '角色ID',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_admin_user_id` (`admin_user_id`),
    KEY `idx_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';

-- ----------------------------
-- 6. 角色权限关联表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_role_permission` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `role_id` BIGINT NOT NULL COMMENT '角色ID',
    `permission_id` BIGINT NOT NULL COMMENT '权限ID',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_role_id` (`role_id`),
    KEY `idx_permission_id` (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';

-- ----------------------------
-- 7. 数据字典表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_data_dict` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `code` VARCHAR(50) NOT NULL COMMENT '字典编码',
    `name` VARCHAR(100) NOT NULL COMMENT '字典名称',
    `value` VARCHAR(200) DEFAULT NULL COMMENT '字典值',
    `weight` INT DEFAULT 0 COMMENT '排序权重',
    `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
    `color` VARCHAR(20) DEFAULT NULL COMMENT '颜色',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_code` (`code`),
    KEY `idx_company_id` (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据字典表';

-- ----------------------------
-- 8. 系统操作日志表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_system_log` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `user_id` BIGINT DEFAULT NULL COMMENT '用户ID',
    `username` VARCHAR(50) DEFAULT NULL COMMENT '操作人',
    `ip` VARCHAR(50) DEFAULT NULL COMMENT 'IP地址',
    `operation` VARCHAR(200) DEFAULT NULL COMMENT '操作名称',
    `method` VARCHAR(200) DEFAULT NULL COMMENT '方法',
    `request_param` TEXT DEFAULT NULL COMMENT '请求参数',
    `execute_time` BIGINT DEFAULT NULL COMMENT '执行时长（毫秒）',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统操作日志表';

-- ----------------------------
-- 9. 附件表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_attachment` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `uuid` VARCHAR(64) NOT NULL COMMENT 'UUID',
    `name` VARCHAR(200) NOT NULL COMMENT '文件名',
    `size` BIGINT DEFAULT NULL COMMENT '文件大小（字节）',
    `upload_by` BIGINT DEFAULT NULL COMMENT '上传人ID',
    `upload_name` VARCHAR(50) DEFAULT NULL COMMENT '上传人名称',
    `is_delete` TINYINT DEFAULT 0 COMMENT '是否删除：0-否，1-是',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_uuid` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='附件表';

-- ----------------------------
-- 10. 系统公告表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_system_notice` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `title` VARCHAR(200) NOT NULL COMMENT '公告标题',
    `content` TEXT DEFAULT NULL COMMENT '公告内容',
    `admin_user_name` VARCHAR(50) DEFAULT NULL COMMENT '发布者名称',
    `admin_user_id` BIGINT DEFAULT NULL COMMENT '发布者ID',
    `start_time` DATETIME DEFAULT NULL COMMENT '开始时间',
    `end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态：0-未开始，1-生效中，2-已结束，3-已取消',
    `target` VARCHAR(20) NOT NULL DEFAULT 'all' COMMENT '目标：client-客户端, merchant-商户端, all-全部',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_status` (`status`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统公告表';

-- ----------------------------
-- 11. 站点公告关联表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_station_notice` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `notice_id` BIGINT NOT NULL COMMENT '公告ID',
    `station_id` BIGINT NOT NULL COMMENT '站点ID',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_notice_id` (`notice_id`),
    KEY `idx_station_id` (`station_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点公告关联表';

-- ----------------------------
-- 12. 消息通知表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_message` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `title` VARCHAR(200) NOT NULL COMMENT '消息标题',
    `content` TEXT COMMENT '消息内容',
    `type` TINYINT NOT NULL DEFAULT 1 COMMENT '消息类型：1-系统通知，2-站内信，3-待办事项，4-公告通知',
    `sender_id` BIGINT DEFAULT 0 COMMENT '发送者ID（0表示系统发送）',
    `sender_name` VARCHAR(50) DEFAULT '系统' COMMENT '发送者名称',
    `receiver_id` BIGINT NOT NULL COMMENT '接收者ID',
    `receiver_name` VARCHAR(50) DEFAULT NULL COMMENT '接收者名称',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '消息状态：0-未读，1-已读，2-已删除',
    `read_time` DATETIME DEFAULT NULL COMMENT '阅读时间',
    `biz_type` VARCHAR(50) DEFAULT NULL COMMENT '关联业务类型',
    `biz_id` BIGINT DEFAULT NULL COMMENT '关联业务ID',
    `priority` TINYINT NOT NULL DEFAULT 0 COMMENT '优先级：0-普通，1-重要，2-紧急',
    `is_push` TINYINT NOT NULL DEFAULT 0 COMMENT '是否推送：0-否，1-是',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_receiver_id` (`receiver_id`),
    KEY `idx_sender_id` (`sender_id`),
    KEY `idx_type` (`type`),
    KEY `idx_status` (`status`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息通知表';

-- ----------------------------
-- 13. 消息模板表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_message_template` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `company_id` BIGINT DEFAULT NULL COMMENT '公司ID',
    `code` VARCHAR(50) NOT NULL COMMENT '模板编码（唯一标识）',
    `name` VARCHAR(100) NOT NULL COMMENT '模板名称',
    `type` TINYINT NOT NULL DEFAULT 1 COMMENT '消息类型：1-系统通知，2-站内信，3-待办事项，4-公告通知',
    `title_template` VARCHAR(200) NOT NULL COMMENT '标题模板',
    `content_template` TEXT NOT NULL COMMENT '内容模板（支持变量占位符，如 ${userName}）',
    `priority` TINYINT NOT NULL DEFAULT 0 COMMENT '优先级：0-普通，1-重要，2-紧急',
    `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-禁用，1-启用',
    `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注说明',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`),
    KEY `idx_type` (`type`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息模板表';


-- ====================================================
-- 初始化数据
-- ====================================================

-- ----------------------------
-- 初始化公司
-- ----------------------------
INSERT INTO `t_company` (`id`, `company_name`, `status`) VALUES
(1, '默认公司', 1);

-- ----------------------------
-- 初始化管理员账号（默认密码：[REDACTED]，使用BCrypt加密）
-- ----------------------------
INSERT INTO `t_admin_user` (`id`, `company_id`, `username`, `password`, `nickname`, `status`) VALUES
(1, 1, 'admin', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', '超级管理员', 1),
(2, 1, 'test', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', '测试用户', 1);

-- ----------------------------
-- 初始化角色
-- ----------------------------
INSERT INTO `t_role` (`id`, `company_id`, `role_name`, `role_desc`) VALUES
(1, 1, '超级管理员', '拥有所有权限'),
(2, 1, '普通管理员', '拥有基本管理权限'),
(3, 1, '运营人员', '拥有运营相关权限'),
(4, 1, '财务人员', '拥有财务相关权限');

-- ----------------------------
-- 初始化权限（与后端 @SaCheckPermission 严格一一对应）
-- ----------------------------
INSERT INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`) VALUES
-- ====== 站点管理 ======
(1, NULL, '站点管理', 'washStation', 0, 10),
(2, NULL, '站点列表', 'washStation.list', 1, 1),
(3, NULL, '新增站点', 'washStation.add', 1, 2),
(4, NULL, '修改站点', 'washStation.modify', 1, 3),
(5, NULL, '删除站点', 'washStation.remove', 1, 4),

-- ====== 设备管理 ======
(6, NULL, '设备管理', 'washDevice', 0, 20),
(7, NULL, '设备列表', 'washDevice.list', 6, 1),
(8, NULL, '新增设备', 'washDevice.add', 6, 2),
(9, NULL, '修改设备', 'washDevice.modify', 6, 3),
(10, NULL, '删除设备', 'washDevice.remove', 6, 4),

-- ====== 订单管理 ======
(11, NULL, '订单管理', 'washOrder', 0, 30),
(12, NULL, '订单列表', 'washOrder.list', 11, 1),
(13, NULL, '修改订单', 'washOrder.modify', 11, 2),

-- ====== 用户管理（运维用户） ======
(14, NULL, '用户管理', 'user', 0, 40),
(15, NULL, '用户列表', 'user.list', 14, 1),
(16, NULL, '新增用户', 'user.add', 14, 2),
(17, NULL, '修改用户', 'user.modify', 14, 3),

-- ====== 账户管理（C端用户） ======
(18, NULL, '账户管理', 'account', 0, 50),
(19, NULL, '账户列表', 'account.list', 18, 1),

-- ====== 投资人管理 ======
(20, NULL, '投资人管理', 'investor', 0, 55),
(21, NULL, '新增投资人', 'investor.add', 20, 1),

-- ====== 角色管理 ======
(22, NULL, '角色管理', 'role', 0, 60),
(23, NULL, '角色列表', 'role.list', 22, 1),
(24, NULL, '新增角色', 'role.add', 22, 2),
(25, NULL, '修改角色', 'role.modify', 22, 3),
(26, NULL, '删除角色', 'role.delete', 22, 4),

-- ====== 字典管理 ======
(27, NULL, '字典管理', 'dict', 0, 70),
(28, NULL, '字典列表', 'dict.list', 27, 1),
(29, NULL, '新增字典', 'dict.add', 27, 2),
(30, NULL, '修改字典', 'dict.modify', 27, 3),

-- ====== 充值配置 ======
(31, NULL, '充值配置', 'rechargeConfig', 0, 80),
(32, NULL, '配置列表', 'rechargeConfig.list', 31, 1),
(33, NULL, '新增配置', 'rechargeConfig.add', 31, 2),
(34, NULL, '修改配置', 'rechargeConfig.modify', 31, 3),
(35, NULL, '删除配置', 'rechargeConfig.remove', 31, 4),

-- ====== 线下充值 ======
(36, NULL, '线下充值', 'offlineRecharge', 0, 90),

-- ====== 优惠活动 ======
(37, NULL, '优惠活动', 'promotion', 0, 100),
(38, NULL, '活动列表', 'promotion.list', 37, 1),
(39, NULL, '新增活动', 'promotion.add', 37, 2),
(40, NULL, '修改活动', 'promotion.modify', 37, 3),
(41, NULL, '删除活动', 'promotion.remove', 37, 4),

-- ====== 故障管理 ======
(42, NULL, '故障管理', 'faultSubscriber', 0, 110),
(43, NULL, '订阅列表', 'faultSubscriber.list', 42, 1),
(44, NULL, '解绑订阅', 'faultSubscriber.delete', 42, 2),
(45, NULL, '生成二维码', 'faultSubscriber.qrcode', 42, 3),
(46, NULL, '故障记录', 'faultRecord.list', 42, 4),

-- ====== FAQ 管理 ======
(47, NULL, 'FAQ管理', 'faq', 0, 120),
(48, NULL, 'FAQ列表', 'faq.list', 47, 1),
(49, NULL, '新增FAQ', 'faq.add', 47, 2),
(50, NULL, '修改FAQ', 'faq.modify', 47, 3),
(51, NULL, '删除FAQ', 'faq.remove', 47, 4),

-- ====== 反馈管理 ======
(52, NULL, '反馈管理', 'feedback', 0, 130),
(53, NULL, '反馈列表', 'feedback.list', 52, 1),
(54, NULL, '新增反馈', 'feedback.add', 52, 2),
(55, NULL, '修改反馈', 'feedback.modify', 52, 3),
(56, NULL, '删除反馈', 'feedback.remove', 52, 4),

-- ====== 设备配置 ======
(57, NULL, '设备配置', 'deviceConfig', 0, 140),
(58, NULL, '新增配置', 'deviceConfig.add', 57, 1),
(59, NULL, '修改配置', 'deviceConfig.modify', 57, 2),

-- ====== 设备关联 ======
(60, NULL, '设备关联', 'deviceRelation', 0, 150),
(61, NULL, '关联列表', 'deviceRelation.list', 60, 1),
(62, NULL, '新增关联', 'deviceRelation.add', 60, 2),
(63, NULL, '删除关联', 'deviceRelation.remove', 60, 3),

-- ====== 财务管理（前端菜单权限） ======
(64, NULL, '财务管理', 'finance', 0, 85),
(65, NULL, '充值记录', 'recharge.list', 64, 1),
(66, NULL, '退款清单', 'refundLog.list', 64, 2),
(67, NULL, '退款处理', 'refundLog.modify', 64, 3),
(68, NULL, '提现记录', 'withdrawnRecord.list', 64, 4),
(69, NULL, '提现审核', 'withdrawnRecord.modify', 64, 5),
(70, NULL, '结算记录', 'settlement.list', 64, 6),

-- ====== 横幅广告 ======
(71, NULL, '横幅广告', 'banner', 0, 95),
(72, NULL, '广告列表', 'banner.list', 71, 1),
(73, NULL, '新增广告', 'banner.add', 71, 2),
(74, NULL, '修改广告', 'banner.modify', 71, 3),
(75, NULL, '删除广告', 'banner.delete', 71, 4),

-- ====== 平台费率 ======
(76, NULL, '平台费率', 'platformFeeRate', 0, 105),
(77, NULL, '费率列表', 'platformFeeRate.list', 76, 1),
(78, NULL, '新增费率', 'platformFeeRate.add', 76, 2),
(79, NULL, '修改费率', 'platformFeeRate.modify', 76, 3),

-- ====== 补充已有模块缺失的子权限 ======
(80, NULL, '删除用户', 'user.delete', 14, 4),
(81, NULL, '删除字典', 'dict.delete', 27, 4),
(82, NULL, '投资人列表', 'investor.list', 20, 2),
(83, NULL, '修改投资人', 'investor.modify', 20, 3),
(84, NULL, '删除投资人', 'investor.delete', 20, 4),
(85, NULL, '删除设备配置', 'deviceConfig.remove', 57, 3),

-- ====== 数据统计 ======
(86, NULL, '数据统计', 'statistics', 0, 6),
(87, NULL, '日统计列表', 'dailyStat.list', 86, 1),
(88, NULL, '日统计同步', 'dailyStat.sync', 86, 2),
(89, NULL, '月统计列表', 'monthStat.list', 86, 3),
(90, NULL, '月统计同步', 'monthStat.sync', 86, 4),

-- ====== 停车券管理 ======
(91, NULL, '停车券管理', 'parkingCouponRecord', 0, 105),
(92, NULL, '发放记录', 'parkingCouponRecord.list', 91, 1);

-- ----------------------------
-- 初始化用户角色关联
-- ----------------------------
INSERT INTO `t_admin_user_role` (`admin_user_id`, `role_id`) VALUES
(1, 1),
(2, 2);

-- ----------------------------
-- 初始化超级管理员角色权限（permissions 字段为管道分隔字符串）
-- 注意：92 个权限值总长超过 GROUP_CONCAT 默认 1024，需先调大
-- ----------------------------
SET SESSION group_concat_max_len = 10000;
UPDATE `t_role` SET `permissions` = (
    SELECT GROUP_CONCAT(`value` SEPARATOR '|') FROM `t_permission` ORDER BY `id`
) WHERE `id` = 1;

-- ----------------------------
-- 初始化数据字典
-- ----------------------------
INSERT INTO `t_data_dict` (`code`, `name`, `value`, `weight`, `remark`, `color`) VALUES
-- 用户状态
('user_status', '禁用', '0', 1, '用户状态', 'danger'),
('user_status', '启用', '1', 2, '用户状态', 'success'),
-- 消息类型
('message_type', '系统通知', '1', 1, '消息类型', 'primary'),
('message_type', '站内信', '2', 2, '消息类型', 'success'),
('message_type', '待办事项', '3', 3, '消息类型', 'warning'),
('message_type', '公告通知', '4', 4, '消息类型', 'info'),
-- 消息状态
('message_status', '未读', '0', 1, '消息状态', 'danger'),
('message_status', '已读', '1', 2, '消息状态', 'success'),
('message_status', '已删除', '2', 3, '消息状态', 'info'),
-- 优先级
('priority', '普通', '0', 1, '优先级', ''),
('priority', '重要', '1', 2, '优先级', 'warning'),
('priority', '紧急', '2', 3, '优先级', 'danger'),
-- 公告状态
('notice_status', '未开始', '0', 1, '公告状态', 'info'),
('notice_status', '生效中', '1', 2, '公告状态', 'success'),
('notice_status', '已结束', '2', 3, '公告状态', ''),
('notice_status', '已取消', '3', 4, '公告状态', 'danger'),
-- 公告目标
('notice_target', '客户端', 'client', 1, '公告目标', ''),
('notice_target', '商户端', 'merchant', 2, '公告目标', ''),
('notice_target', '全部', 'all', 3, '公告目标', ''),
-- 是否
('yes_no', '否', '0', 1, '是否', 'info'),
('yes_no', '是', '1', 2, '是否', 'success'),
-- 结算状态
('Settlement.status', '待结算', '0', 1, '结算状态', 'info'),
('Settlement.status', '已结算', '1', 2, '结算状态', 'success'),
('Settlement.status', '异常结算', '2', 3, '结算状态', 'danger'),
-- 操作日志 - 操作类型
('OptLog.operationType', '新增', 'CREATE', 1, '操作类型', 'success'),
('OptLog.operationType', '修改', 'UPDATE', 2, '操作类型', 'warning'),
('OptLog.operationType', '删除', 'DELETE', 3, '操作类型', 'danger'),
('OptLog.operationType', '查询', 'QUERY', 4, '操作类型', 'info'),
('OptLog.operationType', '登录', 'LOGIN', 5, '操作类型', 'primary'),
('OptLog.operationType', '登出', 'LOGOUT', 6, '操作类型', ''),
('OptLog.operationType', '其他', 'OTHER', 7, '操作类型', ''),
-- 操作日志 - 请求方式
('OptLog.httpMethod', 'GET', 'GET', 1, '请求方式', 'success'),
('OptLog.httpMethod', 'POST', 'POST', 2, '请求方式', 'primary'),
('OptLog.httpMethod', 'PUT', 'PUT', 3, '请求方式', 'warning'),
('OptLog.httpMethod', 'DELETE', 'DELETE', 4, '请求方式', 'danger'),
-- 菜单类型
('Menu.type', '菜单', '0', 1, '菜单类型', 'primary'),
('Menu.type', 'iframe', '1', 2, '菜单类型', 'warning'),
('Menu.type', '外链', '2', 3, '菜单类型', 'danger'),
('Menu.type', '按钮', '3', 4, '菜单类型', 'info'),
-- 用户性别
('AdminUser.sex', '男', '0', 1, '用户性别', ''),
('AdminUser.sex', '女', '1', 2, '用户性别', ''),
-- 钱包明细类型
('WalletDetail.type', '积分', '1', 1, '钱包明细类型', ''),
('WalletDetail.type', '红包', '2', 2, '钱包明细类型', ''),
('WalletDetail.type', '消费', '3', 3, '钱包明细类型', ''),
-- 设备状态 (WashDevice.state)
('WashDevice.status', '设备正在初始化', 'init', 1, '设备状态', '#52C41A'),
('WashDevice.status', '设备空闲', 'idle', 2, '设备状态', '#52C41A'),
('WashDevice.status', '设备忙碌', 'busy', 3, '设备状态', '#E6A23C'),
('WashDevice.status', '不在营业时间', 'sleep', 4, '设备状态', '#999999'),
('WashDevice.status', '维护模式', 'maintenance', 5, '设备状态', '#FAAD14'),
('WashDevice.status', '设备故障', 'fault', 6, '设备状态', '#F5222D'),
-- 提现记录状态 (WithdrawnRecord.status)
('WithdrawnRecord.status', '待审核', '0', 1, '提现状态', '#FA8C16'),
('WithdrawnRecord.status', '审核通过', '1', 2, '提现状态', '#52C41A'),
('WithdrawnRecord.status', '审核失败', '2', 3, '提现状态', '#FF4D4F'),
-- 分账记录类型 (SplitRecord.type)
('SplitRecord.type', '平台技术服务费', '0', 1, '分账类型', ''),
('SplitRecord.type', '充值', '1', 2, '分账类型', ''),
('SplitRecord.type', '消费', '2', 3, '分账类型', ''),
('SplitRecord.type', '解冻', '3', 4, '分账类型', ''),
('SplitRecord.type', '跨店支出', '4', 5, '分账类型', ''),
('SplitRecord.type', '退款', '5', 6, '分账类型', ''),
('SplitRecord.type', '跨店收入', '6', 7, '分账类型', ''),
-- 分账记录状态 (SplitRecord.status)
('SplitRecord.status', '处理中', '0', 1, '分账状态', '#FAAD14'),
('SplitRecord.status', '成功', '1', 2, '分账状态', '#52C41A'),
('SplitRecord.status', '失败', '2', 3, '分账状态', '#F5222D'),
-- 订单状态 (WashOrder.orderStatus, 保留兼容)
('WashOrder.orderStatus', '未知', '-1', 1, '订单状态', '#999999'),
('WashOrder.orderStatus', '开机', '0', 2, '订单状态', '#1890FF'),
('WashOrder.orderStatus', '成功', '1', 3, '订单状态', '#52C41A'),
('WashOrder.orderStatus', '失败', '2', 4, '订单状态', '#F5222D'),
('WashOrder.orderStatus', '取消', '3', 5, '订单状态', '#999999'),
-- 订单状态 (Order.status, 前端实际使用)
('Order.status', '未知', '-1', 1, '订单状态', '#999999'),
('Order.status', '开机', '0', 2, '订单状态', '#1890FF'),
('Order.status', '成功', '1', 3, '订单状态', '#52C41A'),
('Order.status', '失败', '2', 4, '订单状态', '#F5222D'),
('Order.status', '取消', '3', 5, '订单状态', '#999999'),
-- 支付状态 (WashOrder.payStatus, 保留兼容)
('WashOrder.payStatus', '未支付', '0', 1, '支付状态', '#FAAD14'),
('WashOrder.payStatus', '已支付', '1', 2, '支付状态', '#52C41A'),
-- 支付状态 (Order.pay, 前端实际使用)
('Order.pay', '未支付', '0', 1, '支付状态', '#FAAD14'),
('Order.pay', '已支付', '1', 2, '支付状态', '#52C41A'),
-- 关机方式 (WashOrder.closeType)
('WashOrder.closeType', '维护按钮', 'button', 1, '关机方式', ''),
('WashOrder.closeType', '网络命令', 'network', 2, '关机方式', ''),
('WashOrder.closeType', '超过预设金额', 'no_balance', 3, '关机方式', ''),
('WashOrder.closeType', '设备空闲超时', 'idle_timeout', 4, '关机方式', ''),
('WashOrder.closeType', '操作超时', 'operation_timeout', 5, '关机方式', ''),
('WashOrder.closeType', '刷卡', 'card', 6, '关机方式', ''),
-- 发票状态 (WashOrder.invoiceStatus)
('WashOrder.invoiceStatus', '待开票', '0', 1, '发票状态', '#FAAD14'),
('WashOrder.invoiceStatus', '已开票', '1', 2, '发票状态', '#52C41A'),
('WashOrder.invoiceStatus', '已作废', '2', 3, '发票状态', '#999999'),
('WashOrder.invoiceStatus', '开票中', '3', 4, '发票状态', '#1890FF');

-- ----------------------------
-- 初始化消息（示例数据）
-- ----------------------------
INSERT INTO `t_message` (`title`, `content`, `type`, `sender_id`, `sender_name`, `receiver_id`, `receiver_name`, `status`, `priority`) VALUES
('系统升级通知', '系统将于近期进行升级维护，届时系统将暂停服务，请提前做好准备。', 1, 0, '系统', 1, '超级管理员', 0, 2),
('欢迎使用', '欢迎使用洗车管理系统，如有问题请联系管理员。', 1, 0, '系统', 1, '超级管理员', 0, 0),
('欢迎使用', '欢迎使用洗车管理系统，如有问题请联系管理员。', 1, 0, '系统', 2, '测试用户', 0, 0);

-- ----------------------------
-- 初始化消息模板（示例数据）
-- ----------------------------
INSERT INTO `t_message_template` (`code`, `name`, `type`, `title_template`, `content_template`, `priority`, `status`, `remark`) VALUES
('WELCOME', '欢迎注册', 1, '欢迎加入${systemName}', '尊敬的${userName}，欢迎使用${systemName}，如有任何问题，请联系管理员。', 0, 1, '新用户注册时发送'),
('SYSTEM_UPGRADE', '系统升级通知', 1, '系统升级维护通知', '系统将于${upgradeTime}进行升级维护，预计持续${duration}，届时系统将暂停服务，请提前做好准备。', 2, 1, '系统升级时发送'),
('ORDER_COMPLETE', '订单完成通知', 2, '您的订单已完成', '尊敬的${userName}，您的订单${orderNo}已完成，感谢您的使用！', 0, 1, '订单完成时发送'),
('TODO_REMINDER', '待办事项提醒', 3, '您有新的待办事项', '您有${count}个待处理的${taskType}，请及时处理。', 1, 1, '待办事项提醒'),
('ANNOUNCEMENT', '系统公告', 4, '${title}', '${content}', 0, 1, '通用公告模板');

-- ====================================================
-- 更新公司超管信息
-- ====================================================
UPDATE `t_company` SET `super_admin_id` = 1, `super_admin_name` = 'admin' WHERE `id` = 1;
