You've already forked FrameTour-BE
feat(puzzle): 实现拼图生成去重机制
- 新增内容哈希计算逻辑,基于元素内容生成SHA256哈希用于去重判断 - 添加重复图片检测功能,当所有IMAGE元素使用相同URL时抛出异常 - 实现历史记录查询接口,根据模板ID、内容哈希和景区ID查找重复记录 - 扩展生成响应对象,增加isDuplicate和originalRecordId字段标识复用情况 - 更新数据库实体和Mapper,新增content_hash、is_duplicate等字段支持去重 - 添加完整的单元测试和集成测试,覆盖去重检测、哈希计算等核心逻辑 - 引入DuplicateImageException和PuzzleBizException异常类完善错误处理
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package com.ycwl.basic.puzzle.exception;
|
||||
|
||||
/**
|
||||
* 重复图片异常
|
||||
* 当所有图片元素使用相同URL时抛出此异常
|
||||
*
|
||||
* @author Claude
|
||||
* @since 2025-01-21
|
||||
*/
|
||||
public class DuplicateImageException extends PuzzleBizException {
|
||||
|
||||
private static final String DEFAULT_MESSAGE_TEMPLATE = "检测到所有图片元素使用相同URL,拒绝生成: %s (元素数量: %d)";
|
||||
|
||||
private final String duplicateImageUrl;
|
||||
private final int elementCount;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param duplicateImageUrl 重复的图片URL
|
||||
* @param elementCount 使用相同URL的元素数量
|
||||
*/
|
||||
public DuplicateImageException(String duplicateImageUrl, int elementCount) {
|
||||
super(String.format(DEFAULT_MESSAGE_TEMPLATE, duplicateImageUrl, elementCount));
|
||||
this.duplicateImageUrl = duplicateImageUrl;
|
||||
this.elementCount = elementCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造函数(带自定义消息)
|
||||
*
|
||||
* @param message 自定义错误消息
|
||||
* @param duplicateImageUrl 重复的图片URL
|
||||
* @param elementCount 元素数量
|
||||
*/
|
||||
public DuplicateImageException(String message, String duplicateImageUrl, int elementCount) {
|
||||
super(message);
|
||||
this.duplicateImageUrl = duplicateImageUrl;
|
||||
this.elementCount = elementCount;
|
||||
}
|
||||
|
||||
public String getDuplicateImageUrl() {
|
||||
return duplicateImageUrl;
|
||||
}
|
||||
|
||||
public int getElementCount() {
|
||||
return elementCount;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.ycwl.basic.puzzle.exception;
|
||||
|
||||
public class PuzzleBizException extends RuntimeException {
|
||||
public PuzzleBizException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user