BackupMaterialServiceImpl.java
6.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.wondertek.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wondertek.dto.BackupChangeDto;
import com.wondertek.dto.BackupMaterialDto;
import com.wondertek.dto.BackupUploadVo;
import com.wondertek.entity.BackupConfig;
import com.wondertek.entity.BackupMaterial;
import com.wondertek.entity.StreamTask;
import com.wondertek.exception.BusinessException;
import com.wondertek.mapper.BackupConfigMapper;
import com.wondertek.mapper.BackupMaterialMapper;
import com.wondertek.service.BackupMaterialService;
import com.wondertek.service.FileService;
import com.wondertek.util.FileUtils;
import com.wondertek.util.PageBean;
import com.wondertek.util.ResultBean;
import com.wondertek.util.UUIDUtil;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class BackupMaterialServiceImpl extends ServiceImpl<BackupMaterialMapper, BackupMaterial> implements BackupMaterialService {
@Resource
private BackupMaterialMapper backupMaterialMapper;
@Resource
private FileService fileService;
@Value("${file.realPath}")
private String realPath;
@Resource
private BackupConfigMapper backupConfigMapper;
@Override
public PageBean queryPage(BackupMaterialDto backupMaterialDto) {
Integer page = backupMaterialDto.getPage();
Integer size = backupMaterialDto.getSize();
LambdaQueryWrapper<BackupMaterial> queryWrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(backupMaterialDto.getBackupName())){
queryWrapper.like(BackupMaterial::getBackupName,backupMaterialDto.getBackupName());
}
Page<BackupMaterial> pageInfo = new Page<>(page, size);
IPage<BackupMaterial> resultPage = backupMaterialMapper.selectPage(pageInfo, queryWrapper);
return new PageBean(Integer.parseInt(String.valueOf(resultPage.getPages())),resultPage.getTotal(),resultPage.getRecords());
}
@Override
public ResultBean upload(MultipartFile backupFile, BackupUploadVo backupUploadVo) {
//上传文件
if(!"mp4".equalsIgnoreCase(backupUploadVo.getFileType())){
throw new BusinessException("仅支持上传mp4格式的垫片文件!");
}
String fileId = UUIDUtil.randomUUID();
String fileName = backupUploadVo.getBackupName() + "." + backupUploadVo.getFileType();
///home/wondertek/material_file_assets/dianpian/2025/07/24/roomid/
String filedir = FileUtils.generateDianPianDir(backupUploadVo.getRoomId().toString(), realPath);
String destFilePath = filedir + fileName;//文件上传目录
try {
fileService.upload(backupFile, destFilePath);
} catch (Exception e) {
return ResultBean.error("上传文件异常");
}
//保存垫片素材表
BackupMaterial backupMaterial = new BackupMaterial();
backupMaterial.setFileId(fileId);
backupMaterial.setBackupName(backupUploadVo.getBackupName());
String relativePath = destFilePath.replace(realPath, "");
backupMaterial.setFilePath(relativePath);
backupMaterial.setFileType(backupUploadVo.getFileType());
backupMaterial.setCreatedTime(LocalDateTime.now());
backupMaterial.setCreatedBy("admin");
backupMaterialMapper.insert(backupMaterial);
//添加审片间垫片配置
LambdaQueryWrapper<BackupConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BackupConfig::getRoomId,backupUploadVo.getRoomId());
wrapper.eq(BackupConfig::getBackupOrder,backupUploadVo.getBackupOrder());
BackupConfig backupConfig = backupConfigMapper.selectOne(wrapper);
if(ObjectUtil.isNull(backupConfig)){
backupConfig = new BackupConfig();
}
backupConfig.setRoomId(backupUploadVo.getRoomId());
backupConfig.setBackupId(backupMaterial.getId());
backupConfig.setBackupOrder(backupUploadVo.getBackupOrder());
backupConfigMapper.insertOrUpdate(backupConfig);
//对应垫片任务切源(转码平台演示环境已挂载统一存储)
LambdaQueryWrapper<StreamTask> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(StreamTask::getRoomId,backupUploadVo.getRoomId());
wrapper1.eq(StreamTask::getPlayType,"play");
//判断是否需要修改当前播出流的垫片
return ResultBean.ok("上传成功");
}
@Override
public ResultBean getByRoom(Long roomId) {
LambdaQueryWrapper<BackupConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BackupConfig::getRoomId,roomId);
List<BackupConfig> backupConfigs = backupConfigMapper.selectList(wrapper);
return ResultBean.ok(backupConfigs);
}
@Override
public ResultBean change(BackupChangeDto backupChangeDto) {
LambdaQueryWrapper<BackupConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BackupConfig::getRoomId,backupChangeDto.getRoomId());
List<BackupConfig> backupConfigs = backupConfigMapper.selectList(wrapper);
if(CollectionUtil.isNotEmpty(backupConfigs)){
backupConfigs.forEach(backupConfig -> {
if(backupConfig.getBackupId().equals(backupChangeDto.getBackupId())){
backupConfig.setBackupStatus("1");
//将播放流的垫片配置切到此垫片上
}else {
backupConfig.setBackupStatus("0");
}
backupConfigMapper.updateById(backupConfig);
});
}
return ResultBean.ok();
}
}