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-07-24 18:05:37 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
0dd366445afbac4b5a2486cbe92721e8fff143d8
0dd36644
1 parent
44207956
垫片上传、切垫片、垫片列表
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
282 additions
and
13 deletions
src/main/java/com/wondertek/controller/BackupMaterialController.java
src/main/java/com/wondertek/dto/BackupChangeDto.java
src/main/java/com/wondertek/dto/BackupUploadVo.java
src/main/java/com/wondertek/entity/BackupConfig.java
src/main/java/com/wondertek/entity/BackupMaterial.java
src/main/java/com/wondertek/service/BackupMaterialService.java
src/main/java/com/wondertek/service/FileService.java
src/main/java/com/wondertek/service/impl/BackupMaterialServiceImpl.java
src/main/java/com/wondertek/service/impl/FileServiceImpl.java
src/main/java/com/wondertek/util/FileUtils.java
src/main/java/com/wondertek/util/UUIDUtil.java
src/main/resources/application-test.yml
src/main/java/com/wondertek/controller/BackupMaterialController.java
View file @
0dd3664
package
com
.
wondertek
.
controller
;
import
com.wondertek.dto.BackupChangeDto
;
import
com.wondertek.dto.BackupMaterialDto
;
import
com.wondertek.dto.BackupUploadVo
;
import
com.wondertek.service.BackupMaterialService
;
...
...
@@ -8,10 +9,7 @@ import com.wondertek.util.PageBean;
import
com.wondertek.util.ResultBean
;
import
jakarta.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
@Slf4j
...
...
@@ -27,9 +25,34 @@ public class BackupMaterialController {
return
backupMaterialService
.
queryPage
(
backupMaterialDto
);
}
//垫片上传
/**
* @description 垫片上传
* @author W5669
* @date 2025/7/24
* @param backupFile
* @param backupUploadVo
* @return ResultBean
*/
@PostMapping
(
"upload"
)
ResultBean
upload
(
MultipartFile
backupFile
,
BackupUploadVo
backupUploadVo
){
return
backupMaterialService
.
upload
(
backupFile
,
backupUploadVo
);
}
/**
* @description 获取审片间垫片列表
* @author W5669
* @date 2025/7/24
* @param roomId
* @return ResultBean
*/
@GetMapping
(
"getByRoom"
)
ResultBean
getByRoom
(
@RequestParam
(
value
=
"roomId"
)
Long
roomId
){
return
backupMaterialService
.
getByRoom
(
roomId
);
}
@PostMapping
(
"change"
)
ResultBean
change
(
@RequestBody
BackupChangeDto
backupChangeDto
){
return
backupMaterialService
.
change
(
backupChangeDto
);
}
}
...
...
src/main/java/com/wondertek/dto/BackupChangeDto.java
0 → 100644
View file @
0dd3664
package
com
.
wondertek
.
dto
;
import
lombok.Data
;
/**
* @Description: 垫片切换请求体
* @Author W5669
* @Create 2025/7/24
* @Version 1.0
*/
@Data
public
class
BackupChangeDto
{
private
Long
roomId
;
private
Long
backupId
;
}
...
...
src/main/java/com/wondertek/dto/BackupUploadVo.java
View file @
0dd3664
...
...
@@ -15,8 +15,8 @@ public class BackupUploadVo {
//垫片名
private
String
backupName
;
//审片间id
private
Stri
ng
roomId
;
private
Lo
ng
roomId
;
//1:垫片1,2:垫片2
private
String
backupOrder
;
private
Integer
backupOrder
;
}
...
...
src/main/java/com/wondertek/entity/BackupConfig.java
View file @
0dd3664
...
...
@@ -23,6 +23,7 @@ public class BackupConfig {
private
String
backupPath
;
/** 垫片序号 */
private
Integer
backupOrder
;
/** 垫片状态 0-默认 1-当前选中 */
private
String
backupStatus
;
// Getter 和 Setter 方法
}
\ No newline at end of file
...
...
src/main/java/com/wondertek/entity/BackupMaterial.java
View file @
0dd3664
package
com
.
wondertek
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
org.yaml.snakeyaml.events.Event
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
...
...
@@ -20,8 +22,10 @@ import java.util.Date;
@TableName
(
"crp_backup_material"
)
public
class
BackupMaterial
extends
Model
<
BackupMaterial
>
{
/** id */
@TableId
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 文件标识 */
private
String
fileId
;
/** 文件类型 */
private
String
fileType
;
/** 文件路径 */
...
...
src/main/java/com/wondertek/service/BackupMaterialService.java
View file @
0dd3664
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.entity.BackupMaterial
;
...
...
@@ -13,4 +14,8 @@ public interface BackupMaterialService extends IService<BackupMaterial> {
PageBean
queryPage
(
BackupMaterialDto
BackupMaterialDto
);
ResultBean
upload
(
MultipartFile
backupFile
,
BackupUploadVo
backupUploadVo
);
ResultBean
getByRoom
(
Long
roomId
);
ResultBean
change
(
BackupChangeDto
backupChangeDto
);
}
...
...
src/main/java/com/wondertek/service/FileService.java
0 → 100644
View file @
0dd3664
package
com
.
wondertek
.
service
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.IOException
;
/**
* @Description: 文件服务
* @Author W5669
* @Create 2025/7/24
* @Version 1.0
*/
public
interface
FileService
{
/**
* @Description: 文件上传
* @Author W5669
* @Create 2025/7/24
* @Param [backupFile, destFilePath]
* @Return void
*/
void
upload
(
MultipartFile
backupFile
,
String
destFilePath
)
throws
IOException
;
}
...
...
src/main/java/com/wondertek/service/impl/BackupMaterialServiceImpl.java
View file @
0dd3664
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.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
)
{
...
...
@@ -46,11 +66,77 @@ public class BackupMaterialServiceImpl extends ServiceImpl<BackupMaterialMapper,
@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
);
//对应垫片任务切源(转码平台演示环境已挂载统一存储)
//判断是否需要修改当前播出流的垫片
return
null
;
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
();
}
}
...
...
src/main/java/com/wondertek/service/impl/FileServiceImpl.java
0 → 100644
View file @
0dd3664
package
com
.
wondertek
.
service
.
impl
;
import
com.wondertek.service.FileService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.IOException
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
/**
* @Description:
* @Author W5669
* @Create 2025/7/24
* @Version 1.0
*/
@Service
@Slf4j
public
class
FileServiceImpl
implements
FileService
{
@Override
public
void
upload
(
MultipartFile
backupFile
,
String
filePath
)
throws
IOException
{
// 检查文件是否为空
if
(
backupFile
.
isEmpty
())
{
throw
new
IllegalArgumentException
(
"上传文件为空"
);
}
// 创建目标文件对象
File
dest
=
new
File
(
filePath
);
// 检查目标目录是否存在,不存在则创建
File
parentDir
=
dest
.
getParentFile
();
if
(!
parentDir
.
exists
())
{
if
(!
parentDir
.
mkdirs
())
{
throw
new
IOException
(
"目录创建失败: "
+
parentDir
.
getAbsolutePath
());
}
}
try
{
// 转存文件到指定路径
backupFile
.
transferTo
(
dest
);
}
catch
(
IOException
e
)
{
throw
new
IOException
(
"文件写入失败: "
+
e
.
getMessage
(),
e
);
}
catch
(
IllegalStateException
e
)
{
throw
new
IOException
(
"文件状态错误: "
+
e
.
getMessage
(),
e
);
}
}
}
...
...
src/main/java/com/wondertek/util/FileUtils.java
0 → 100644
View file @
0dd3664
package
com
.
wondertek
.
util
;
import
cn.hutool.core.util.StrUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* Title: FileUtils <br>
* Description: FileUtils <br>
*/
@Slf4j
public
class
FileUtils
{
/**
* <p><b>Title:</b> getDatePathI</p>
* <p><b>Description:</b> 得到 年/月/日 格式字符串,如: 2020/03/30</p>
*
* @return
*/
public
static
String
getDatePathI
()
{
SimpleDateFormat
ymd
=
new
SimpleDateFormat
(
"yyyy/MM/dd"
);
return
ymd
.
format
(
new
Date
());
}
/**
* 垫片文件存储规则
*
* @param id
* @param realPath
* @return
*/
public
static
String
generateDianPianDir
(
String
id
,
String
realPath
)
{
return
generateDianPianDir
(
id
,
realPath
,
getDatePathI
());
}
public
static
String
generateDianPianDir
(
String
id
,
String
realPath
,
String
time
)
{
return
StrUtil
.
concat
(
false
,
new
String
[]
{
realPath
,
"dianpian/"
,
time
,
"/"
,
id
,
"/"
});
}
}
...
...
src/main/java/com/wondertek/util/UUIDUtil.java
0 → 100644
View file @
0dd3664
package
com
.
wondertek
.
util
;
import
java.util.UUID
;
public
class
UUIDUtil
{
public
static
String
randomUUID
()
{
String
uuid
=
UUID
.
randomUUID
().
toString
().
replaceAll
(
"-"
,
""
);
return
uuid
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
randomUUID
());
}
}
...
...
src/main/resources/application-test.yml
View file @
0dd3664
...
...
@@ -60,9 +60,13 @@ mybatis-plus:
logic-delete-value
:
0
transcode
:
delayTimeUrl
:
http://192.168.1.41:8080/transcode/delayTime
# 延迟接口
delayTimeUrl
:
http://192.168.1.237:9002/api/v1/delayTime
# 延迟接口
blockStatusUrl
:
http://192.168.1.237:9002/api/v1/blockStatus
# 屏蔽/恢复
getTaskDetail
:
http://192.168.1.237:9002/api/v1/getTaskDetail
file
:
realPath
:
/home/wondertek/material_file_assets/
crp
:
user
:
username
:
admin
...
...
Please
register
or
login
to post a comment