From 562311e1112586a0c320bd90a143e2b78a3bbf53 Mon Sep 17 00:00:00 2001 From: YZY <1104325451@qq.com> Date: Thu, 10 Apr 2025 16:17:27 +0800 Subject: [PATCH] xiu7 --- server/.idea/workspace.xml | 1 + .../java/self/cases/teams/Application.java | 112 +++---- .../main/java/self/cases/teams/Student.java | 273 +++++++++------- .../controller/ActiveLogsController.java | 129 ++++---- .../teams/controller/ApplyLogsController.java | 152 +++++---- .../teams/controller/BaseController.java | 29 +- .../teams/controller/IndexController.java | 161 ++++++---- .../teams/controller/TeamTypesController.java | 125 +++++--- .../teams/controller/TeamsController.java | 150 +++++---- .../teams/controller/UsersController.java | 117 ++++--- .../self/cases/teams/entity/ActiveLogs.java | 66 ++-- .../self/cases/teams/entity/Activities.java | 110 +++---- .../self/cases/teams/entity/ApplyLogs.java | 77 ++--- .../self/cases/teams/entity/Clubshenqing.java | 100 +++--- .../java/self/cases/teams/entity/Members.java | 75 ++--- .../java/self/cases/teams/entity/Notices.java | 88 +++-- .../java/self/cases/teams/entity/PayLogs.java | 88 +++-- .../java/self/cases/teams/entity/STjiao.java | 68 ++-- .../self/cases/teams/entity/TeamTypes.java | 100 +++--- .../java/self/cases/teams/entity/Teams.java | 149 +++++---- .../java/self/cases/teams/entity/Users.java | 302 ++++++++++-------- .../self/cases/teams/Application$1.class | Bin 1718 -> 1718 bytes .../self/cases/teams/Application.class | Bin 3667 -> 3667 bytes .../self/cases/teams/CourseManager.class | Bin 2036 -> 2036 bytes .../classes/self/cases/teams/FileUtil.class | Bin 2647 -> 2647 bytes .../classes/self/cases/teams/InputUtil.class | Bin 1552 -> 1552 bytes .../classes/self/cases/teams/Student.class | Bin 3421 -> 3425 bytes .../cases/teams/StudentManagementSystem.class | Bin 11081 -> 11094 bytes .../controller/ActiveLogsController.class | Bin 4219 -> 4219 bytes .../controller/ApplyLogsController.class | Bin 5217 -> 5217 bytes .../teams/controller/BaseController.class | Bin 1476 -> 1476 bytes .../teams/controller/IndexController.class | Bin 4931 -> 4931 bytes .../controller/TeamTypesController.class | Bin 4149 -> 4149 bytes .../teams/controller/TeamsController.class | Bin 4847 -> 4847 bytes .../teams/controller/UsersController.class | Bin 3947 -> 3947 bytes .../self/cases/teams/entity/ActiveLogs.class | Bin 1925 -> 1925 bytes .../self/cases/teams/entity/Activities.class | Bin 2973 -> 2973 bytes .../self/cases/teams/entity/ApplyLogs.class | Bin 2282 -> 2282 bytes .../cases/teams/entity/Clubshenqing.class | Bin 3430 -> 3430 bytes .../self/cases/teams/entity/Members.class | Bin 1899 -> 1899 bytes .../self/cases/teams/entity/Notices.class | Bin 2128 -> 2128 bytes .../self/cases/teams/entity/PayLogs.class | Bin 2265 -> 2265 bytes .../self/cases/teams/entity/STjiao.class | Bin 2538 -> 2538 bytes .../self/cases/teams/entity/TeamTypes.class | Bin 1639 -> 1639 bytes .../self/cases/teams/entity/Teams.class | Bin 2486 -> 2486 bytes .../self/cases/teams/entity/Users.class | Bin 3711 -> 3711 bytes .../self/cases/teams/teaa/PaymentRecord.class | Bin 0 -> 2526 bytes .../classes/self/cases/teams/teaa/STcx.class | Bin 0 -> 5405 bytes 48 files changed, 1290 insertions(+), 1182 deletions(-) create mode 100644 server/target/classes/self/cases/teams/teaa/PaymentRecord.class create mode 100644 server/target/classes/self/cases/teams/teaa/STcx.class diff --git a/server/.idea/workspace.xml b/server/.idea/workspace.xml index d34c6eeb..a3203f68 100644 --- a/server/.idea/workspace.xml +++ b/server/.idea/workspace.xml @@ -146,6 +146,7 @@ + diff --git a/server/src/main/java/self/cases/teams/Application.java b/server/src/main/java/self/cases/teams/Application.java index 682c7e19..91b1a891 100644 --- a/server/src/main/java/self/cases/teams/Application.java +++ b/server/src/main/java/self/cases/teams/Application.java @@ -1,78 +1,82 @@ -package self.cases.teams; +package self.cases.teams; // 定义项目主包名 -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.alibaba.fastjson.support.config.FastJsonConfig; -import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; -import com.baomidou.mybatisplus.annotation.DbType; -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.http.HttpMessageConverters; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.http.MediaType; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import com.alibaba.fastjson.serializer.SerializerFeature; // 引入 FastJSON 的序列化特性 +import com.alibaba.fastjson.support.config.FastJsonConfig; // 引入 FastJSON 的配置类 +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; // 引入 FastJSON 的 HTTP 消息转换器 +import com.baomidou.mybatisplus.annotation.DbType; // 引入 MyBatis-Plus 的数据库类型枚举 +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 引入 MyBatis-Plus 的拦截器 +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 引入 MyBatis-Plus 的分页拦截器 +import org.mybatis.spring.annotation.MapperScan; // 引入 MyBatis 的 Mapper 扫描注解 +import org.springframework.boot.SpringApplication; // 引入 Spring Boot 的启动类 +import org.springframework.boot.autoconfigure.SpringBootApplication; // 引入 Spring Boot 的启动注解 +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; // 引入 Spring Boot 的消息转换器 +import org.springframework.cache.annotation.EnableCaching; // 引入缓存注解 +import org.springframework.context.annotation.Bean; // 引入 Bean 注解 +import org.springframework.http.MediaType; // 引入 HTTP 媒体类型 +import org.springframework.http.converter.HttpMessageConverter; // 引入 HTTP 消息转换器 +import org.springframework.web.servlet.config.annotation.CorsRegistry; // 引入 CORS 配置 +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // 引入 Web MVC 配置 -import java.util.ArrayList; -import java.util.List; +import java.util.ArrayList; // 导入 ArrayList 类,用于创建动态数组 +import java.util.List; // 导入 List 接口,用于表示有序集合 -@SpringBootApplication -@MapperScan({"self.cases.teams.dao"}) -@EnableCaching -public class Application implements WebMvcConfigurer{ + +@SpringBootApplication // 启动类注解 +@MapperScan({"self.cases.teams.dao"}) // 扫描 Mapper 接口所在的包 +@EnableCaching // 开启缓存功能 +public class Application implements WebMvcConfigurer { // 定义启动类并实现 WebMvcConfigurer 接口 /** * JSON格式转换器 - * @return + * @return 返回 FastJsonHttpMessageConverter 实例 */ - @Bean + @Bean // 声明为 Spring 容器中的 Bean public HttpMessageConverters fastJsonHttpMessageConverters() { - FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); - FastJsonConfig fastJsonConfig = new FastJsonConfig(); - fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); - List fastMedisTypes = new ArrayList<>(); - fastMedisTypes.add(MediaType.APPLICATION_JSON); - fastConverter.setSupportedMediaTypes(fastMedisTypes); - fastConverter.setFastJsonConfig(fastJsonConfig); - HttpMessageConverter converter = fastConverter; - return new HttpMessageConverters(converter); + FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 创建 FastJSON 消息转换器实例 + FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 创建 FastJSON 配置实例 + fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 设置序列化特性为美化格式 + List fastMedisTypes = new ArrayList<>(); // 创建支持的媒体类型列表 + fastMedisTypes.add(MediaType.APPLICATION_JSON); // 添加 JSON 类型 + fastConverter.setSupportedMediaTypes(fastMedisTypes); // 设置支持的媒体类型 + fastConverter.setFastJsonConfig(fastJsonConfig); // 设置 FastJSON 配置 + HttpMessageConverter converter = fastConverter; // 转换为通用消息转换器 + return new HttpMessageConverters(converter); // 返回消息转换器集合 } /** - * 添加MySQL分页查询 - * @return + * 添加 MySQL 分页查询拦截器 + * @return 返回 MybatisPlusInterceptor 实例 */ - @Bean + @Bean // 声明为 Spring 容器中的 Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { - - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - - interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); - - return interceptor; + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建拦截器实例 + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 添加分页拦截器,并指定数据库类型为 MySQL + return interceptor; // 返回拦截器实例 } - @Bean + /** + * 配置跨域资源共享 (CORS) + * @return 返回 WebMvcConfigurer 实例 + */ + @Bean // 声明为 Spring 容器中的 Bean public WebMvcConfigurer corsConfigurer() { - return new WebMvcConfigurer() { - @Override + return new WebMvcConfigurer() { // 匿名内部类实现 WebMvcConfigurer 接口 + @Override // 重写 addCorsMappings 方法 public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") - .allowedOrigins("*") - .allowCredentials(true) - .allowedMethods("GET", "POST", "DELETE", "PUT","PATCH") - .maxAge(3600); - + registry.addMapping("/**") // 配置所有路径都支持跨域 + .allowedOrigins("*") // 允许所有来源访问 + .allowCredentials(true) // 允许携带凭证(如 Cookies) + .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH") // 允许的 HTTP 方法 + .maxAge(3600); // 设置预检请求的有效期为 3600 秒 } }; } + /** + * 应用程序入口方法 + * @param args 启动参数 + */ public static void main(String[] args) { - - SpringApplication.run(Application.class, args); + SpringApplication.run(Application.class, args); // 启动 Spring Boot 应用程序 } } \ No newline at end of file diff --git a/server/src/main/java/self/cases/teams/Student.java b/server/src/main/java/self/cases/teams/Student.java index 005c817f..5982aa10 100644 --- a/server/src/main/java/self/cases/teams/Student.java +++ b/server/src/main/java/self/cases/teams/Student.java @@ -6,24 +6,26 @@ import java.util.*; import java.util.stream.Collectors; // 学生类 +// 定义一个名为 Student 的类,实现序列化接口,用于存储学生信息 class Student implements Serializable { - private String id; - private String name; - private int age; - private String className; - private Date enrollDate; - private Map scores; - + private String id; // 学号 + private String name; // 姓名 + private int age; // 年龄 + private String className; // 班级 + private Date enrollDate; // 入学日期 + private Map scores; // 存储学生成绩的映射表 + + // 构造函数,初始化学生的基本信息 public Student(String id, String name, int age, String className) { this.id = id; this.name = name; this.age = age; this.className = className; - this.enrollDate = new Date(); - this.scores = new HashMap<>(); + this.enrollDate = new Date(); // 当前时间作为入学日期 + this.scores = new HashMap<>(); // 初始化空的成绩表 } - // Getter和Setter方法 + // Getter 和 Setter 方法,用于访问和修改私有字段 public String getId() { return id; } public String getName() { return name; } public int getAge() { return age; } @@ -31,321 +33,350 @@ class Student implements Serializable { public Date getEnrollDate() { return enrollDate; } public Map getScores() { return scores; } + // 更新学生的某门课程成绩 public void updateScore(String course, double score) { scores.put(course, score); } + // 计算学生的平均成绩 public double calculateAverage() { return scores.values().stream() .mapToDouble(Double::doubleValue) .average() - .orElse(0.0); + .orElse(0.0); // 如果没有成绩则返回默认值 0.0 } + // 将学生信息以字符串形式输出 @Override public String toString() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - return String.format("学号: %s\n姓名: %s\n年龄: %d\n班级: %s\n入学日期: %s", + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期 + return String.format("学号: %s\\n姓名: %s\\n年龄: %d\\n班级: %s\\n入学日期: %s", id, name, age, className, sdf.format(enrollDate)); } } -// 课程管理类 +// 定义一个名为 CourseManager 的类,用于管理课程信息 class CourseManager { private static final List AVAILABLE_COURSES = Arrays.asList( - "数学", "语文", "英语", "物理", "化学" + "数学", "语文", "英语", "物理", "化学" // 可用课程列表 ); + // 判断课程是否有效 public static boolean isValidCourse(String course) { return AVAILABLE_COURSES.contains(course); } + // 显示可用课程列表 public static void showAvailableCourses() { System.out.println("可选课程列表:"); - AVAILABLE_COURSES.forEach(c -> System.out.print(c + " ")); + AVAILABLE_COURSES.forEach(c -> System.out.print(c + " ")); // 打印课程名 System.out.println(); } } -// 文件工具类 +// 定义一个名为 FileUtil 的类,用于文件操作 class FileUtil { - private static final String DATA_FILE = "students.dat"; + private static final String DATA_FILE = "students.dat"; // 数据文件路径 + // 将学生列表保存到文件中 public static void saveData(List students) { try (ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(DATA_FILE))) { - oos.writeObject(students); + oos.writeObject(students); // 序列化并写入文件 } catch (IOException e) { - System.err.println("数据保存失败: " + e.getMessage()); + System.err.println("数据保存失败: " + e.getMessage()); // 错误处理 } } + // 从文件中加载学生数据 @SuppressWarnings("unchecked") public static List loadData() { File file = new File(DATA_FILE); - if (!file.exists()) return new ArrayList<>(); + if (!file.exists()) return new ArrayList<>(); // 文件不存在时返回空列表 try (ObjectInputStream ois = new ObjectInputStream( new FileInputStream(DATA_FILE))) { - return (List) ois.readObject(); + return (List) ois.readObject(); // 反序列化读取数据 } catch (IOException | ClassNotFoundException e) { - System.err.println("数据加载失败: " + e.getMessage()); - return new ArrayList<>(); + System.err.println("数据加载失败: " + e.getMessage()); // 错误处理 + return new ArrayList<>(); // 返回空列表 } } } -// 输入工具类 +// 定义一个名为 InputUtil 的类,用于获取用户输入 class InputUtil { - private static final Scanner scanner = new Scanner(System.in); + private static final Scanner scanner = new Scanner(System.in); // 输入流 + // 获取整数输入 public static int getIntInput(String prompt) { while (true) { - System.out.print(prompt); + System.out.print(prompt); // 提示信息 try { - return Integer.parseInt(scanner.nextLine()); + return Integer.parseInt(scanner.nextLine()); // 转换为整数 } catch (NumberFormatException e) { - System.out.println("输入无效,请输入整数!"); + System.out.println("输入无效,请输入整数!"); // 错误提示 } } } + // 获取字符串输入 public static String getStringInput(String prompt) { - System.out.print(prompt); - return scanner.nextLine().trim(); + System.out.print(prompt); // 提示信息 + return scanner.nextLine().trim(); // 去除首尾空格 } + // 获取双精度浮点数输入 public static double getDoubleInput(String prompt) { while (true) { - System.out.print(prompt); + System.out.print(prompt); // 提示信息 try { - return Double.parseDouble(scanner.nextLine()); + return Double.parseDouble(scanner.nextLine()); // 转换为浮点数 } catch (NumberFormatException e) { - System.out.println("输入无效,请输入数字!"); + System.out.println("输入无效,请输入数字!"); // 错误提示 } } } } -// 主系统类 +// 定义主系统类 StudentManagementSystem class StudentManagementSystem { - private List students; - private boolean isRunning = true; + private List students; // 存储学生列表 + private boolean isRunning = true; // 控制程序运行状态 + // 构造函数,初始化学生列表并加载数据 public StudentManagementSystem() { students = FileUtil.loadData(); } + // 启动系统主循环 public void start() { while (isRunning) { - showMainMenu(); - int choice = InputUtil.getIntInput("请选择操作:"); - handleMainMenu(choice); + showMainMenu(); // 显示主菜单 + int choice = InputUtil.getIntInput("请选择操作:"); // 获取用户选择 + handleMainMenu(choice); // 处理用户选择 } } + // 显示主菜单 private void showMainMenu() { - System.out.println("\n==== 学生信息管理系统 ===="); + System.out.println("\\n==== 学生信息管理 ===="); System.out.println("1. 添加学生"); System.out.println("2. 查询学生"); - System.out.println("3. 录入成绩"); + System.out.println("3. 录入活动成绩"); System.out.println("4. 显示统计"); - System.out.println("5. 删除学生"); + System.out.println("5. 删除学生信息"); System.out.println("6. 保存数据"); System.out.println("7. 退出系统"); } + // 处理主菜单选项 private void handleMainMenu(int choice) { switch (choice) { -// case 1 -> addStudent(); -// case 2 -> searchStudent(); -// case 3 -> inputScore(); -// case 4 -> showStatistics(); -// case 5 -> deleteStudent(); -// case 6 -> saveData(); -// case 7 -> exitSystem(); +// case 1 -> addStudent(); // 添加学生 +// case 2 -> searchStudent(); // 查询学生 +// case 3 -> inputScore(); // 录入成绩 +// case 4 -> showStatistics(); // 显示统计信息 +// case 5 -> deleteStudent(); // 删除学生 +// case 6 -> saveData(); // 保存数据 +// case 7 -> exitSystem(); // 退出系统 // default -> System.out.println("无效选项!"); } } + // 添加学生 private void addStudent() { - String id = InputUtil.getStringInput("请输入学号:"); - if (isStudentExist(id)) { + String id = InputUtil.getStringInput("请输入学号:"); // 获取学号 + if (isStudentExist(id)) { // 检查学号是否已存在 System.out.println("该学号已存在!"); return; } - String name = InputUtil.getStringInput("请输入姓名:"); - int age = InputUtil.getIntInput("请输入年龄:"); - String className = InputUtil.getStringInput("请输入班级:"); + String name = InputUtil.getStringInput("请输入姓名:"); // 获取姓名 + int age = InputUtil.getIntInput("请输入年龄:"); // 获取年龄 + String className = InputUtil.getStringInput("请输入班级:"); // 获取班级 - Student student = new Student(id, name, age, className); - students.add(student); + Student student = new Student(id, name, age, className); // 创建学生对象 + students.add(student); // 添加到学生列表 System.out.println("学生添加成功!"); } + // 查询学生 private void searchStudent() { - System.out.println("\n==== 查询选项 ===="); + System.out.println("\\n==== 查询选项 ===="); System.out.println("1. 按学号查询"); System.out.println("2. 按姓名查询"); System.out.println("3. 显示全部"); - int choice = InputUtil.getIntInput("请选择查询方式:"); + int choice = InputUtil.getIntInput("请选择查询方式:"); // 获取查询方式 switch (choice) { -// case 1 -> searchById(); -// case 2 -> searchByName(); -// case 3 -> showAllStudents(); +// case 1 -> searchById(); // 按学号查询 +// case 2 -> searchByName(); // 按姓名查询 +// case 3 -> showAllStudents(); // 显示全部学生 // default -> System.out.println("无效选项!"); } } + // 按学号查询学生 private void searchById() { - String id = InputUtil.getStringInput("请输入学号:"); + String id = InputUtil.getStringInput("请输入学号:"); // 获取学号 students.stream() - .filter(s -> s.getId().equals(id)) - .findFirst(); - + .filter(s -> s.getId().equals(id)) // 筛选符合条件的学生 + .findFirst(); // 查找第一个匹配项 } + // 按姓名查询学生 private void searchByName() { - String name = InputUtil.getStringInput("请输入姓名:"); + String name = InputUtil.getStringInput("请输入姓名:"); // 获取姓名 List result = null; try { students.stream() - .filter(s -> s.getName().equalsIgnoreCase(name)) - .wait(); + .filter(s -> s.getName().equalsIgnoreCase(name)) // 忽略大小写筛选 + .wait(); // 等待(此处有误,应改为 collect 或其他操作) } catch (InterruptedException e) { throw new RuntimeException(e); } - if (result.isEmpty()) { + if (result.isEmpty()) { // 如果未找到学生 System.out.println("找不到该学生"); } else { - result.forEach(System.out::println); + result.forEach(System.out::println); // 输出学生信息 } } + // 显示所有学生 private void showAllStudents() { - if (students.isEmpty()) { + if (students.isEmpty()) { // 如果学生列表为空 System.out.println("当前没有学生记录"); return; } - students.forEach(s -> { - System.out.println(s); + + students.forEach(s -> { // 遍历学生列表 + System.out.println(s); // 输出学生信息 System.out.println("--------------------"); }); } + // 录入成绩 private void inputScore() { - String id = InputUtil.getStringInput("请输入学号:"); - Student student = findStudentById(id); - if (student == null) { + String id = InputUtil.getStringInput("请输入学号:"); // 获取学号 + Student student = findStudentById(id); // 查找学生 + if (student == null) { // 如果学生不存在 System.out.println("学生不存在!"); return; } - CourseManager.showAvailableCourses(); - String course = InputUtil.getStringInput("请输入课程名称:"); - if (!CourseManager.isValidCourse(course)) { + CourseManager.showAvailableCourses(); // 显示可用课程 + String course = InputUtil.getStringInput("请输入课程名称:"); // 获取课程名称 + if (!CourseManager.isValidCourse(course)) { // 检查课程是否有效 System.out.println("无效课程!"); return; } - double score = InputUtil.getDoubleInput("请输入成绩:"); - student.updateScore(course, score); + double score = InputUtil.getDoubleInput("请输入成绩:"); // 获取成绩 + student.updateScore(course, score); // 更新学生成绩 System.out.println("成绩录入成功!"); } + // 显示统计信息 private void showStatistics() { - System.out.println("\n==== 统计信息 ===="); + System.out.println("\\n==== 统计信息 ===="); System.out.println("1. 班级人数统计"); System.out.println("2. 课程平均分"); System.out.println("3. 学生个人成绩"); - int choice = InputUtil.getIntInput("请选择统计类型:"); + int choice = InputUtil.getIntInput("请选择统计类型:"); // 获取统计类型 switch (choice) { -// case 1 -> showClassStatistics(); -// case 2 -> showCourseStatistics(); -// case 3 -> showStudentScores(); +// case 1 -> showClassStatistics(); // 显示班级人数统计 +// case 2 -> showCourseStatistics(); // 显示课程平均分 +// case 3 -> showStudentScores(); // 显示学生个人成绩 // default -> System.out.println("无效选项!"); } } + // 显示班级人数统计 private void showClassStatistics() { Map classCount = students.stream() .collect(Collectors.groupingBy( - Student::getClassName, - Collectors.counting())); + Student::getClassName, // 按班级分组 + Collectors.counting())); // 统计每班人数 - classCount.forEach((className, count) -> - System.out.printf("班级 %s: %d 人\n", className, count)); + classCount.forEach((className, count) -> // 遍历班级和人数 + System.out.printf("班级 %s: %d 人\\n", className, count)); // 输出结果 } + // 显示课程平均分 private void showCourseStatistics() { Map courseAverages = new HashMap<>(); - students.forEach(student -> - student.getScores().forEach((course, score) -> - courseAverages.merge(course, score, Double::sum))); + students.forEach(student -> // 遍历每个学生 + student.getScores().forEach((course, score) -> // 遍历每门课程成绩 + courseAverages.merge(course, score, Double::sum))); // 累加成绩 - courseAverages.forEach((course, total) -> { + courseAverages.forEach((course, total) -> { // 遍历课程总分 long count = students.stream() - .filter(s -> s.getScores().containsKey(course)) - .count(); - double average = count > 0 ? total / count : 0; - System.out.printf("%s 平均分: %.2f\n", course, average); + .filter(s -> s.getScores().containsKey(course)) // 筛选有该课程的学生 + .count(); // 统计学生数量 + double average = count > 0 ? total / count : 0; // 计算平均分 + System.out.printf("%s 平均分: %.2f\\n", course, average); // 输出结果 }); } + // 显示学生个人成绩 private void showStudentScores() { - String id = InputUtil.getStringInput("请输入学号:"); - Student student = findStudentById(id); - if (student == null) { + String id = InputUtil.getStringInput("请输入学号:"); // 获取学号 + Student student = findStudentById(id); // 查找学生 + if (student == null) { // 如果学生不存在 System.out.println("学生不存在!"); return; } - System.out.println(student); - if (student.getScores().isEmpty()) { + System.out.println(student); // 输出学生基本信息 + if (student.getScores().isEmpty()) { // 如果没有成绩记录 System.out.println("暂无成绩记录"); return; } - student.getScores().forEach((course, score) -> - System.out.printf("%s: %.2f\n", course, score)); - System.out.printf("平均分: %.2f\n", student.calculateAverage()); + student.getScores().forEach((course, score) -> // 遍历每门课程成绩 + System.out.printf("%s: %.2f\\n", course, score)); // 输出课程成绩 + System.out.printf("平均分: %.2f\\n", student.calculateAverage()); // 输出平均分 } + // 删除学生信息 private void deleteStudent() { - String id = InputUtil.getStringInput("请输入要删除的学号:"); - boolean removed = students.removeIf(s -> s.getId().equals(id)); - System.out.println(removed ? "删除成功!" : "学生不存在!"); + String id = InputUtil.getStringInput("请输入要删除的学号:"); // 获取学号 + boolean removed = students.removeIf(s -> s.getId().equals(id)); // 删除学生 + System.out.println(removed ? "删除成功!" : "学生不存在!"); // 输出结果 } + // 保存数据 private void saveData() { - FileUtil.saveData(students); + FileUtil.saveData(students); // 保存学生列表到文件 System.out.println("数据已保存!"); } + // 退出系统 private void exitSystem() { - isRunning = false; - System.out.println("正在退出系统..."); - saveData(); - System.out.println("谢谢使用!"); + isRunning = false; // 设置运行标志为 false + System.out.println("正在退出系统..."); // 提示退出 + saveData(); // 保存数据 + System.out.println("谢谢使用!"); // 结束提示 } + // 检查学号是否存在 private boolean isStudentExist(String id) { return students.stream() - .anyMatch(s -> s.getId().equals(id)); + .anyMatch(s -> s.getId().equals(id)); // 判断是否有相同学号的学生 } + // 根据学号查找学生 private Student findStudentById(String id) { return students.stream() - .filter(s -> s.getId().equals(id)) - .findFirst() - .orElse(null); + .filter(s -> s.getId().equals(id)) // 筛选符合条件的学生 + .findFirst() // 查找第一个匹配项 + .orElse(null); // 如果未找到返回 null } public static void main(String[] args) { - new StudentManagementSystem().start(); + new StudentManagementSystem().start(); // 启动系统 } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java b/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java index ca9bc92e..8f24dd60 100644 --- a/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java +++ b/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java @@ -1,121 +1,120 @@ package self.cases.teams.controller; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; - -import self.cases.teams.entity.Users; -import self.cases.teams.handle.CacheHandle; -import self.cases.teams.service.UsersService; -import self.cases.teams.utils.DateUtils; -import self.cases.teams.utils.IDUtils; -import self.cases.teams.msg.R; -import self.cases.teams.msg.PageData; - -import self.cases.teams.entity.ActiveLogs; -import self.cases.teams.service.ActiveLogsService; - -import java.util.List; -import java.util.Map; +import org.slf4j.LoggerFactory; // 导入日志工具类 + +import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖 +import org.springframework.stereotype.Controller; // Spring MVC 控制器注解 +import org.springframework.web.bind.annotation.*; // RESTful 注解支持 +import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理注解 +import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据注解 + +import self.cases.teams.entity.Users; // 用户实体类 +import self.cases.teams.handle.CacheHandle; // 缓存处理类 +import self.cases.teams.service.UsersService; // 用户服务接口 +import self.cases.teams.utils.DateUtils; // 日期工具类 +import self.cases.teams.utils.IDUtils; // ID 工具类 +import self.cases.teams.msg.R; // 响应封装类 +import self.cases.teams.msg.PageData; // 分页数据封装类 + +import self.cases.teams.entity.ActiveLogs; // 报名记录实体类 +import self.cases.teams.service.ActiveLogsService; // 报名记录服务接口 + +import java.util.List; // Java 集合 List 接口 +import java.util.Map; // Java 集合 Map 接口 /** * 系统请求响应控制器 * 报名记录 */ @Controller -@RequestMapping("/activeLogs") -public class ActiveLogsController extends BaseController { +@RequestMapping("/activeLogs") // 设置默认请求路径 +public class ActiveLogsController extends BaseController { // 继承基础控制器 - protected static final Logger Log = LoggerFactory.getLogger(ActiveLogsController.class); + protected static final Logger Log = LoggerFactory.getLogger(ActiveLogsController.class); // 日志实例 - @Autowired + @Autowired // 自动注入缓存处理类 private CacheHandle cacheHandle; - @Autowired + @Autowired // 自动注入用户服务 private UsersService usersService; - @Autowired + @Autowired // 自动注入报名记录服务 private ActiveLogsService activeLogsService; - @RequestMapping("") + @RequestMapping("") // 默认请求映射 public String index() { - return "pages/ActiveLogs"; + return "pages/ActiveLogs"; // 返回视图页面名称 } - @GetMapping("/info") - @ResponseBody + @GetMapping("/info") // GET 请求获取单条记录 + @ResponseBody // 返回 JSON 数据 public R getInfo(String id) { - Log.info("查找指定报名记录,ID:{}", id); + Log.info("查找指定报名记录,ID:{}", id); // 记录日志 - ActiveLogs activeLogs = activeLogsService.getOne(id); + ActiveLogs activeLogs = activeLogsService.getOne(id); // 查询单条记录 - return R.successData(activeLogs); + return R.successData(activeLogs); // 返回成功数据 } - @GetMapping("/list") - @ResponseBody + @GetMapping("/list") // GET 请求获取指定活动的报名记录 + @ResponseBody // 返回 JSON 数据 public R getList(String activeId) { - Log.info("获取指定活动的报名记录,活动ID:{}", activeId); + Log.info("获取指定活动的报名记录,活动ID:{}", activeId); // 记录日志 - List> list = activeLogsService.getListByActiveId(activeId); + List> list = activeLogsService.getListByActiveId(activeId); // 查询指定活动的报名记录 - return R.successData(list); + return R.successData(list); // 返回成功数据 } - @PostMapping("/add") - @ResponseBody + @PostMapping("/add") // POST 请求新增记录 + @ResponseBody // 返回 JSON 数据 public R addInfo(String token, ActiveLogs activeLogs) { - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 获取当前用户 + + if (activeLogsService.isActive(activeLogs.getActiveId(), user.getId())) { // 判断是否已参与 - if(activeLogsService.isActive(activeLogs.getActiveId(), user.getId())){ + activeLogs.setId(IDUtils.makeIDByCurrent()); // 生成唯一 ID + activeLogs.setUserId(user.getId()); // 设置用户 ID + activeLogs.setCreateTime(DateUtils.getNowDate()); // 设置创建时间 - activeLogs.setId(IDUtils.makeIDByCurrent()); - activeLogs.setUserId(user.getId()); - activeLogs.setCreateTime(DateUtils.getNowDate()); + Log.info("添加报名记录,传入参数:{}", activeLogs); // 记录日志 - Log.info("添加报名记录,传入参数:{}", activeLogs); + activeLogsService.add(activeLogs); // 添加记录 - activeLogsService.add(activeLogs); + return R.success(); // 返回成功响应 - return R.success(); - }else{ + } else { - return R.warn("该活动您已参与,请勿重复报名"); + return R.warn("该活动您已参与,请勿重复报名"); // 返回警告响应 } } - @PostMapping("/upd") - @ResponseBody + @PostMapping("/upd") // POST 请求更新记录 + @ResponseBody // 返回 JSON 数据 public R updInfo(ActiveLogs activeLogs) { - Log.info("修改报名记录,传入参数:{}", activeLogs); + Log.info("修改报名记录,传入参数:{}", activeLogs); // 记录日志 - activeLogsService.update(activeLogs); + activeLogsService.update(activeLogs); // 更新记录 - return R.success(); + return R.success(); // 返回成功响应 } - @PostMapping("/del") - @ResponseBody + @PostMapping("/del") // POST 请求删除记录 + @ResponseBody // 返回 JSON 数据 public R delInfo(String id) { - Log.info("删除报名记录, ID:{}", id); + Log.info("删除报名记录, ID:{}", id); // 记录日志 - ActiveLogs activeLogs = activeLogsService.getOne(id); + ActiveLogs activeLogs = activeLogsService.getOne(id); // 查询待删除记录 - activeLogsService.delete(activeLogs); + activeLogsService.delete(activeLogs); // 删除记录 - return R.success(); + return R.success(); // 返回成功响应 } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/controller/ApplyLogsController.java b/server/src/main/java/self/cases/teams/controller/ApplyLogsController.java index 4ad80064..2bd08a85 100644 --- a/server/src/main/java/self/cases/teams/controller/ApplyLogsController.java +++ b/server/src/main/java/self/cases/teams/controller/ApplyLogsController.java @@ -1,146 +1,142 @@ package self.cases.teams.controller; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; - -import self.cases.teams.entity.Users; -import self.cases.teams.handle.CacheHandle; -import self.cases.teams.service.UsersService; -import self.cases.teams.utils.DateUtils; -import self.cases.teams.utils.IDUtils; -import self.cases.teams.msg.R; -import self.cases.teams.msg.PageData; - -import self.cases.teams.entity.ApplyLogs; -import self.cases.teams.service.ApplyLogsService; +import org.slf4j.LoggerFactory; // 导入日志工具类 + +import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖 +import org.springframework.stereotype.Controller; // Spring MVC 控制器注解 +import org.springframework.web.bind.annotation.*; // RESTful 注解支持 +import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理注解 +import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据注解 + +import self.cases.teams.entity.Users; // 用户实体类 +import self.cases.teams.handle.CacheHandle; // 缓存处理类 +import self.cases.teams.service.UsersService; // 用户服务接口 +import self.cases.teams.utils.DateUtils; // 日期工具类 +import self.cases.teams.utils.IDUtils; // ID 工具类 +import self.cases.teams.msg.R; // 响应封装类 +import self.cases.teams.msg.PageData; // 分页数据封装类 + +import self.cases.teams.entity.ApplyLogs; // 申请记录实体类 +import self.cases.teams.service.ApplyLogsService; // 申请记录服务接口 /** * 系统请求响应控制器 * 申请记录 */ @Controller -@RequestMapping("/applyLogs") -public class ApplyLogsController extends BaseController { +@RequestMapping("/applyLogs") // 设置默认请求路径 +public class ApplyLogsController extends BaseController { // 继承基础控制器 - protected static final Logger Log = LoggerFactory.getLogger(ApplyLogsController.class); + protected static final Logger Log = LoggerFactory.getLogger(ApplyLogsController.class); // 日志实例 - @Autowired + @Autowired // 自动注入缓存处理类 private CacheHandle cacheHandle; - @Autowired + @Autowired // 自动注入用户服务 private UsersService usersService; - @Autowired + @Autowired // 自动注入申请记录服务 private ApplyLogsService applyLogsService; - @RequestMapping("") + @RequestMapping("") // 默认请求映射 public String index() { - return "pages/ApplyLogs"; + return "pages/ApplyLogs"; // 返回视图页面名称 } - @GetMapping("/info") - @ResponseBody + @GetMapping("/info") // GET 请求获取单条记录 + @ResponseBody // 返回 JSON 数据 public R getInfo(String id) { - Log.info("查找指定申请记录,ID:{}", id); + Log.info("查找指定申请记录,ID:{}", id); // 记录日志 - ApplyLogs applyLogs = applyLogsService.getOne(id); + ApplyLogs applyLogs = applyLogsService.getOne(id); // 查询单条记录 - return R.successData(applyLogs); + return R.successData(applyLogs); // 返回成功数据 } - @GetMapping("/page") - @ResponseBody + @GetMapping("/page") // GET 请求分页查询 + @ResponseBody // 返回 JSON 数据 public R getPageInfos(Long pageIndex, Long pageSize, String token, String teamName, String userName) { - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 获取当前用户 - if (user.getType() == 0) { + if (user.getType() == 0) { // 普通用户权限 - Log.info("分页查看全部申请记录,当前页码:{}," - + "每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", pageIndex, - pageSize, teamName, userName); + Log.info("分页查看全部申请记录,当前页码:{},每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", + pageIndex, pageSize, teamName, userName); - PageData page = applyLogsService.getPageInfo(pageIndex, pageSize, null, teamName, userName); + PageData page = applyLogsService.getPageInfo(pageIndex, pageSize, null, teamName, userName); // 查询分页数据 - return R.successData(page); + return R.successData(page); // 返回成功数据 - } else if (user.getType() == 1) { + } else if (user.getType() == 1) { // 团队管理员权限 - Log.info("团队管理员查看申请记录,当前页码:{}," - + "每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", pageIndex, - pageSize, teamName, userName); + Log.info("团队管理员查看申请记录,当前页码:{},每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", + pageIndex, pageSize, teamName, userName); - PageData page = applyLogsService.getManPageInfo(pageIndex, pageSize, user.getId(), teamName, userName); + PageData page = applyLogsService.getManPageInfo(pageIndex, pageSize, user.getId(), teamName, userName); // 查询团队管理员分页数据 - return R.successData(page); + return R.successData(page); // 返回成功数据 - } else { + } else { // 其他权限 - Log.info("分页用户相关申请记录,当前页码:{}," - + "每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", pageIndex, - pageSize, teamName, userName); + Log.info("分页用户相关申请记录,当前页码:{},每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", + pageIndex, pageSize, teamName, userName); - PageData page = applyLogsService.getPageInfo(pageIndex, pageSize, user.getId(), teamName, null); + PageData page = applyLogsService.getPageInfo(pageIndex, pageSize, user.getId(), teamName, null); // 查询用户相关分页数据 - return R.successData(page); + return R.successData(page); // 返回成功数据 } } - @PostMapping("/add") - @ResponseBody + @PostMapping("/add") // POST 请求新增记录 + @ResponseBody // 返回 JSON 数据 public R addInfo(String token, ApplyLogs applyLogs) { - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 获取当前用户 + + if (applyLogsService.isApply(user.getId(), applyLogs.getTeamId())) { // 判断是否已申请 - if(applyLogsService.isApply(user.getId(), applyLogs.getTeamId())){ + applyLogs.setId(IDUtils.makeIDByCurrent()); // 生成唯一 ID + applyLogs.setUserId(user.getId()); // 设置用户 ID + applyLogs.setCreateTime(DateUtils.getNowDate()); // 设置创建时间 - applyLogs.setId(IDUtils.makeIDByCurrent()); - applyLogs.setUserId(user.getId()); - applyLogs.setCreateTime(DateUtils.getNowDate()); + Log.info("添加申请记录,传入参数:{}", applyLogs); // 记录日志 - Log.info("添加申请记录,传入参数:{}", applyLogs); + applyLogsService.add(applyLogs); // 添加记录 - applyLogsService.add(applyLogs); + return R.success(); // 返回成功响应 - return R.success(); - }else{ + } else { - return R.warn("申请审核中,请耐心等待"); + return R.warn("申请审核中,请耐心等待"); // 返回警告响应 } } - @PostMapping("/upd") - @ResponseBody + @PostMapping("/upd") // POST 请求更新记录 + @ResponseBody // 返回 JSON 数据 public R updInfo(ApplyLogs applyLogs) { - Log.info("修改申请记录,传入参数:{}", applyLogs); + Log.info("修改申请记录,传入参数:{}", applyLogs); // 记录日志 - applyLogsService.update(applyLogs); + applyLogsService.update(applyLogs); // 更新记录 - return R.success(); + return R.success(); // 返回成功响应 } - @PostMapping("/del") - @ResponseBody + @PostMapping("/del") // POST 请求删除记录 + @ResponseBody // 返回 JSON 数据 public R delInfo(String id) { - Log.info("删除申请记录, ID:{}", id); + Log.info("删除申请记录, ID:{}", id); // 记录日志 - ApplyLogs applyLogs = applyLogsService.getOne(id); + ApplyLogs applyLogs = applyLogsService.getOne(id); // 查询待删除记录 - applyLogsService.delete(applyLogs); + applyLogsService.delete(applyLogs); // 删除记录 - return R.success(); + return R.success(); // 返回成功响应 } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/controller/BaseController.java b/server/src/main/java/self/cases/teams/controller/BaseController.java index 9be0fce4..5a5740bb 100644 --- a/server/src/main/java/self/cases/teams/controller/BaseController.java +++ b/server/src/main/java/self/cases/teams/controller/BaseController.java @@ -1,10 +1,10 @@ package self.cases.teams.controller; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import self.cases.teams.msg.R; +import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理注解 +import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据注解 +import self.cases.teams.msg.R; // 响应封装类 -import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSession; // Servlet HTTP 会话 /** * 系统控制器抽象类 @@ -12,16 +12,16 @@ import javax.servlet.http.HttpSession; */ public abstract class BaseController { - protected static final String SESSION_USER = "user"; + protected static final String SESSION_USER = "user"; // 定义会话中存储用户信息的键值 /** * 获取登录用户的信息 * @param session 会话对象 - * @return + * @return 当前会话中的用户信息 */ protected Object getSessionUser(HttpSession session) { - return session.getAttribute(SESSION_USER); + return session.getAttribute(SESSION_USER); // 从会话中获取用户信息 } /** @@ -31,15 +31,20 @@ public abstract class BaseController { */ protected void setSessionUser(HttpSession session, Object user) { - session.setAttribute(SESSION_USER, user); + session.setAttribute(SESSION_USER, user); // 将用户信息存入会话 } - @ExceptionHandler(Exception.class) - @ResponseBody + /** + * 全局异常处理器 + * @param e 抛出的异常 + * @return 错误响应对象 + */ + @ExceptionHandler(Exception.class) // 捕获所有类型的异常 + @ResponseBody // 返回 JSON 数据 public R exception(Exception e) { - e.printStackTrace(); + e.printStackTrace(); // 打印异常堆栈信息 - return R.error(); + return R.error(); // 返回错误响应 } } diff --git a/server/src/main/java/self/cases/teams/controller/IndexController.java b/server/src/main/java/self/cases/teams/controller/IndexController.java index aff238ef..94015ffe 100644 --- a/server/src/main/java/self/cases/teams/controller/IndexController.java +++ b/server/src/main/java/self/cases/teams/controller/IndexController.java @@ -1,148 +1,171 @@ package self.cases.teams.controller; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import self.cases.teams.entity.Notices; -import self.cases.teams.handle.CacheHandle; -import self.cases.teams.msg.R; -import self.cases.teams.entity.Users; -import self.cases.teams.service.NoticesService; -import self.cases.teams.service.UsersService; -import self.cases.teams.utils.IDUtils; - -import javax.servlet.http.HttpSession; -import java.util.List; -import java.util.Map; +import org.slf4j.Logger; // 日志工具类 +import org.slf4j.LoggerFactory; // 日志工厂类 +import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖 +import org.springframework.stereotype.Controller; // Spring MVC 控制器注解 +import org.springframework.web.bind.annotation.*; // 注解支持 RESTful API + +import self.cases.teams.entity.Notices; // 公告实体类 +import self.cases.teams.handle.CacheHandle; // 缓存处理类 +import self.cases.teams.msg.R; // 响应封装类 +import self.cases.teams.entity.Users; // 用户实体类 +import self.cases.teams.service.NoticesService; // 公告服务接口 +import self.cases.teams.service.UsersService; // 用户服务接口 +import self.cases.teams.utils.IDUtils; // ID 工具类 + +import javax.servlet.http.HttpSession; // Servlet HTTP 会话 +import java.util.List; // Java 集合类 +import java.util.Map; // Java Map 集合 @Controller -@RequestMapping("/") +@RequestMapping("/") // 基础路径映射 public class IndexController extends BaseController { - private static final Logger Log = LoggerFactory.getLogger(IndexController.class); + private static final Logger Log = LoggerFactory.getLogger(IndexController.class); // 初始化日志记录器 - @Autowired + @Autowired // 自动注入用户服务接口 private UsersService usersService; - @Autowired + @Autowired // 自动注入缓存处理类 private CacheHandle cacheHandle; - @Autowired + @Autowired // 自动注入公告服务接口 private NoticesService noticesService; + /** + * 获取系统公告列表 + */ @GetMapping("/sys/notices") - @ResponseBody - public R getNoticeList(String token){ + @ResponseBody // 返回 JSON 数据 + public R getNoticeList(String token) { + + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 从缓存中获取用户信息 + + if (user.getType() == 0) { // 如果用户类型为普通用户 - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + List list = noticesService.getSysNotices(); // 获取系统公告列表 - if(user.getType() == 0){ + return R.successData(list); // 返回系统公告数据 - List list = noticesService.getSysNotices(); + } else if (user.getType() == 1) { // 如果用户类型为管理员 - return R.successData(list); - }else if(user.getType() == 1){ + List list = noticesService.getManNotices(user.getId()); // 获取管理员相关的公告列表 - List list = noticesService.getManNotices(user.getId()); + return R.successData(list); // 返回管理员公告数据 - return R.successData(list); - }else{ + } else { // 如果用户类型为会员 - List list = noticesService.getMemNotices(user.getId()); + List list = noticesService.getMemNotices(user.getId()); // 获取会员相关的公告列表 - return R.successData(list); + return R.successData(list); // 返回会员公告数据 } } - //用户登录 + /** + * 用户登录 + */ @PostMapping("/login") @ResponseBody - public R login(String userName, String passWord, HttpSession session){ + public R login(String userName, String passWord, HttpSession session) { - Log.info("用户登录,用户名:{}, 用户密码:{}", userName, passWord); + Log.info("用户登录,用户名:{}, 用户密码:{}", userName, passWord); // 记录日志 - Users user = usersService.getUserByUserName(userName); + Users user = usersService.getUserByUserName(userName); // 根据用户名获取用户信息 - if(user == null) { + if (user == null) { // 如果用户不存在 - return R.error("输入的用户名不存在"); - }else { + return R.error("输入的用户名不存在"); // 返回错误信息 - if(passWord.equals(user.getPassWord().trim())) { + } else { // 如果用户存在 + if (passWord.equals(user.getPassWord().trim())) { // 如果密码匹配 - String token = IDUtils.makeIDByUUID(); - cacheHandle.addUserCache(token, user.getId()); + String token = IDUtils.makeIDByUUID(); // 生成登录令牌 + cacheHandle.addUserCache(token, user.getId()); // 将用户信息存入缓存 - return R.success("登录成功", token); - }else { + return R.success("登录成功", token); // 返回登录成功信息和令牌 - return R.error("输入的密码错误"); + } else { // 如果密码不匹配 + + return R.error("输入的密码错误"); // 返回密码错误信息 } } } + /** + * 用户退出系统 + */ @RequestMapping("/exit") @ResponseBody public R exit(String token) { - Log.info("用户退出系统并移除登录信息"); + Log.info("用户退出系统并移除登录信息"); // 记录日志 - cacheHandle.removeUserCache(token); + cacheHandle.removeUserCache(token); // 移除用户的缓存信息 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 获取用户信息 + */ @GetMapping("/info") @ResponseBody - public R info(String token){ + public R info(String token) { - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 从缓存中获取用户信息 - return R.successData(user); + return R.successData(user); // 返回用户信息 } + /** + * 修改用户信息 + */ @PostMapping("/info") @ResponseBody - public R info(Users user){ + public R info(Users user) { - Log.info("修改用户信息,{}", user); + Log.info("修改用户信息,{}", user); // 记录日志 - usersService.update(user); + usersService.update(user); // 调用服务层更新用户信息 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 校验旧密码 + */ @RequestMapping("/checkPwd") @ResponseBody public R checkPwd(String oldPwd, String token) { - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 从缓存中获取用户信息 + + if (oldPwd.equals(user.getPassWord())) { // 如果旧密码匹配 - if(oldPwd.equals(user.getPassWord())) { + return R.success(); // 返回成功响应 - return R.success(); - }else { + } else { // 如果旧密码不匹配 - return R.warn("原始密码和输入密码不一致"); + return R.warn("原始密码和输入密码不一致"); // 返回警告信息 } } - //用户密码修改 + /** + * 修改用户密码 + */ @PostMapping("/pwd") @ResponseBody public R pwd(String token, String password) { - Log.info("修改用户密码,{}", password); + Log.info("修改用户密码,{}", password); // 记录日志 - Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); + Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 从缓存中获取用户信息 - user.setPassWord(password); - usersService.update(user); + user.setPassWord(password); // 设置新密码 + usersService.update(user); // 调用服务层更新用户密码 - return R.success(); + return R.success(); // 返回成功响应 } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/controller/TeamTypesController.java b/server/src/main/java/self/cases/teams/controller/TeamTypesController.java index e57b9151..a9971dbf 100644 --- a/server/src/main/java/self/cases/teams/controller/TeamTypesController.java +++ b/server/src/main/java/self/cases/teams/controller/TeamTypesController.java @@ -1,124 +1,143 @@ package self.cases.teams.controller; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.slf4j.Logger; // 日志工具类 +import org.slf4j.LoggerFactory; // 日志工厂类 -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖 +import org.springframework.stereotype.Controller; // Spring MVC 控制器注解 +import org.springframework.web.bind.annotation.GetMapping; // HTTP GET 请求映射 +import org.springframework.web.bind.annotation.PostMapping; // HTTP POST 请求映射 +import org.springframework.web.bind.annotation.RequestMapping; // 请求路径映射 +import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理器 +import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据 -import self.cases.teams.utils.DateUtils; -import self.cases.teams.utils.IDUtils; -import self.cases.teams.msg.R; -import self.cases.teams.msg.PageData; +import self.cases.teams.utils.DateUtils; // 自定义日期工具类 +import self.cases.teams.utils.IDUtils; // 自定义 ID 工具类 +import self.cases.teams.msg.R; // 响应封装类 +import self.cases.teams.msg.PageData; // 分页数据封装类 -import self.cases.teams.entity.TeamTypes; -import self.cases.teams.service.TeamTypesService; +import self.cases.teams.entity.TeamTypes; // 社团类型实体类 +import self.cases.teams.service.TeamTypesService; // 社团类型服务接口 -import java.util.List; +import java.util.List; // Java 集合类 /** * 系统请求响应控制器 - * 社团类型 + * 社团类型相关的请求处理 */ @Controller -@RequestMapping("/teamTypes") +@RequestMapping("/teamTypes") // 基础路径映射 public class TeamTypesController extends BaseController { + // 日志记录器 protected static final Logger Log = LoggerFactory.getLogger(TeamTypesController.class); - @Autowired + @Autowired // 自动注入 TeamTypesService private TeamTypesService teamTypesService; + /** + * 社团类型首页视图 + */ @RequestMapping("") public String index() { - return "pages/TeamTypes"; + return "pages/TeamTypes"; // 返回对应的视图页面 } + /** + * 查看所有社团类型信息 + */ @GetMapping("/all") - @ResponseBody - public R getAll(){ + @ResponseBody // 返回 JSON 数据 + public R getAll() { - Log.info("查看全部的社团类型信息"); + Log.info("查看全部的社团类型信息"); // 记录日志 - List list = teamTypesService.getAll(); + List list = teamTypesService.getAll(); // 调用服务层获取所有社团类型 - return R.successData(list); + return R.successData(list); // 返回成功数据 } + /** + * 根据社团类型 ID 获取社团类型信息 + */ @GetMapping("/info") @ResponseBody public R getInfo(String id) { - Log.info("查找指定社团类型,ID:{}", id); + Log.info("查找指定社团类型,ID:{}", id); // 记录日志 - TeamTypes teamTypes = teamTypesService.getOne(id); + TeamTypes teamTypes = teamTypesService.getOne(id); // 调用服务层获取指定社团类型 - return R.successData(teamTypes); + return R.successData(teamTypes); // 返回成功数据 } - - //社团类型管理 + /** + * 分页查询社团类型信息 + */ @GetMapping("/page") @ResponseBody - public R getPageInfos(Long pageIndex, Long pageSize, - TeamTypes teamTypes) { + public R getPageInfos(Long pageIndex, Long pageSize, TeamTypes teamTypes) { - Log.info("分页查找社团类型,当前页码:{}," - + "每页数据量:{}, 模糊查询,附加参数:{}", pageIndex, - pageSize, teamTypes); + Log.info("分页查找社团类型,当前页码:{},每页数据量:{}, 模糊查询,附加参数:{}", + pageIndex, pageSize, teamTypes); // 记录日志 - PageData page = teamTypesService.getPageInfo(pageIndex, pageSize, teamTypes); + PageData page = teamTypesService.getPageInfo(pageIndex, pageSize, teamTypes); // 调用服务层分页查询 - return R.successData(page); + return R.successData(page); // 返回分页数据 } + /** + * 添加社团类型 + */ @PostMapping("/add") @ResponseBody public R addInfo(TeamTypes teamTypes) { - teamTypes.setId(IDUtils.makeIDByCurrent()); - teamTypes.setCreateTime(DateUtils.getNowDate()); + teamTypes.setId(IDUtils.makeIDByCurrent()); // 生成社团类型 ID + teamTypes.setCreateTime(DateUtils.getNowDate()); // 设置创建时间 - Log.info("添加社团类型,传入参数:{}", teamTypes); + Log.info("添加社团类型,传入参数:{}", teamTypes); // 记录日志 - teamTypesService.add(teamTypes); + teamTypesService.add(teamTypes); // 调用服务层添加社团类型 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 修改社团类型 + */ @PostMapping("/upd") @ResponseBody public R updInfo(TeamTypes teamTypes) { - Log.info("修改社团类型,传入参数:{}", teamTypes); + Log.info("修改社团类型,传入参数:{}", teamTypes); // 记录日志 - teamTypesService.update(teamTypes); + teamTypesService.update(teamTypes); // 调用服务层修改社团类型 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 删除社团类型 + */ @PostMapping("/del") @ResponseBody public R delInfo(String id) { - if(teamTypesService.isRemove(id)){ + // 检查是否存在关联社团 + if(teamTypesService.isRemove(id)) { - Log.info("删除社团类型, ID:{}", id); + Log.info("删除社团类型, ID:{}", id); // 记录日志 - TeamTypes teamTypes = teamTypesService.getOne(id); + TeamTypes teamTypes = teamTypesService.getOne(id); // 获取社团类型信息 - teamTypesService.delete(teamTypes); + teamTypesService.delete(teamTypes); // 调用服务层删除社团类型 - return R.success(); - }else{ + return R.success(); // 返回成功响应 + } else { - return R.warn("存在关联社团,无法移除"); + return R.warn("存在关联社团,无法移除"); // 返回警告响应 } } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/controller/TeamsController.java b/server/src/main/java/self/cases/teams/controller/TeamsController.java index 88fc30ba..c1018521 100644 --- a/server/src/main/java/self/cases/teams/controller/TeamsController.java +++ b/server/src/main/java/self/cases/teams/controller/TeamsController.java @@ -1,143 +1,167 @@ package self.cases.teams.controller; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; - -import self.cases.teams.entity.Users; -import self.cases.teams.handle.CacheHandle; -import self.cases.teams.service.UsersService; -import self.cases.teams.utils.DateUtils; -import self.cases.teams.utils.IDUtils; -import self.cases.teams.msg.R; -import self.cases.teams.msg.PageData; - -import self.cases.teams.entity.Teams; -import self.cases.teams.service.TeamsService; - -import java.util.List; +import org.slf4j.Logger; // 日志工具类 +import org.slf4j.LoggerFactory; // 日志工厂类 + +import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖 +import org.springframework.stereotype.Controller; // Spring MVC 控制器注解 +import org.springframework.web.bind.annotation.GetMapping; // HTTP GET 请求映射 +import org.springframework.web.bind.annotation.PostMapping; // HTTP POST 请求映射 +import org.springframework.web.bind.annotation.RequestMapping; // 请求路径映射 +import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理器 +import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据 + +import self.cases.teams.entity.Users; // 用户实体类 +import self.cases.teams.handle.CacheHandle; // 缓存处理类 +import self.cases.teams.service.UsersService; // 用户服务接口 +import self.cases.teams.utils.DateUtils; // 自定义日期工具类 +import self.cases.teams.utils.IDUtils; // 自定义 ID 工具类 +import self.cases.teams.msg.R; // 响应封装类 +import self.cases.teams.msg.PageData; // 分页数据封装类 + +import self.cases.teams.entity.Teams; // 社团实体类 +import self.cases.teams.service.TeamsService; // 社团服务接口 + +import java.util.List; // Java 集合类 /** * 系统请求响应控制器 - * 社团信息 + * 社团信息相关的请求处理 */ @Controller -@RequestMapping("/teams") +@RequestMapping("/teams") // 基础路径映射 public class TeamsController extends BaseController { + // 日志记录器 protected static final Logger Log = LoggerFactory.getLogger(TeamsController.class); - @Autowired + @Autowired // 自动注入缓存处理类 private CacheHandle cacheHandle; - @Autowired + @Autowired // 自动注入用户服务接口 private UsersService usersService; - @Autowired + @Autowired // 自动注入社团服务接口 private TeamsService teamsService; + /** + * 社团信息首页视图 + */ @RequestMapping("") public String index() { - return "pages/Teams"; + return "pages/Teams"; // 返回对应的视图页面 } + /** + * 根据社团 ID 获取社团信息 + */ @GetMapping("/info") - @ResponseBody + @ResponseBody // 返回 JSON 数据 public R getInfo(String id) { - Log.info("查找指定社团信息,ID:{}", id); + Log.info("查找指定社团信息,ID:{}", id); // 记录日志 - Teams teams = teamsService.getOne(id); + Teams teams = teamsService.getOne(id); // 调用服务层获取指定社团信息 - return R.successData(teams); + return R.successData(teams); // 返回成功数据 } + /** + * 获取所有社团信息 + */ @GetMapping("/all") @ResponseBody - public R getAll(){ + public R getAll() { - Log.info("获取全部的社团"); + Log.info("获取全部的社团"); // 记录日志 - List list = teamsService.getAll(); + List list = teamsService.getAll(); // 调用服务层获取所有社团信息 - return R.successData(list); + return R.successData(list); // 返回成功数据 } + /** + * 获取指定管理员相关的社团列表 + */ @GetMapping("/man") @ResponseBody - public R getListByManId(String manId){ + public R getListByManId(String manId) { - Log.info("获取指定社团管理员相关的社团列表"); + Log.info("获取指定社团管理员相关的社团列表"); // 记录日志 - List list = teamsService.getListByManId(manId); + List list = teamsService.getListByManId(manId); // 调用服务层获取指定管理员相关的社团列表 - return R.successData(list); + return R.successData(list); // 返回成功数据 } + /** + * 分页查询社团信息 + */ @GetMapping("/page") @ResponseBody - public R getPageInfos(Long pageIndex, Long pageSize, - String token, Teams teams) { + public R getPageInfos(Long pageIndex, Long pageSize, String token, Teams teams) { + // 从缓存中获取用户信息 Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); - if(user.getType() == 1){ - + // 如果用户类型为管理员,则设置社团管理员为当前用户 + if (user.getType() == 1) { teams.setManager(user.getId()); } - Log.info("分页查找社团信息,当前页码:{}," - + "每页数据量:{}, 模糊查询,附加参数:{}", pageIndex, - pageSize, teams); + Log.info("分页查找社团信息,当前页码:{},每页数据量:{}, 模糊查询,附加参数:{}", + pageIndex, pageSize, teams); // 记录日志 - PageData page = teamsService.getPageInfo(pageIndex, pageSize, teams); + PageData page = teamsService.getPageInfo(pageIndex, pageSize, teams); // 调用服务层分页查询 - return R.successData(page); + return R.successData(page); // 返回分页数据 } + /** + * 添加社团信息 + */ @PostMapping("/add") @ResponseBody public R addInfo(Teams teams) { - teams.setId(IDUtils.makeIDByCurrent()); - teams.setCreateTime(DateUtils.getNowDate("yyyy-MM-dd")); + teams.setId(IDUtils.makeIDByCurrent()); // 生成社团 ID + teams.setCreateTime(DateUtils.getNowDate("yyyy-MM-dd")); // 设置创建时间 - Log.info("添加社团信息,传入参数:{}", teams); + Log.info("添加社团信息,传入参数:{}", teams); // 记录日志 - teamsService.add(teams); + teamsService.add(teams); // 调用服务层添加社团信息 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 修改社团信息 + */ @PostMapping("/upd") @ResponseBody public R updInfo(Teams teams) { - Log.info("修改社团信息,传入参数:{}", teams); + Log.info("修改社团信息,传入参数:{}", teams); // 记录日志 - teamsService.update(teams); + teamsService.update(teams); // 调用服务层修改社团信息 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 删除社团信息 + */ @PostMapping("/del") @ResponseBody public R delInfo(String id) { - Log.info("删除社团信息, ID:{}", id); + Log.info("删除社团信息, ID:{}", id); // 记录日志 - Teams teams = teamsService.getOne(id); + Teams teams = teamsService.getOne(id); // 获取社团信息 - teamsService.delete(teams); + teamsService.delete(teams); // 调用服务层删除社团信息 - return R.success(); + return R.success(); // 返回成功响应 } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/controller/UsersController.java b/server/src/main/java/self/cases/teams/controller/UsersController.java index 81035366..6ec2c890 100644 --- a/server/src/main/java/self/cases/teams/controller/UsersController.java +++ b/server/src/main/java/self/cases/teams/controller/UsersController.java @@ -1,117 +1,134 @@ package self.cases.teams.controller; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.slf4j.Logger; // 日志工具类 +import org.slf4j.LoggerFactory; // 日志工厂类 -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖 +import org.springframework.stereotype.Controller; // Spring MVC 控制器注解 +import org.springframework.web.bind.annotation.GetMapping; // HTTP GET 请求映射 +import org.springframework.web.bind.annotation.PostMapping; // HTTP POST 请求映射 +import org.springframework.web.bind.annotation.RequestMapping; // 请求路径映射 +import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理器 +import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据 -import self.cases.teams.utils.DateUtils; -import self.cases.teams.utils.IDUtils; -import self.cases.teams.msg.R; -import self.cases.teams.msg.PageData; +import self.cases.teams.utils.DateUtils; // 自定义日期工具类 +import self.cases.teams.utils.IDUtils; // 自定义 ID 工具类 +import self.cases.teams.msg.R; // 响应封装类 +import self.cases.teams.msg.PageData; // 分页数据封装类 -import self.cases.teams.entity.Users; -import self.cases.teams.service.UsersService; +import self.cases.teams.entity.Users; // 用户实体类 +import self.cases.teams.service.UsersService; // 用户服务接口 /** * 系统请求响应控制器 - * 系统用户 + * 系统用户相关的请求处理 */ @Controller -@RequestMapping("/users") +@RequestMapping("/users") // 基础路径映射 public class UsersController extends BaseController { + // 日志记录器 protected static final Logger Log = LoggerFactory.getLogger(UsersController.class); - @Autowired + @Autowired // 自动注入 UsersService private UsersService usersService; + /** + * 用户首页视图 + */ @RequestMapping("") public String index() { - return "pages/Users"; + return "pages/Users"; // 返回对应的视图页面 } + /** + * 根据用户 ID 获取用户信息 + */ @GetMapping("/info") - @ResponseBody + @ResponseBody // 返回 JSON 数据 public R getInfo(String id) { - Log.info("查找指定系统用户,ID:{}", id); + Log.info("查找指定系统用户,ID:{}", id); // 记录日志 - Users users = usersService.getOne(id); + Users users = usersService.getOne(id); // 调用服务层获取用户信息 - return R.successData(users); + return R.successData(users); // 返回成功数据 } + /** + * 分页查询用户信息 + */ @GetMapping("/page") @ResponseBody - public R getPageInfos(Long pageIndex, Long pageSize, - Users users) { + public R getPageInfos(Long pageIndex, Long pageSize, Users users) { - Log.info("分页查找系统用户,当前页码:{}," - + "每页数据量:{}, 模糊查询,附加参数:{}", pageIndex, - pageSize, users); + Log.info("分页查找系统用户,当前页码:{},每页数据量:{}, 模糊查询,附加参数:{}", + pageIndex, pageSize, users); // 记录日志 - PageData page = usersService.getPageInfo(pageIndex, pageSize, users); + PageData page = usersService.getPageInfo(pageIndex, pageSize, users); // 调用服务层分页查询 - return R.successData(page); + return R.successData(page); // 返回分页数据 } - //注册用户 + /** + * 注册用户 + */ @PostMapping("/add") @ResponseBody public R addInfo(Users users) { + // 检查用户名是否已存在 if(usersService.getUserByUserName(users.getUserName()) == null){ - users.setId(IDUtils.makeIDByCurrent()); - users.setCreateTime(DateUtils.getNowDate()); + users.setId(IDUtils.makeIDByCurrent()); // 生成用户 ID + users.setCreateTime(DateUtils.getNowDate()); // 设置创建时间 - Log.info("添加系统用户,传入参数:{}", users); + Log.info("添加系统用户,传入参数:{}", users); // 记录日志 - usersService.add(users); + usersService.add(users); // 调用服务层添加用户 - return R.success(); - }else{ + return R.success(); // 返回成功响应 + } else { - return R.warn("用户账号已存在,请重新输入"); + return R.warn("用户账号已存在,请重新输入"); // 返回警告响应 } } - //修改系统用户 + /** + * 修改用户信息 + */ @PostMapping("/upd") @ResponseBody public R updInfo(Users users) { - Log.info("修改系统用户,传入参数:{}", users); + Log.info("修改系统用户,传入参数:{}", users); // 记录日志 - usersService.update(users); + usersService.update(users); // 调用服务层更新用户信息 - return R.success(); + return R.success(); // 返回成功响应 } + /** + * 删除用户 + */ @PostMapping("/del") @ResponseBody public R delInfo(String id) { + // 检查用户是否可以被删除 if(usersService.isRemove(id)){ - - Log.info("删除系统用户, ID:{}", id); - Users users = usersService.getOne(id); + Log.info("删除系统用户, ID:{}", id); // 记录日志 + + Users users = usersService.getOne(id); // 获取用户信息 - usersService.delete(users); + usersService.delete(users); // 调用服务层删除用户 - return R.success(); - }else{ + return R.success(); // 返回成功响应 + } else { - return R.warn("用户存在关联社团,无法移除"); + return R.warn("用户存在关联社团,无法移除"); // 返回警告响应 } } -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/ActiveLogs.java b/server/src/main/java/self/cases/teams/entity/ActiveLogs.java index 9b35dec3..71733073 100644 --- a/server/src/main/java/self/cases/teams/entity/ActiveLogs.java +++ b/server/src/main/java/self/cases/teams/entity/ActiveLogs.java @@ -1,97 +1,91 @@ package self.cases.teams.entity; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 表注解 -import java.io.Serializable; +import java.io.Serializable; // 引入序列化接口 /** * 数据实体类 * 报名记录 */ -@TableName(value = "active_logs") -public class ActiveLogs implements Serializable { +@TableName(value = "active_logs") // 设置对应的数据库表名 +public class ActiveLogs implements Serializable { // 实现 Serializable 接口以便序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 定义序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 设置主键字段名 + private String id; // 主键字段 - /** + /** * 报名时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 设置字段名 + private String createTime; // 报名时间字段 - /** + /** * 活动编号 */ - @TableField(value = "active_id") - private String activeId; + @TableField(value = "active_id") // 设置字段名 + private String activeId; // 活动编号字段 - /** + /** * 报名用户 */ - @TableField(value = "user_id") - private String userId; + @TableField(value = "user_id") // 设置字段名 + private String userId; // 用户 ID 字段 - + // Getter 方法,用于获取 id public String getId(){ - return id; } + // Setter 方法,用于设置 id public void setId(String id){ - this.id = id; } - + // Getter 方法,用于获取 createTime public String getCreateTime(){ - return createTime; } + // Setter 方法,用于设置 createTime public void setCreateTime(String createTime){ - this.createTime = createTime; } - + // Getter 方法,用于获取 activeId public String getActiveId(){ - return activeId; } + // Setter 方法,用于设置 activeId public void setActiveId(String activeId){ - this.activeId = activeId; } - + // Getter 方法,用于获取 userId public String getUserId(){ - return userId; } + // Setter 方法,用于设置 userId public void setUserId(String userId){ - this.userId = userId; } - + // 重写 toString 方法,便于打印对象信息 @Override public String toString() { - - return "ActiveLogs [id=" + id + return "ActiveLogs [id=" + id + ", createTime=" + createTime + ", activeId=" + activeId + ", userId=" + userId - + "]"; + + "]"; // 返回对象属性的字符串表示 } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/Activities.java b/server/src/main/java/self/cases/teams/entity/Activities.java index b9631b2d..a034dc85 100644 --- a/server/src/main/java/self/cases/teams/entity/Activities.java +++ b/server/src/main/java/self/cases/teams/entity/Activities.java @@ -1,161 +1,152 @@ package self.cases.teams.entity; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 表注解 -import java.io.Serializable; +import java.io.Serializable; // 引入序列化接口 /** * 数据实体类 * 活动信息 */ -@TableName(value = "activities") -public class Activities implements Serializable { +@TableName(value = "activities") // 设置对应的数据库表名 +public class Activities implements Serializable { // 实现 Serializable 接口以便序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 定义序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 设置主键字段名 + private String id; // 主键字段 - /** + /** * 活动名称 */ - @TableField(value = "name") - private String name; + @TableField(value = "name") // 设置字段名 + private String name; // 活动名称字段 - /** + /** * 活动概述 */ - @TableField(value = "comm") - private String comm; + @TableField(value = "comm") // 设置字段名 + private String comm; // 活动概述字段 - /** + /** * 活动详情 */ - @TableField(value = "detail") - private String detail; + @TableField(value = "detail") // 设置字段名 + private String detail; // 活动详情字段 - /** + /** * 活动要求 */ - @TableField(value = "ask") - private String ask; + @TableField(value = "ask") // 设置字段名 + private String ask; // 活动要求字段 - /** + /** * 报名人数 */ - @TableField(value = "total") - private Integer total; + @TableField(value = "total") // 设置字段名 + private Integer total; // 报名人数字段 - /** + /** * 活动时间 */ - @TableField(value = "active_time") - private String activeTime; + @TableField(value = "active_time") // 设置字段名 + private String activeTime; // 活动时间字段 - /** + /** * 发布社团 */ - @TableField(value = "team_id") - private String teamId; + @TableField(value = "team_id") // 设置字段名 + private String teamId; // 社团 ID 字段 - + // Getter 方法,用于获取 id public String getId(){ - return id; } + // Setter 方法,用于设置 id public void setId(String id){ - this.id = id; } - + // Getter 方法,用于获取 name public String getName(){ - return name; } + // Setter 方法,用于设置 name public void setName(String name){ - this.name = name; } - + // Getter 方法,用于获取 comm public String getComm(){ - return comm; } + // Setter 方法,用于设置 comm public void setComm(String comm){ - this.comm = comm; } - + // Getter 方法,用于获取 detail public String getDetail(){ - return detail; } + // Setter 方法,用于设置 detail public void setDetail(String detail){ - this.detail = detail; } - + // Getter 方法,用于获取 ask public String getAsk(){ - return ask; } + // Setter 方法,用于设置 ask public void setAsk(String ask){ - this.ask = ask; } - + // Getter 方法,用于获取 total public Integer getTotal(){ - return total; } + // Setter 方法,用于设置 total public void setTotal(Integer total){ - this.total = total; } - + // Getter 方法,用于获取 activeTime public String getActiveTime(){ - return activeTime; } + // Setter 方法,用于设置 activeTime public void setActiveTime(String activeTime){ - this.activeTime = activeTime; } - + // Getter 方法,用于获取 teamId public String getTeamId(){ - return teamId; } + // Setter 方法,用于设置 teamId public void setTeamId(String teamId){ - this.teamId = teamId; } - + // 重写 toString 方法,便于打印对象信息 @Override public String toString() { - - return "Activities [id=" + id + return "Activities [id=" + id + ", name=" + name + ", comm=" + comm + ", detail=" + detail @@ -163,7 +154,6 @@ public class Activities implements Serializable { + ", total=" + total + ", activeTime=" + activeTime + ", teamId=" + teamId - + "]"; + + "]"; // 返回对象属性的字符串表示 } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/ApplyLogs.java b/server/src/main/java/self/cases/teams/entity/ApplyLogs.java index 1bdeaf59..029f2596 100644 --- a/server/src/main/java/self/cases/teams/entity/ApplyLogs.java +++ b/server/src/main/java/self/cases/teams/entity/ApplyLogs.java @@ -1,115 +1,108 @@ package self.cases.teams.entity; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 表注解 -import java.io.Serializable; +import java.io.Serializable; // 引入序列化接口 /** * 数据实体类 * 申请记录 */ -@TableName(value = "apply_logs") -public class ApplyLogs implements Serializable { +@TableName(value = "apply_logs") // 设置对应的数据库表名 +public class ApplyLogs implements Serializable { // 实现 Serializable 接口以便序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 定义序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 设置主键字段名 + private String id; // 主键字段 - /** + /** * 处理状态 */ - @TableField(value = "status") - private Integer status; + @TableField(value = "status") // 设置字段名 + private Integer status; // 状态字段(整数类型) - /** + /** * 申请时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 设置字段名 + private String createTime; // 申请时间字段 - /** + /** * 申请社团 */ - @TableField(value = "team_id") - private String teamId; + @TableField(value = "team_id") // 设置字段名 + private String teamId; // 社团 ID 字段 - /** + /** * 申请用户 */ - @TableField(value = "user_id") - private String userId; + @TableField(value = "user_id") // 设置字段名 + private String userId; // 用户 ID 字段 - + // Getter 方法,用于获取 id public String getId(){ - return id; } + // Setter 方法,用于设置 id public void setId(String id){ - this.id = id; } - + // Getter 方法,用于获取 status public Integer getStatus(){ - return status; } + // Setter 方法,用于设置 status public void setStatus(Integer status){ - this.status = status; } - + // Getter 方法,用于获取 createTime public String getCreateTime(){ - return createTime; } + // Setter 方法,用于设置 createTime public void setCreateTime(String createTime){ - this.createTime = createTime; } - + // Getter 方法,用于获取 teamId public String getTeamId(){ - return teamId; } + // Setter 方法,用于设置 teamId public void setTeamId(String teamId){ - this.teamId = teamId; } - + // Getter 方法,用于获取 userId public String getUserId(){ - return userId; } + // Setter 方法,用于设置 userId public void setUserId(String userId){ - this.userId = userId; } - + // 重写 toString 方法,便于打印对象信息 @Override public String toString() { - - return "ApplyLogs [id=" + id + return "ApplyLogs [id=" + id + ", status=" + status + ", createTime=" + createTime + ", teamId=" + teamId + ", userId=" + userId - + "]"; + + "]"; // 返回对象属性的字符串表示 } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/Clubshenqing.java b/server/src/main/java/self/cases/teams/entity/Clubshenqing.java index 43e66206..0f837a6c 100644 --- a/server/src/main/java/self/cases/teams/entity/Clubshenqing.java +++ b/server/src/main/java/self/cases/teams/entity/Clubshenqing.java @@ -1,135 +1,133 @@ -package self.cases.teams.entity; - - -import java.util.Date; - -public class Clubshenqing { - private String id; - private String clubName; - private String activityName; - private String description; - private Date startDate; - private Date endDate; - private String location; - private int maxParticipants; - private String contactPerson; - private String contactEmail; - private String contactPhone; - private boolean approved; - private Date createdAt; - private Date updatedAt; - - // Getters and Setters - public String getId() { +package self.cases.teams.entity; // 定义包路径 + +import java.util.Date; // 导入日期类 + +public class Clubshenqing { // 定义实体类 Clubshenqing + private String id; // 唯一标识符 + private String clubName; // 社团名称 + private String activityName; // 活动名称 + private String description; // 活动描述 + private Date startDate; // 活动开始日期 + private Date endDate; // 活动结束日期 + private String location; // 活动地点 + private int maxParticipants; // 最大参与人数 + private String contactPerson; // 联系人姓名 + private String contactEmail; // 联系人邮箱 + private String contactPhone; // 联系人电话 + private boolean approved; // 是否已批准 + private Date createdAt; // 创建时间 + private Date updatedAt; // 更新时间 + + // Getter 和 Setter 方法 + public String getId() { // 获取 id return id; } - public void setId(String id) { + public void setId(String id) { // 设置 id this.id = id; } - public String getClubName() { + public String getClubName() { // 获取社团名称 return clubName; } - public void setClubName(String clubName) { + public void setClubName(String clubName) { // 设置社团名称 this.clubName = clubName; } - public String getActivityName() { + public String getActivityName() { // 获取活动名称 return activityName; } - public void setActivityName(String activityName) { + public void setActivityName(String activityName) { // 设置活动名称 this.activityName = activityName; } - public String getDescription() { + public String getDescription() { // 获取活动描述 return description; } - public void setDescription(String description) { + public void setDescription(String description) { // 设置活动描述 this.description = description; } - public Date getStartDate() { + public Date getStartDate() { // 获取活动开始日期 return startDate; } - public void setStartDate(Date startDate) { + public void setStartDate(Date startDate) { // 设置活动开始日期 this.startDate = startDate; } - public Date getEndDate() { + public Date getEndDate() { // 获取活动结束日期 return endDate; } - public void setEndDate(Date endDate) { + public void setEndDate(Date endDate) { // 设置活动结束日期 this.endDate = endDate; } - public String getLocation() { + public String getLocation() { // 获取活动地点 return location; } - public void setLocation(String location) { + public void setLocation(String location) { // 设置活动地点 this.location = location; } - public int getMaxParticipants() { + public int getMaxParticipants() { // 获取最大参与人数 return maxParticipants; } - public void setMaxParticipants(int maxParticipants) { + public void setMaxParticipants(int maxParticipants) { // 设置最大参与人数 this.maxParticipants = maxParticipants; } - public String getContactPerson() { + public String getContactPerson() { // 获取联系人姓名 return contactPerson; } - public void setContactPerson(String contactPerson) { + public void setContactPerson(String contactPerson) { // 设置联系人姓名 this.contactPerson = contactPerson; } - public String getContactEmail() { + public String getContactEmail() { // 获取联系人邮箱 return contactEmail; } - public void setContactEmail(String contactEmail) { + public void setContactEmail(String contactEmail) { // 设置联系人邮箱 this.contactEmail = contactEmail; } - public String getContactPhone() { + public String getContactPhone() { // 获取联系人电话 return contactPhone; } - public void setContactPhone(String contactPhone) { + public void setContactPhone(String contactPhone) { // 设置联系人电话 this.contactPhone = contactPhone; } - public boolean isApproved() { + public boolean isApproved() { // 获取是否已批准 return approved; } - public void setApproved(boolean approved) { + public void setApproved(boolean approved) { // 设置是否已批准 this.approved = approved; } - public Date getCreatedAt() { + public Date getCreatedAt() { // 获取创建时间 return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(Date createdAt) { // 设置创建时间 this.createdAt = createdAt; } - public Date getUpdatedAt() { + public Date getUpdatedAt() { // 获取更新时间 return updatedAt; } - public void setUpdatedAt(Date updatedAt) { + public void setUpdatedAt(Date updatedAt) { // 设置更新时间 this.updatedAt = updatedAt; } } - diff --git a/server/src/main/java/self/cases/teams/entity/Members.java b/server/src/main/java/self/cases/teams/entity/Members.java index 4dcb4b3c..ee063f88 100644 --- a/server/src/main/java/self/cases/teams/entity/Members.java +++ b/server/src/main/java/self/cases/teams/entity/Members.java @@ -1,97 +1,84 @@ -package self.cases.teams.entity; +package self.cases.teams.entity; // 定义包路径 -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 的字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 的主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 的表名注解 +import java.io.Serializable; // 引入序列化接口 /** * 数据实体类 * 成员信息 */ -@TableName(value = "members") -public class Members implements Serializable { +@TableName(value = "members") // 表名映射为 members +public class Members implements Serializable { // 实现 Serializable 接口,支持序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 主键字段映射到数据库中的 id 列 + private String id; // 成员的唯一标识符 - /** + /** * 入团时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 字段映射到数据库中的 create_time 列 + private String createTime; // 成员加入的时间 - /** + /** * 加入社团 */ - @TableField(value = "team_id") - private String teamId; + @TableField(value = "team_id") // 字段映射到数据库中的 team_id 列 + private String teamId; // 成员所属社团的唯一标识符 - /** + /** * 申请用户 */ - @TableField(value = "user_id") - private String userId; - - - public String getId(){ + @TableField(value = "user_id") // 字段映射到数据库中的 user_id 列 + private String userId; // 申请成员的用户唯一标识符 + // Getter 和 Setter 方法 + public String getId(){ // 获取成员 ID return id; } - public void setId(String id){ - + public void setId(String id){ // 设置成员 ID this.id = id; } - - public String getCreateTime(){ - + public String getCreateTime(){ // 获取入团时间 return createTime; } - public void setCreateTime(String createTime){ - + public void setCreateTime(String createTime){ // 设置入团时间 this.createTime = createTime; } - - public String getTeamId(){ - + public String getTeamId(){ // 获取社团 ID return teamId; } - public void setTeamId(String teamId){ - + public void setTeamId(String teamId){ // 设置社团 ID this.teamId = teamId; } - - public String getUserId(){ - + public String getUserId(){ // 获取用户 ID return userId; } - public void setUserId(String userId){ - + public void setUserId(String userId){ // 设置用户 ID this.userId = userId; } - + // 自定义 toString 方法 @Override public String toString() { - return "Members [id=" + id + return "Members [id=" + id // 返回成员的基本信息 + ", createTime=" + createTime + ", teamId=" + teamId + ", userId=" + userId + "]"; } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/Notices.java b/server/src/main/java/self/cases/teams/entity/Notices.java index e4a081c8..dda3a228 100644 --- a/server/src/main/java/self/cases/teams/entity/Notices.java +++ b/server/src/main/java/self/cases/teams/entity/Notices.java @@ -1,115 +1,99 @@ -package self.cases.teams.entity; +package self.cases.teams.entity; // 定义包路径 -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 的字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 的主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 的表名注解 +import java.io.Serializable; // 引入序列化接口 /** * 数据实体类 * 通知记录 */ -@TableName(value = "notices") -public class Notices implements Serializable { +@TableName(value = "notices") // 表名映射为 notices +public class Notices implements Serializable { // 实现 Serializable 接口,支持序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 主键字段映射到数据库中的 id 列 + private String id; // 通知的唯一标识符 - /** + /** * 通知标题 */ - @TableField(value = "title") - private String title; + @TableField(value = "title") // 字段映射到数据库中的 title 列 + private String title; // 通知的标题内容 - /** + /** * 通知详情 */ - @TableField(value = "detail") - private String detail; + @TableField(value = "detail") // 字段映射到数据库中的 detail 列 + private String detail; // 通知的具体内容 - /** + /** * 发布时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 字段映射到数据库中的 create_time 列 + private String createTime; // 通知发布时间 - /** + /** * 发布社团 */ - @TableField(value = "team_id") - private String teamId; - - - public String getId(){ + @TableField(value = "team_id") // 字段映射到数据库中的 team_id 列 + private String teamId; // 通知所属社团的唯一标识符 + // Getter 和 Setter 方法 + public String getId(){ // 获取通知 ID return id; } - public void setId(String id){ - + public void setId(String id){ // 设置通知 ID this.id = id; } - - public String getTitle(){ - + public String getTitle(){ // 获取通知标题 return title; } - public void setTitle(String title){ - + public void setTitle(String title){ // 设置通知标题 this.title = title; } - - public String getDetail(){ - + public String getDetail(){ // 获取通知详情 return detail; } - public void setDetail(String detail){ - + public void setDetail(String detail){ // 设置通知详情 this.detail = detail; } - - public String getCreateTime(){ - + public String getCreateTime(){ // 获取发布时间 return createTime; } - public void setCreateTime(String createTime){ - + public void setCreateTime(String createTime){ // 设置发布时间 this.createTime = createTime; } - - public String getTeamId(){ - + public String getTeamId(){ // 获取发布社团 ID return teamId; } - public void setTeamId(String teamId){ - + public void setTeamId(String teamId){ // 设置发布社团 ID this.teamId = teamId; } - + // 自定义 toString 方法 @Override public String toString() { - return "Notices [id=" + id + return "Notices [id=" + id // 返回通知的基本信息 + ", title=" + title + ", detail=" + detail + ", createTime=" + createTime + ", teamId=" + teamId + "]"; } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/PayLogs.java b/server/src/main/java/self/cases/teams/entity/PayLogs.java index ea50a606..635ac8bf 100644 --- a/server/src/main/java/self/cases/teams/entity/PayLogs.java +++ b/server/src/main/java/self/cases/teams/entity/PayLogs.java @@ -1,115 +1,99 @@ -package self.cases.teams.entity; +package self.cases.teams.entity; // 定义包路径 -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 的字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 的主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 的表名注解 +import java.io.Serializable; // 引入序列化接口 /** * 数据实体类 * 缴费记录 */ -@TableName(value = "pay_logs") -public class PayLogs implements Serializable { +@TableName(value = "pay_logs") // 表名映射为 pay_logs +public class PayLogs implements Serializable { // 实现 Serializable 接口,支持序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 主键字段映射到数据库中的 id 列 + private String id; // 缴费记录的唯一标识符 - /** + /** * 缴费时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 字段映射到数据库中的 create_time 列 + private String createTime; // 缴费发生的日期时间 - /** + /** * 缴纳费用 */ - @TableField(value = "total") - private Double total; + @TableField(value = "total") // 字段映射到数据库中的 total 列 + private Double total; // 缴纳的总金额 - /** + /** * 收费社团 */ - @TableField(value = "team_id") - private String teamId; + @TableField(value = "team_id") // 字段映射到数据库中的 team_id 列 + private String teamId; // 缴费对应的社团唯一标识符 - /** + /** * 缴费用户 */ - @TableField(value = "user_id") - private String userId; - - - public String getId(){ + @TableField(value = "user_id") // 字段映射到数据库中的 user_id 列 + private String userId; // 缴费用户的唯一标识符 + // Getter 和 Setter 方法 + public String getId(){ // 获取缴费记录 ID return id; } - public void setId(String id){ - + public void setId(String id){ // 设置缴费记录 ID this.id = id; } - - public String getCreateTime(){ - + public String getCreateTime(){ // 获取缴费时间 return createTime; } - public void setCreateTime(String createTime){ - + public void setCreateTime(String createTime){ // 设置缴费时间 this.createTime = createTime; } - - public Double getTotal(){ - + public Double getTotal(){ // 获取缴纳费用 return total; } - public void setTotal(Double total){ - + public void setTotal(Double total){ // 设置缴纳费用 this.total = total; } - - public String getTeamId(){ - + public String getTeamId(){ // 获取收费社团 ID return teamId; } - public void setTeamId(String teamId){ - + public void setTeamId(String teamId){ // 设置收费社团 ID this.teamId = teamId; } - - public String getUserId(){ - + public String getUserId(){ // 获取缴费用户 ID return userId; } - public void setUserId(String userId){ - + public void setUserId(String userId){ // 设置缴费用户 ID this.userId = userId; } - + // 自定义 toString 方法 @Override public String toString() { - return "PayLogs [id=" + id + return "PayLogs [id=" + id // 返回缴费记录的基本信息 + ", createTime=" + createTime + ", total=" + total + ", teamId=" + teamId + ", userId=" + userId + "]"; } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/STjiao.java b/server/src/main/java/self/cases/teams/entity/STjiao.java index 100dd5a1..70995eb9 100644 --- a/server/src/main/java/self/cases/teams/entity/STjiao.java +++ b/server/src/main/java/self/cases/teams/entity/STjiao.java @@ -1,97 +1,99 @@ -package self.cases.teams.entity; +package self.cases.teams.entity;// 定义包路径 import java.util.Date; +// 定义实体类 STjiao,表示社团缴费相关信息 public class STjiao { - private String id; - private String clubName; - private String memberName; - private double amount; - private Date paymentDate; - private String paymentMethod; - private String transactionId; - private boolean isPaid; - private Date createdAt; - private Date updatedAt; - - // Getters and Setters - public String getId() { + + private String id; // 社团缴费记录的唯一标识符 + private String clubName; // 社团名称 + private String memberName; // 缴费成员姓名 + private double amount; // 缴费金额 + private Date paymentDate; // 缴费日期 + private String paymentMethod; // 缴费方式 + private String transactionId; // 交易流水号 + private boolean isPaid; // 是否已支付(布尔值) + private Date createdAt; // 记录创建时间 + private Date updatedAt; // 记录最后更新时间 + + // Getter 和 Setter 方法 + public String getId() { // 获取缴费记录 ID return id; } - public void setId(String id) { + public void setId(String id) { // 设置缴费记录 ID this.id = id; } - public String getClubName() { + public String getClubName() { // 获取社团名称 return clubName; } - public void setClubName(String clubName) { + public void setClubName(String clubName) { // 设置社团名称 this.clubName = clubName; } - public String getMemberName() { + public String getMemberName() { // 获取成员姓名 return memberName; } - public void setMemberName(String memberName) { + public void setMemberName(String memberName) { // 设置成员姓名 this.memberName = memberName; } - public double getAmount() { + public double getAmount() { // 获取缴费金额 return amount; } - public void setAmount(double amount) { + public void setAmount(double amount) { // 设置缴费金额 this.amount = amount; } - public Date getPaymentDate() { + public Date getPaymentDate() { // 获取缴费日期 return paymentDate; } - public void setPaymentDate(Date paymentDate) { + public void setPaymentDate(Date paymentDate) { // 设置缴费日期 this.paymentDate = paymentDate; } - public String getPaymentMethod() { + public String getPaymentMethod() { // 获取缴费方式 return paymentMethod; } - public void setPaymentMethod(String paymentMethod) { + public void setPaymentMethod(String paymentMethod) { // 设置缴费方式 this.paymentMethod = paymentMethod; } - public String getTransactionId() { + public String getTransactionId() { // 获取交易流水号 return transactionId; } - public void setTransactionId(String transactionId) { + public void setTransactionId(String transactionId) { // 设置交易流水号 this.transactionId = transactionId; } - public boolean isPaid() { + public boolean isPaid() { // 获取是否已支付状态 return isPaid; } - public void setPaid(boolean paid) { + public void setPaid(boolean paid) { // 设置是否已支付状态 isPaid = paid; } - public Date getCreatedAt() { + public Date getCreatedAt() { // 获取记录创建时间 return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(Date createdAt) { // 设置记录创建时间 this.createdAt = createdAt; } - public Date getUpdatedAt() { + public Date getUpdatedAt() { // 获取记录最后更新时间 return updatedAt; } - public void setUpdatedAt(Date updatedAt) { + public void setUpdatedAt(Date updatedAt) { // 设置记录最后更新时间 this.updatedAt = updatedAt; } } diff --git a/server/src/main/java/self/cases/teams/entity/TeamTypes.java b/server/src/main/java/self/cases/teams/entity/TeamTypes.java index 88f99392..ca04f768 100644 --- a/server/src/main/java/self/cases/teams/entity/TeamTypes.java +++ b/server/src/main/java/self/cases/teams/entity/TeamTypes.java @@ -1,79 +1,87 @@ -package self.cases.teams.entity; +package self.cases.teams.entity; // 定义包路径 -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 的 TableField 注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 的 TableId 注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 的 TableName 注解 +import java.io.Serializable; // 引入 Serializable 接口,用于序列化 /** * 数据实体类 * 社团类型 */ -@TableName(value = "team_types") -public class TeamTypes implements Serializable { +@TableName(value = "team_types") // 指定数据库表名为 "team_types" +public class TeamTypes implements Serializable { // 实现 Serializable 接口,支持序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 定义序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 表明该字段为主键,对应的数据库字段名为 "id" + private String id; // 社团类型的唯一标识符 - /** + /** * 类型名称 */ - @TableField(value = "name") - private String name; + @TableField(value = "name") // 对应数据库字段名为 "name" + private String name; // 社团类型的名称 - /** + /** * 创建时间 */ - @TableField(value = "create_time") - private String createTime; - - - public String getId(){ + @TableField(value = "create_time") // 对应数据库字段名为 "create_time" + private String createTime; // 社团类型的创建时间 - return id; + /** + * Getter 方法:获取记录ID + */ + public String getId() { + return id; // 返回社团类型的记录ID } - public void setId(String id){ - - this.id = id; + /** + * Setter 方法:设置记录ID + */ + public void setId(String id) { + this.id = id; // 设置社团类型的记录ID } - - public String getName(){ - - return name; + /** + * Getter 方法:获取类型名称 + */ + public String getName() { + return name; // 返回社团类型的名称 } - public void setName(String name){ - - this.name = name; + /** + * Setter 方法:设置类型名称 + */ + public void setName(String name) { + this.name = name; // 设置社团类型的名称 } - - public String getCreateTime(){ - - return createTime; + /** + * Getter 方法:获取创建时间 + */ + public String getCreateTime() { + return createTime; // 返回社团类型的创建时间 } - public void setCreateTime(String createTime){ - - this.createTime = createTime; + /** + * Setter 方法:设置创建时间 + */ + public void setCreateTime(String createTime) { + this.createTime = createTime; // 设置社团类型的创建时间 } - + /** + * 覆写 toString 方法,便于打印对象信息 + */ @Override public String toString() { - - return "TeamTypes [id=" + id - + ", name=" + name - + ", createTime=" + createTime - + "]"; + return "TeamTypes [id=" + id // 打印社团类型的记录ID + + ", name=" + name // 打印社团类型的名称 + + ", createTime=" + createTime // 打印创建时间 + + "]"; // 打印结束 } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/Teams.java b/server/src/main/java/self/cases/teams/entity/Teams.java index bd35ca96..3b5b435d 100644 --- a/server/src/main/java/self/cases/teams/entity/Teams.java +++ b/server/src/main/java/self/cases/teams/entity/Teams.java @@ -1,133 +1,150 @@ -package self.cases.teams.entity; +package self.cases.teams.entity; // 定义包路径 -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 的 TableField 注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 的 TableId 注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 的 TableName 注解 +import java.io.Serializable; // 引入 Serializable 接口,用于序列化 /** * 数据实体类 * 社团信息 */ -@TableName(value = "teams") -public class Teams implements Serializable { +@TableName(value = "teams") // 指定数据库表名为 "teams" +public class Teams implements Serializable { // 实现 Serializable 接口,支持序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 定义序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 表明该字段为主键,对应的数据库字段名为 "id" + private String id; // 社团记录的唯一标识符 - /** + /** * 社团名称 */ - @TableField(value = "name") - private String name; + @TableField(value = "name") // 对应数据库字段名为 "name" + private String name; // 社团的名称 - /** + /** * 建立时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 对应数据库字段名为 "create_time" + private String createTime; // 社团的建立时间 - /** + /** * 社团人数 */ - @TableField(value = "total") - private Integer total; + @TableField(value = "total") // 对应数据库字段名为 "total" + private Integer total; // 社团的总人数 - /** + /** * 社团团长 */ - @TableField(value = "manager") - private String manager; + @TableField(value = "manager") // 对应数据库字段名为 "manager" + private String manager; // 社团团长的名字 - /** + /** * 社团编号 */ - @TableField(value = "type_id") - private String typeId; - - - public String getId(){ + @TableField(value = "type_id") // 对应数据库字段名为 "type_id" + private String typeId; // 社团的编号 + /** + * Getter 方法:获取记录ID + */ + public String getId() { return id; } - public void setId(String id){ - + /** + * Setter 方法:设置记录ID + */ + public void setId(String id) { this.id = id; } - - public String getName(){ - + /** + * Getter 方法:获取社团名称 + */ + public String getName() { return name; } - public void setName(String name){ - + /** + * Setter 方法:设置社团名称 + */ + public void setName(String name) { this.name = name; } - - public String getCreateTime(){ - + /** + * Getter 方法:获取建立时间 + */ + public String getCreateTime() { return createTime; } - public void setCreateTime(String createTime){ - + /** + * Setter 方法:设置建立时间 + */ + public void setCreateTime(String createTime) { this.createTime = createTime; } - - public Integer getTotal(){ - + /** + * Getter 方法:获取社团人数 + */ + public Integer getTotal() { return total; } - public void setTotal(Integer total){ - + /** + * Setter 方法:设置社团人数 + */ + public void setTotal(Integer total) { this.total = total; } - - public String getManager(){ - + /** + * Getter 方法:获取社团团长 + */ + public String getManager() { return manager; } - public void setManager(String manager){ - + /** + * Setter 方法:设置社团团长 + */ + public void setManager(String manager) { this.manager = manager; } - - public String getTypeId(){ - + /** + * Getter 方法:获取社团编号 + */ + public String getTypeId() { return typeId; } - public void setTypeId(String typeId){ - + /** + * Setter 方法:设置社团编号 + */ + public void setTypeId(String typeId) { this.typeId = typeId; } - + /** + * 覆写 toString 方法,便于打印对象信息 + */ @Override public String toString() { - - return "Teams [id=" + id - + ", name=" + name - + ", createTime=" + createTime - + ", total=" + total - + ", manager=" + manager - + ", typeId=" + typeId + return "Teams [id=" + id // 打印社团记录ID + + ", name=" + name // 打印社团名称 + + ", createTime=" + createTime // 打印建立时间 + + ", total=" + total // 打印社团人数 + + ", manager=" + manager // 打印社团团长 + + ", typeId=" + typeId // 打印社团编号 + "]"; } - -} \ No newline at end of file +} diff --git a/server/src/main/java/self/cases/teams/entity/Users.java b/server/src/main/java/self/cases/teams/entity/Users.java index 55abd236..f61f477d 100644 --- a/server/src/main/java/self/cases/teams/entity/Users.java +++ b/server/src/main/java/self/cases/teams/entity/Users.java @@ -1,223 +1,255 @@ -package self.cases.teams.entity; +package self.cases.teams.entity; // 定义包路径 -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.TableField; // 引入 MyBatis-Plus 的 TableField 注解 +import com.baomidou.mybatisplus.annotation.TableId; // 引入 MyBatis-Plus 的 TableId 注解 +import com.baomidou.mybatisplus.annotation.TableName; // 引入 MyBatis-Plus 的 TableName 注解 +import java.io.Serializable; // 引入 Serializable 接口,用于序列化 /** * 数据实体类 * 系统用户 */ -@TableName(value = "users") -public class Users implements Serializable { +@TableName(value = "users") // 指定数据库表名为 "users" +public class Users implements Serializable { // 实现 Serializable 接口,支持序列化 - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // 定义序列化版本号 /** * 记录ID */ - @TableId(value = "id") - private String id; + @TableId(value = "id") // 表明该字段为主键,对应的数据库字段名为 "id" + private String id; // 用户的唯一标识符 - /** + /** * 用户账号 */ - @TableField(value = "user_name") - private String userName; + @TableField(value = "user_name") // 对应数据库字段名为 "user_name" + private String userName; // 用户登录时使用的账号 - /** + /** * 用户密码 */ - @TableField(value = "pass_word") - private String passWord; + @TableField(value = "pass_word") // 对应数据库字段名为 "pass_word" + private String passWord; // 用户的密码(注意:实际应用中应加密存储) - /** + /** * 用户姓名 */ - @TableField(value = "name") - private String name; + @TableField(value = "name") // 对应数据库字段名为 "name" + private String name; // 用户的真实姓名 - /** + /** * 用户性别 */ - @TableField(value = "gender") - private String gender; + @TableField(value = "gender") // 对应数据库字段名为 "gender" + private String gender; // 用户的性别,通常为 "男" 或 "女" - /** + /** * 用户年龄 */ - @TableField(value = "age") - private Integer age; + @TableField(value = "age") // 对应数据库字段名为 "age" + private Integer age; // 用户的年龄 - /** + /** * 联系电话 */ - @TableField(value = "phone") - private String phone; + @TableField(value = "phone") // 对应数据库字段名为 "phone" + private String phone; // 用户的联系电话 - /** + /** * 联系地址 */ - @TableField(value = "address") - private String address; + @TableField(value = "address") // 对应数据库字段名为 "address" + private String address; // 用户的联系地址 - /** + /** * 信息状态 */ - @TableField(value = "status") - private Integer status; + @TableField(value = "status") // 对应数据库字段名为 "status" + private Integer status; // 用户信息的状态,例如启用、禁用等 - /** + /** * 添加时间 */ - @TableField(value = "create_time") - private String createTime; + @TableField(value = "create_time") // 对应数据库字段名为 "create_time" + private String createTime; // 用户信息的添加时间 - /** + /** * 用户身份 */ - @TableField(value = "type") - private Integer type; - - - public String getId(){ + @TableField(value = "type") // 对应数据库字段名为 "type" + private Integer type; // 用户的身份类型,例如管理员、普通用户等 - return id; + /** + * Getter 方法:获取记录ID + */ + public String getId() { + return id; // 返回用户的唯一标识符 } - public void setId(String id){ - - this.id = id; + /** + * Setter 方法:设置记录ID + */ + public void setId(String id) { + this.id = id; // 设置用户的唯一标识符 } - - public String getUserName(){ - - return userName; + /** + * Getter 方法:获取用户账号 + */ + public String getUserName() { + return userName; // 返回用户的登录账号 } - public void setUserName(String userName){ - - this.userName = userName; + /** + * Setter 方法:设置用户账号 + */ + public void setUserName(String userName) { + this.userName = userName; // 设置用户的登录账号 } - - public String getPassWord(){ - - return passWord; + /** + * Getter 方法:获取用户密码 + */ + public String getPassWord() { + return passWord; // 返回用户的密码 } - public void setPassWord(String passWord){ - - this.passWord = passWord; + /** + * Setter 方法:设置用户密码 + */ + public void setPassWord(String passWord) { + this.passWord = passWord; // 设置用户的密码 } - - public String getName(){ - - return name; + /** + * Getter 方法:获取用户姓名 + */ + public String getName() { + return name; // 返回用户的真实姓名 } - public void setName(String name){ - - this.name = name; + /** + * Setter 方法:设置用户姓名 + */ + public void setName(String name) { + this.name = name; // 设置用户的真实姓名 } - - public String getGender(){ - - return gender; + /** + * Getter 方法:获取用户性别 + */ + public String getGender() { + return gender; // 返回用户的性别 } - public void setGender(String gender){ - - this.gender = gender; + /** + * Setter 方法:设置用户性别 + */ + public void setGender(String gender) { + this.gender = gender; // 设置用户的性别 } - - public Integer getAge(){ - - return age; + /** + * Getter 方法:获取用户年龄 + */ + public Integer getAge() { + return age; // 返回用户的年龄 } - public void setAge(Integer age){ - - this.age = age; + /** + * Setter 方法:设置用户年龄 + */ + public void setAge(Integer age) { + this.age = age; // 设置用户的年龄 } - - public String getPhone(){ - - return phone; + /** + * Getter 方法:获取联系电话 + */ + public String getPhone() { + return phone; // 返回用户的联系电话 } - public void setPhone(String phone){ - - this.phone = phone; + /** + * Setter 方法:设置联系电话 + */ + public void setPhone(String phone) { + this.phone = phone; // 设置用户的联系电话 } - - public String getAddress(){ - - return address; + /** + * Getter 方法:获取联系地址 + */ + public String getAddress() { + return address; // 返回用户的联系地址 } - public void setAddress(String address){ - - this.address = address; + /** + * Setter 方法:设置联系地址 + */ + public void setAddress(String address) { + this.address = address; // 设置用户的联系地址 } - - public Integer getStatus(){ - - return status; + /** + * Getter 方法:获取信息状态 + */ + public Integer getStatus() { + return status; // 返回用户信息的状态 } - public void setStatus(Integer status){ - - this.status = status; + /** + * Setter 方法:设置信息状态 + */ + public void setStatus(Integer status) { + this.status = status; // 设置用户信息的状态 } - - public String getCreateTime(){ - - return createTime; + /** + * Getter 方法:获取添加时间 + */ + public String getCreateTime() { + return createTime; // 返回用户信息的添加时间 } - public void setCreateTime(String createTime){ - - this.createTime = createTime; + /** + * Setter 方法:设置添加时间 + */ + public void setCreateTime(String createTime) { + this.createTime = createTime; // 设置用户信息的添加时间 } - - public Integer getType(){ - - return type; + /** + * Getter 方法:获取用户身份 + */ + public Integer getType() { + return type; // 返回用户的身份类型 } - public void setType(Integer type){ - - this.type = type; + /** + * Setter 方法:设置用户身份 + */ + public void setType(Integer type) { + this.type = type; // 设置用户的身份类型 } - + /** + * 覆写 toString 方法,便于打印对象信息 + */ @Override public String toString() { - - return "Users [id=" + id - + ", userName=" + userName - + ", passWord=" + passWord - + ", name=" + name - + ", gender=" + gender - + ", age=" + age - + ", phone=" + phone - + ", address=" + address - + ", status=" + status - + ", createTime=" + createTime - + ", type=" + type - + "]"; - } - -} \ No newline at end of file + return "Users [id=" + id // 打印用户的唯一标识符 + + ", userName=" + userName // 打印用户的登录账号 + + ", passWord=" + passWord // 打印用户的密码 + + ", name=" + name // 打印用户的真实姓名 + + ", gender=" + gender // 打印用户的性别 + + ", age=" + age // 打印用户的年龄 + + ", phone=" + phone // 打印用户的联系电话 + + ", address=" + address // 打印用户的联系地址 + + ", status=" + status // 打印用户信息的状态 + + ", createTime=" + createTime // 打印用户信息的添加时间 + + ", type=" + type // 打印用户的身份类型 + + "]"; // 打印结束 + } +} diff --git a/server/target/classes/self/cases/teams/Application$1.class b/server/target/classes/self/cases/teams/Application$1.class index 8901064e8039664f79aebe504c2da9545e8e61d6..3e09cc55a8781e0c78278988242cf7d0591b6195 100644 GIT binary patch delta 39 vcmdnSyN!3lX;w!2$!A!*M4cG;8Jrn}8C)2Q8C)4G8Qd6b8Qdplvv~sm)PD&7 delta 39 vcmdnSyN!3lX;wzt$!A!*L>(CT85|je8Jrl58Jrm`8C)1_8Qdmkvv~sm(~=1C diff --git a/server/target/classes/self/cases/teams/Application.class b/server/target/classes/self/cases/teams/Application.class index 59219ee94bd58017fc49fd86c0db3c2aeda9254c..5f4fc485d9f36863993454c7b3729c9c2e29aad5 100644 GIT binary patch delta 76 zcmcaCb6I8s7Z0QKWNw~TMP&vK1{DSY22}<*1~nj5XE0#UU@&FSWUyk;Vz6b$q7=zj5NZv3;`^g)4y;%bo*ck#R@dX0_2f_{O delta 76 zcmcaCb6I8s7Z0Pn!J%` fF{>Ga7=y*+NZv3;+sPYvy;*%2*cp5$@dX0_1=J1N diff --git a/server/target/classes/self/cases/teams/CourseManager.class b/server/target/classes/self/cases/teams/CourseManager.class index 2b83167f8212b1ce3e70c1ad52f571818c9ecae9..611e7d7178fb6745184b41cd6428af7b0d5891de 100644 GIT binary patch delta 49 zcmeyu|Al`;F&m@x F2LM(V41fRt delta 49 zcmeyu|Al`;F&m@VpL~K{ F2LMry3{3z4 diff --git a/server/target/classes/self/cases/teams/FileUtil.class b/server/target/classes/self/cases/teams/FileUtil.class index f142cbf3d94c75604eb13fbf6522c1cfeff904c7..e00bd6b14a9091b2c232508b6e089b5de596d279 100644 GIT binary patch delta 94 zcmcaEa$RJ@3pPf-$uHTSD+V(NGlVioFoZFfGXyi(0O@#!2!Eg&_z?hXDDJKz1!dD#J{Mw8^_U=Kug{ixzDF delta 94 zcmcaEa$RJ@3pPgg$uHTSD|#~sGx#z{F!(W;Gk7!D0O@#!0EQ$Woy_3RP|py!`6K&M sM%7RTE`~4$Nrngp9fl|d6NYGpARrwAwI)Q4^xpNs988jIf7?>Ee03qEGE&u=k delta 83 zcmbQhGl6G=CktcpWG|K&!3+j=hAaj_hHM5Qh8zYdhTO^XSWPFtVKHSb0?HImR%1;U gtN^mAfNH9NYHEOLYJqCfxlEe011l_m;e9( diff --git a/server/target/classes/self/cases/teams/Student.class b/server/target/classes/self/cases/teams/Student.class index f1825f76f4f65faed5ca667fc6bc661cc229419f..c07b8c1b6ce5424510c42e83c822e01ca04b5711 100644 GIT binary patch delta 198 zcmcaB^-yYqI*Xyh)3wW<_HVaRP%Vzhd%Aq`(+Ry$_RcLY_q71oDKUA^``13-wHzY8 zIfP{jtE?~s3xfy)Cxa*hAA=Z!FoQUQB!dKl3Xs%ikebZORXzC^m)PWKTb0a?P6k8<0vsxk00s843&sS(r$nyCXc jQI|oEL61R^L3{FKo>E>D1}+9upe<$$Rt%<-MR`2{t&KJj delta 194 zcmaDTbysSGI*YE&)3wW<_HVaRP%Y+qx_t7}3B3^J&MhzZwE&qZT+jR0KHs$*EV?;@ zWeTgTAOj175CbQJFasZh2#^$IkYo^JP+<^f&}WdC%*j>FC_VW3ek6o%h}F1Kc;z07o-Y45aVI^8B!Ewz*?vDMa~4MswVHQFZDA4EjTLaolODnUcJ4U5T5PU0*9{Z zb!~ck&6}25f+a^@dQZGPT=%bvcPmf(MtjOySA{*I-a~;wp#iG@a;v|3hu^z>gywK( zE%lVK$Jmn@=2-K04iBcA26R%Ffo{=7g4wY~`yZ+_4Koka_ngt&8ns?_iT1j!P2zl} z=lzZQ(GUBe-~b{}#qF_0mLmwkQS`?#sHjFHjw1#&Y>(SzKZ#J($-8<)qX8Nk;X)HK z(TrT2LOxFO-MA4!XVC|j*=RkSas|P-3KOo0r2|p84jXPD37tqqmoT?59=9WqNg>cYJhdpE3jhXi~? zBHl~N2c+W@a`0K2eZ?$%=g#mhRhfuN#WfLkM8YRF3bhiPJ*j&z!VY?_H2 znuT#R2lJ?yeTkLEc|y!bBzcfb3wTkIS6PG*Dn&Rg<}XP_>M{h;au{iaq^}g)DxN)P zs!}fd3Ye*!n+L5{*U7YArVWUtjgq#GlN}{Nn-E5ud7Gn<*0awsmn!7%<`QQb&F?*( zcjnS;?sguuj1oRi_|d|TK?dbx0*&RWl36vzL^ux@QBmDvjPmeSHP>Y$*aM%>1t37CMIXpj)z^aT^2eDDFO32Mm! z0T&WiNCb>^FkCTFF^Vw`aNvlcTyeyixDxd^-n=j0Io~hMgh(s7mH zyGLZ7N{PSAFCXuU_(KV+pk(%Y*G4o5#7Z>U8W zYM{W67;NKyOL2T1BC#Fgu>&UTL;?aZqnue2(LZkHULK2#wq8To7Cg78+1LpxiNTinMGfeu8YQ!HIb#0jJz2s=(96Q_kag9YeD5qfwy`GEPX*w2am zyx1>@{UV&WBoq3%F{Q$EU0gR1j{#V4Q>wQ(Ds^AZ9l5uf*zxYgC?#q>3YL;R)0R;iRitQKF9(eWr0uf=+7ejBC@Y= z;~S>nJEr0XX5c3Z30OkJOVw6$7@{Z~F%*F$iiAp0aFPx#ijlRgY_s`Hv52Mwm?#b@ zlq3}kZ?8;=W@0tX z;^DL!!yF+Bkw9~iLGyTn-LEV}BrSrG7V}Sgv1uv7$p-@!$@FDnTh8m!ievQ>kQSlC6Y=R>`zd_BzVK*FZ;WIpFY783&vm);Y7N) diff --git a/server/target/classes/self/cases/teams/controller/ActiveLogsController.class b/server/target/classes/self/cases/teams/controller/ActiveLogsController.class index fe85fe6ece4cd07c3cf31a4f33986d6741b2b17c..e6e02c430481f69900e342bc612406d824c6405f 100644 GIT binary patch delta 123 zcmeyZ@LOR+G!LV~1} V=9MrgGn7q!$Y0K=G&xd02>_mo8l?aL delta 123 zcmeyZ@LOR+G!LWFBt&|wH>FlGn=stRRrVhCsOWrzfl(LfkCc`n~#&NQH&44}%a$)5b(yoEqsG0?nH T24#lw$q)I<8C51n3Mc^psYV*l diff --git a/server/target/classes/self/cases/teams/controller/ApplyLogsController.class b/server/target/classes/self/cases/teams/controller/ApplyLogsController.class index cddbddcef80f1b0f9dc85bc1dc3cd69eae3c5049..9fd474d611fd0b07ef5aef865d2c6492ee249720 100644 GIT binary patch delta 161 zcmaE;@lay}J3piBWDb5SM%~HI{F$644BQN643Z2Mo44|NG3q)nh%q=ZC^EP(I5N01 z1T%OtL^60Yq%!z2v@!%R%w`B;SjZ5@a1bbZjUjroj-VN%Vlsm$P=O9ZI)gDo27@(2 zCeVOvpoUzAaE5$_Xolj+%|eSgtAX~^0#(*e))(&PZ3FT;fVOrqC^Pg-J}z9&C_mX= GLq%s6Bv@(P+%w`Bw)$(0#!Co))(&P?E><8fVTEAC^Jl$d|bGk KQE{@ph!OytYa&em diff --git a/server/target/classes/self/cases/teams/controller/BaseController.class b/server/target/classes/self/cases/teams/controller/BaseController.class index 97038bbf478662e3c0b9bf3fe4a17650bd382f5d..774b014ef6012e2616bede8030b4c27ebf956ca6 100644 GIT binary patch delta 17 YcmX@YeS~{M87r$E0}F$}k diff --git a/server/target/classes/self/cases/teams/controller/IndexController.class b/server/target/classes/self/cases/teams/controller/IndexController.class index cc980b49a26746965307e607b17bcc056e55d082..b9184d3febd17b0f01c66737742e03ec83bdeedd 100644 GIT binary patch delta 162 zcmX@Cc35o#JD;L9gD8V8gFJ&igC>I^gC2u1gC&D0gFAycgAao>LllGUW(__OMnw+> z9tJN4380`XgCB!3LlA=zLkLh&D1$3QID;=k^yFCnot)_mTnw2ELJZlHI>5b85nG8i(rGZ-`YFqkn!F<5NY;1gj~bY$RR zaAuHTaAlAMN-8sWF&HuUGMF>?0Yw6Utl-J9{5v^g7`PbX7=#!SCd&)dv8Dr!&YZkR zpq;aTft#TS$Sav_B-qDW4P@0aC@|DBs4z55J}bCaup21f3l!;RP-U0^bi$;`vxQaw E0Ff0Q%K!iX diff --git a/server/target/classes/self/cases/teams/controller/TeamTypesController.class b/server/target/classes/self/cases/teams/controller/TeamTypesController.class index 1b42c28368e5d1f976f7c8e474d53e55a70120b7..6b2b42dd1935d1491f54f0ba3c8130f7a10fa5e7 100644 GIT binary patch delta 123 zcmdn0uvKBhdu~RZ$sf2=IL#Qi7%Uh>7_278@^o^#FmN-tF-S6aOn%QZhck#liXoIi zgCTtK6yA-3i45!vNep}pDM0x&24#kf$zgo8oJBw#B@ChrWs~plEfj5J5MXF#kY;FQ a&}3+5FlOjvFlXqQJc+-7QE{@cfD!;AG#oPk delta 123 zcmdn0uvKBhdu~RJ$sf2=IQ1F07z`Oi7>p;!@^o@qF>o{3Fi0}kO@7Zahtq>Wiou6L zgTZg|6yA-3p$zN{VGMi>5kUDU24#kr$zgo8oXJ2PsSKhF>67p9EfmdT5MU@^kY*@i a&}1lKFlH!YFlVToJc+-7QDL&MfD!=aIvWH4 diff --git a/server/target/classes/self/cases/teams/controller/TeamsController.class b/server/target/classes/self/cases/teams/controller/TeamsController.class index 6bbfc0d0e5a898bab19aa2d4f450685024a59fd7..60372a69b9e55c1f117ac3f49427a37c3535a077 100644 GIT binary patch delta 141 zcmaE_`d)RzXWrn4bLxsv2RVJSmQUU;e-j%IOE>1u%#* z1Wk_NzatvOAjS~Gpu`Zzpu>>J;LecB5XO)`*;nAEU>*ZILq3B5Lm`7SLotIYL+NC5 p!CKB5pviSW-3^oX3U>3h19_c5d%78v8G0v&3Y9Y|Pd+Q81OOWyARhn# diff --git a/server/target/classes/self/cases/teams/controller/UsersController.class b/server/target/classes/self/cases/teams/controller/UsersController.class index bf2df5c72d1889dad40dd864cc0790e6a031cdca..5c0c8275711885373f18677830996d55738169a3 100644 GIT binary patch delta 117 zcmaDY_gZd4H#ei!F-S4EGH5WkPhQM(Tr!A3fFXoI zoFSA!jv<^ulOdA9m?4_MoFQ&* Rbw!g;@HH^XP4?th0sst%7{>qr diff --git a/server/target/classes/self/cases/teams/entity/ActiveLogs.class b/server/target/classes/self/cases/teams/entity/ActiveLogs.class index 33886a369dd711b5bd925ea18db52ea327695534..d614ef82d55f9159020858986d991df7744b32b0 100644 GIT binary patch delta 101 zcmZqWZ{^=`hJ{gQaw4nf_ delta 101 zcmZqWZ{^=`hJ{ggaw4nf`2NVwmiid#3AF-7(Moo@j*98EzLl;*7 diff --git a/server/target/classes/self/cases/teams/entity/Activities.class b/server/target/classes/self/cases/teams/entity/Activities.class index 3b2d5ab2c3f14e82a80069b43170bf2a63af88e5..7b7d0ce72fd92908992534ffcbfe648781c48212 100644 GIT binary patch delta 189 zcmbO$K39B03LB%#WJM0q$yIC`tey<43|^DZvx`sO$7aRo2NvgJ*I*3>iid#3gV?PY zBf#Q|fa0-0@i?G(AY&3x%$7AB$j<<)tKzU?%mJ%A#i7Ak2ox^@i}P_>F_wYF<2W@~ ytAXM*VDUvj@dmK?C!lyMP`qujJXauN*W^MjTh@Lce*#$DDXyiAQzsX2>jD7TGcn%) delta 189 zcmbO$K39B03LB&AWJM0q$yIC`tX>SP4BnH^vx`sO$7aPC02b$C*I*3=iid&4gV?PY zqru{ffZ_>2@kF3_AY&R(%$7A9$jG1h>^<2W@~ y8-e0YVDUvj@piEIC!lx_P`r1tJXav&q{)R`wye{E{25?%r?{3f&YN7otqTD5d@@u3 diff --git a/server/target/classes/self/cases/teams/entity/ApplyLogs.class b/server/target/classes/self/cases/teams/entity/ApplyLogs.class index 95def996ebb85cb8a2e61fc71020bb362b05bfed..1b7a21c3cb00ebc94e174b50142ca7b399b8544c 100644 GIT binary patch delta 109 zcmaDQ_)2iYL{>(l$&*-ZSBeKn$?QYX0jTaEvq9?%n2-3&t}EwHhC9N x%o`}?0~Qlzw_*&K?8k1)8VVE(1BwMQMooSM)Q$&*-ZSuGe?87wDHU>BeKn$?QYZn7GiEvqw7%mpk~&t}EwIe8aQ x%nvB$4;B+;$ eqW20f&vsb^eSy8&M-kK$=xjKjM`w<2^I}jeFjzrgUK7%ExS}_`f#ba1CSj~ar x7GUuOKyhoZ_y?f4Jy6^MEN;SPHTf2+*yI*A4OVxcs0UEAXL24J&ty+_B>?MZ9uEKj delta 111 zcmaFO_nL1*DGMXtK$=xjKjJjaf2^I}jBL-Fmh9J&Ai diff --git a/server/target/classes/self/cases/teams/entity/Notices.class b/server/target/classes/self/cases/teams/entity/Notices.class index 936752eb625082b07d49336b98b8ce67662dab37..2bb3ca4bcd06a9ea2a7f93f7e5e13edd7ea3b508 100644 GIT binary patch delta 133 zcmca0a6w?hE*3`K$qH}EV~A4C{R2MEWVJv LkuhenGKVezo*5v9 delta 137 zcmca0a6w?hE*3_<$qH; zcpjS-qa#>+A5h#CDDDOpXJWUSyn;<^auB-)t1nR04=5VQ7&!SNyDe)dkRJwCrNz<6 K7&Cbdhb{m_e;_>o delta 129 zcmca9cvEnLGb=xr^V68 Km_2z7hb{m}jUZ$I diff --git a/server/target/classes/self/cases/teams/entity/STjiao.class b/server/target/classes/self/cases/teams/entity/STjiao.class index 62aa4f448955c0ed61e6e5a6c33af1c40060c975..1618cd8dc7bf57cba482b3e66a6d71dec9d48c31 100644 GIT binary patch delta 241 zcmW;CF$%&!5J1rk>})o53}VDWL0knv1q+9yh+v^05F3~^e8!ijcn@yEIot=$T>m| zV5h_1Jw9F&HsPCHV*BH+9k?-tsM6IOIqdZ8#*6IJH8g;?;zRKfJYhp)c*UAyaSi{7 zPsB5xiX~zN&G5ZE&2zB@zSc9egr~mdmG~N7`G&UeT6`zIhj)~rgUwaOx!BP@R6!?v YU#0mhR^m$oLl^ix(0moY!Rw&^2eY<3qW}N^ diff --git a/server/target/classes/self/cases/teams/entity/TeamTypes.class b/server/target/classes/self/cases/teams/entity/TeamTypes.class index ccd1f70051775656822daf8a555d96e22ca828f5..292702e91d7cb6696bc2eecd6efcc9d65710acbb 100644 GIT binary patch delta 81 zcmaFP^PFdcAPXb!WPcXX$?7brta=Qr4EmENvIH`kg2jHYXt3G<#cY9M;*)Jytr(rb Y;ytVytX@EIZ?O0U)=b8r$yRK-06S?D{Qv*} delta 81 zcmaFP^PFdcAPXbkWPcXX$?7brtU3&=47!sivIH_3fyI8XXt0_C#Vmkg;*)Jytr%^= Y;ytVytWH32XR!DM)=Wmv$yRK-05+Nv&Hw-a diff --git a/server/target/classes/self/cases/teams/entity/Teams.class b/server/target/classes/self/cases/teams/entity/Teams.class index ab8f81a5642049bd3cf747557e5fbb1e2abcf314..7e4eb5117ed9e8f205975a9ed0fc98d0071c803f 100644 GIT binary patch delta 135 zcmdlcyiIsR11lr%WcA!`rP^=xK O`8P)|W8dUXPF(`@ayA@*;Sh$~EgEbx~oB$HO3=~cU3oCPIOy15eGdZ2Zim?DJvYkVNwG^nZ Q45aWkM=xW|T`}c~_6nxjyWRW^Oh(ZNrlDxsg=ZsaCn-0QMpAA}&={LW zv+F#2>Sy2Y&;R*x$pDu^Gfy?6i>(Z1+H^4sv^O+##XVDDkG(J6G&Ky_101o9+3GNr zu4*YtEuSWqhEOE26wbL?$m!V{mf{^-VZ^=?kJ#7rumjw%ZK>$gVJF?pQMhM2NS8Po nj^ch+;feh$-pOjXipT6X_Pcn>{-TN-;G6A31NRAEYUIj)!`e*9 delta 247 zcmW;CFAo7>7yxijcy|BXO)=$)_6nxjyWM<-Gm-6PGm3yBpePdIQ51?oae<<^qHx70 z;6vyUd6rOGghJ&!3mdOr%!^`I*%0O_~h3wV+$vYWKL@78mt= zCOMn$HXzBVz-N4`+mC2^g&mREqll3%$kt;_>R!h0)ASMOK&QsI`b6qX7q>4{w&i(j zXI!t4<{D|g2Zy@V39s(!NMU5R-fEPbJFavhxw}{T{*s8z!g+jQVFt4n-V!q>W*%=_ zcn9Y!EZ|**>3&(>Zn>4R(@>Z>(VriWq`a|g;Y&OfL%LJhg+Rj_%S6d8_&S!4WOl*V z@`hx8#X@Bl4v+P$qtA7kuU{Sb+QKGQ6&Bw>G}O#7{-gbuPKnQkWn=M7`|!}Iv1)5! zdKi#V_tsS5d^$g!wef<`b>IE`Odq9SXw^P4OoMn21Ol=|!ZIdSo;8$bRaP zE!88t%5e;e-Ctz>1%Ca4D1S@9#mpn3>6V8}UE% zK1;Oc^{O*4kU|n?x$6Y&Bu}2=Y13FD)kWrQBQCpR8EKB<39Zte@J6&J#8K@Dv!Okq zHnk_*ajejvHMtzTD5zLau%KSSVt`v_uu3bJ%5jtnN~xY-V0|k`k8WMx;%tQx*ae{9~Ium64`JHiTMU>s zG!y^HU8bK|eCgf6-$*=tg=A`^gHd^d9LAq_V5Ls^foKpI^8-c@IPC{w9gL^W_`cae fDs|TP;~h+l|HQ32nC$OFvFFwY!OOm>Yjf*=R0OG= literal 0 HcmV?d00001 diff --git a/server/target/classes/self/cases/teams/teaa/STcx.class b/server/target/classes/self/cases/teams/teaa/STcx.class new file mode 100644 index 0000000000000000000000000000000000000000..e30622c86ed632c6e73771e2b46cbeeb27fa9d39 GIT binary patch literal 5405 zcmcIo33yc175-mln0Xmq2#z5b1O&GxAsEFJZNi5E0vJd_BrH|i$|HG%(b<>WaYsr`Q?!E7v zbI+_A8y9F zT&%|}Ufk+~hSe%=llSfN_^~`T_^=UosJK%Uej;`@$z!vMyW~rUio4~@Ju2??ai{y_ z;}#WL#q>6L+^^zF6`kS}Z9RYoMf@QzwyW6TLke9o-|59J6}wgJQSq>fM^x+;Yd=-7 z&qwzj6;B@X;&EA|k58z0(o*odPwgw}*^yBCcR?-NpJ+y*!x+ z1k39J@kEt^+@?TlSWhHlhJv$>_&lL5ZUh&VH|udDUY;=YkonZh8!dygjpj(KrD`Ir zcqRnGfy6`wuHuq;3fxm7Ewq9K&!?L~KDae&SZ z|AO6`<}|l)i~L1_aErb3I5Y?C-m;g1n}L-h4^D9yO!#;swH8ZzL8+=yXgE83`lCAcs1lh)-^BN+esD8Zmlu zztQx~SG-pxZ&4(f!Gy*Ov(asjS_pgbqJo)6VgBgzU638dlwfk9#NcVR2YD??iVnrb{ghHW*ec%QiIJ+B$Lq=-J#rHp8ICNu`+An#YS_Ys)QRTEV|K-PgXTf zi^M{DVrpBn5lsXlVOG}=hm3Q5z@mT=WMpdCST;`&Ce0c)lVVn#y^}MLxu)}8{GK#H zW?;3n1me-4-aaW9wDDl7^7NLL24h(UpyGZ2a=2tyca4PP(L+pog0a=G#9EE85hGf2 z!+|A9Ly}NXT+&yQJsHviVb)0Tg?+!8J*&rB>DaOTd}h0Z^swG)#1#0NBFR{@F)bkN zoGZO~n!ur99_CZKw_Yd3VtTufjE320Vhw6|2`{rRG`xaWHT(guDLCmU2u8ynv4VJN z_!D0D;tdUN;w^SkZx$?cCMN^I7IAUdfrq!hy?xi)+d8`+S)1OlIlXFcdgXQ9*KDX9 zrJ);Xc^uI2wpcx=;T`;$j;C+CmvY@JJ1ynf8WH{rR%mz^uWR@#UL~?l3Cp}ly@S6w z4Rmk4>%f`~mVx)M!ujdIroG*_-f4aMCcdTNeY}2zzuhZ09$dev*WVAsg}>t;%sb0S z543pkPYoa9BMtw;#|lp9g`wZtRxl`i^Tzbrl?SiB{@|UrSB~=H6Ak}HRKp>BO6Pj@ zGj%VKnmXw<_rJAg-GOUT>E%~cj>?$o-g6h_airUuUegc z@Q(CttDHFzNLDRBVzE-ga$La^q;b;u8a~5erinF@2MA>J(Fj+m% zzBZT4v$U4vt|ua_y+OT;Qu|qoR+*AZ0vYkbo?gu|Lq75@*5eIE8x8P8Wz)OE<|Mnf zGwd_4)ks*UvB|>5lB6DFFK4l?gA^UXG_}VQMu@valHAK?!9b+Ek*8^b4)f5L<6VzN zjWD@oY(F&Bmu>7$q+*tQj|YADr&nH0M0!xN3NzakIk&~JAc-t1I7_KYcuXS}j$_qD zqNQ3OJ~b3gv>&0?;}O+zsg^m$V&-9_U|=Fr7g=V+rtk*DyfG(>t(y&#Qk#|Ann=>T z;0%oFvAEGQ>(|E`ZWcEZlWZ1u7uSf}$MhE1wD;IoF){P7J z174C%d0dEZm@?!?N{FpzXv@vFUb-FbT^OLCzHApf3NP2=Iq)jj2en~r3b|ua@U6$l z2QhFDH13$^ACy8qzYI>{m=yeDJ39_P<@kCmzfvdP`l@tt6Bop}k?``l03)EI7z;58 z&6olM(?}W@q1AMF6lF)?RL&Q0ME7jhWu#L_p^k**Is~5=EoXnia15@{f1R%!;U6k8 zLS-i31Gu)%2C6<2X~S4M(o;FGBCT{6xl<^xV%5ru2+5Ef%@+4`Cd_s6v$aUV`a} zVHWxGVk9_9@@FZQp^bl3wVQxdFve3c#01PuDb*e^?hJJ6u-Jr7rB;CTl|wnJHmsGo zToG7{;Q17OFD@an#YFZHhH~@?Mk+lRFQ$}Ln?dT3=Kp)Fhy9nn)$_lWgX#Cip>{yx#Unpm$S)~ks14~W{e{{hzF{}I+<2iA%lm_%GU_kLn7tueE7 zOc#dNm+eQ1R5r_U1S{52bt8#HS*A_hTO6OVd(^ds=A1ox13b8qWU_{ZwHBx0CY;W4 zswFoFsYs7<`%HPwv^&#-sVvw9b}^|?4&ih!fpqkzA~yjm4&@`7QQ4=3W*pLh`|$z& zJ)v?y&UjDJfD}gE$9-@Xe{=5J-6*jS+qL7_5BV-F8sHyo@=~E|yr%<$IX}^yd)(ta zLp-9mMD+M8|BCo4OgOd3P2xIfCr(b`ln%63dL5vAg?RPSnrlmsY;g)D9jMBZ6@qih zI?ONxf!*dmmlJks@G-i0UEQS=V7Hmlb7}2T9B;CV zml`r!CUmV7_N193i-2XVjWteeIcmqZ>6cf@=l%=GXU+6&1bm;Nf~oi7yGp(`tbxXd z^Ksemk1_0cvmWwXCSSKvx}Cp@Tpsz99B-y&DX{4lUz2>-V-WH6pGNZSz&II}bC{v? zx-mAL59Pq3^Lh#~2PERO9FES~-bc_L#ZWws69~x!JjpX?KhL12O&|)n`2+?o=Z_T6 zbUSJ=eLpa8y#Nl+7H*3m>%Z(&qIcn6>F=ZtwoG$&8V^X`vEW77S+ok4#tM&lO z;Ms4L-ynUjggF8Js1h!3J+Xq8oY}9WMNcI5vk|Go+J4TR@P38OW{l&yK=HP zw}0N;-nt9)VU%CesJm9}tH^x8Se^vp`W+?N=_$&QY1(;xsC;HDR zK(#fV?4MGA8grb&G|F{hI>pcF!nu6a`bQUF#!l3wP|s