feat: 完成小说漫剧历史记录模块开发

This commit is contained in:
2026-02-24 21:07:31 +08:00
parent 05d3cc539d
commit 5f2ff36e2c
7 changed files with 276 additions and 26 deletions

View File

@@ -265,6 +265,46 @@ public class NovelComicApiController {
return ResponseEntity.ok(response);
}
/**
* 删除历史记录
* 不需要事务,不需要先查询,直接删除并通过影响行数判断
*/
@DeleteMapping("/history/{id}")
public ResponseEntity<Map<String, Object>> deleteHistory(
@PathVariable Long id,
@RequestHeader("Authorization") String token) {
Map<String, Object> response = new HashMap<>();
try {
String username = extractUsernameFromToken(token);
if (username == null) {
response.put("success", false);
response.put("message", "用户未登录");
return ResponseEntity.status(401).body(response);
}
int deleted = novelComicTaskRepository.deleteByIdAndUsername(id, username);
if (deleted > 0) {
logger.info("删除历史记录成功: id={}, user={}", id, username);
response.put("success", true);
response.put("message", "删除成功");
return ResponseEntity.ok(response);
} else {
response.put("success", false);
response.put("message", "记录不存在或无权限删除");
return ResponseEntity.status(404).body(response);
}
} catch (Exception e) {
logger.error("删除历史记录异常: id={}", id, e);
response.put("success", false);
response.put("message", "删除失败: " + e.getMessage());
return ResponseEntity.status(500).body(response);
}
}
/**
* 更新数据库中的任务记录
*/

View File

@@ -96,7 +96,7 @@ public class UserWorkApiController {
public ResponseEntity<Map<String, Object>> getMyWorks(
@RequestHeader(value = "Authorization", required = false) String token,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "1000") int size,
@RequestParam(defaultValue = "20") int size,
@RequestParam(defaultValue = "true") boolean includeProcessing,
@RequestParam(required = false) String workType) {
@@ -110,9 +110,10 @@ public class UserWorkApiController {
return ResponseEntity.status(401).body(response);
}
// 输入验证 - 移除size上限限制
// 输入验证 - 设置合理的size上限
if (page < 0) page = 0;
if (size <= 0) size = 1000; // 不设上限默认1000条
if (size <= 0) size = 20;
if (size > 100) size = 100; // 设置上限最多100条
// 解析作品类型
CommonTaskType filterType = null;

View File

@@ -5,6 +5,9 @@ import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.example.demo.model.NovelComicTask;
@@ -14,5 +17,11 @@ public interface NovelComicTaskRepository extends JpaRepository<NovelComicTask,
Optional<NovelComicTask> findByTaskId(String taskId);
Optional<NovelComicTask> findByIdAndUsername(Long id, String username);
Page<NovelComicTask> findByUsernameOrderByCreatedAtDesc(String username, Pageable pageable);
@Modifying
@Query("DELETE FROM NovelComicTask t WHERE t.id = :id AND t.username = :username")
int deleteByIdAndUsername(@Param("id") Long id, @Param("username") String username);
}