You've already forked FrameTour-BE
feat(puzzle): 优化拼图生成逻辑并新增完整测试套件
- 在PuzzleGenerateServiceImpl中改进图片上传逻辑,支持contentType指定 - 在PuzzleImageRenderer中优化背景图片缩放算法,使用原生Java方法提升性能 - 修改scaleImage方法实现,完善多种图片适配模式(COVER、CONTAIN、FILL等) - 新增PuzzleRealScenarioIntegrationTest集成测试类,覆盖真实业务场景 - 添加PuzzleTemplateServiceImplTest单元测试,使用Mockito模拟数据库交互 - 创建MockImageUtil工具类,支持测试过程中生成各类模拟图片 - 构建PuzzleTestDataBuilder测试数据构造器,简化测试模板和元素创建 - 增加RealScenarioTestHelper辅助类,提升测试代码复用性 -
This commit is contained in:
@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Comparator;
|
||||
@@ -148,15 +149,16 @@ public class PuzzleGenerateServiceImpl implements IPuzzleGenerateService {
|
||||
byte[] imageBytes = baos.toByteArray();
|
||||
|
||||
// 生成文件名
|
||||
String fileName = String.format("puzzle/%s/%s.%s",
|
||||
templateCode,
|
||||
String fileName = String.format("%s.%s",
|
||||
UUID.randomUUID().toString().replace("-", ""),
|
||||
outputFormat.toLowerCase()
|
||||
);
|
||||
|
||||
// 使用项目现有的存储工厂上传
|
||||
// 使用项目现有的存储工厂上传(转换为InputStream)
|
||||
try {
|
||||
return StorageFactory.use().uploadFile(imageBytes, "puzzle", fileName);
|
||||
ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);
|
||||
String contentType = "PNG".equals(outputFormat) ? "image/png" : "image/jpeg";
|
||||
return StorageFactory.use().uploadFile(contentType, inputStream, "puzzle", templateCode, fileName);
|
||||
} catch (Exception e) {
|
||||
log.error("上传图片失败: fileName={}", fileName, e);
|
||||
throw new IOException("图片上传失败", e);
|
||||
|
||||
Reference in New Issue
Block a user