-- 企业微信审批模块 - 数据库表
-- 执行: 在 hzhub 数据库中执行

-- 1. 企业微信审批单本地缓存
CREATE TABLE IF NOT EXISTS `wecom_approval` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
  `sp_no` VARCHAR(64) NOT NULL COMMENT '审批单号',
  `sp_name` VARCHAR(128) DEFAULT NULL COMMENT '审批模板名称',
  `sp_status` TINYINT NOT NULL COMMENT '状态: 1审批中 2已通过 3已驳回 4已撤销 6通过后撤销 7已删除',
  `template_id` VARCHAR(128) DEFAULT NULL COMMENT '模板ID',
  `apply_time` BIGINT DEFAULT NULL COMMENT '提交时间(时间戳)',
  `applyer_userid` VARCHAR(128) DEFAULT NULL COMMENT '申请人userid',
  `applyer_party` VARCHAR(128) DEFAULT NULL COMMENT '申请人部门',
  `apply_data` JSON DEFAULT NULL COMMENT '表单数据(原始JSON)',
  `nodes_data` JSON DEFAULT NULL COMMENT '审批流程节点(原始JSON)',
  `summary_info` TEXT DEFAULT NULL COMMENT '审批摘要',
  `amount` DECIMAL(12,2) DEFAULT NULL COMMENT '涉及金额',
  `sync_time` DATETIME DEFAULT NULL COMMENT '最后同步时间',
  `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
  `create_by` BIGINT DEFAULT NULL COMMENT '创建者',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `update_by` BIGINT DEFAULT NULL COMMENT '更新者',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_tenant_sp_no` (`tenant_id`, `sp_no`),
  KEY `idx_tenant_status` (`tenant_id`, `sp_status`),
  KEY `idx_tenant_apply_time` (`tenant_id`, `apply_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='企业微信审批单本地缓存';

-- 2. 企业微信审批模板缓存
CREATE TABLE IF NOT EXISTS `wecom_approval_template` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
  `template_id` VARCHAR(128) NOT NULL COMMENT '模板ID',
  `template_name` VARCHAR(128) DEFAULT NULL COMMENT '模板名称',
  `template_config` JSON DEFAULT NULL COMMENT '模板配置(控件结构)',
  `sync_time` DATETIME DEFAULT NULL COMMENT '最后同步时间',
  `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
  `create_by` BIGINT DEFAULT NULL COMMENT '创建者',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `update_by` BIGINT DEFAULT NULL COMMENT '更新者',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_template` (`tenant_id`, `template_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='企业微信审批模板缓存';

-- 3. 企业微信租户配置（每个租户一条记录）
CREATE TABLE IF NOT EXISTS `wecom_tenant_config` (
  `id`              BIGINT NOT NULL AUTO_INCREMENT,
  `tenant_id`       VARCHAR(20) NOT NULL COMMENT '租户ID',
  `corpid`          VARCHAR(64) NOT NULL COMMENT '企业微信企业ID',
  `corpsecret`      VARCHAR(128) NOT NULL COMMENT '企业微信应用密钥',
  `agent_id`        VARCHAR(64) DEFAULT NULL COMMENT '应用AgentID',
  `callback_token`  VARCHAR(128) DEFAULT NULL COMMENT '回调Token',
  `callback_aes_key` VARCHAR(128) DEFAULT NULL COMMENT '回调EncodingAESKey',
  `enabled`         CHAR(1) DEFAULT '0' COMMENT '是否启用(0否 1是)',
  `remark`          VARCHAR(500) DEFAULT NULL COMMENT '备注',
  `create_dept`     BIGINT DEFAULT NULL COMMENT '创建部门',
  `create_by`       BIGINT DEFAULT NULL COMMENT '创建者',
  `create_time`     DATETIME DEFAULT CURRENT_TIMESTAMP,
  `update_by`       BIGINT DEFAULT NULL COMMENT '更新者',
  `update_time`     DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='企业微信租户配置';

-- 4. 企业微信审批同步日志
CREATE TABLE IF NOT EXISTS `wecom_approval_sync_log` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
  `sync_type` VARCHAR(20) NOT NULL COMMENT '同步类型: FULL/INCREMENTAL/MANUAL',
  `status` VARCHAR(20) DEFAULT 'RUNNING' COMMENT '同步状态: RUNNING运行中 COMPLETED已完成 FAILED失败',
  `start_time` DATETIME NOT NULL COMMENT '开始时间',
  `end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
  `duration` INT DEFAULT NULL COMMENT '耗时(秒)',
  `added_count` INT DEFAULT 0 COMMENT '新增数量',
  `updated_count` INT DEFAULT 0 COMMENT '更新数量',
  `error_count` INT DEFAULT 0 COMMENT '错误数量',
  `error_msg` TEXT DEFAULT NULL COMMENT '错误信息',
  `operator` VARCHAR(64) DEFAULT NULL COMMENT '操作人',
  `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
  `create_by` BIGINT DEFAULT NULL COMMENT '创建者',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `update_by` BIGINT DEFAULT NULL COMMENT '更新者',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_sync_type` (`sync_type`),
  KEY `idx_start_time` (`start_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='企业微信审批同步日志';

-- 5. sys_user 表增加企业微信 userid 字段
ALTER TABLE `sys_user` ADD COLUMN `wecom_userid` VARCHAR(64) DEFAULT NULL COMMENT '企业微信userid';

-- 6. wecom_approval 表增加审批人 userid 字段
ALTER TABLE `wecom_approval` ADD COLUMN `approver_userids` VARCHAR(1024) DEFAULT NULL COMMENT '审批人userid列表(逗号分隔)';

-- 7. wecom_approval 表增加审批类型名称字段
ALTER TABLE `wecom_approval` ADD COLUMN `template_name` VARCHAR(128) DEFAULT NULL COMMENT '审批类型名称(模板名称)';

-- 8. wecom_approval_sync_log 表增加状态字段
ALTER TABLE `wecom_approval_sync_log` ADD COLUMN `status` VARCHAR(20) DEFAULT 'RUNNING' COMMENT '同步状态: RUNNING运行中 COMPLETED已完成 FAILED失败';

-- 9. wecom_approval_template 表增加租户审计字段
ALTER TABLE `wecom_approval_template` ADD COLUMN `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门';
ALTER TABLE `wecom_approval_template` ADD COLUMN `create_by` BIGINT DEFAULT NULL COMMENT '创建者';
ALTER TABLE `wecom_approval_template` ADD COLUMN `update_by` BIGINT DEFAULT NULL COMMENT '更新者';
