package com.rongyichuang.media.service; import com.rongyichuang.media.dto.MediaSaveInput; import com.rongyichuang.media.dto.MediaSaveResponse; import com.rongyichuang.common.entity.Media; import com.rongyichuang.common.repository.MediaRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 媒体服务类 */ @Service public class MediaV2Service { private static final Logger log = LoggerFactory.getLogger(MediaV2Service.class); @Autowired private MediaRepository mediaRepository; /** * 保存媒体文件信息 * @param input 媒体保存输入 * @return 保存结果 */ public MediaSaveResponse saveMedia(MediaSaveInput input) { try { log.info("开始保存媒体文件,目标类型: {}, 目标ID: {}", input.getTargetType(), input.getTargetId()); // 验证输入参数 if (input.getTargetType() == null || input.getTargetType().trim().isEmpty()) { return MediaSaveResponse.error("目标类型不能为空"); } if (input.getTargetId() == null) { return MediaSaveResponse.error("目标ID不能为空"); } if (input.getUrl() == null || input.getUrl().trim().isEmpty()) { return MediaSaveResponse.error("文件URL不能为空"); } if (input.getMediaType() == null) { return MediaSaveResponse.error("媒体类型不能为空"); } // 创建Media实体 Media media = new Media(); // 将targetType字符串转换为整数 Integer targetTypeInt = convertTargetTypeToInt(input.getTargetType()); media.setTargetType(targetTypeInt); media.setTargetId(input.getTargetId()); media.setPath(input.getUrl()); media.setThumbPath(input.getThumbUrl()); media.setName(input.getFileName()); media.setFileExt(input.getFileExt()); media.setFileSize(input.getFileSize() != null ? input.getFileSize().intValue() : null); media.setDuration(input.getDuration()); media.setMediaType(input.getMediaType()); media.setState(1); // 1表示有效状态 // 保存到数据库 Media savedMedia = mediaRepository.save(media); log.info("媒体文件保存成功,ID: {}", savedMedia.getId()); return MediaSaveResponse.success("媒体文件保存成功", savedMedia.getId()); } catch (Exception e) { log.error("保存媒体文件时发生错误", e); return MediaSaveResponse.error("保存媒体文件失败:" + e.getMessage()); } } /** * 将目标类型字符串转换为整数 * @param targetType 目标类型字符串 * @return 对应的整数值 */ private Integer convertTargetTypeToInt(String targetType) { switch (targetType) { case "player": return 1; case "activity_player": return 2; default: throw new IllegalArgumentException("不支持的目标类型: " + targetType); } } }