Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-communication
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-communication
Commits
59331b17
Commit
59331b17
authored
Aug 05, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
b61f34a1
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
41 additions
and
68 deletions
+41
-68
yd-communication-api/src/main/java/com/yd/communication/api/controller/ApiRecordingTaskController.java
+3
-4
yd-communication-api/src/main/java/com/yd/communication/api/service/ApiRecordingTaskService.java
+1
-2
yd-communication-api/src/main/java/com/yd/communication/api/service/impl/ApiRecordingTaskServiceImpl.java
+34
-57
yd-communication-feign/src/main/java/com/yd/communication/feign/client/ApiRecordingTaskFeignClient.java
+2
-4
yd-communication-feign/src/main/java/com/yd/communication/feign/fallback/ApiRecordingTaskFeignFallbackFactory.java
+1
-1
No files found.
yd-communication-api/src/main/java/com/yd/communication/api/controller/ApiRecordingTaskController.java
View file @
59331b17
...
@@ -40,12 +40,11 @@ public class ApiRecordingTaskController implements ApiRecordingTaskFeignClient {
...
@@ -40,12 +40,11 @@ public class ApiRecordingTaskController implements ApiRecordingTaskFeignClient {
/**
/**
* 停止录制并上传视频
* 停止录制并上传视频
* @param taskId
* @param taskId 录制任务ID
* @param file
* @return
* @return
*/
*/
public
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
,
MultipartFile
file
)
{
public
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
)
{
return
apiRecordingTaskService
.
stopRecording
(
taskId
,
file
);
return
apiRecordingTaskService
.
stopRecording
(
taskId
);
}
}
/**
/**
...
...
yd-communication-api/src/main/java/com/yd/communication/api/service/ApiRecordingTaskService.java
View file @
59331b17
...
@@ -4,7 +4,6 @@ package com.yd.communication.api.service;
...
@@ -4,7 +4,6 @@ package com.yd.communication.api.service;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.communication.feign.request.recording.ApiStartRecordingRequest
;
import
com.yd.communication.feign.request.recording.ApiStartRecordingRequest
;
import
com.yd.communication.feign.response.recording.ApiQueryRecordingResponse
;
import
com.yd.communication.feign.response.recording.ApiQueryRecordingResponse
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -12,7 +11,7 @@ public interface ApiRecordingTaskService {
...
@@ -12,7 +11,7 @@ public interface ApiRecordingTaskService {
Result
<
String
>
startRecording
(
ApiStartRecordingRequest
request
);
Result
<
String
>
startRecording
(
ApiStartRecordingRequest
request
);
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
,
MultipartFile
file
);
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
);
Result
<
ApiQueryRecordingResponse
>
queryRecording
(
String
taskId
);
Result
<
ApiQueryRecordingResponse
>
queryRecording
(
String
taskId
);
}
}
yd-communication-api/src/main/java/com/yd/communication/api/service/impl/ApiRecordingTaskServiceImpl.java
View file @
59331b17
package
com
.
yd
.
communication
.
api
.
service
.
impl
;
package
com
.
yd
.
communication
.
api
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
...
@@ -13,15 +12,12 @@ import com.yd.communication.feign.response.recording.ApiQueryRecordingResponse;
...
@@ -13,15 +12,12 @@ import com.yd.communication.feign.response.recording.ApiQueryRecordingResponse;
import
com.yd.communication.service.model.RecordingTask
;
import
com.yd.communication.service.model.RecordingTask
;
import
com.yd.communication.service.service.ICoOperationLogService
;
import
com.yd.communication.service.service.ICoOperationLogService
;
import
com.yd.communication.service.service.IRecordingTaskService
;
import
com.yd.communication.service.service.IRecordingTaskService
;
import
com.yd.oss.feign.client.ApiOssFeignClient
;
import
com.yd.oss.feign.client.ApiChunkedUploadContextFeignClient
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.HashMap
;
...
@@ -36,14 +32,11 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
...
@@ -36,14 +32,11 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
private
IRecordingTaskService
iRecordingTaskService
;
private
IRecordingTaskService
iRecordingTaskService
;
@Resource
@Resource
private
Api
OssFeignClient
apiOss
FeignClient
;
private
Api
ChunkedUploadContextFeignClient
context
FeignClient
;
@Resource
@Resource
private
ICoOperationLogService
operationLogService
;
private
ICoOperationLogService
operationLogService
;
@Resource
private
ObjectMapper
objectMapper
;
// 注入 Jackson ObjectMapper
/**
/**
* 开始录制
* 开始录制
* @param request
* @param request
...
@@ -58,9 +51,6 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
...
@@ -58,9 +51,6 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
LambdaQueryWrapper
<
RecordingTask
>
checkWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
RecordingTask
>
checkWrapper
=
new
LambdaQueryWrapper
<>();
checkWrapper
.
eq
(
RecordingTask:
:
getBizId
,
request
.
getBizId
())
checkWrapper
.
eq
(
RecordingTask:
:
getBizId
,
request
.
getBizId
())
.
eq
(
RecordingTask:
:
getStatus
,
"2"
);
.
eq
(
RecordingTask:
:
getStatus
,
"2"
);
// if (iRecordingTaskService.count(checkWrapper) > 0) {
// throw new BusinessException("该会话已有进行中的录制任务");
// }
RecordingTask
task
=
new
RecordingTask
();
RecordingTask
task
=
new
RecordingTask
();
task
.
setRecordingTaskBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_RECORDING_TASK
.
getCode
()));
task
.
setRecordingTaskBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_RECORDING_TASK
.
getCode
()));
...
@@ -68,7 +58,6 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
...
@@ -68,7 +58,6 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
task
.
setTaskId
(
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
));
task
.
setTaskId
(
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
));
task
.
setBizType
(
request
.
getBizType
());
task
.
setBizType
(
request
.
getBizType
());
task
.
setBizId
(
request
.
getBizId
());
task
.
setBizId
(
request
.
getBizId
());
// task.setRoomId(request.getRoomId());
task
.
setStatus
(
"2"
);
// 录制中
task
.
setStatus
(
"2"
);
// 录制中
task
.
setStartTime
(
LocalDateTime
.
now
());
task
.
setStartTime
(
LocalDateTime
.
now
());
task
.
setCreatorId
(
"system"
);
task
.
setCreatorId
(
"system"
);
...
@@ -94,16 +83,15 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
...
@@ -94,16 +83,15 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
/**
/**
* 停止录制并上传视频文件到 OSS
* 停止录制并上传视频文件到 OSS
* @param taskId
* @param taskId 录制任务ID
* @param file
* @return
* @return
*/
*/
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
,
MultipartFile
file
)
{
public
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
)
{
log
.
info
(
"停止录制并上传文件: taskId={}
, fileName={}"
,
taskId
,
file
.
getOriginalFilename
()
);
log
.
info
(
"停止录制并上传文件: taskId={}
"
,
taskId
);
//
1.
查询录制任务
// 查询录制任务
LambdaQueryWrapper
<
RecordingTask
>
wrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
RecordingTask
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
RecordingTask:
:
getTaskId
,
taskId
);
wrapper
.
eq
(
RecordingTask:
:
getTaskId
,
taskId
);
RecordingTask
task
=
iRecordingTaskService
.
getOne
(
wrapper
);
RecordingTask
task
=
iRecordingTaskService
.
getOne
(
wrapper
);
...
@@ -111,64 +99,53 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
...
@@ -111,64 +99,53 @@ public class ApiRecordingTaskServiceImpl implements ApiRecordingTaskService {
throw
new
BusinessException
(
"录制任务不存在,taskId="
+
taskId
);
throw
new
BusinessException
(
"录制任务不存在,taskId="
+
taskId
);
}
}
// 2. 构造 OSS 上传请求参数
// 远程调用 OSS 微服务,完成分片上传(合并)
ApiUploadFileRequest
uploadRequest
=
new
ApiUploadFileRequest
();
String
projectBizId
=
""
;
// uploadRequest.setTenantBizId(TenantEnum.YD.getTenantBizId());
Result
<
Map
<
String
,
Object
>>
finishResult
=
contextFeignClient
.
finishChunks
(
taskId
,
projectBizId
);
// uploadRequest.setProjectBizId(ProjectEnum.SFP_CLIENT.getProjectBizId());
if
(
finishResult
==
null
||
finishResult
.
getCode
()
!=
200
)
{
uploadRequest
.
setObjectBizId
(
task
.
getBizId
());
String
errorMsg
=
finishResult
!=
null
?
finishResult
.
getMsg
()
:
"OSS服务返回空"
;
uploadRequest
.
setObjectType
(
"recording_task"
);
log
.
error
(
"完成分片上传失败: {}"
,
errorMsg
);
uploadRequest
.
setObjectTableName
(
"recording_task"
);
throw
new
BusinessException
(
"录制文件上传失败: "
+
errorMsg
);
// 3. 将 uploadRequest 转为 JSON 字符串
String
requestJson
;
try
{
requestJson
=
objectMapper
.
writeValueAsString
(
uploadRequest
);
}
catch
(
Exception
e
)
{
log
.
error
(
"序列化请求参数失败"
,
e
);
throw
new
BusinessException
(
"请求参数序列化失败"
);
}
// 4. 调用新的 Feign 接口(使用 JSON 字符串方式)
Result
<
ApiUploadResponse
>
uploadResult
=
apiOssFeignClient
.
uploadFileBodyWithJson
(
file
,
requestJson
);
if
(
uploadResult
==
null
||
uploadResult
.
getCode
()
!=
200
)
{
String
errorMsg
=
uploadResult
!=
null
?
uploadResult
.
getMsg
()
:
"上传服务返回空"
;
log
.
error
(
"上传文件到OSS失败: {}"
,
errorMsg
);
throw
new
BusinessException
(
"上传文件失败: "
+
errorMsg
);
}
}
//
5. 获
取上传结果
//
提
取上传结果
ApiUploadResponse
uploadResponse
=
upload
Result
.
getData
();
Map
<
String
,
Object
>
data
=
finish
Result
.
getData
();
if
(
uploadResponse
==
null
)
{
if
(
data
==
null
)
{
throw
new
BusinessException
(
"上传
文件
成功但未返回文件信息"
);
throw
new
BusinessException
(
"上传成功但未返回文件信息"
);
}
}
String
fileUrl
=
(
String
)
data
.
get
(
"fileUrl"
);
// 6. 更新录制任务
Long
fileSize
=
(
Long
)
data
.
get
(
"fileSize"
);
task
.
setFileUrl
(
uploadResponse
.
getUrl
());
String
fileKey
=
(
String
)
data
.
get
(
"fileKey"
);
task
.
setFileSize
(
uploadResponse
.
getFileSize
());
task
.
setStatus
(
"3"
);
// 更新录制任务
task
.
setFileFormat
(
uploadResponse
.
getFileType
());
task
.
setFileUrl
(
fileUrl
);
task
.
setFileSize
(
fileSize
);
task
.
setStatus
(
"3"
);
// 已录制
// 根据实际文件格式设置,可扩展
task
.
setFileFormat
(
"webm"
);
task
.
setStopTime
(
LocalDateTime
.
now
());
task
.
setStopTime
(
LocalDateTime
.
now
());
iRecordingTaskService
.
updateById
(
task
);
iRecordingTaskService
.
updateById
(
task
);
//
7.
返回结果
// 返回结果
Map
<
String
,
String
>
result
=
new
HashMap
<>();
Map
<
String
,
String
>
result
=
new
HashMap
<>();
result
.
put
(
"taskId"
,
task
.
getTaskId
());
result
.
put
(
"taskId"
,
task
.
getTaskId
());
result
.
put
(
"fileUrl"
,
task
.
getFileUrl
()
);
result
.
put
(
"fileUrl"
,
fileUrl
);
result
.
put
(
"fileKey"
,
uploadResponse
.
getFileKey
()
);
result
.
put
(
"fileKey"
,
fileKey
);
log
.
info
(
"录制文件上传成功,fileUrl={}"
,
task
.
getFileUrl
()
);
log
.
info
(
"录制文件上传成功,fileUrl={}"
,
fileUrl
);
//生成协同操作日志
//
6.
生成协同操作日志
operationLogService
.
log
(
operationLogService
.
log
(
task
.
getBizId
(),
task
.
getBizId
(),
"system"
,
"system"
,
"system"
,
"system"
,
"system"
,
"system"
,
"stop_recording"
,
"stop_recording"
,
String
.
format
(
"停止录制 taskId=%s, fileUrl=%s"
,
task
.
getTaskId
(),
task
.
getFileUrl
()
),
String
.
format
(
"停止录制 taskId=%s, fileUrl=%s"
,
task
.
getTaskId
(),
fileUrl
),
ClientInfoUtils
.
getDevice
(),
ClientInfoUtils
.
getDevice
(),
ClientInfoUtils
.
getClientIp
()
ClientInfoUtils
.
getClientIp
()
);
);
return
Result
.
success
(
result
);
return
Result
.
success
(
result
);
}
}
...
...
yd-communication-feign/src/main/java/com/yd/communication/feign/client/ApiRecordingTaskFeignClient.java
View file @
59331b17
...
@@ -28,13 +28,11 @@ public interface ApiRecordingTaskFeignClient {
...
@@ -28,13 +28,11 @@ public interface ApiRecordingTaskFeignClient {
/**
/**
* 停止录制并上传视频
* 停止录制并上传视频
* @param taskId 任务ID
* @param taskId 录制任务ID
* @param file 视频文件信息
* @return
* @return
*/
*/
@PostMapping
(
"/stop"
)
@PostMapping
(
"/stop"
)
Result
<
Map
<
String
,
String
>>
stopRecording
(
@RequestParam
(
"taskId"
)
String
taskId
,
Result
<
Map
<
String
,
String
>>
stopRecording
(
@RequestParam
(
"taskId"
)
String
taskId
);
@RequestParam
(
"file"
)
MultipartFile
file
);
/**
/**
* 查询录制信息
* 查询录制信息
...
...
yd-communication-feign/src/main/java/com/yd/communication/feign/fallback/ApiRecordingTaskFeignFallbackFactory.java
View file @
59331b17
...
@@ -26,7 +26,7 @@ public class ApiRecordingTaskFeignFallbackFactory implements FallbackFactory<Api
...
@@ -26,7 +26,7 @@ public class ApiRecordingTaskFeignFallbackFactory implements FallbackFactory<Api
}
}
@Override
@Override
public
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
,
MultipartFile
file
)
{
public
Result
<
Map
<
String
,
String
>>
stopRecording
(
String
taskId
)
{
return
null
;
return
null
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment