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