package com.rj.service; import com.baomidou.mybatisplus.extension.service.IService; import com.rj.controller.TextModelController; import com.rj.entity.ImageModel; import java.util.Map; /** * 图像模型服务接口 * * 提供图像模型相关的业务逻辑接口,包括: * - 图像模型记录的增删改查操作 * - 根据不同条件查询图像模型记录 * - 图像模型数据的业务处理逻辑 * * 继承MyBatis-Plus的IService接口,获得基础的CRUD能力, * 同时定义特定的业务方法。 * * @author 系统生成 * @date 2025/1/30 * @version 1.0 */ public interface IImageModelService extends IService { /** * 保存图像模型记录 * * 将图像模型数据保存到数据库中,包括完整的业务逻辑处理。 * 该方法会进行数据验证、日志记录等操作。 * * @param imageModel 图像模型记录对象,包含所有必要的字段信息 * @return 是否保存成功,true表示保存成功,false表示保存失败 */ boolean saveImageModel(ImageModel imageModel); /** * 根据UUID查询图像模型记录 * * 通过唯一标识符查询对应的图像模型记录。 * UUID是主键,查询结果唯一。 * * @param uuid 唯一标识符,对应数据库主键 * @return 图像模型记录,如果未找到则返回null */ ImageModel getByUuid(String uuid); /** * 根据请求ID查询图像模型记录 * * 通过请求ID查询对应的图像模型记录。 * 一个请求ID可能对应多条记录,此方法返回最新的一条。 * * @param requestId 请求ID,用于追踪处理请求 * @return 图像模型记录,如果未找到则返回null */ ImageModel getByRequestId(String requestId); /** * 根据任务ID查询图像模型记录 * * 通过任务ID查询对应的图像模型记录。 * 一个任务ID可能对应多条记录,此方法返回最新的一条。 * * @param taskId 任务ID,用于追踪异步处理任务 * @return 图像模型记录,如果未找到则返回null */ ImageModel getByTaskId(String taskId); /** * 根据所属人电话查询图像模型记录 * * 通过所属人电话查询对应的图像模型记录。 * 一个电话号码可能对应多条记录,此方法返回最新的一条。 * * @param ownerPhone 所属人电话,用于查询特定用户的记录 * @return 图像模型记录,如果未找到则返回null */ ImageModel getByOwnerPhone(String ownerPhone); /** * 去除图像中的中英文字符或常见水印 * * 处理图像去除水印的业务逻辑,包括: * - 图像预处理和参数设置 * - 调用AI模型进行水印去除 * - 结果处理和URL生成 * - 记录保存和状态更新 * * @param imageModel 图像模型记录对象,包含处理参数和结果信息 * @return 处理后的图像模型记录,包含结果URL等信息 */ ImageModel removeWatermar(ImageModel imageModel); /** * 上传图片素材 * * 处理图片素材上传的完整业务逻辑,包括: * - 文件验证和格式检查(根据阿里云参数要求) * - 上传到MinIO存储 * - 生成永久URL和临时URL * - 保存上传记录到数据库 * * @param file 上传的图片文件 * @param ownerName 所属人姓名 * @param ownerPhone 所属人电话 * @param imageType 图片类型(base_image主体图像 或 ref_image引导图像) * @param imageName 图像名称 * @return 图像模型记录,包含上传结果和URL信息 */ ImageModel uploadImageMaterial(org.springframework.web.multipart.MultipartFile file, String ownerName, String ownerPhone, String imageType, String imageName); /** * 上传引导图像 * * 专门用于上传引导图像的方法,自动转换为带透明背景的RGBA四通道图像 * 支持常见图像格式(JPG、PNG、GIF、BMP、WEBP),系统会自动转换为RGBA格式 * * @param file 上传的引导图像文件 * @param ownerName 所属人姓名 * @param ownerPhone 所属人电话 * @param imageName 图像名称 * @return 图像模型记录,包含上传结果和URL信息 */ ImageModel uploadRefImage(org.springframework.web.multipart.MultipartFile file, String ownerName, String ownerPhone, String imageName); /** * 图像处理(支持主体图像和引导图像) * * 根据阿里云图像参数要求进行图像处理: * - base_image_url: 主体图像URL(必选,PNG格式,RGBA四通道,长边不超过2048像素) * - ref_image_url: 引导图像URL(可选,JPG/PNG/WEBP格式) * * @param baseImageModel 主体图像模型记录 * @param refImageModel 引导图像模型记录(可选) * @param prompt 处理提示词 * @param functionName 功能名称 * @return 处理后的图像模型记录 */ ImageModel processImageWithRef(ImageModel baseImageModel, ImageModel refImageModel, String prompt, String functionName); boolean removeByUuid(String uuid); /** * 文本生成图像 * * 根据文本提示词生成图像,包括: * - 调用AI图像生成服务 * - 处理生成结果 * - 保存生成记录 * * @param request 文本生成图像请求参数 * @return 生成结果,包含图像URL等信息 */ Map generateImageByText(TextModelController.ImageProcessingRequest request); /** * 图生图 * * 根据图片和指令生成新图片,包括: * - 验证API Key和参数 * - 构建请求体 * - 调用阿里云图生图API * - 处理异步响应 * - 返回任务信息 * * @param multipartFile 上传的图片文件 * @param refPrompt 参考提示词 * @param ownerName 所属人姓名 * @param ownerPhone 所属人电话 * @param imageName 图片名称 * @param model 模型名称,默认为wanx-v1 * @param parameters 参数字符串(JSON格式) * @return 生成结果,包含任务ID等信息 */ Map generateImageToImage(org.springframework.web.multipart.MultipartFile multipartFile, String refPrompt, String ownerName, String ownerPhone, String imageName, String model, String parameters); }