package com.jeesharp.business.modules.tool.application;

import com.jeesharp.business.modules.tool.dto.ImageProcessDTO;
import com.jeesharp.business.modules.tool.service.ImageToolService;
import com.jeesharp.business.modules.tool.vo.ImageAnalysisVO;
import com.jeesharp.business.modules.tool.vo.ImageProcessResultVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

/**
 * 图片工具应用服务
 */
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class ImageToolApplicationService {

    private final ImageToolService imageToolService;

    /**
     * 处理图片并上传
     *
     * @param file 原始图片文件
     * @param dto  处理参数
     * @return 处理结果（包含上传后的URL等信息）
     */
    @Transactional(rollbackFor = Exception.class)
    public ImageProcessResultVO processAndUpload(MultipartFile file, ImageProcessDTO dto) {
        return imageToolService.processImage(file, dto);
    }

    /**
     * 处理图片并返回字节数组（用于下载）
     *
     * @param file 原始图片文件
     * @param dto  处理参数
     * @return 处理后的图片字节数组
     */
    public byte[] processForDownload(MultipartFile file, ImageProcessDTO dto) {
        return imageToolService.processImageToBytes(file, dto);
    }

    /**
     * 分析图片并返回推荐参数
     *
     * @param file 原始图片文件
     * @return 图片分析结果（包含推荐参数）
     */
    public ImageAnalysisVO analyzeImage(MultipartFile file) {
        return imageToolService.analyzeImage(file);
    }
}
