From 4d9b5a2e69bb36998660c08ed2de98b1b75c63f7 Mon Sep 17 00:00:00 2001 From: liulianbuqu <2958637020@qq.com> Date: Sun, 1 Jun 2025 11:14:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E5=90=8E?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DebateHistoryController.java | 31 +---- .../controller/ReviewHistoryController.java | 112 ++++++++++++++++++ .../newdemo/entity/DebateHistory.java | 34 +++--- .../newdemo/mapper/DebateHistoryMapper.java | 71 +---------- .../controller/DebateHistoryController.class | Bin 0 -> 2789 bytes .../newdemo/entity/ArgumentHistory.class | Bin 0 -> 4314 bytes .../newdemo/entity/DebateHistory.class | Bin 0 -> 6537 bytes .../com/learning/newdemo/enums/Position.class | Bin 0 -> 1685 bytes .../mapper/ArgumentHistoryMapper.class | Bin 0 -> 1672 bytes .../newdemo/mapper/DebateHistoryMapper.class | Bin 0 -> 3091 bytes .../service/DebateHistoryService.class | Bin 0 -> 461 bytes .../impl/DebateHistoryServiceImpl.class | Bin 0 -> 1716 bytes .../classes/mapper/ArgumentHistoryMapper.xml | 89 ++++++++++++++ .../classes/mapper/DebateHistoryMapper.xml | 106 +++++++++++++++++ database/database.sql | 2 +- 15 files changed, 334 insertions(+), 111 deletions(-) create mode 100644 Debate_backend/src/main/java/com/learning/newdemo/controller/ReviewHistoryController.java create mode 100644 Debate_backend/target/classes/com/learning/newdemo/controller/DebateHistoryController.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/entity/ArgumentHistory.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/entity/DebateHistory.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/enums/Position.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/mapper/ArgumentHistoryMapper.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/mapper/DebateHistoryMapper.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/service/DebateHistoryService.class create mode 100644 Debate_backend/target/classes/com/learning/newdemo/service/impl/DebateHistoryServiceImpl.class create mode 100644 Debate_backend/target/classes/mapper/ArgumentHistoryMapper.xml create mode 100644 Debate_backend/target/classes/mapper/DebateHistoryMapper.xml diff --git a/Debate_backend/src/main/java/com/learning/newdemo/controller/DebateHistoryController.java b/Debate_backend/src/main/java/com/learning/newdemo/controller/DebateHistoryController.java index 136aec7..fb64ad5 100644 --- a/Debate_backend/src/main/java/com/learning/newdemo/controller/DebateHistoryController.java +++ b/Debate_backend/src/main/java/com/learning/newdemo/controller/DebateHistoryController.java @@ -9,50 +9,29 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -/** - * 辩论历史记录控制器 - * 处理与辩论历史记录相关的HTTP请求 - */ -@RestController // 标识为RESTful控制器 -@RequestMapping("/api/debate-history") // 基础请求路径 -@RequiredArgsConstructor // Lombok注解,自动生成构造函数注入依赖 +@RestController +@RequestMapping("/api/debate-history") +@RequiredArgsConstructor public class DebateHistoryController { - // 依赖注入 private final DebateHistoryService historyService; private final JwtUtil jwtUtil; - /** - * 保存辩论历史记录接口 - * @param history 前端传来的辩论历史数据(自动反序列化为对象) - * @param token 认证令牌(从请求头获取) - * @return 统一响应结果 - */ - @PostMapping // 处理POST请求 + @PostMapping public Result saveHistory(@RequestBody DebateHistory history, @RequestHeader("Authorization") String token) { - // 从JWT令牌中解析用户ID Integer userId = jwtUtil.getUserIdFromToken(token); - // 设置记录关联的用户ID if (userId == null) { return Result.error(401, "无效的认证令牌"); } history.setUserId(userId); - // 调用服务层保存记录 historyService.saveDebateHistory(history); - // 返回成功响应 return Result.success(); } - /** - * 获取用户辩论历史记录接口 - * @param token 认证令牌(从请求头获取) - * @return 包含历史记录列表的统一响应结果 - */ - @GetMapping // 处理GET请求 + @GetMapping public Result> getHistories(@RequestHeader("Authorization") String token) { Integer userId = jwtUtil.getUserIdFromToken(token); - // 调用服务层获取记录并包装返回 return Result.success(historyService.getHistoriesByUser(userId)); } } diff --git a/Debate_backend/src/main/java/com/learning/newdemo/controller/ReviewHistoryController.java b/Debate_backend/src/main/java/com/learning/newdemo/controller/ReviewHistoryController.java new file mode 100644 index 0000000..ec967c0 --- /dev/null +++ b/Debate_backend/src/main/java/com/learning/newdemo/controller/ReviewHistoryController.java @@ -0,0 +1,112 @@ +package com.learning.newdemo.controller; + +import com.learning.newdemo.common.Result; +import com.learning.newdemo.entity.DebateHistory; +import com.learning.newdemo.service.DebateHistoryService; +import com.learning.newdemo.service.WxReviewService; +import com.learning.newdemo.util.JwtUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("api/review") +public class ReviewHistoryController { + + private final WxReviewService wxReviewService; + private final DebateHistoryService historyService; + private final JwtUtil jwtUtil; + + @PostMapping("/auto-save") + public Result> autoSaveReview( + @RequestBody Map params, + @RequestHeader("Authorization") String token) { + + log.info("自动保存复盘请求: {}", params); + Integer userId = parseUserId(token); + if (userId == null) return Result.error(401, "认证失败"); + + String content = params.get("content"); + String topic = params.get("topic"); + String stance = params.get("stance"); + + if (content == null || content.isEmpty()) { + return Result.error("内容不能为空"); + } + + try { + String review = wxReviewService.GetReview(content); + if (review == null) return Result.error("复盘生成失败"); + + DebateHistory history = new DebateHistory(); + history.setUserId(userId); + history.setTopic(topic); + history.setStance(stance); + history.setContent(content); + history.setReview(review); + history.setRounds(0); // 默认0轮,可根据实际情况调整 + + historyService.saveDebateHistory(history); + + Map data = new HashMap<>(); + data.put("review", review); + data.put("historyId", history.getId()); + return Result.success(data); + } catch (Exception e) { + log.error("复盘保存失败", e); + return Result.error("处理失败: " + e.getMessage()); + } + } + + @PostMapping("/save-only") + public Result> saveOnly( + @RequestBody Map params, + @RequestHeader("Authorization") String token) { + + Integer userId = parseUserId(token); + if (userId == null) return Result.error(401, "认证失败"); + + String content = params.get("content"); + String review = params.get("review"); + String topic = params.get("topic"); + String stance = params.get("stance"); + + if (content == null || review == null) { + return Result.error("内容和复盘结果不能为空"); + } + + try { + DebateHistory history = new DebateHistory(); + history.setUserId(userId); + history.setTopic(topic); + history.setStance(stance); + history.setContent(content); + history.setReview(review); + history.setRounds(0); + + historyService.saveDebateHistory(history); + + Map data = new HashMap<>(); + data.put("review", review); + data.put("historyId", history.getId()); + return Result.success(data); + } catch (Exception e) { + log.error("保存失败", e); + return Result.error("保存失败: " + e.getMessage()); + } + } + + private Integer parseUserId(String token) { + try { + return jwtUtil.getUserIdFromToken(token); + } catch (Exception e) { + log.warn("Token解析失败", e); + return null; + } + } +} 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 index 63fd909..9357b09 100644 --- a/Debate_backend/src/main/java/com/learning/newdemo/entity/DebateHistory.java +++ b/Debate_backend/src/main/java/com/learning/newdemo/entity/DebateHistory.java @@ -1,28 +1,24 @@ 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; //关联的立论记录 + private Integer userId; + private String topic; + private String stance; // "正方"或"反方" + private String content; // 辩论内容JSON + private String review; // AI复盘内容 + private Integer rounds; + private Date createTime; + + // 注意:setStance方法应该验证输入 + public void setStance(String stance) { + if (!"正方".equals(stance) && !"反方".equals(stance)) { + throw new IllegalArgumentException("持方必须是'正方'或'反方'"); + } + this.stance = stance; + } } 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 index a569998..96af56e 100644 --- a/Debate_backend/src/main/java/com/learning/newdemo/mapper/DebateHistoryMapper.java +++ b/Debate_backend/src/main/java/com/learning/newdemo/mapper/DebateHistoryMapper.java @@ -5,90 +5,31 @@ import org.apache.ibatis.annotations.*; import java.util.List; -/** - * 辩论历史记录数据访问层接口 - * 定义所有与辩论历史记录表相关的数据库操作 - */ +@Mapper public interface DebateHistoryMapper { - /** - * 插入新的辩论记录 - * @param debateHistory 包含辩论详细信息的实体对象 - * @return 插入操作影响的行数(通常为1) - */ - @Insert("INSERT INTO debate_history(user_id, argument_id, topic, position, total_rounds, debate_content, review_result) " + - "VALUES(#{userId}, #{argumentId}, #{topic}, #{position}, #{totalRounds}, #{debateContent}, #{reviewResult})") - @Options(useGeneratedKeys = true, keyProperty = "id") // 获取自增主键 + @Insert("INSERT INTO debate_history(user_id, topic, stance, content, review, rounds) " + + "VALUES(#{userId}, #{topic}, #{stance}, #{content}, #{review}, #{rounds})") + @Options(useGeneratedKeys = true, keyProperty = "id") int insert(DebateHistory debateHistory); - /** - * 根据用户ID查询所有辩论记录(按时间倒序) - * @param userId 用户唯一标识 - * @return 该用户的所有辩论记录列表 - */ @Select("SELECT * FROM debate_history WHERE user_id = #{userId} ORDER BY create_time DESC") List selectByUserId(@Param("userId") Integer userId); - /** - * 获取用户最新的指定数量的辩论记录 - * @param userId 用户ID - * @param limit 要获取的记录数量 - * @return 最新的辩论记录列表 - */ @Select("SELECT * FROM debate_history WHERE user_id = #{userId} ORDER BY create_time DESC LIMIT #{limit}") List selectLatestByUserId(@Param("userId") Integer userId, @Param("limit") Integer limit); - /** - * 根据关联的立论记录ID查询辩论记录 - * @param argumentId 立论记录ID - * @return 相关联的辩论记录列表 - */ - @Select("SELECT * FROM debate_history WHERE argument_id = #{argumentId} ORDER BY create_time DESC") - List selectByArgumentId(@Param("argumentId") Integer argumentId); - - /** - * 根据主键ID查询单条辩论记录 - * @param id 记录主键ID - * @return 对应的辩论记录实体 - */ @Select("SELECT * FROM debate_history WHERE id = #{id}") DebateHistory selectByPrimaryKey(@Param("id") Integer id); - /** - * 更新辩论记录的复盘分析内容 - * @param id 要更新的记录ID - * @param reviewResult 新的复盘内容 - * @return 更新操作影响的行数 - */ - @Update("UPDATE debate_history SET review_result = #{reviewResult} WHERE id = #{id}") - int updateReviewResult(@Param("id") Integer id, @Param("reviewResult") String reviewResult); - - /** - * 查询辩论记录及其关联的立论内容(联合查询) - * @param id 辩论记录ID - * @return 包含完整立论内容的辩论记录实体 - */ - @Select("SELECT dh.*, ah.topic AS argument_topic, ah.argument_content " + - "FROM debate_history dh LEFT JOIN argument_history ah ON dh.argument_id = ah.id " + - "WHERE dh.id = #{id}") - DebateHistory selectWithArgument(@Param("id") Integer id); + @Update("UPDATE debate_history SET review = #{review} WHERE id = #{id}") + int updateReview(@Param("id") Integer id, @Param("review") String review); - /** - * 清理用户超出限制的历史记录(保留最新的10条) - * @param userId 用户ID - * @return 被删除的记录数量 - */ @Delete("DELETE FROM debate_history WHERE user_id = #{userId} AND id NOT IN " + "(SELECT id FROM (SELECT id FROM debate_history WHERE user_id = #{userId} " + "ORDER BY create_time DESC LIMIT 10) t)") int cleanOverflowHistories(@Param("userId") Integer userId); - /** - * 根据辩论主题关键词搜索记录(新增方法) - * @param userId 用户ID - * @param keyword 搜索关键词 - * @return 匹配的记录列表 - */ @Select("SELECT * FROM debate_history WHERE user_id = #{userId} AND topic LIKE CONCAT('%',#{keyword},'%') " + "ORDER BY create_time DESC") List searchByKeyword(@Param("userId") Integer userId, @Param("keyword") String keyword); diff --git a/Debate_backend/target/classes/com/learning/newdemo/controller/DebateHistoryController.class b/Debate_backend/target/classes/com/learning/newdemo/controller/DebateHistoryController.class new file mode 100644 index 0000000000000000000000000000000000000000..fa04a40bbc98632f40a57c775c7a25a97ab2fbaa GIT binary patch literal 2789 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 literal 0 HcmV?d00001 diff --git a/Debate_backend/target/classes/com/learning/newdemo/entity/DebateHistory.class b/Debate_backend/target/classes/com/learning/newdemo/entity/DebateHistory.class new file mode 100644 index 0000000000000000000000000000000000000000..1e14160e7de9cc390560be4de8f8decec9cff806 GIT binary patch literal 6537 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 a9HjXB6MVCfO0TA2Ee#tKKA^4^Jp2Vkt={Ya literal 0 HcmV?d00001 diff --git a/Debate_backend/target/classes/com/learning/newdemo/mapper/DebateHistoryMapper.class b/Debate_backend/target/classes/com/learning/newdemo/mapper/DebateHistoryMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..06fa9fab34c61a57dfa18c11de008610a6cab53c GIT binary patch literal 3091 zcmb_e-Ez}L6h3Q6(u5EaNCUK`ETkcJYAh&iVJ4+h$5x8Ku|2i}{kiZc*4ADsOP-aS zjGOVZ^c{NHi#|Z#pfA(u*_GrUtig7s7nyihI^TEBcmDMEzkmJ(0MFss5+n#{4Y#e? z%oGlHnwrDTEY^0lw%O@0q2<|$>9ZHy^Ig$9Qg=&mnZWv6^VHOA6D>+7Z&|}9u*e;c z3H*^s7Gfcp<8!|^4!NH)5bTKgE!QfW!fZ3236H>4Ym}J4?MfG|+w3*>_=(N3j^p~K z&s_)KeNb>kQ!_heqs26i{&G(K!l`L@8G(O{VpXrys8OtyXh2kN1tBK8 z7(<;~X=;jQw~a2VgYR~DBTYN5$0cc+`bclrh1+#3FCAetT*pU?G!^WWv$MKjUf1?h z^mVpytXGrU=Mvno`f0j-9>Ir4MW7x;9O|HGDvCv&17~vqkGct{DvGI}BCtC}j8aFb zhH9*%H{Uad2~4o{iuJrpSQLc7m0ww}EL_aK-y@LV7J)U7*_h*l-mwaRz)rF-EC2(e zZZff-3huf-x3vPwi5!bT!~~YByy=*JSD^frS&YA#qlUgkrfEe`RT1Ee<*HuLb2Yk0 z4=bgkD0N}_>6;gNMW@nh%sYLKi3%d<(^4g`SLnfyv>_NOR+rUC^LjN$;Qn}V4(fQU zN_VCtMp>bMn}OB^xE|GG zHf&M@i*#k!QUrdO!H4MmDAUmyTk?I`9*~y>Z=0frtwZ3uIBipN)G&dEGq@bqB)6mp z-HwGtQc<%e7yty4aej=HN!1rP<<-<(9UUFh8|YZEVS&CpF6Xl~{oT%~>b3E?r@Cj9 zqaSwHSP(%b-*CSb<&wbfp%PXrvxkGYl~L1?W~;-Y91diB7Gh@Lx7p7A>W#SjxJqy+&XSj>D;`En0ZrXgx z<9zZN%KJwi=M&01-*n0r^AsH{mgH8W$xuMNQ84eG$9LXEhF;i`j~}I|k6Y)Ohu;s4 z)`4t>Ggn|YK8+J1rVuB0#uDzI0K>W%#=P_Dw;38QZX-y|gUT!zuXLI#6?55Ia(8Dp zy?q|W&`;wr^}cDcQgyqc!4A2NoAFkD^s6WM+{(yByGVe5+|K~Z`1Q2_i;#dNJS`CT zKwjeCCwR4juU+{WhzF~170+uw!8KU-U;~Y=!wt9`8EvA$hxnI(EoHohhBpVsx8OED zTa~0A$x9D55#VE_2mqE7AOY?SKt7EDxvM~KCPqMpKkpzO9d+p504vU+`x6e`Lx64g z3`GfL*gya&!+0b+6NXZX2e2C&VkFWqIbxiW5i1S%CL-7vMvz3D&!;<(j&JC8EiNqoiu~l4p`x9itf2U>X=loFN%W9OcU}R1xYO zk!H&bQ;B5mh&Q-pb4p*wC!)*hLxWiy}?RaR`x6EXNHaFMmi1m+&7V->a-sP zLpmBLs;kJ)+!5-~Ex+X+uL>nRiX={**6Em5?HCrLD%b9UZkebI^>&X=M3j}fI4>&> zS9OoFvG+faXQUMmNZEPTKj07O??JSpFr!w`*8aeBPW<3 z=@VJ|aF6~+$rqTWX-HFme)mHu^u`h_k_ZP6uuKdOX+OY7011z+tpSOi`iA*b`U_b1 h4lVf6zu@%_ydGw#6Z-&6f>{p + + + + + + + + + + + + + + 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/target/classes/mapper/DebateHistoryMapper.xml b/Debate_backend/target/classes/mapper/DebateHistoryMapper.xml new file mode 100644 index 0000000..98ce52c --- /dev/null +++ b/Debate_backend/target/classes/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 diff --git a/database/database.sql b/database/database.sql index fa536e2..871208a 100644 --- a/database/database.sql +++ b/database/database.sql @@ -19,7 +19,7 @@ CREATE TABLE IF NOT EXISTS `wx_user` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信用户表'; --- 在现有database.sql文件末尾添加(不要删除原有内容) + CREATE TABLE IF NOT EXISTS `debate_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL COMMENT '关联用户ID',