-- 社区管理模块数据库表结构

-- 1. 活动表（如果不存在则创建）
CREATE TABLE IF NOT EXISTS `community_activity` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '活动ID',
  `activity_id` varchar(64) NOT NULL COMMENT '活动编号',
  `name` varchar(255) NOT NULL COMMENT '活动名称',
  `type` tinyint NOT NULL DEFAULT '1' COMMENT '活动类型：1-线上活动，2-线下活动',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态：0-未开始，1-进行中，2-已结束',
  `cover_url` varchar(512) DEFAULT NULL COMMENT '封面图URL',
  `location` varchar(255) DEFAULT NULL COMMENT '活动地点（线下活动）',
  `start_time` datetime NOT NULL COMMENT '活动开始时间',
  `end_time` datetime NOT NULL COMMENT '活动结束时间',
  `register_start_time` datetime DEFAULT NULL COMMENT '报名开始时间',
  `register_end_time` datetime DEFAULT NULL COMMENT '报名结束时间',
  `recipients` varchar(255) DEFAULT NULL COMMENT '发送对象',
  `register_points` int DEFAULT '0' COMMENT '报名积分',
  `content` text COMMENT '活动内容（富文本）',
  `register_count` int DEFAULT '0' COMMENT '实际报名人数',
  `virtual_register_count` int DEFAULT '0' COMMENT '虚拟报名人数',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_activity_id` (`activity_id`),
  KEY `idx_status` (`status`),
  KEY `idx_start_time` (`start_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='社区活动表';

-- 2. Banner表（如果不存在则创建）
CREATE TABLE IF NOT EXISTS `community_banner` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'Banner ID',
  `banner_id` bigint NOT NULL COMMENT 'Banner编号',
  `image_url` varchar(512) NOT NULL COMMENT 'Banner图片URL',
  `description` varchar(255) DEFAULT NULL COMMENT '说明',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态：0-未上架，1-已上架，2-已下架',
  `online_time` datetime DEFAULT NULL COMMENT '上架时间',
  `offline_time` datetime DEFAULT NULL COMMENT '下架时间',
  `push_type` tinyint DEFAULT '1' COMMENT '推送类型：1-社区文章，2-社区活动，3-外部链接',
  `push_target` varchar(512) DEFAULT NULL COMMENT '推送目标（文章ID/活动ID/外部链接URL）',
  `sort` int DEFAULT '0' COMMENT '排序',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_banner_id` (`banner_id`),
  KEY `idx_status` (`status`),
  KEY `idx_online_time` (`online_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Banner表';

-- 3. 用户封禁表（如果不存在则创建）
CREATE TABLE IF NOT EXISTS `community_ban` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '封禁ID',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `user_nickname` varchar(255) DEFAULT NULL COMMENT '用户昵称',
  `ban_reason` varchar(500) NOT NULL COMMENT '封禁原因',
  `ban_start_time` datetime NOT NULL COMMENT '封禁开始时间',
  `ban_end_time` datetime DEFAULT NULL COMMENT '封禁结束时间（NULL表示无限期）',
  `is_indefinite` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否无限期封禁',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_id` (`user_id`),
  KEY `idx_ban_start_time` (`ban_start_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户封禁表';

-- 4. 举报表（如果不存在则创建）
CREATE TABLE IF NOT EXISTS `community_report` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '举报ID',
  `report_id` varchar(64) NOT NULL COMMENT '举报编号',
  `reported_person_id` bigint NOT NULL COMMENT '被举报人ID',
  `reported_person_name` varchar(255) DEFAULT NULL COMMENT '被举报人昵称',
  `category` varchar(64) NOT NULL COMMENT '分类：untrue_content-内容不实，unfriendly_behavior-不友善行为，advertorial-广告软文，political_speech-涉政言论，dangerous_illegal-危险/违法，plagiarism-抄袭侵权，inducing_followers-诱导关注，other-其他',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态：0-未处理，1-已处理',
  `handle_result` tinyint DEFAULT NULL COMMENT '处理结果：1-确认举报，0-驳回举报',
  `handle_remark` varchar(500) DEFAULT NULL COMMENT '处理说明',
  `handler` varchar(255) DEFAULT NULL COMMENT '处理人',
  `handle_time` datetime DEFAULT NULL COMMENT '处理时间',
  `report_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '举报时间',
  `reported_content` text COMMENT '被举报内容',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_report_id` (`report_id`),
  KEY `idx_reported_person_id` (`reported_person_id`),
  KEY `idx_status` (`status`),
  KEY `idx_category` (`category`),
  KEY `idx_report_time` (`report_time`),
  KEY `idx_handle_time` (`handle_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='举报表';

-- 5. 更新文章表，添加待审核原因字段（如果不存在）
-- 注意：如果字段已存在，此语句会报错，可以忽略
ALTER TABLE `community_post` 
ADD COLUMN `pending_review_reason` varchar(500) DEFAULT NULL COMMENT '待审核原因' AFTER `tags`;

