Преглед изворни кода

feat(db): add service_role_applications table and User status fields

Xiaogang Liao пре 1 месец
родитељ
комит
892220333c

+ 45 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -7126,5 +7126,50 @@ private void runMigration100() {
 		} catch (Exception e) {
 			log.warn("创建 article_comments 表失败: {}", e.getMessage());
 		}
+
+		// 迁移111: 创建 service_role_applications 表(服务角色统一申请)
+		try {
+			jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS service_role_applications (" +
+					"id int(11) NOT NULL AUTO_INCREMENT, " +
+					"user_id int(11) NOT NULL COMMENT '申请人ID', " +
+					"roles varchar(255) NOT NULL COMMENT '申请角色,JSON数组', " +
+					"id_card varchar(18) DEFAULT '' COMMENT '身份证号', " +
+					"id_card_images text COMMENT '身份证照片,JSON数组', " +
+					"certificate_images text COMMENT '资质证书照片,JSON数组', " +
+					"province varchar(50) DEFAULT '' COMMENT '省', " +
+					"city varchar(50) DEFAULT '' COMMENT '市', " +
+					"district varchar(50) DEFAULT '' COMMENT '区', " +
+					"street varchar(50) DEFAULT '' COMMENT '街道', " +
+					"address_detail varchar(200) DEFAULT '' COMMENT '详细地址', " +
+					"status tinyint(4) NOT NULL DEFAULT 0 COMMENT '0-pending 1-approved 2-rejected', " +
+					"reject_reason varchar(500) DEFAULT '' COMMENT '驳回原因', " +
+					"reviewed_by int(11) DEFAULT NULL COMMENT '审核人ID', " +
+					"reviewed_at datetime DEFAULT NULL COMMENT '审核时间', " +
+					"created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, " +
+					"updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
+					"PRIMARY KEY (id), " +
+					"KEY idx_user_id (user_id), " +
+					"KEY idx_status (status)" +
+					") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务角色申请表'");
+			log.info("已创建service_role_applications表");
+		} catch (Exception e) {
+			// 表已存在,忽略错误
+		}
+
+		// 迁移112: users表添加article_admin_status字段(文章管理员状态)
+		try {
+			jdbcTemplate.execute("ALTER TABLE users ADD COLUMN article_admin_status VARCHAR(20) DEFAULT NULL COMMENT '文章管理员状态: pending/approved/rejected'");
+			log.info("已添加article_admin_status列到users表");
+		} catch (Exception e) {
+			// 列已存在,忽略错误
+		}
+
+		// 迁移113: users表添加activity_provider_status字段(活动提供商状态)
+		try {
+			jdbcTemplate.execute("ALTER TABLE users ADD COLUMN activity_provider_status VARCHAR(20) DEFAULT NULL COMMENT '活动提供商状态: pending/approved/rejected'");
+			log.info("已添加activity_provider_status列到users表");
+		} catch (Exception e) {
+			// 列已存在,忽略错误
+		}
 	}
 }

+ 30 - 0
cfc-backend/src/main/resources/schema.sql

@@ -3608,3 +3608,33 @@ CREATE TABLE IF NOT EXISTS article_comments (
     INDEX idx_article_status (article_id, status),
     INDEX idx_parent (parent_id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章评论';
+
+-- ============================================================
+-- 服务角色申请表(统一角色申请入口)
+-- ============================================================
+CREATE TABLE IF NOT EXISTS `service_role_applications` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `user_id` int(11) NOT NULL COMMENT '申请人ID',
+  `roles` varchar(255) NOT NULL COMMENT '申请角色,JSON数组 e.g. ["planner","nutritionist"]',
+  `id_card` varchar(18) DEFAULT '' COMMENT '身份证号',
+  `id_card_images` text COMMENT '身份证照片,JSON数组[正面URL,反面URL]',
+  `certificate_images` text COMMENT '资质证书照片,JSON数组',
+  `province` varchar(50) DEFAULT '' COMMENT '省',
+  `city` varchar(50) DEFAULT '' COMMENT '市',
+  `district` varchar(50) DEFAULT '' COMMENT '区',
+  `street` varchar(50) DEFAULT '' COMMENT '街道',
+  `address_detail` varchar(200) DEFAULT '' COMMENT '详细地址',
+  `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '0-pending, 1-approved, 2-rejected',
+  `reject_reason` varchar(500) DEFAULT '' COMMENT '驳回原因',
+  `reviewed_by` int(11) DEFAULT NULL COMMENT '审核人ID',
+  `reviewed_at` datetime DEFAULT NULL COMMENT '审核时间',
+  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `idx_user_id` (`user_id`),
+  KEY `idx_status` (`status`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务角色申请表';
+
+-- 用户表新增字段(服务角色申请状态)
+-- ALTER TABLE users ADD COLUMN article_admin_status VARCHAR(20) DEFAULT NULL COMMENT '文章管理员状态: pending/approved/rejected';
+-- ALTER TABLE users ADD COLUMN activity_provider_status VARCHAR(20) DEFAULT NULL COMMENT '活动提供商状态: pending/approved/rejected';