From 5e2956da8d9cbf9572660b001dd46f9c3232eb9a Mon Sep 17 00:00:00 2001 From: weidoudou7 <3059670696@qq.com> Date: Sat, 31 May 2025 00:09:17 +0800 Subject: [PATCH] =?UTF-8?q?(database):=20-=E7=AB=8B=E8=AE=BA=E3=80=81?= =?UTF-8?q?=E8=BE=A9=E8=AE=BA=EF=BC=88=E5=90=AB=E5=A4=8D=E7=9B=98=EF=BC=89?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E7=B1=BB=E5=92=8CMapper=E6=98=A0=E5=B0=84=20?= =?UTF-8?q?-=20=E6=96=B0=E5=A2=9E=20Position=20=E6=9E=9A=E4=B8=BE=E7=B1=BB?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E8=A1=A8=E7=A4=BA=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=9A=84=E6=8C=81=E6=96=B9=EF=BC=88=E6=AD=A3=E6=96=B9/?= =?UTF-8?q?=E5=8F=8D=E6=96=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../newdemo/entity/ArgumentHistory.java | 21 ++++ .../newdemo/entity/DebateHistory.java | 28 +++++ .../com/learning/newdemo/enums/Position.java | 36 ++++++ .../newdemo/mapper/ArgumentHistoryMapper.java | 71 ++++++++++++ .../newdemo/mapper/DebateHistoryMapper.java | 59 ++++++++++ .../mapper/ArgumentHistoryMapper.xml | 89 +++++++++++++++ .../resources/mapper/DebateHistoryMapper.xml | 106 ++++++++++++++++++ 7 files changed, 410 insertions(+) create mode 100644 Debate_backend/src/main/java/com/learning/newdemo/entity/ArgumentHistory.java create mode 100644 Debate_backend/src/main/java/com/learning/newdemo/entity/DebateHistory.java create mode 100644 Debate_backend/src/main/java/com/learning/newdemo/enums/Position.java create mode 100644 Debate_backend/src/main/java/com/learning/newdemo/mapper/ArgumentHistoryMapper.java create mode 100644 Debate_backend/src/main/java/com/learning/newdemo/mapper/DebateHistoryMapper.java create mode 100644 Debate_backend/src/main/resources/mapper/ArgumentHistoryMapper.xml create mode 100644 Debate_backend/src/main/resources/mapper/DebateHistoryMapper.xml diff --git a/Debate_backend/src/main/java/com/learning/newdemo/entity/ArgumentHistory.java b/Debate_backend/src/main/java/com/learning/newdemo/entity/ArgumentHistory.java new file mode 100644 index 0000000..30c2a30 --- /dev/null +++ b/Debate_backend/src/main/java/com/learning/newdemo/entity/ArgumentHistory.java @@ -0,0 +1,21 @@ +package com.learning.newdemo.entity; + +import com.learning.newdemo.enums.Position; +import lombok.Data; + +import java.util.Date; + +@Data +public class ArgumentHistory { + private Integer id; + + private Integer userId; // 关联用户ID + + private String topic; // 辩题 + + private String argumentContent; // 立论内容 + + private Position position; // 用户持方(枚举类型) + + private Date createTime; // 创建时间 +} diff --git a/Debate_backend/src/main/java/com/learning/newdemo/entity/DebateHistory.java b/Debate_backend/src/main/java/com/learning/newdemo/entity/DebateHistory.java new file mode 100644 index 0000000..63fd909 --- /dev/null +++ b/Debate_backend/src/main/java/com/learning/newdemo/entity/DebateHistory.java @@ -0,0 +1,28 @@ +package com.learning.newdemo.entity; + +import com.learning.newdemo.enums.Position; +import lombok.Data; + +import java.util.Date; + +@Data +public class DebateHistory { + private Integer id; + private Integer userId; // 关联用户ID + + private Integer argumentId; // 关联立论记录ID + + private String topic; // 辩题 + + private Position position; // 用户持方 + + private Short totalRounds; // 总回合数 + + private String debateContent; // 所有辩论内容(JSON格式) + + private String reviewResult; // 复盘分析内容 + + private Date createTime; // 创建时间 + + private ArgumentHistory argumentHistory; //关联的立论记录 +} diff --git a/Debate_backend/src/main/java/com/learning/newdemo/enums/Position.java b/Debate_backend/src/main/java/com/learning/newdemo/enums/Position.java new file mode 100644 index 0000000..9a8a855 --- /dev/null +++ b/Debate_backend/src/main/java/com/learning/newdemo/enums/Position.java @@ -0,0 +1,36 @@ +package com.learning.newdemo.enums; + +public enum Position { + POSITIVE("正方"), + NEGATIVE("反方"); + + private final String name; + Position(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + /** + * 根据名称获取位置枚举 + * 此方法通过遍历Position枚举来查找与给定名称匹配的位置枚举实例 + * 使用字符串比较来确定枚举实例的名称是否与传入的名称相同 + * + * @param name 位置名称,用于查找对应的位置枚举 + * @return 如果找到匹配的位置枚举,则返回该枚举实例;否则返回null + */ + public static Position getPosition(String name) { + // 遍历Position枚举中的所有值 + for (Position position : Position.values()) { + // 比较当前枚举实例的名称是否与传入的名称相同 + if (position.getName().equals(name)) { + // 如果相同,则返回当前枚举实例 + return position; + } + } + // 如果遍历结束后没有找到匹配的枚举,则返回null + return null; + } +} diff --git a/Debate_backend/src/main/java/com/learning/newdemo/mapper/ArgumentHistoryMapper.java b/Debate_backend/src/main/java/com/learning/newdemo/mapper/ArgumentHistoryMapper.java new file mode 100644 index 0000000..16feca7 --- /dev/null +++ b/Debate_backend/src/main/java/com/learning/newdemo/mapper/ArgumentHistoryMapper.java @@ -0,0 +1,71 @@ +package com.learning.newdemo.mapper; + +import com.learning.newdemo.entity.ArgumentHistory; +import com.learning.newdemo.enums.Position; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ArgumentHistoryMapper { + /** + * 插入立论记录 + * @param argumentHistory 立论记录 + * @return 影响行数 + */ + int insert(ArgumentHistory argumentHistory); + + /** + * 根据用户ID查询立论历史 + * @param userId 用户ID + * @return 立论历史列表 + */ + List selectByUserId(@Param("userId") Integer userId); + + /** + * 根据用户ID和持方查询立论历史 + * @param userId 用户ID + * @param position 持方(正方/反方) + * @return 立论历史列表 + */ + List selectByUserAndPosition( + @Param("userId") Integer userId, + @Param("position") Position position); + + /** + * 根据ID查询立论记录 + * @param id 主键ID + * @return 立论记录 + */ + ArgumentHistory selectByPrimaryKey(@Param("id") Integer id); + + /** + * 获取用户最新立论记录 + * @param userId 用户ID + * @return 最新立论记录 + */ + ArgumentHistory selectLatestByUserId(@Param("userId") Integer userId); + + /** + * 根据用户ID查询最新的i条立论记录 + * + * @param userId 用户ID + * @param limit 要获取的记录数量 + * @return 最新的i条立论记录列表 + */ + List selectLatestByUserIdWithLimit( + @Param("userId") Integer userId, + @Param("limit") Integer limit); + + /** + * 根据用户ID和持方查询最新的i条立论记录 + * + * @param userId 用户ID + * @param position 持方(可选) + * @param limit 要获取的记录数量 + * @return 最新的i条立论记录列表 + */ + List selectLatestByUserAndPositionWithLimit( + @Param("userId") Integer userId, + @Param("position") Position position, + @Param("limit") Integer limit); +} diff --git a/Debate_backend/src/main/java/com/learning/newdemo/mapper/DebateHistoryMapper.java b/Debate_backend/src/main/java/com/learning/newdemo/mapper/DebateHistoryMapper.java new file mode 100644 index 0000000..f78b5bb --- /dev/null +++ b/Debate_backend/src/main/java/com/learning/newdemo/mapper/DebateHistoryMapper.java @@ -0,0 +1,59 @@ +package com.learning.newdemo.mapper; + +import com.learning.newdemo.entity.DebateHistory; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface DebateHistoryMapper { + /** + * 插入辩论记录 + * @param debateHistory 辩论记录 + * @return 影响行数 + */ + int insert(DebateHistory debateHistory); + + /** + * 根据用户ID查询辩论记录 + * @param userId 用户ID + * @return 辩论记录列表 + */ + List selectByUserId(@Param("userId") Integer userId); + + /** + * 根据用户ID查询最新的i条辩论记录 + * @param userId 用户ID + * @param limit 记录条数 + * @return 最新的i条辩论记录 + */ + List selectLatestByUserId(@Param("userId") Integer userId, @Param("limit") Integer limit); + + /** + * 根据立论记录ID查询辩论记录 + * @param argumentId 立论记录ID + * @return 辩论记录列表 + */ + List selectByArgumentId(@Param("argumentId") Integer argumentId); + + /** + * 根据主键查询辩论记录 + * @param id 主键ID + * @return 辩论记录 + */ + DebateHistory selectByPrimaryKey(@Param("id") Integer id); + + /** + * 更新复盘分析内容 + * @param id 辩论记录ID + * @param reviewResult 复盘分析内容 + * @return 影响行数 + */ + int updateReviewResult(@Param("id") Integer id, @Param("reviewResult") String reviewResult); + + /** + * 查询辩论记录及其关联的立论内容 + * @param id 辩论记录ID + * @return 包含立论内容的辩论记录 + */ + DebateHistory selectWithArgument(@Param("id") Integer id); +} diff --git a/Debate_backend/src/main/resources/mapper/ArgumentHistoryMapper.xml b/Debate_backend/src/main/resources/mapper/ArgumentHistoryMapper.xml new file mode 100644 index 0000000..118aca7 --- /dev/null +++ b/Debate_backend/src/main/resources/mapper/ArgumentHistoryMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + id, user_id, topic, argument_content, position, create_time + + + + + INSERT INTO argument_history ( + user_id, topic, argument_content, position + ) + VALUES ( + #{userId,jdbcType=INTEGER}, + #{topic,jdbcType=VARCHAR}, + #{argumentContent,jdbcType=LONGVARCHAR}, + #{position,jdbcType=VARCHAR, typeHandler=org.apache.ibatis.type.EnumTypeHandler} + ) + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Debate_backend/src/main/resources/mapper/DebateHistoryMapper.xml b/Debate_backend/src/main/resources/mapper/DebateHistoryMapper.xml new file mode 100644 index 0000000..98ce52c --- /dev/null +++ b/Debate_backend/src/main/resources/mapper/DebateHistoryMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, user_id, argument_id, topic, position, total_rounds, debate_content, review_result, create_time + + + + dh.id, dh.user_id, dh.argument_id, dh.topic, dh.position, dh.total_rounds, + dh.debate_content, dh.review_result, dh.create_time, + ah.id as arg_id, ah.user_id as arg_user_id, ah.topic as arg_topic, + ah.argument_content as arg_content, ah.position as arg_position, + ah.create_time as arg_create_time + + + + + INSERT INTO debate_history ( + user_id, argument_id, topic, position, total_rounds, debate_content + ) + VALUES ( + #{userId,jdbcType=INTEGER}, + #{argumentId,jdbcType=INTEGER}, + #{topic,jdbcType=VARCHAR}, + #{position,jdbcType=VARCHAR, typeHandler=org.apache.ibatis.type.EnumTypeHandler}, + #{totalRounds,jdbcType=SMALLINT}, + #{debateContent,jdbcType=LONGVARCHAR} + ) + + + + + + + + + + + + + + + + + UPDATE debate_history + SET review_result = #{reviewResult,jdbcType=LONGVARCHAR} + WHERE id = #{id,jdbcType=INTEGER} + + + + + \ No newline at end of file