diff --git a/sql/SAMS_localhost-2025_02_19_10_58_38-dump.sql b/sql/SAMS_localhost-2025_02_19_10_58_38-dump.sql new file mode 100644 index 00000000..476ed044 --- /dev/null +++ b/sql/SAMS_localhost-2025_02_19_10_58_38-dump.sql @@ -0,0 +1,435 @@ +-- MySQL dump 10.13 Distrib 8.0.41, for Linux (x86_64) +-- +-- Host: 127.0.0.1 Database: SAMS +-- ------------------------------------------------------ +-- Server version 8.0.41-0ubuntu0.22.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!50503 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `ams_activity` +-- + +DROP TABLE IF EXISTS `ams_activity`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `ams_activity` ( + `act_id` bigint NOT NULL AUTO_INCREMENT COMMENT '活动ID', + `title` varchar(100) NOT NULL COMMENT '活动标题', + `description` text COMMENT '活动描述', + `start_time` datetime NOT NULL COMMENT '开始时间', + `end_time` datetime NOT NULL COMMENT '结束时间', + `location` varchar(255) DEFAULT NULL COMMENT '地点', + `budget` decimal(10,2) DEFAULT '0.00' COMMENT '预算', + `max_participants` int DEFAULT NULL COMMENT '最大参与人数', + `creator_id` bigint NOT NULL COMMENT '创建者ID', + `club_id` bigint DEFAULT NULL COMMENT '所属社团ID', + `visibility` enum('public','private') DEFAULT 'public' COMMENT '是否公开', + `status` enum('draft','pending_approval','approved','ongoing','completed','cancelled') DEFAULT 'draft' COMMENT '活动状态', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + PRIMARY KEY (`act_id`), + KEY `creator_id` (`creator_id`), + KEY `club_id` (`club_id`), + CONSTRAINT `ams_activity_ibfk_1` FOREIGN KEY (`creator_id`) REFERENCES `sys_user` (`user_id`), + CONSTRAINT `ams_activity_ibfk_2` FOREIGN KEY (`club_id`) REFERENCES `sms_club` (`club_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `ams_activity` +-- + +LOCK TABLES `ams_activity` WRITE; +/*!40000 ALTER TABLE `ams_activity` DISABLE KEYS */; +/*!40000 ALTER TABLE `ams_activity` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `ams_approval` +-- + +DROP TABLE IF EXISTS `ams_approval`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `ams_approval` ( + `appr_id` bigint NOT NULL AUTO_INCREMENT COMMENT '审批ID', + `act_id` bigint NOT NULL COMMENT '活动ID', + `user_id` bigint NOT NULL COMMENT '发起者ID', + `approver_id` bigint NOT NULL COMMENT '审批人ID', + `status` tinyint(1) DEFAULT '0' COMMENT '审批状态 (0: 待审批, 1: 通过, 2: 拒绝)', + `reason` text COMMENT '拒绝原因(如果适用)', + `approved_at` datetime DEFAULT NULL COMMENT '审批时间', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`appr_id`), + KEY `act_id` (`act_id`), + KEY `user_id` (`user_id`), + KEY `approver_id` (`approver_id`), + CONSTRAINT `ams_approval_ibfk_1` FOREIGN KEY (`act_id`) REFERENCES `ams_activity` (`act_id`), + CONSTRAINT `ams_approval_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`), + CONSTRAINT `ams_approval_ibfk_3` FOREIGN KEY (`approver_id`) REFERENCES `sys_user` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动审批表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `ams_approval` +-- + +LOCK TABLES `ams_approval` WRITE; +/*!40000 ALTER TABLE `ams_approval` DISABLE KEYS */; +/*!40000 ALTER TABLE `ams_approval` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `ams_comment` +-- + +DROP TABLE IF EXISTS `ams_comment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `ams_comment` ( + `comment_id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `act_id` bigint NOT NULL COMMENT '活动ID', + `parent_comment_id` bigint DEFAULT NULL COMMENT '父评论ID(为空表示是顶级评论)', + `content` text NOT NULL COMMENT '评论内容', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '评论时间', + PRIMARY KEY (`comment_id`), + KEY `user_id` (`user_id`), + KEY `act_id` (`act_id`), + KEY `ams_comment_ibfk_3` (`parent_comment_id`), + CONSTRAINT `ams_comment_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE CASCADE, + CONSTRAINT `ams_comment_ibfk_2` FOREIGN KEY (`act_id`) REFERENCES `ams_activity` (`act_id`) ON DELETE CASCADE, + CONSTRAINT `ams_comment_ibfk_3` FOREIGN KEY (`parent_comment_id`) REFERENCES `ams_comment` (`comment_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动评论表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `ams_comment` +-- + +LOCK TABLES `ams_comment` WRITE; +/*!40000 ALTER TABLE `ams_comment` DISABLE KEYS */; +/*!40000 ALTER TABLE `ams_comment` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `ams_reaction` +-- + +DROP TABLE IF EXISTS `ams_reaction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `ams_reaction` ( + `reaction_id` bigint NOT NULL AUTO_INCREMENT COMMENT '点赞/点踩ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `act_id` bigint NOT NULL COMMENT '活动ID', + `reaction_type` enum('like','dislike') NOT NULL COMMENT '反应类型(like: 点赞, dislike: 点踩)', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '反应时间', + PRIMARY KEY (`reaction_id`), + UNIQUE KEY `uniq_user_activity_reaction` (`user_id`,`act_id`), + KEY `act_id` (`act_id`), + CONSTRAINT `ams_reaction_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE CASCADE, + CONSTRAINT `ams_reaction_ibfk_2` FOREIGN KEY (`act_id`) REFERENCES `ams_activity` (`act_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动点赞/点踩表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `ams_reaction` +-- + +LOCK TABLES `ams_reaction` WRITE; +/*!40000 ALTER TABLE `ams_reaction` DISABLE KEYS */; +/*!40000 ALTER TABLE `ams_reaction` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `ams_registration` +-- + +DROP TABLE IF EXISTS `ams_registration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `ams_registration` ( + `reg_id` bigint NOT NULL AUTO_INCREMENT COMMENT '报名ID', + `act_id` bigint NOT NULL COMMENT '活动ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `status` enum('registered','cancelled','attended','absent') DEFAULT 'registered' COMMENT '报名状态', + `register_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间', + `attend_time` datetime DEFAULT NULL COMMENT '参与时间', + PRIMARY KEY (`reg_id`), + KEY `act_id` (`act_id`), + KEY `user_id` (`user_id`), + CONSTRAINT `ams_registration_ibfk_1` FOREIGN KEY (`act_id`) REFERENCES `ams_activity` (`act_id`), + CONSTRAINT `ams_registration_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动报名表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `ams_registration` +-- + +LOCK TABLES `ams_registration` WRITE; +/*!40000 ALTER TABLE `ams_registration` DISABLE KEYS */; +/*!40000 ALTER TABLE `ams_registration` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sms_club` +-- + +DROP TABLE IF EXISTS `sms_club`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sms_club` ( + `club_id` bigint NOT NULL AUTO_INCREMENT COMMENT '社团ID', + `club_name` varchar(50) NOT NULL COMMENT '社团名称', + `description` text COMMENT '社团简介', + `category` enum('文化艺术','学术科技','社会公益','其他') NOT NULL COMMENT '社团类型', + `college_id` bigint NOT NULL COMMENT '所属院系', + `leader_id` bigint DEFAULT NULL COMMENT '负责人ID', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`club_id`), + KEY `college_id` (`college_id`), + KEY `leader_id` (`leader_id`), + CONSTRAINT `sms_club_ibfk_1` FOREIGN KEY (`college_id`) REFERENCES `sms_college` (`college_id`), + CONSTRAINT `sms_club_ibfk_2` FOREIGN KEY (`leader_id`) REFERENCES `sys_user` (`user_id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='社团表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sms_club` +-- + +LOCK TABLES `sms_club` WRITE; +/*!40000 ALTER TABLE `sms_club` DISABLE KEYS */; +INSERT INTO `sms_club` VALUES (1,'编程爱好者协会','学习编程、算法与开发','学术科技',2,2,'2025-02-13 11:43:50'),(2,'篮球社','喜欢打篮球的同学们','其他',3,3,'2025-02-13 11:43:50'); +/*!40000 ALTER TABLE `sms_club` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sms_college` +-- + +DROP TABLE IF EXISTS `sms_college`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sms_college` ( + `college_id` bigint NOT NULL AUTO_INCREMENT COMMENT '院系ID', + `college_name` varchar(255) NOT NULL COMMENT '名称(高校或院系)', + `parent_id` bigint DEFAULT NULL COMMENT '父院系ID(高校此值为空)', + `email` varchar(50) DEFAULT '' COMMENT '邮箱', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`college_id`), + KEY `parent_id` (`parent_id`), + CONSTRAINT `sms_college_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `sms_college` (`college_id`) ON DELETE SET NULL +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='高校及院系表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sms_college` +-- + +LOCK TABLES `sms_college` WRITE; +/*!40000 ALTER TABLE `sms_college` DISABLE KEYS */; +INSERT INTO `sms_college` VALUES (1,'山东建筑大学',NULL,'contact@sdu.edu.cn','2025-02-13 11:40:45'),(2,'计算机科学与技术学院',1,'cs@sdu.edu.cn','2025-02-13 11:40:45'),(3,'土木工程学院',1,'civil@sdu.edu.cn','2025-02-13 11:40:45'),(4,'管理工程学院',1,'contact4@sdu.edu.cn','2025-02-13 11:51:12'),(5,'热能工程学院',1,'contact5@sdu.edu.cn','2025-02-13 11:51:12'),(6,'市政与环境工程学院',1,'contact6@sdu.edu.cn','2025-02-13 11:51:12'),(7,'机电工程学院',1,'contact7@sdu.edu.cn','2025-02-13 11:51:12'),(8,'理学院',1,'contact8@sdu.edu.cn','2025-02-13 11:51:12'),(9,'商学院',1,'contact9@sdu.edu.cn','2025-02-13 11:51:12'),(10,'交通工程学院',1,'contact10@sdu.edu.cn','2025-02-13 11:51:12'),(11,'艺术学院',1,'contact11@sdu.edu.cn','2025-02-13 11:51:12'),(12,'法学院',1,'contact12@sdu.edu.cn','2025-02-13 11:51:12'),(13,'外国语学院',1,'contact13@sdu.edu.cn','2025-02-13 11:51:12'),(20,'山东大学',NULL,'contact@su.edu.cn','2025-02-13 11:52:27'),(21,'计算机科学与技术学院',2,'cs@sdu.edu.cn','2025-02-13 11:52:48'),(22,'土木工程学院',2,'civil@sdu.edu.cn','2025-02-13 11:52:48'),(23,'管理工程学院',2,'contact4@sdu.edu.cn','2025-02-13 11:52:48'),(24,'热能工程学院',2,'contact5@sdu.edu.cn','2025-02-13 11:52:48'),(25,'市政与环境工程学院',2,'contact6@sdu.edu.cn','2025-02-13 11:52:48'),(26,'机电工程学院',2,'contact7@sdu.edu.cn','2025-02-13 11:52:48'),(27,'理学院',2,'contact8@sdu.edu.cn','2025-02-13 11:52:48'),(28,'商学院',2,'contact9@sdu.edu.cn','2025-02-13 11:52:48'),(29,'交通工程学院',2,'contact10@sdu.edu.cn','2025-02-13 11:52:48'),(30,'艺术学院',2,'contact11@sdu.edu.cn','2025-02-13 11:52:48'),(31,'法学院',2,'contact12@sdu.edu.cn','2025-02-13 11:52:48'),(32,'外国语学院',2,'contact13@sdu.edu.cn','2025-02-13 11:52:48'); +/*!40000 ALTER TABLE `sms_college` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sms_college_leader` +-- + +DROP TABLE IF EXISTS `sms_college_leader`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sms_college_leader` ( + `college_id` bigint NOT NULL COMMENT '院系ID', + `user_id` bigint NOT NULL COMMENT '负责人ID', + `assigned_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '指派时间', + PRIMARY KEY (`college_id`,`user_id`), + KEY `user_id` (`user_id`), + CONSTRAINT `sms_college_leader_ibfk_1` FOREIGN KEY (`college_id`) REFERENCES `sms_college` (`college_id`) ON DELETE CASCADE, + CONSTRAINT `sms_college_leader_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='院系负责人表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sms_college_leader` +-- + +LOCK TABLES `sms_college_leader` WRITE; +/*!40000 ALTER TABLE `sms_college_leader` DISABLE KEYS */; +/*!40000 ALTER TABLE `sms_college_leader` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sms_user_club` +-- + +DROP TABLE IF EXISTS `sms_user_club`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sms_user_club` ( + `suc_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `club_id` bigint NOT NULL COMMENT '社团ID', + `role_id` bigint NOT NULL COMMENT '角色ID', + `is_active` tinyint(1) DEFAULT '1' COMMENT '是否活跃', + `join_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '加入日期', + PRIMARY KEY (`suc_id`), + UNIQUE KEY `uniq_user_club` (`user_id`,`club_id`), + KEY `club_id` (`club_id`), + KEY `role_id` (`role_id`), + CONSTRAINT `sms_user_club_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`), + CONSTRAINT `sms_user_club_ibfk_2` FOREIGN KEY (`club_id`) REFERENCES `sms_club` (`club_id`), + CONSTRAINT `sms_user_club_ibfk_3` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户社团关系表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sms_user_club` +-- + +LOCK TABLES `sms_user_club` WRITE; +/*!40000 ALTER TABLE `sms_user_club` DISABLE KEYS */; +/*!40000 ALTER TABLE `sms_user_club` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sys_logs` +-- + +DROP TABLE IF EXISTS `sys_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_logs` ( + `log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `action` varchar(255) NOT NULL COMMENT '操作类型', + `description` text COMMENT '描述', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', + PRIMARY KEY (`log_id`), + KEY `idx_user_id` (`user_id`), + CONSTRAINT `sys_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统日志表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sys_logs` +-- + +LOCK TABLES `sys_logs` WRITE; +/*!40000 ALTER TABLE `sys_logs` DISABLE KEYS */; +/*!40000 ALTER TABLE `sys_logs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sys_notification` +-- + +DROP TABLE IF EXISTS `sys_notification`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_notification` ( + `notification_id` bigint NOT NULL AUTO_INCREMENT COMMENT '通知ID', + `title` varchar(255) NOT NULL COMMENT '通知标题', + `content` text NOT NULL COMMENT '通知内容', + `receiver_id` bigint NOT NULL COMMENT '接收者ID', + `is_read` tinyint(1) DEFAULT '0' COMMENT '是否已读', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`notification_id`), + KEY `idx_receiver_id` (`receiver_id`), + CONSTRAINT `sys_notification_ibfk_1` FOREIGN KEY (`receiver_id`) REFERENCES `sys_user` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统通知表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sys_notification` +-- + +LOCK TABLES `sys_notification` WRITE; +/*!40000 ALTER TABLE `sys_notification` DISABLE KEYS */; +/*!40000 ALTER TABLE `sys_notification` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sys_role` +-- + +DROP TABLE IF EXISTS `sys_role`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_role` ( + `role_id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID', + `role_name` varchar(30) NOT NULL COMMENT '角色名称', + `role_key` varchar(64) NOT NULL COMMENT '角色标识', + `role_desc` varchar(255) DEFAULT NULL COMMENT '角色描述', + `status` enum('active','inactive') DEFAULT 'active' COMMENT '状态', + PRIMARY KEY (`role_id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户角色表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sys_role` +-- + +LOCK TABLES `sys_role` WRITE; +/*!40000 ALTER TABLE `sys_role` DISABLE KEYS */; +INSERT INTO `sys_role` VALUES (0,'系统管理员','admin','最高权限,管理所有用户与活动','active'),(1,'参与者','participant','普通用户,可以报名活动、评论、点赞','active'),(2,'管理员','leader','管理活动和人员','active'); +/*!40000 ALTER TABLE `sys_role` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sys_user` +-- + +DROP TABLE IF EXISTS `sys_user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_user` ( + `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `role_id` bigint NOT NULL COMMENT '用户角色', + `nick_name` varchar(30) DEFAULT '' COMMENT '用户昵称', + `user_name` varchar(30) NOT NULL COMMENT '真实姓名', + `password` varchar(100) NOT NULL COMMENT '用户密码', + `school_id` char(12) NOT NULL COMMENT '学号/教职工号', + `college_id` bigint DEFAULT NULL COMMENT '所属院系', + `email` varchar(50) DEFAULT '' COMMENT '用户邮箱', + `avatar` varchar(100) DEFAULT '' COMMENT '头像地址', + `status` enum('active','inactive','banned') DEFAULT 'active' COMMENT '账号状态', + PRIMARY KEY (`user_id`), + KEY `role_id` (`role_id`), + CONSTRAINT `sys_user_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`role_id`) +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统用户表'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sys_user` +-- + +LOCK TABLES `sys_user` WRITE; +/*!40000 ALTER TABLE `sys_user` DISABLE KEYS */; +INSERT INTO `sys_user` VALUES (1,1,'张三','zhangsan','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511110001',2,'zhangsan@example.com','avatar1.jpg','active'),(2,2,'李四','lisi','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511110002',2,'lisi@example.com','avatar2.jpg','active'),(3,2,'王五','wangwu','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511110003',2,'wangwu@example.com','avatar3.jpg','active'),(4,1,'赵六','zhaoliu','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511110004',3,'zhaoliu@example.com','avatar4.jpg','active'),(6,1,'用户6','user6','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202588456301',4,'user6@example.com','avatar6.jpg','active'),(7,1,'用户7','user7','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202598705123',5,'user7@example.com','avatar7.jpg','active'),(8,1,'用户8','user8','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202556098765',6,'user8@example.com','avatar8.jpg','active'),(9,1,'用户9','user9','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202512340987',7,'user9@example.com','avatar9.jpg','active'),(10,1,'用户10','user10','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202599888222',8,'user10@example.com','avatar10.jpg','active'),(11,1,'用户11','user11','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202533665588',9,'user11@example.com','avatar11.jpg','active'),(12,1,'用户12','user12','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202500112233',10,'user12@example.com','avatar12.jpg','active'),(13,1,'用户13','user13','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511122233',11,'user13@example.com','avatar13.jpg','active'),(14,1,'用户14','user14','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202522334455',12,'user14@example.com','avatar14.jpg','active'),(15,1,'用户15','user15','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202544556677',13,'user15@example.com','avatar15.jpg','active'),(16,1,'用户16','user16','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202566778899',4,'user16@example.com','avatar16.jpg','active'),(17,1,'用户17','user17','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202577889900',5,'user17@example.com','avatar17.jpg','active'),(18,1,'用户18','user18','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202500998877',6,'user18@example.com','avatar18.jpg','active'),(19,1,'用户19','user19','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511223344',7,'user19@example.com','avatar19.jpg','active'),(20,1,'用户20','user20','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202522334455',8,'user20@example.com','avatar20.jpg','active'),(21,1,'用户21','user21','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202533445566',9,'user21@example.com','avatar21.jpg','active'),(22,1,'用户22','user22','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202544556677',10,'user22@example.com','avatar22.jpg','active'),(23,1,'用户23','user23','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202555667788',11,'user23@example.com','avatar23.jpg','active'),(24,1,'用户24','user24','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202566778899',12,'user24@example.com','avatar24.jpg','active'),(25,1,'用户25','user25','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202577889900',13,'user25@example.com','avatar25.jpg','active'),(26,1,'用户26','user26','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202588990011',4,'user26@example.com','avatar26.jpg','active'),(27,1,'用户27','user27','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202599001122',5,'user27@example.com','avatar27.jpg','active'),(28,1,'用户28','user28','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202511223344',6,'user28@example.com','avatar28.jpg','active'),(29,1,'用户29','user29','$2a$10$e/hB5Ps/op5jkDtMZXyRo.53CKoXUkOLVvCvlqGktaMqKspJo0WGW','202522334455',7,'user29@example.com','avatar29.jpg','active'),(30,1,'用户30','user30','$2a$10$CwTycUXWue0Thq9StjUM0uJ6j6U8zIN4MyFfJqz7eZyPq5JwZWjG2','202533445566',8,'user30@example.com','avatar30.jpg','active'); +/*!40000 ALTER TABLE `sys_user` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2025-02-19 10:58:38 diff --git a/src/main/java/com/bruce/sams/controller/ams/ActivityController.java b/src/main/java/com/bruce/sams/controller/ams/ActivityController.java deleted file mode 100644 index ee6e613d..00000000 --- a/src/main/java/com/bruce/sams/controller/ams/ActivityController.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.bruce.sams.controller.ams; - -import com.bruce.sams.utils.AjaxResult; -import com.bruce.sams.domain.ams.Activity; -import com.bruce.sams.service.ActivityService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 活动管理控制器 - */ -@RestController -@RequestMapping("/api/activity") -public class ActivityController { - - @Autowired - private ActivityService activityService; - - @GetMapping("/list") - public AjaxResult getAllActivities() { - return AjaxResult.success("查询成功", activityService.getAllActivities()); - } - - @GetMapping("/{actId}") - public AjaxResult getActivityById(@PathVariable Long actId) { - return AjaxResult.success("查询成功", activityService.getActivityById(actId)); - } - - @GetMapping("/club/{clubId}") - public AjaxResult getActivitiesByClubId(@PathVariable Long clubId) { - return AjaxResult.success("查询成功", activityService.getActivitiesByClubId(clubId)); - } - - @PostMapping("/add") - public AjaxResult addActivity(@RequestBody Activity activity) { - activityService.addActivity(activity); - return AjaxResult.success("活动添加成功"); - } - - @PutMapping("/update") - public AjaxResult updateActivity(@RequestBody Activity activity) { - activityService.updateActivity(activity); - return AjaxResult.success("活动信息更新成功"); - } - - @DeleteMapping("/delete/{actId}") - public AjaxResult deleteActivity(@PathVariable Long actId) { - activityService.deleteActivity(actId); - return AjaxResult.success("活动删除成功"); - } - - @PutMapping("/{actId}/status") - public AjaxResult changeActivityStatus(@PathVariable Long actId, @RequestParam String status) { - activityService.changeActivityStatus(actId, status); - return AjaxResult.success("活动状态更新成功"); - } -} diff --git a/src/main/java/com/bruce/sams/domain/ams/Activity.java b/src/main/java/com/bruce/sams/domain/ams/Activity.java index ca2432ec..a998c3a2 100644 --- a/src/main/java/com/bruce/sams/domain/ams/Activity.java +++ b/src/main/java/com/bruce/sams/domain/ams/Activity.java @@ -74,7 +74,7 @@ public class Activity { /** * 活动状态 */ - private String status; + private Object status; /** * 创建时间 diff --git a/src/main/java/com/bruce/sams/domain/ams/Approval.java b/src/main/java/com/bruce/sams/domain/ams/Approval.java new file mode 100644 index 00000000..201c8db8 --- /dev/null +++ b/src/main/java/com/bruce/sams/domain/ams/Approval.java @@ -0,0 +1,112 @@ +package com.bruce.sams.domain.ams; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import lombok.Data; + +/** + * 活动审批表 + * @TableName ams_approval + */ +@TableName(value ="ams_approval") +@Data +public class Approval { + /** + * 审批ID + */ + @TableId(type = IdType.AUTO) + private Long apprId; + + /** + * 活动ID + */ + private Long actId; + + /** + * 发起者ID + */ + private Long userId; + + /** + * 审批人ID + */ + private Long approverId; + + /** + * 审批状态 (0: 待审批, 1: 通过, 2: 拒绝) + */ + private Integer status; + + /** + * 拒绝原因(如果适用) + */ + private String reason; + + /** + * 审批时间 + */ + private Date approvedAt; + + /** + * 创建时间 + */ + private Date createdAt; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + Approval other = (Approval) that; + return (this.getApprId() == null ? other.getApprId() == null : this.getApprId().equals(other.getApprId())) + && (this.getActId() == null ? other.getActId() == null : this.getActId().equals(other.getActId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getApproverId() == null ? other.getApproverId() == null : this.getApproverId().equals(other.getApproverId())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getReason() == null ? other.getReason() == null : this.getReason().equals(other.getReason())) + && (this.getApprovedAt() == null ? other.getApprovedAt() == null : this.getApprovedAt().equals(other.getApprovedAt())) + && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getApprId() == null) ? 0 : getApprId().hashCode()); + result = prime * result + ((getActId() == null) ? 0 : getActId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getApproverId() == null) ? 0 : getApproverId().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getReason() == null) ? 0 : getReason().hashCode()); + result = prime * result + ((getApprovedAt() == null) ? 0 : getApprovedAt().hashCode()); + result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", apprId=").append(apprId); + sb.append(", actId=").append(actId); + sb.append(", userId=").append(userId); + sb.append(", approverId=").append(approverId); + sb.append(", status=").append(status); + sb.append(", reason=").append(reason); + sb.append(", approvedAt=").append(approvedAt); + sb.append(", createdAt=").append(createdAt); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/domain/ams/Comment.java b/src/main/java/com/bruce/sams/domain/ams/Comment.java new file mode 100644 index 00000000..4cf35f25 --- /dev/null +++ b/src/main/java/com/bruce/sams/domain/ams/Comment.java @@ -0,0 +1,96 @@ +package com.bruce.sams.domain.ams; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import lombok.Data; + +/** + * 活动评论表 + * @TableName ams_comment + */ +@TableName(value ="ams_comment") +@Data +public class Comment { + /** + * 评论ID + */ + @TableId(type = IdType.AUTO) + private Long commentId; + + /** + * 用户ID + */ + private Long userId; + + /** + * 活动ID + */ + private Long actId; + + /** + * 父评论ID(为空表示是顶级评论) + */ + private Long parentCommentId; + + /** + * 评论内容 + */ + private String content; + + /** + * 评论时间 + */ + private Date createdAt; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + Comment other = (Comment) that; + return (this.getCommentId() == null ? other.getCommentId() == null : this.getCommentId().equals(other.getCommentId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getActId() == null ? other.getActId() == null : this.getActId().equals(other.getActId())) + && (this.getParentCommentId() == null ? other.getParentCommentId() == null : this.getParentCommentId().equals(other.getParentCommentId())) + && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent())) + && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getCommentId() == null) ? 0 : getCommentId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getActId() == null) ? 0 : getActId().hashCode()); + result = prime * result + ((getParentCommentId() == null) ? 0 : getParentCommentId().hashCode()); + result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode()); + result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", commentId=").append(commentId); + sb.append(", userId=").append(userId); + sb.append(", actId=").append(actId); + sb.append(", parentCommentId=").append(parentCommentId); + sb.append(", content=").append(content); + sb.append(", createdAt=").append(createdAt); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/domain/ams/Reaction.java b/src/main/java/com/bruce/sams/domain/ams/Reaction.java new file mode 100644 index 00000000..d22a685c --- /dev/null +++ b/src/main/java/com/bruce/sams/domain/ams/Reaction.java @@ -0,0 +1,88 @@ +package com.bruce.sams.domain.ams; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import lombok.Data; + +/** + * 活动点赞/点踩表 + * @TableName ams_reaction + */ +@TableName(value ="ams_reaction") +@Data +public class Reaction { + /** + * 点赞/点踩ID + */ + @TableId(type = IdType.AUTO) + private Long reactionId; + + /** + * 用户ID + */ + private Long userId; + + /** + * 活动ID + */ + private Long actId; + + /** + * 反应类型(like: 点赞, dislike: 点踩) + */ + private Object reactionType; + + /** + * 反应时间 + */ + private Date createdAt; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + Reaction other = (Reaction) that; + return (this.getReactionId() == null ? other.getReactionId() == null : this.getReactionId().equals(other.getReactionId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getActId() == null ? other.getActId() == null : this.getActId().equals(other.getActId())) + && (this.getReactionType() == null ? other.getReactionType() == null : this.getReactionType().equals(other.getReactionType())) + && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getReactionId() == null) ? 0 : getReactionId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getActId() == null) ? 0 : getActId().hashCode()); + result = prime * result + ((getReactionType() == null) ? 0 : getReactionType().hashCode()); + result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", reactionId=").append(reactionId); + sb.append(", userId=").append(userId); + sb.append(", actId=").append(actId); + sb.append(", reactionType=").append(reactionType); + sb.append(", createdAt=").append(createdAt); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/domain/ams/Registration.java b/src/main/java/com/bruce/sams/domain/ams/Registration.java new file mode 100644 index 00000000..e4adde1f --- /dev/null +++ b/src/main/java/com/bruce/sams/domain/ams/Registration.java @@ -0,0 +1,104 @@ +package com.bruce.sams.domain.ams; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import lombok.Data; + +/** + * 活动报名表 + * @TableName ams_registration + */ +@TableName(value ="ams_registration") +@Data +public class Registration { + /** + * 报名ID + */ + @TableId(type = IdType.AUTO) + private Long regId; + + /** + * 活动ID + */ + private Long actId; + + /** + * 用户ID + */ + private Long userId; + + /** + * 角色(organizer: 组织者, participant: 参与者) + */ + private Object role; + + /** + * 报名状态 + */ + private Object status; + + /** + * 报名时间 + */ + private Date registerTime; + + /** + * 参与时间 + */ + private Date attendTime; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + Registration other = (Registration) that; + return (this.getRegId() == null ? other.getRegId() == null : this.getRegId().equals(other.getRegId())) + && (this.getActId() == null ? other.getActId() == null : this.getActId().equals(other.getActId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getRole() == null ? other.getRole() == null : this.getRole().equals(other.getRole())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getRegisterTime() == null ? other.getRegisterTime() == null : this.getRegisterTime().equals(other.getRegisterTime())) + && (this.getAttendTime() == null ? other.getAttendTime() == null : this.getAttendTime().equals(other.getAttendTime())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getRegId() == null) ? 0 : getRegId().hashCode()); + result = prime * result + ((getActId() == null) ? 0 : getActId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getRole() == null) ? 0 : getRole().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getRegisterTime() == null) ? 0 : getRegisterTime().hashCode()); + result = prime * result + ((getAttendTime() == null) ? 0 : getAttendTime().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", regId=").append(regId); + sb.append(", actId=").append(actId); + sb.append(", userId=").append(userId); + sb.append(", role=").append(role); + sb.append(", status=").append(status); + sb.append(", registerTime=").append(registerTime); + sb.append(", attendTime=").append(attendTime); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/mapper/ActivityMapper.java b/src/main/java/com/bruce/sams/mapper/ActivityMapper.java index a6473d1c..dc4a89df 100644 --- a/src/main/java/com/bruce/sams/mapper/ActivityMapper.java +++ b/src/main/java/com/bruce/sams/mapper/ActivityMapper.java @@ -7,7 +7,7 @@ import org.apache.ibatis.annotations.Mapper; /** * @author bruce * @description 针对表【ams_activity(活动表)】的数据库操作Mapper -* @createDate 2025-02-17 11:41:53 +* @createDate 2025-02-19 11:22:14 * @Entity com.bruce.sams.domain.ams.Activity */ @Mapper diff --git a/src/main/java/com/bruce/sams/mapper/ApprovalMapper.java b/src/main/java/com/bruce/sams/mapper/ApprovalMapper.java new file mode 100644 index 00000000..ce09d9af --- /dev/null +++ b/src/main/java/com/bruce/sams/mapper/ApprovalMapper.java @@ -0,0 +1,20 @@ +package com.bruce.sams.mapper; + +import com.bruce.sams.domain.ams.Approval; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author bruce +* @description 针对表【ams_approval(活动审批表)】的数据库操作Mapper +* @createDate 2025-02-19 11:22:24 +* @Entity com.bruce.sams.domain.ams.Approval +*/ +@Mapper +public interface ApprovalMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/bruce/sams/mapper/CommentMapper.java b/src/main/java/com/bruce/sams/mapper/CommentMapper.java new file mode 100644 index 00000000..ef33adc4 --- /dev/null +++ b/src/main/java/com/bruce/sams/mapper/CommentMapper.java @@ -0,0 +1,20 @@ +package com.bruce.sams.mapper; + +import com.bruce.sams.domain.ams.Comment; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author bruce +* @description 针对表【ams_comment(活动评论表)】的数据库操作Mapper +* @createDate 2025-02-19 11:22:39 +* @Entity com.bruce.sams.domain.ams.Comment +*/ +@Mapper +public interface CommentMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/bruce/sams/mapper/ReactionMapper.java b/src/main/java/com/bruce/sams/mapper/ReactionMapper.java new file mode 100644 index 00000000..f071862d --- /dev/null +++ b/src/main/java/com/bruce/sams/mapper/ReactionMapper.java @@ -0,0 +1,20 @@ +package com.bruce.sams.mapper; + +import com.bruce.sams.domain.ams.Reaction; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author bruce +* @description 针对表【ams_reaction(活动点赞/点踩表)】的数据库操作Mapper +* @createDate 2025-02-19 11:22:49 +* @Entity com.bruce.sams.domain.ams.Reaction +*/ +@Mapper +public interface ReactionMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/bruce/sams/mapper/RegistrationMapper.java b/src/main/java/com/bruce/sams/mapper/RegistrationMapper.java new file mode 100644 index 00000000..8ea00890 --- /dev/null +++ b/src/main/java/com/bruce/sams/mapper/RegistrationMapper.java @@ -0,0 +1,20 @@ +package com.bruce.sams.mapper; + +import com.bruce.sams.domain.ams.Registration; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author bruce +* @description 针对表【ams_registration(活动报名表)】的数据库操作Mapper +* @createDate 2025-02-19 11:23:27 +* @Entity com.bruce.sams.domain.ams.Registration +*/ +@Mapper +public interface RegistrationMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/bruce/sams/service/ActivityService.java b/src/main/java/com/bruce/sams/service/ActivityService.java index bbc152db..e32b52c1 100644 --- a/src/main/java/com/bruce/sams/service/ActivityService.java +++ b/src/main/java/com/bruce/sams/service/ActivityService.java @@ -3,47 +3,11 @@ package com.bruce.sams.service; import com.bruce.sams.domain.ams.Activity; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; - /** * @author bruce * @description 针对表【ams_activity(活动表)】的数据库操作Service -* @createDate 2025-02-17 11:41:53 +* @createDate 2025-02-19 11:22:14 */ public interface ActivityService extends IService { - /** - * 获取所有活动 - */ - List getAllActivities(); - - /** - * 获取活动详情 - */ - Activity getActivityById(Long actId); - - /** - * 获取某个社团的所有活动 - */ - List getActivitiesByClubId(Long clubId); - - /** - * 添加活动 - */ - void addActivity(Activity activity); - - /** - * 更新活动信息 - */ - void updateActivity(Activity activity); - - /** - * 删除活动 - */ - void deleteActivity(Long actId); - - /** - * 启动/暂停/取消活动 - */ - void changeActivityStatus(Long actId, String newStatus); } diff --git a/src/main/java/com/bruce/sams/service/ApprovalService.java b/src/main/java/com/bruce/sams/service/ApprovalService.java new file mode 100644 index 00000000..5658df44 --- /dev/null +++ b/src/main/java/com/bruce/sams/service/ApprovalService.java @@ -0,0 +1,13 @@ +package com.bruce.sams.service; + +import com.bruce.sams.domain.ams.Approval; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author bruce +* @description 针对表【ams_approval(活动审批表)】的数据库操作Service +* @createDate 2025-02-19 11:22:24 +*/ +public interface ApprovalService extends IService { + +} diff --git a/src/main/java/com/bruce/sams/service/CommentService.java b/src/main/java/com/bruce/sams/service/CommentService.java new file mode 100644 index 00000000..37a3d4d2 --- /dev/null +++ b/src/main/java/com/bruce/sams/service/CommentService.java @@ -0,0 +1,13 @@ +package com.bruce.sams.service; + +import com.bruce.sams.domain.ams.Comment; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author bruce +* @description 针对表【ams_comment(活动评论表)】的数据库操作Service +* @createDate 2025-02-19 11:22:39 +*/ +public interface CommentService extends IService { + +} diff --git a/src/main/java/com/bruce/sams/service/ReactionService.java b/src/main/java/com/bruce/sams/service/ReactionService.java new file mode 100644 index 00000000..1edf8946 --- /dev/null +++ b/src/main/java/com/bruce/sams/service/ReactionService.java @@ -0,0 +1,13 @@ +package com.bruce.sams.service; + +import com.bruce.sams.domain.ams.Reaction; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author bruce +* @description 针对表【ams_reaction(活动点赞/点踩表)】的数据库操作Service +* @createDate 2025-02-19 11:22:50 +*/ +public interface ReactionService extends IService { + +} diff --git a/src/main/java/com/bruce/sams/service/RegistrationService.java b/src/main/java/com/bruce/sams/service/RegistrationService.java new file mode 100644 index 00000000..c9a1c753 --- /dev/null +++ b/src/main/java/com/bruce/sams/service/RegistrationService.java @@ -0,0 +1,13 @@ +package com.bruce.sams.service; + +import com.bruce.sams.domain.ams.Registration; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author bruce +* @description 针对表【ams_registration(活动报名表)】的数据库操作Service +* @createDate 2025-02-19 11:23:27 +*/ +public interface RegistrationService extends IService { + +} diff --git a/src/main/java/com/bruce/sams/service/impl/ActivityServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/ActivityServiceImpl.java index bfbc2802..854d49c4 100644 --- a/src/main/java/com/bruce/sams/service/impl/ActivityServiceImpl.java +++ b/src/main/java/com/bruce/sams/service/impl/ActivityServiceImpl.java @@ -1,82 +1,25 @@ package com.bruce.sams.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.sams.domain.ams.Activity; -import com.bruce.sams.mapper.ActivityMapper; import com.bruce.sams.service.ActivityService; +import com.bruce.sams.mapper.ActivityMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; - /** - * 管理社团活动 - * - * @author bruce - * @description 针对表【ams_activity(活动表)】的数据库操作Service实现 - * @createDate 2025-02-17 11:41:53 - */ +* @author bruce +* @description 针对表【ams_activity(活动表)】的数据库操作Service实现 +* @createDate 2025-02-19 11:22:14 +*/ @Service public class ActivityServiceImpl extends ServiceImpl - implements ActivityService { + implements ActivityService{ + @Autowired private ActivityMapper activityMapper; - /** - * 获取所有活动 - */ - public List getAllActivities() { - return activityMapper.selectList(null); - } - /** - * 获取活动详情 - */ - public Activity getActivityById(Long actId) { - return activityMapper.selectById(actId); - } - - /** - * 获取某个社团的所有活动 - */ - public List getActivitiesByClubId(Long clubId) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Activity::getClubId, clubId); - return activityMapper.selectList(wrapper); - } - - /** - * 添加活动 - */ - public void addActivity(Activity activity) { - activityMapper.insert(activity); - } - - /** - * 更新活动信息 - */ - public void updateActivity(Activity activity) { - activityMapper.updateById(activity); - } - - /** - * 删除活动 - */ - public void deleteActivity(Long actId) { - activityMapper.deleteById(actId); - } - - /** - * 启动/暂停/取消活动 - */ - public void changeActivityStatus(Long actId, String newStatus) { - Activity activity = activityMapper.selectById(actId); - if (activity != null) { - activity.setStatus(newStatus); - activityMapper.updateById(activity); - } - } } diff --git a/src/main/java/com/bruce/sams/service/impl/ApprovalServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/ApprovalServiceImpl.java new file mode 100644 index 00000000..10d925fc --- /dev/null +++ b/src/main/java/com/bruce/sams/service/impl/ApprovalServiceImpl.java @@ -0,0 +1,22 @@ +package com.bruce.sams.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.sams.domain.ams.Approval; +import com.bruce.sams.service.ApprovalService; +import com.bruce.sams.mapper.ApprovalMapper; +import org.springframework.stereotype.Service; + +/** +* @author bruce +* @description 针对表【ams_approval(活动审批表)】的数据库操作Service实现 +* @createDate 2025-02-19 11:22:24 +*/ +@Service +public class ApprovalServiceImpl extends ServiceImpl + implements ApprovalService{ + +} + + + + diff --git a/src/main/java/com/bruce/sams/service/impl/CommentServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/CommentServiceImpl.java new file mode 100644 index 00000000..f9db1b63 --- /dev/null +++ b/src/main/java/com/bruce/sams/service/impl/CommentServiceImpl.java @@ -0,0 +1,22 @@ +package com.bruce.sams.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.sams.domain.ams.Comment; +import com.bruce.sams.service.CommentService; +import com.bruce.sams.mapper.CommentMapper; +import org.springframework.stereotype.Service; + +/** +* @author bruce +* @description 针对表【ams_comment(活动评论表)】的数据库操作Service实现 +* @createDate 2025-02-19 11:22:39 +*/ +@Service +public class CommentServiceImpl extends ServiceImpl + implements CommentService{ + +} + + + + diff --git a/src/main/java/com/bruce/sams/service/impl/ReactionServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/ReactionServiceImpl.java new file mode 100644 index 00000000..e779e3eb --- /dev/null +++ b/src/main/java/com/bruce/sams/service/impl/ReactionServiceImpl.java @@ -0,0 +1,22 @@ +package com.bruce.sams.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.sams.domain.ams.Reaction; +import com.bruce.sams.service.ReactionService; +import com.bruce.sams.mapper.ReactionMapper; +import org.springframework.stereotype.Service; + +/** +* @author bruce +* @description 针对表【ams_reaction(活动点赞/点踩表)】的数据库操作Service实现 +* @createDate 2025-02-19 11:22:49 +*/ +@Service +public class ReactionServiceImpl extends ServiceImpl + implements ReactionService{ + +} + + + + diff --git a/src/main/java/com/bruce/sams/service/impl/RegistrationServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/RegistrationServiceImpl.java new file mode 100644 index 00000000..9e65b21d --- /dev/null +++ b/src/main/java/com/bruce/sams/service/impl/RegistrationServiceImpl.java @@ -0,0 +1,22 @@ +package com.bruce.sams.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.sams.domain.ams.Registration; +import com.bruce.sams.service.RegistrationService; +import com.bruce.sams.mapper.RegistrationMapper; +import org.springframework.stereotype.Service; + +/** +* @author bruce +* @description 针对表【ams_registration(活动报名表)】的数据库操作Service实现 +* @createDate 2025-02-19 11:23:27 +*/ +@Service +public class RegistrationServiceImpl extends ServiceImpl + implements RegistrationService{ + +} + + + + diff --git a/src/main/resources/mapper/ApprovalMapper.xml b/src/main/resources/mapper/ApprovalMapper.xml new file mode 100644 index 00000000..646aafed --- /dev/null +++ b/src/main/resources/mapper/ApprovalMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + appr_id,act_id,user_id,approver_id,status,reason, + approved_at,created_at + + diff --git a/src/main/resources/mapper/CommentMapper.xml b/src/main/resources/mapper/CommentMapper.xml new file mode 100644 index 00000000..f7094c72 --- /dev/null +++ b/src/main/resources/mapper/CommentMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + comment_id,user_id,act_id,parent_comment_id,content,created_at + + diff --git a/src/main/resources/mapper/ReactionMapper.xml b/src/main/resources/mapper/ReactionMapper.xml new file mode 100644 index 00000000..19c3e1a0 --- /dev/null +++ b/src/main/resources/mapper/ReactionMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + reaction_id,user_id,act_id,reaction_type,created_at + + diff --git a/src/main/resources/mapper/RegistrationMapper.xml b/src/main/resources/mapper/RegistrationMapper.xml new file mode 100644 index 00000000..16768d10 --- /dev/null +++ b/src/main/resources/mapper/RegistrationMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + reg_id,act_id,user_id,role,status,register_time, + attend_time + +