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);
|
}
|
}
|
}
|