-- ----------------------------
-- 1. 背调分类表 (main_back_category)
-- ----------------------------
DROP TABLE IF EXISTS `main_back_category`;
CREATE TABLE `main_back_category` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(255) NOT NULL COMMENT '分类名称',
  `price` decimal(10, 2) DEFAULT '0.00' COMMENT '分类价格',
  `status` char(1) DEFAULT '1' COMMENT '状态（0停用 1正常）',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调分类表';

-- ----------------------------
-- 2. 背调条款表 (main_back_clause)
-- ----------------------------
DROP TABLE IF EXISTS `main_back_clause`;
CREATE TABLE `main_back_clause` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `category_id` bigint NOT NULL COMMENT '所属分类ID',
  `name` varchar(255) NOT NULL COMMENT '条款名称',
  `type` varchar(50) DEFAULT NULL COMMENT '条款类型（字典：sys_clause_type）',
  `description` text COMMENT '条款描述',
  `price` decimal(10,2) DEFAULT '0.00' COMMENT '条款单价',
  `status` char(1) DEFAULT '1' COMMENT '状态（0停用 1正常）',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
  PRIMARY KEY (`id`),
  KEY `idx_category_id` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调条款表';

-- ----------------------------
-- 3. 学员个人信息表 (main_student)
-- ----------------------------
DROP TABLE IF EXISTS `main_student`;
CREATE TABLE `main_student` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `mobile` varchar(20) NOT NULL COMMENT '手机号',
  `id_card_number` varchar(50) DEFAULT NULL COMMENT '证件号码',
  `unique_code` varchar(32) NOT NULL COMMENT '背调/测评唯一码',
  `gender` char(1) DEFAULT '0' COMMENT '性别（0男 1女 2未知）',
  `avatar` bigint DEFAULT NULL COMMENT '头像URL',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `tenant_id` varchar(20) DEFAULT '000000' COMMENT '所属租户（默认平台）',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_mobile` (`mobile`),
  UNIQUE KEY `uk_unique_code` (`unique_code`),
  UNIQUE KEY `uk_id_card` (`id_card_number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学员个人信息表';

-- ----------------------------
-- 4. 企业候选人关系表 (main_candidate)
-- ----------------------------
DROP TABLE IF EXISTS `main_candidate`;
CREATE TABLE `main_candidate` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(20) NOT NULL COMMENT '所属租户(企业ID)',
  `student_id` bigint NOT NULL COMMENT '关联学员ID',
  `source` varchar(50) DEFAULT NULL COMMENT '来源渠道',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_student_id` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业候选人关系表';

-- ----------------------------
-- 5. 背调订单表 (main_back_order)
-- ----------------------------
DROP TABLE IF EXISTS `main_back_order`;
CREATE TABLE `main_back_order` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `order_no` varchar(64) NOT NULL COMMENT '订单编号',
  `tenant_id` varchar(20) NOT NULL COMMENT '下单租户(企业ID)',
  `category_id` bigint DEFAULT NULL COMMENT '背调套餐ID',
  `category_name` varchar(255) DEFAULT NULL COMMENT '套餐名称快照',
  `total_amount` decimal(10, 2) DEFAULT '0.00' COMMENT '订单金额',
  `status` char(1) DEFAULT '0' COMMENT '订单状态（0待处理 1进行中 2已完成 3已退款）',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_order_no` (`order_no`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调订单表';

-- ----------------------------
-- 6. 背调执行记录表 (main_back_record)
-- ----------------------------
DROP TABLE IF EXISTS `main_back_record`;
CREATE TABLE `main_back_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务ID',
  `order_id` bigint NOT NULL COMMENT '关联订单ID',
  `candidate_id` bigint NOT NULL COMMENT '关联企业候选人ID',
  `status` varchar(20) DEFAULT '未完成' COMMENT '状态（完成、未完成、失败）',
  `report_url` varchar(500) DEFAULT NULL COMMENT '报告地址',
  `finish_time` datetime DEFAULT NULL COMMENT '完成时间',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_candidate_id` (`candidate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='背调执行记录表';

-- ----------------------------
-- 7. 企业入驻申请表 (main_company_apply)
-- ----------------------------
DROP TABLE IF EXISTS `main_company_apply`;
CREATE TABLE `main_company_apply` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `apply_no` varchar(64) DEFAULT NULL COMMENT '申请编号',
  `company_name` varchar(255) DEFAULT NULL COMMENT '企业名称',
  `official_account` varchar(100) DEFAULT NULL COMMENT '公众号名称',
  `office_address` varchar(500) DEFAULT NULL COMMENT '办公地址',
  `credit_code` varchar(50) DEFAULT NULL COMMENT '统一社会信用代码',
  `auth_letter` bigint DEFAULT NULL COMMENT '授权委托书(文件ID)',
  `avatar` bigint DEFAULT NULL COMMENT '企业logo',
  `surname` varchar(50) DEFAULT NULL COMMENT '联系人姓',
  `name` varchar(50) DEFAULT NULL COMMENT '联系人名',
  `mobile` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `password` varchar(100) DEFAULT NULL COMMENT '登录密码',
  `apply_status` tinyint DEFAULT '0' COMMENT '申请状态（0待审核 1已通过 2已驳回）',
  `audit_id` bigint DEFAULT NULL COMMENT '审核ID',
  `tenant_id` varchar(64) DEFAULT NULL COMMENT '租户ID',
  `reject_reason` varchar(500) DEFAULT NULL COMMENT '驳回原因',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_apply_no` (`apply_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业入驻申请表';

-- ----------------------------
-- 8. 岗位发布申请表 (main_post_apply)
-- ----------------------------
DROP TABLE IF EXISTS `main_post_apply`;
CREATE TABLE `main_post_apply` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `apply_no` varchar(64) DEFAULT NULL COMMENT '申请编号',
  `tenant_id` varchar(64) DEFAULT NULL COMMENT '租户ID',
  `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
  `company_name` varchar(255) DEFAULT NULL COMMENT '公司名称',
  `post_description` varchar(500) DEFAULT NULL COMMENT '岗位描述',
  `work_province` varchar(100) DEFAULT NULL COMMENT '工作省份',
  `work_city` varchar(100) DEFAULT NULL COMMENT '工作城市',
  `work_district` varchar(100) DEFAULT NULL COMMENT '工作区县',
  `work_address` varchar(500) DEFAULT NULL COMMENT '工作详细地址',
  `post_type` varchar(50) DEFAULT NULL COMMENT '岗位类型(字典值)',
  `education_requirement` varchar(50) DEFAULT NULL COMMENT '学历要求(字典值)',
  `salary_type` varchar(50) DEFAULT NULL COMMENT '薪资类型(字典值)',
  `salary_range` varchar(100) DEFAULT NULL COMMENT '薪资范围',
  `recruit_num` int DEFAULT NULL COMMENT '招聘人数',
  `registration_start_date` datetime DEFAULT NULL COMMENT '报名开始时间',
  `registration_end_date` datetime DEFAULT NULL COMMENT '报名结束时间',
  `is_urgent` tinyint(1) DEFAULT '0' COMMENT '是否急招',
  `school_requirement` varchar(50) DEFAULT NULL COMMENT '学校要求(字典值)',
  `gender_requirement` varchar(50) DEFAULT NULL COMMENT '性别要求(字典值)',
  `grade_requirement` varchar(50) DEFAULT NULL COMMENT '年级要求(字典值)',
  `arrival_time` varchar(50) DEFAULT NULL COMMENT '到岗时间(字典值)',
  `internship_duration` varchar(50) DEFAULT NULL COMMENT '实习时长(字典值)',
  `willing_to_travel` tinyint(1) DEFAULT '0' COMMENT '是否愿意出差',
  `welfare_tags` varchar(500) DEFAULT NULL COMMENT '福利标签',
  `job_requirement` text COMMENT '岗位要求',
  `post_level` varchar(50) DEFAULT NULL COMMENT '岗位等级(字典值)',
  `assessment_time` varchar(50) DEFAULT NULL COMMENT '测评时长(分钟)',
  `grade_a` decimal(10,2) DEFAULT NULL COMMENT '能力A及格分',
  `grade_b` decimal(10,2) DEFAULT NULL COMMENT '能力B及格分',
  `grade_c` decimal(10,2) DEFAULT NULL COMMENT '能力C及格分',
  `apply_status` tinyint DEFAULT '0' COMMENT '申请状态',
  `audit_id` bigint DEFAULT NULL COMMENT '审核ID',
  `post_id` bigint DEFAULT NULL COMMENT '对应已发布岗位ID',
  `reject_reason` varchar(500) DEFAULT NULL COMMENT '驳回原因',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_apply_no` (`apply_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位发布申请表';

-- ----------------------------
-- 9. 审核记录表 (main_audit)
-- ----------------------------
DROP TABLE IF EXISTS `main_audit`;
CREATE TABLE `main_audit` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `audit_type` tinyint DEFAULT NULL COMMENT '审核类型（1企业入驻 2岗位发布）',
  `target_id` bigint DEFAULT NULL COMMENT '审核目标ID',
  `audit_result` tinyint DEFAULT NULL COMMENT '审核结果（1通过 2驳回）',
  `audit_remark` varchar(500) DEFAULT NULL COMMENT '审核备注',
  `deposit` decimal(10,2) DEFAULT NULL COMMENT '保证金',
  `final_payment` decimal(10,2) DEFAULT NULL COMMENT '尾款',
  `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
  `audit_by` bigint DEFAULT NULL COMMENT '审核人ID',
  `tenant_id` varchar(64) DEFAULT NULL COMMENT '租户ID',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_target_id` (`target_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核记录表';

-- ----------------------------
-- 10. 字典数据
-- ----------------------------
-- 字典类型
DELETE FROM `sys_dict_type` WHERE `dict_type` = 'sys_clause_type';
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (null, '背调条款类型', 'sys_clause_type', '0', 1, sysdate(), 1, sysdate(), '背调条款类型列表');

-- 字典数据
DELETE FROM `sys_dict_data` WHERE `dict_type` = 'sys_clause_type';
INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (null, 1, '身份风险', '身份风险', 'sys_clause_type', '', 'primary', 'N', '0', 1, sysdate(), 1, sysdate(), '身份风险');

INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (null, 2, '职业风险', '职业风险', 'sys_clause_type', '', 'warning', 'N', '0', 1, sysdate(), 1, sysdate(), '职业风险');

INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (null, 3, '能力评估', '能力评估', 'sys_clause_type', '', 'success', 'N', '0', 1, sysdate(), 1, sysdate(), '能力评估');


CREATE TABLE `sys_tag` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '标签名称',
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '标签说明',
  `status` tinyint DEFAULT '0' COMMENT '状态 (0:启用, 1:停用)',
  `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='标签定义表';



CREATE TABLE `main_position` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '岗位ID',
  `tenant_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID',
  `post_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '岗位名称',
  `post_description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '岗位描述',
  `work_province` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工作省份',
  `work_city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工作城市',
  `work_district` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工作区县',
  `work_address` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '详细地址',
  `post_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '岗位类型(字典:main_position_type)',
  `education_requirement` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '学历要求',
  `salary_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '薪资类型',
  `salary_range` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '薪资范围',
  `recruit_num` int NOT NULL COMMENT '招聘人数',
  `registration_start_date` date DEFAULT NULL COMMENT '报名开始时间',
  `registration_end_date` date DEFAULT NULL COMMENT '报名结束时间',
  `is_urgent` tinyint(1) DEFAULT '0' COMMENT '是否急招(0-否 1-是)',
  `school_requirement` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '学校要求(字典:main_education)',
  `gender_requirement` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '性别要求(字典:sys_user_sex)',
  `grade_requirement` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '年级要求(字典:main_experience)',
  `arrival_time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '到岗时间(字典:main_arrival_time)',
  `internship_duration` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '实习时长(字典:main_internship_duration)',
  `willing_to_travel` tinyint(1) DEFAULT '0' COMMENT '是否愿意出差(0-否 1-是)',
  `welfare_tags` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '福利标签',
  `job_requirement` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '岗位要求',
  `post_level` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '岗位等级(字典:(main_position_level))',
  `assessment_time` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '测评时长',
  `grade_a` decimal(10,2) DEFAULT NULL COMMENT '能力A及格分',
  `grade_b` decimal(10,2) DEFAULT NULL COMMENT '能力B及格分',
  `grade_c` decimal(10,2) DEFAULT NULL COMMENT '能力C及格分',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_id` (`tenant_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='岗位表（这是要发布出去的，与sys_post不同）';






CREATE TABLE `main_student` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `student_no` varchar(30) NOT NULL COMMENT '学员展示编号(如U2023071567)',
  `name` varchar(50) NOT NULL COMMENT '学员姓名',
  `mobile` varchar(11) NOT NULL COMMENT '联络手机号',
  `email` varchar(50) DEFAULT '' COMMENT '电子邮箱',
  `id_card_number` varchar(18) DEFAULT '' COMMENT '证件号码',
  `gender` char(1) DEFAULT '0' COMMENT '性别（0男 1女 2未知）',
  `avatar` bigint DEFAULT NULL COMMENT '头像ID(关联oss表)',
  `user_type` char(1) DEFAULT '2' COMMENT '用户类型（1付费用户 2普通用户 3黑名单）',
  `total_amount` decimal(10,2) DEFAULT '0.00' COMMENT '历史累计消费金额',
  `availability` varchar(50) DEFAULT '' COMMENT '求职状态/到岗时间(如:一周内到岗)',
  `job_intention` varchar(255) DEFAULT '' COMMENT '求职意向(岗位ID或名称,逗号分隔)',
  `job_type` varchar(50) DEFAULT NULL COMMENT '建议类型(1全职 2实习 3兼职)',
  `school_name` varchar(100) DEFAULT '' COMMENT '毕业/就读院校',
  `education` varchar(50) DEFAULT '' COMMENT '学历要求(字典:main_education)',
  `grade` varchar(50) DEFAULT '' COMMENT '当前年级(字典:main_experience)',
  `internship_duration` varchar(50) DEFAULT '' COMMENT '实习时长(字典:main_internship_duration)',
  `resume_file` bigint DEFAULT NULL COMMENT '个人简历附件ID(关联oss表)',
  `status` char(1) DEFAULT '0' COMMENT '账号状态（0正常 1停用）',
  `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标志（0存在 1删除）',
  `tenant_id` varchar(20) DEFAULT '000000' COMMENT '所属租户/企业编号',
  `login_date` datetime DEFAULT NULL COMMENT '最后登录时间',
  `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
  `create_by` bigint DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '注册/创建日期',
  `update_by` bigint DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '最后信息更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_student_no` (`student_no`) USING BTREE,
  UNIQUE KEY `uk_mobile` (`mobile`) USING BTREE,
  KEY `idx_tenant_id` (`tenant_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学员简历与个人信息总表';

-- 1. 学员教育经历表
CREATE TABLE IF NOT EXISTS `main_student_education` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `student_id` bigint(20) NOT NULL COMMENT '学员ID (关联 main_student.id)',
    `school` varchar(100) DEFAULT NULL COMMENT '学校名称',
    `education` varchar(50) DEFAULT NULL COMMENT '学历',
    `start_time` varchar(20) DEFAULT NULL COMMENT '开始时间 (如 2022.9)',
    `end_time` varchar(20) DEFAULT NULL COMMENT '结束时间 (如 2026.7)',
    `major` varchar(100) DEFAULT NULL COMMENT '专业',
    `campus_experience` text DEFAULT NULL COMMENT '在校经历描述',
    `tenant_id` bigint(20) DEFAULT '0' COMMENT '租户ID',
    `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
		`create_by` bigint DEFAULT NULL COMMENT '创建者',
		`create_time` datetime DEFAULT NULL COMMENT '创建时间',
		`update_by` bigint DEFAULT NULL COMMENT '更新者',
		`update_time` datetime DEFAULT NULL COMMENT '更新时间',
		`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
    PRIMARY KEY (`id`),
    KEY `idx_student_id` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学员教育经历表';

-- 2. 学员工作经历表
CREATE TABLE IF NOT EXISTS `main_student_experience` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `student_id` bigint(20) NOT NULL COMMENT '学员ID (关联 main_student.id)',
    `company` varchar(100) DEFAULT NULL COMMENT '公司名称',
    `industry` varchar(100) DEFAULT NULL COMMENT '所属行业',
    `start_time` varchar(20) DEFAULT NULL COMMENT '开始时间',
    `end_time` varchar(20) DEFAULT NULL COMMENT '结束时间',
    `is_internship` tinyint(1) DEFAULT '0' COMMENT '是否实习 (0否 1是)',
    `job_title` varchar(100) DEFAULT NULL COMMENT '职位名称',
    `department` varchar(100) DEFAULT NULL COMMENT '所属部门',
    `work_content` text DEFAULT NULL COMMENT '工作内容描述',
    `tenant_id` bigint(20) DEFAULT '0' COMMENT '租户ID',
    `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
		`create_by` bigint DEFAULT NULL COMMENT '创建者',
		`create_time` datetime DEFAULT NULL COMMENT '创建时间',
		`update_by` bigint DEFAULT NULL COMMENT '更新者',
		`update_time` datetime DEFAULT NULL COMMENT '更新时间',
		`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
    PRIMARY KEY (`id`),
    KEY `idx_student_id` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学员工作经历表';

-- 3. 学员项目经历表
CREATE TABLE IF NOT EXISTS `main_student_project` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `student_id` bigint(20) NOT NULL COMMENT '学员ID (关联 main_student.id)',
    `project_name` varchar(100) DEFAULT NULL COMMENT '项目名称',
    `role` varchar(100) DEFAULT NULL COMMENT '担任角色',
    `start_time` varchar(20) DEFAULT NULL COMMENT '开始时间',
    `end_time` varchar(20) DEFAULT NULL COMMENT '结束时间',
    `description` text DEFAULT NULL COMMENT '项目描述',
    `achievement` text DEFAULT NULL COMMENT '业绩描述',
    `link` varchar(255) DEFAULT NULL COMMENT '项目链接',
    `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
		`create_by` bigint DEFAULT NULL COMMENT '创建者',
		`create_time` datetime DEFAULT NULL COMMENT '创建时间',
		`update_by` bigint DEFAULT NULL COMMENT '更新者',
		`update_time` datetime DEFAULT NULL COMMENT '更新时间',
		`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
    PRIMARY KEY (`id`),
    KEY `idx_student_id` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学员项目经历表';








-- =====================================================
-- 1. 坐席配置表
-- 对应前端: SeatConfig.vue
-- =====================================================
DROP TABLE IF EXISTS cs_seat_config;
CREATE TABLE cs_seat_config (
                                id          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '坐席ID',
                                seat_name   VARCHAR(50)  NOT NULL COMMENT '坐席名称（如：客服小A）',
                                avatar      VARCHAR(500) DEFAULT NULL COMMENT '坐席头像URL',
                                module      VARCHAR(20)  NOT NULL COMMENT '负责模块: mini(小程序), merchant(商家), all(全部)',
                                status      TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '状态: 0=停用, 1=启用',
                                create_dept bigint DEFAULT NULL COMMENT '创建部门',
                                create_time datetime DEFAULT NULL COMMENT '创建时间',
                                create_by bigint DEFAULT NULL COMMENT '上传人',
                                update_time datetime DEFAULT NULL COMMENT '更新时间',
                                update_by bigint DEFAULT NULL COMMENT '更新人',
                                PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='坐席配置表';

-- 坐席与客服人员关联表
DROP TABLE IF EXISTS cs_seat_waiter;
CREATE TABLE cs_seat_waiter (
                                id          BIGINT NOT NULL AUTO_INCREMENT,
                                seat_id     BIGINT NOT NULL COMMENT '坐席ID',
                                user_id     BIGINT NOT NULL COMMENT '客服用户ID（关联若依sys_user）',
                                create_dept bigint DEFAULT NULL COMMENT '创建部门',
                                create_time datetime DEFAULT NULL COMMENT '创建时间',
                                create_by bigint DEFAULT NULL COMMENT '上传人',
                                update_time datetime DEFAULT NULL COMMENT '更新时间',
                                update_by bigint DEFAULT NULL COMMENT '更新人',
                                PRIMARY KEY (id),
                                KEY idx_seat_id (seat_id),
                                KEY idx_user_id (user_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='坐席-客服关联表';

-- 初始数据
INSERT INTO cs_seat_config (seat_name, avatar, module, status) VALUES
                                                                   ('客服小A', 'https://api.dicebear.com/7.x/avataaars/svg?seed=A', '小程序', 1),
                                                                   ('客服小B', 'https://api.dicebear.com/7.x/avataaars/svg?seed=B', '官网',   1),
                                                                   ('客服小C', 'https://api.dicebear.com/7.x/avataaars/svg?seed=C', '小程序', 0);


-- =====================================================
-- 2. 会话表（一个 User/商家 与客服建立一个会话）
-- =====================================================
DROP TABLE IF EXISTS cs_session;
CREATE TABLE cs_session (
                            id              BIGINT        NOT NULL AUTO_INCREMENT COMMENT '会话ID',
                            session_no      VARCHAR(32)   NOT NULL UNIQUE COMMENT '会话编号，唯一，用于WS频道路由',
                            session_type    TINYINT(1)    NOT NULL COMMENT '会话类型: 1=小程序用户, 2=PC商家',
                            from_user_id    BIGINT        NOT NULL COMMENT '发起用户ID（小程序用户或商家用户ID）',
                            from_user_name  VARCHAR(100)  DEFAULT '' COMMENT '发起方昵称',
                            from_user_avatarVARCHAR(500)  DEFAULT '' COMMENT '发起方头像',
                            seat_id         BIGINT        DEFAULT NULL COMMENT '当前分配坐席ID',
                            waiter_id       BIGINT        DEFAULT NULL COMMENT '当前接待客服ID',
                            status          TINYINT(1)    NOT NULL DEFAULT 1 COMMENT '状态: 1=进行中, 2=已结束',
                            last_msg        VARCHAR(500)  DEFAULT '' COMMENT '最后一条消息摘要（用于列表展示）',
                            last_msg_time   DATETIME      DEFAULT NULL COMMENT '最后消息时间',
                            unread_count    INT           NOT NULL DEFAULT 0 COMMENT '客服侧未读消息数',
                            create_dept bigint DEFAULT NULL COMMENT '创建部门',
                            create_time datetime DEFAULT NULL COMMENT '创建时间',
                            create_by bigint DEFAULT NULL COMMENT '上传人',
                            update_time datetime DEFAULT NULL COMMENT '更新时间',
                            update_by bigint DEFAULT NULL COMMENT '更新人',
                            PRIMARY KEY (id),
                            KEY idx_from_user (from_user_id),
                            KEY idx_waiter (waiter_id),
                            KEY idx_status (status)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='客服会话表';


-- =====================================================
-- 3. 消息表（核心表，存储所有聊天消息）
-- =====================================================
DROP TABLE IF EXISTS cs_message;
CREATE TABLE cs_message (
                            id           BIGINT        NOT NULL AUTO_INCREMENT COMMENT '消息ID',
                            session_id   BIGINT        NOT NULL COMMENT '归属会话ID',
                            msg_no       VARCHAR(32)   NOT NULL UNIQUE COMMENT '消息唯一编号（客户端生成，用于幂等）',
                            sender_type  TINYINT(1)    NOT NULL COMMENT '发送方类型: 1=用户/商家, 2=客服, 3=系统',
                            sender_id    BIGINT        NOT NULL COMMENT '发送者ID',
                            msg_type     VARCHAR(20)   NOT NULL COMMENT '消息类型: text/image/file/job_card/order_card/emoji',
                            content      TEXT          DEFAULT NULL COMMENT '文本消息内容',
                            file_url     VARCHAR(500)  DEFAULT NULL COMMENT '图片/文件URL',
                            file_name    VARCHAR(255)  DEFAULT NULL COMMENT '文件原始名称',
                            file_size    BIGINT        DEFAULT NULL COMMENT '文件大小（字节）',
                            file_type    VARCHAR(100)  DEFAULT NULL COMMENT '文件MIME类型',
                            payload      JSON          DEFAULT NULL COMMENT '卡片类消息的结构化数据（job_card/order_card的JSON）',
                            status       TINYINT(1)    NOT NULL DEFAULT 1 COMMENT '状态: 1=正常, 2=已撤回',
                            is_read      TINYINT(1)    NOT NULL DEFAULT 0 COMMENT '是否已读: 0=未读, 1=已读',
                            send_time    DATETIME      NOT NULL COMMENT '发送时间',
                            create_dept bigint DEFAULT NULL COMMENT '创建部门',
                            create_time datetime DEFAULT NULL COMMENT '创建时间',
                            create_by bigint DEFAULT NULL COMMENT '上传人',
                            update_time datetime DEFAULT NULL COMMENT '更新时间',
                            update_by bigint DEFAULT NULL COMMENT '更新人',
                            PRIMARY KEY (id),
                            KEY idx_session (session_id),
                            KEY idx_send_time (send_time),
                            KEY idx_msg_type (msg_type)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='聊天消息表';


-- =====================================================
-- 4. 结算单（order_card）扩展表
-- 配合消息表中 msg_type='order_card' 的消息使用
-- 实现: 60秒倒计时自动失效
-- =====================================================
DROP TABLE IF EXISTS cs_order_card;
CREATE TABLE cs_order_card (
                               id              BIGINT         NOT NULL AUTO_INCREMENT COMMENT '结算单ID',
                               msg_id          BIGINT         NOT NULL COMMENT '关联消息ID',
                               session_id      BIGINT         NOT NULL COMMENT '关联会话ID',
                               order_name      VARCHAR(200)   NOT NULL COMMENT '项目名称',
                               order_price     DECIMAL(10, 2) NOT NULL COMMENT '支付金额',
                               order_type      VARCHAR(50)    DEFAULT NULL COMMENT '订单类型说明',
                               original_order_id BIGINT       DEFAULT NULL COMMENT '关联平台真实订单ID',
                               status          VARCHAR(20)    NOT NULL DEFAULT 'pending'
                                   COMMENT '状态: pending=待支付, paid=已支付, cancelled=已取消, expired=已失效',
                               expire_time     DATETIME       NOT NULL COMMENT '结算单过期时间（发送时间+60s）',
                               pay_time        DATETIME       DEFAULT NULL COMMENT '实际支付时间',
                               create_dept bigint DEFAULT NULL COMMENT '创建部门',
                               create_time datetime DEFAULT NULL COMMENT '创建时间',
                               create_by bigint DEFAULT NULL COMMENT '上传人',
                               update_time datetime DEFAULT NULL COMMENT '更新时间',
                               update_by bigint DEFAULT NULL COMMENT '更新人',
                               PRIMARY KEY (id),
                               KEY idx_msg_id (msg_id),
                               KEY idx_session (session_id),
                               KEY idx_status (status),
                               KEY idx_expire (expire_time)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='结算单表（order_card）';


-- =====================================================
-- 5. 工单表（客服工单管理）
-- 对应前端: SeatConfig.vue 的工单子系统
-- =====================================================
DROP TABLE IF EXISTS cs_ticket;
CREATE TABLE cs_ticket (
                           id            VARCHAR(32)   NOT NULL COMMENT '工单编号（如: 20991216194）',
                           session_id    BIGINT        DEFAULT NULL COMMENT '关联会话ID（若来自在线沟通）',
                           user_id       VARCHAR(50)   NOT NULL COMMENT '反馈用户ID',
                           user_name     VARCHAR(100)  NOT NULL COMMENT '反馈用户昵称',
                           content       TEXT          NOT NULL COMMENT '反馈内容',
                           source        VARCHAR(20)   NOT NULL COMMENT '反馈渠道: 小程序/商家',
                           category      VARCHAR(50)   NOT NULL COMMENT '问题分类',
                           status        VARCHAR(20)   NOT NULL DEFAULT 'pending'
                               COMMENT '状态: pending=待处理, processing=处理中, completed=已完成, abandoned=已废弃',
                           handler_id    BIGINT        DEFAULT NULL COMMENT '处理客服ID',
                           handler_reply TEXT          DEFAULT NULL COMMENT '客服处理回复',
                           create_dept bigint DEFAULT NULL COMMENT '创建部门',
                           create_time datetime DEFAULT NULL COMMENT '创建时间',
                           create_by bigint DEFAULT NULL COMMENT '上传人',
                           update_time datetime DEFAULT NULL COMMENT '更新时间',
                           update_by bigint DEFAULT NULL COMMENT '更新人',
                           PRIMARY KEY (id),
                           KEY idx_user (user_id),
                           KEY idx_status (status),
                           KEY idx_source (source)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客服工单表';


-- =====================================================
-- 7. 消息已读记录表（精确追踪已读状态）
-- =====================================================
DROP TABLE IF EXISTS cs_read_record;
CREATE TABLE cs_read_record (
                                id          BIGINT   NOT NULL AUTO_INCREMENT,
                                session_id  BIGINT   NOT NULL COMMENT '会话ID',
                                user_id     BIGINT   NOT NULL COMMENT '用户ID',
                                last_read_msg_id BIGINT DEFAULT 0 COMMENT '已读到的消息ID',
                                read_time   DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                                create_dept bigint DEFAULT NULL COMMENT '创建部门',
                                create_time datetime DEFAULT NULL COMMENT '创建时间',
                                create_by bigint DEFAULT NULL COMMENT '上传人',
                                update_time datetime DEFAULT NULL COMMENT '更新时间',
                                update_by bigint DEFAULT NULL COMMENT '更新人',
                                PRIMARY KEY (id),
                                UNIQUE KEY uk_session_user (session_id, user_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='消息已读记录表';








