-- 创建系统用户表
CREATE TABLE sys_user (
    user_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键，用户ID',
    dept_id BIGINT(20) DEFAULT NULL COMMENT '部门ID',
    login_name VARCHAR(30) NOT NULL COMMENT '登录账号',
    user_name VARCHAR(30) DEFAULT '' COMMENT '用户昵称',
    email VARCHAR(50) DEFAULT '' COMMENT '用户邮箱',
    phonenumber VARCHAR(11) DEFAULT '' COMMENT '手机号码',
    sex CHAR(1) DEFAULT '0' COMMENT '用户性别（0男 1女 2未知）',
    avatar VARCHAR(100) DEFAULT '' COMMENT '头像路径',
    password VARCHAR(50) DEFAULT '' COMMENT '密码',
    salt VARCHAR(20) DEFAULT '' COMMENT '盐加密',
    status CHAR(1) DEFAULT '0' COMMENT '帐号状态（0正常 1停用）',
    login_ip VARCHAR(128) DEFAULT '' COMMENT '最后登录IP',
    login_date DATETIME DEFAULT NULL COMMENT '最后登录时间',
    create_at DATETIME NOT NULL COMMENT '创建时间',
    update_at DATETIME NOT NULL COMMENT '更新时间',
    delete_at DATETIME DEFAULT NULL COMMENT '删除时间，软删除',
    PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';

-- 创建系统角色表
CREATE TABLE sys_role (
    role_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键，角色ID',
    role_name VARCHAR(30) NOT NULL COMMENT '角色名称',
    role_key VARCHAR(100) NOT NULL COMMENT '角色权限字符串',
    data_scope CHAR(1) DEFAULT '1' COMMENT '数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）',
    status CHAR(1) NOT NULL COMMENT '角色状态（0正常 1停用）',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    delete_at DATETIME DEFAULT NULL COMMENT '删除时间',
    PRIMARY KEY (role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统角色表';

-- 初始化角色数据
INSERT INTO sys_role (role_id, role_name, role_key, data_scope, status, create_time) VALUES
(1, '超级管理员', 'admin', '1', '0', NOW()),
(2, '普通角色', 'common', '2', '0', NOW());

-- 初始化用户数据
INSERT INTO sys_user (user_id, login_name, user_name, password, salt, status, create_at, update_at) VALUES
(1, 'admin', 'admin', '123456', 'salt', '0', NOW(), NOW()),
(2, 'mula', 'mula', '123456', 'salt', '0', NOW(), NOW()),
(3, 'jsm', 'jsm', '123456', 'salt', '0', NOW(), NOW());

-- 创建用户角色关系表
CREATE TABLE sys_user_role (
    id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    user_id BIGINT(20) NOT NULL COMMENT '用户ID',
    role_id BIGINT(20) NOT NULL COMMENT '角色ID',
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关系表';

-- 初始化用户角色关联关系
INSERT INTO sys_user_role (user_id, role_id) VALUES
(1, 1),  -- admin用户关联超级管理员角色
(2, 2),  -- mula用户关联普通角色
(3, 2);  -- jsm用户关联普通角色

-- 创建部门表
CREATE TABLE sys_dept (
    dept_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',
    parent_id BIGINT(20) DEFAULT 0 COMMENT '父部门id',
    dept_name VARCHAR(30) DEFAULT '' COMMENT '部门名称',
    order_num INT(4) DEFAULT 0 COMMENT '显示顺序',
    leader VARCHAR(20) DEFAULT NULL COMMENT '负责人',
    phone VARCHAR(11) DEFAULT NULL COMMENT '联系电话',
    email VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
    status CHAR(1) DEFAULT '0' COMMENT '部门状态（0正常 1停用）',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    delete_at DATETIME DEFAULT NULL COMMENT '删除时间',
    PRIMARY KEY (dept_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';

-- 创建菜单权限表
CREATE TABLE sys_menu (
    menu_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
    menu_name VARCHAR(50) NOT NULL COMMENT '菜单名称',
    parent_id BIGINT(20) DEFAULT 0 COMMENT '父菜单ID',
    order_num INT(4) DEFAULT 0 COMMENT '显示顺序',
    path VARCHAR(200) DEFAULT '' COMMENT '路由地址',
    component VARCHAR(255) DEFAULT NULL COMMENT '组件路径',
    is_frame INT(1) DEFAULT 1 COMMENT '是否为外链（0是 1否）',
    menu_type CHAR(1) DEFAULT '' COMMENT '菜单类型（M目录 C菜单 F按钮）',
    visible CHAR(1) DEFAULT '0' COMMENT '菜单状态（0显示 1隐藏）',
    perms VARCHAR(100) DEFAULT NULL COMMENT '权限标识',
    icon VARCHAR(100) DEFAULT '#' COMMENT '菜单图标',
    status CHAR(1) DEFAULT '0' COMMENT '菜单状态（0正常 1停用）',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    delete_at DATETIME DEFAULT NULL COMMENT '删除时间',
    PRIMARY KEY (menu_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限表';

-- 创建角色菜单关系表
CREATE TABLE sys_role_menu (
    id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    role_id BIGINT(20) NOT NULL COMMENT '角色ID',
    menu_id BIGINT(20) NOT NULL COMMENT '菜单ID',
    PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和菜单关系表';

-- 初始化部门数据
INSERT INTO sys_dept (dept_id, parent_id, dept_name, order_num, create_time) VALUES
(1, 0, '紫光汇智', 1, NOW()),
(2, 1, 'VDI事业部门', 1, NOW()),
(3, 1, '营销中心', 2, NOW()),
(4, 1, '产品中心', 3, NOW());

-- 初始化菜单数据
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, perms, icon, create_time) VALUES
-- 一级菜单
(1, '系统管理', 0, 1, 'system', NULL, 'M', '0', '', 'system', NOW()),
(2, '项目管理', 0, 2, 'project', NULL, 'M', '0', '', 'project', NOW()),
-- 系统管理子菜单
(100, '用户管理', 1, 1, 'user', 'system/user/index', 'C', '0', 'system:user:list', 'user', NOW()),
(101, '角色管理', 1, 2, 'role', 'system/role/index', 'C', '0', 'system:role:list', 'role', NOW()),
(102, '菜单管理', 1, 3, 'menu', 'system/menu/index', 'C', '0', 'system:menu:list', 'menu', NOW()),
-- 项目管理子菜单
(200, '项目信息管理', 2, 1, 'info', 'project/info/index', 'C', '0', 'project:info:list', 'info', NOW()),
(201, '合同信息管理', 2, 2, 'contract', 'project/contract/index', 'C', '0', 'project:contract:list', 'contract', NOW());

-- 初始化角色菜单关系
INSERT INTO sys_role_menu (role_id, menu_id) VALUES
-- admin角色系统管理权限
(1, 1), (1, 100), (1, 101), (1, 102),
-- common角色项目管理权限
(2, 2), (2, 200), (2, 201);

-- 创建字典类型表
CREATE TABLE sys_dict_type (
    dict_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '字典主键',
    dict_name VARCHAR(100) DEFAULT '' COMMENT '字典名称',
    dict_type VARCHAR(100) DEFAULT '' COMMENT '字典类型',
    status CHAR(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    delete_at DATETIME DEFAULT NULL COMMENT '删除时间',
    PRIMARY KEY (dict_id),
    UNIQUE KEY dict_type (dict_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表';

-- 创建字典数据表
CREATE TABLE sys_dict_data (
    dict_code BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '字典编码',
    dict_sort INT(4) DEFAULT 0 COMMENT '字典排序',
    dict_label VARCHAR(100) DEFAULT '' COMMENT '字典标签',
    dict_value VARCHAR(100) DEFAULT '' COMMENT '字典键值',
    dict_type VARCHAR(100) DEFAULT '' COMMENT '字典类型',
    status CHAR(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    delete_at DATETIME DEFAULT NULL COMMENT '删除时间',
    PRIMARY KEY (dict_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典数据表';

-- 初始化字典类型数据
INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, status, create_time) VALUES
(1, '用户性别', 'sys_user_sex', '0', NOW()),
(2, '合同类别', 'contract_type', '0', NOW());

-- 初始化字典数据
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, status, create_time) VALUES
-- 用户性别数据
(1, '男', '0', 'sys_user_sex', '0', NOW()),
(2, '女', '1', 'sys_user_sex', '0', NOW()),
(3, '未知', '2', 'sys_user_sex', '0', NOW()),
-- 合同类别数据
(1, '直签', '1', 'contract_type', '0', NOW()),
(2, '代理商签', '2', 'contract_type', '0', NOW());

