Toggle navigation
Toggle navigation
This project
Loading...
Sign in
crp
/
crp-operation
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
wanghongbo
2025-08-22 16:15:48 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e02c3221dddf63a29031f3e521169566a9973790
e02c3221
1 parent
c8b03b7c
素材提交、上传审片间
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
131 additions
and
13 deletions
src/main/java/com/wondertek/controller/BackupMaterialController.java
src/main/java/com/wondertek/dto/MaterialSubmitVo.java
src/main/java/com/wondertek/enums/MaterialSourceEnum.java
src/main/java/com/wondertek/service/BackupMaterialService.java
src/main/java/com/wondertek/service/impl/BackupMaterialServiceImpl.java
src/main/java/com/wondertek/controller/BackupMaterialController.java
View file @
e02c322
package
com
.
wondertek
.
controller
;
import
com.wondertek.dto.BackupChangeDto
;
import
com.wondertek.dto.BackupMaterialDto
;
import
com.wondertek.dto.BackupUploadVo
;
import
com.wondertek.dto.MaterialUploadVo
;
import
com.wondertek.dto.*
;
import
com.wondertek.service.BackupMaterialService
;
import
com.wondertek.util.PageBean
;
import
com.wondertek.util.ResultBean
;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -57,13 +55,13 @@ public class BackupMaterialController {
* @description 提交到素材库
* @author W5669
* @date 2025/8/21 11:26
* @param
backupChangeDt
o
* @param
materialSubmitV
o
* @return ResultBean
*/
@PostMapping
(
"submit"
)
ResultBean
submit
(
BackupChangeDto
backupChangeDto
){
//
return
ResultBean
.
ok
();
ResultBean
submit
(
@RequestBody
@Validated
MaterialSubmitVo
materialSubmitVo
){
log
.
info
(
"-->直播剪辑素材提交:{}"
,
materialSubmitVo
);
return
backupMaterialService
.
submitOrUpload
(
materialSubmitVo
);
}
/**
...
...
src/main/java/com/wondertek/dto/MaterialSubmitVo.java
0 → 100644
View file @
e02c322
package
com
.
wondertek
.
dto
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.Data
;
/**
* @Description: 素材提交
* @Author W5669
* @Create 2025/7/24
* @Version 1.0
*/
@Data
public
class
MaterialSubmitVo
{
//png、jpg、mp4等
@NotBlank
(
message
=
"文件类型不能为空"
)
private
String
fileType
;
//垫片名
@NotBlank
(
message
=
"垫片名不能为空"
)
private
String
backupName
;
//审片间id
private
Long
roomId
;
//1:垫片1,2:垫片2
private
Integer
backupOrder
;
//垫片状态 0-默认 1-当前选中
private
String
backupStatus
;
// 操作类型 0-提交素材库 1-上传审片间
@NotBlank
(
message
=
"操作类型不能为空"
)
private
String
operateType
;
//文件路径,绝对路径
@NotBlank
(
message
=
"文件路径不能为空"
)
private
String
filePath
;
//封面图路径,绝对路径
private
String
coverPath
;
//时长
@NotNull
(
message
=
"时长不能为空"
)
private
Long
duration
;
}
...
...
src/main/java/com/wondertek/enums/MaterialSourceEnum.java
View file @
e02c322
...
...
@@ -6,7 +6,7 @@ package com.wondertek.enums;
public
enum
MaterialSourceEnum
{
UPLOAD
(
"upload"
,
"上传"
),
NAS
(
"nas"
,
"nas"
),
clip
(
"clip"
,
"剪辑"
);
CLIP
(
"clip"
,
"剪辑"
);
private
final
String
code
;
private
final
String
name
;
...
...
src/main/java/com/wondertek/service/BackupMaterialService.java
View file @
e02c322
package
com
.
wondertek
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.wondertek.dto.BackupChangeDto
;
import
com.wondertek.dto.BackupMaterialDto
;
import
com.wondertek.dto.BackupUploadVo
;
import
com.wondertek.dto.MaterialUploadVo
;
import
com.wondertek.dto.*
;
import
com.wondertek.entity.BackupMaterial
;
import
com.wondertek.util.PageBean
;
import
com.wondertek.util.ResultBean
;
...
...
@@ -23,4 +20,6 @@ public interface BackupMaterialService extends IService<BackupMaterial> {
ResultBean
uploadToMaterial
(
MultipartFile
backupFile
,
MaterialUploadVo
materialUploadVo
);
ResultBean
batchDelete
(
Long
[]
ids
);
ResultBean
submitOrUpload
(
MaterialSubmitVo
materialSubmitVo
);
}
...
...
src/main/java/com/wondertek/service/impl/BackupMaterialServiceImpl.java
View file @
e02c322
...
...
@@ -406,4 +406,86 @@ public class BackupMaterialServiceImpl extends ServiceImpl<BackupMaterialMapper,
return
rows
>
0
?
ResultBean
.
ok
()
:
ResultBean
.
error
();
}
@Override
public
ResultBean
submitOrUpload
(
MaterialSubmitVo
materialSubmitVo
)
{
//校验文件类型
if
(!
"mp4"
.
equalsIgnoreCase
(
materialSubmitVo
.
getFileType
())){
return
ResultBean
.
error
(
"文件类型错误"
);
}
StreamTask
streamTask
=
null
;
if
(
materialSubmitVo
.
getOperateType
().
equals
(
"1"
)){
if
(
materialSubmitVo
.
getRoomId
()==
null
||
materialSubmitVo
.
getBackupOrder
()
==
null
){
return
ResultBean
.
error
(
"请选择审片间和垫片序号"
);
}
//找到对应垫片任务
LambdaQueryWrapper
<
StreamTask
>
backupWrapper
=
new
LambdaQueryWrapper
<>();
backupWrapper
.
eq
(
StreamTask:
:
getRoomId
,
materialSubmitVo
.
getRoomId
());
String
palyType
=
materialSubmitVo
.
getBackupOrder
()
==
1
?
PlayTypeEnum
.
BACKUP1
.
getCode
()
:
PlayTypeEnum
.
BACKUP2
.
getCode
();
backupWrapper
.
eq
(
StreamTask:
:
getPlayType
,
palyType
);
streamTask
=
streamTaskMapper
.
selectOne
(
backupWrapper
);
if
(
streamTask
==
null
){
return
ResultBean
.
error
(
"未找到该直播间对应的垫片任务"
);
}
}
String
fileId
=
UUIDUtil
.
randomUUID
();
//保存垫片素材表
BackupMaterial
backupMaterial
=
new
BackupMaterial
();
backupMaterial
.
setFileId
(
fileId
);
backupMaterial
.
setBackupName
(
materialSubmitVo
.
getBackupName
());
String
destFilePath
=
materialSubmitVo
.
getFilePath
();
String
relativePath
=
materialSubmitVo
.
getFilePath
().
replace
(
realPath
,
""
);
backupMaterial
.
setFilePath
(
relativePath
);
backupMaterial
.
setFileType
(
materialSubmitVo
.
getFileType
());
backupMaterial
.
setCreatedTime
(
LocalDateTime
.
now
());
backupMaterial
.
setCreatedBy
(
"admin"
);
backupMaterial
.
setDel
(
"0"
);
backupMaterial
.
setSource
(
MaterialSourceEnum
.
CLIP
.
getCode
());
//封面图
if
(
StringUtils
.
isNotEmpty
(
materialSubmitVo
.
getCoverPath
())){
backupMaterial
.
setCoverPath
(
materialSubmitVo
.
getCoverPath
().
replace
(
realPath
,
""
));
}
//时长
backupMaterial
.
setDuration
(
materialSubmitVo
.
getDuration
());
backupMaterialMapper
.
insert
(
backupMaterial
);
if
(
materialSubmitVo
.
getOperateType
().
equals
(
"1"
)){
}
//添加审片间垫片配置
LambdaQueryWrapper
<
BackupConfig
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
BackupConfig:
:
getRoomId
,
materialSubmitVo
.
getRoomId
());
wrapper
.
eq
(
BackupConfig:
:
getBackupOrder
,
materialSubmitVo
.
getBackupOrder
());
BackupConfig
backupConfig
=
backupConfigMapper
.
selectOne
(
wrapper
);
if
(
ObjectUtil
.
isNull
(
backupConfig
)){
backupConfig
=
new
BackupConfig
();
backupConfig
.
setBackupStatus
(
"0"
);
}
backupConfig
.
setRoomId
(
materialSubmitVo
.
getRoomId
());
backupConfig
.
setBackupId
(
backupMaterial
.
getId
());
backupConfig
.
setBackupOrder
(
materialSubmitVo
.
getBackupOrder
());
backupConfig
.
setBackupPath
(
relativePath
);
backupConfigMapper
.
insertOrUpdate
(
backupConfig
);
//对应垫片任务切源(转码平台演示环境已挂载统一存储),请求转码平台修改垫片任务直播源
changeChannelSource
(
streamTask
.
getTaskId
(),
destFilePath
);
//判断是否需要修改当前播出流的垫片
if
(
"1"
.
equals
(
backupConfig
.
getBackupStatus
())){
//切换播出流垫片(主、备)
LambdaQueryWrapper
<
StreamTask
>
playWrapper
=
new
LambdaQueryWrapper
<>();
playWrapper
.
eq
(
StreamTask:
:
getRoomId
,
materialSubmitVo
.
getRoomId
());
playWrapper
.
eq
(
StreamTask:
:
getPlayType
,
"play"
);
List
<
StreamTask
>
playTasks
=
streamTaskMapper
.
selectList
(
playWrapper
);
if
(
CollectionUtil
.
isNotEmpty
(
playTasks
)){
playTasks
.
forEach
(
playTask
->
{
changeBackup
(
playTask
.
getTaskId
(),
destFilePath
);
});
}
}
return
ResultBean
.
ok
(
"提交成功"
);
}
}
...
...
Please
register
or
login
to post a comment