RoomOperationServiceImpl.java
3.51 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
package com.wondertek.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.type.TypeReference;
import com.wondertek.dto.DelayParam;
import com.wondertek.entity.LiveMonitorRoom;
import com.wondertek.entity.StreamTask;
import com.wondertek.mapper.LiveMonitorRoomMapper;
import com.wondertek.mapper.StreamTaskMapper;
import com.wondertek.service.RoomOperationSerivice;
import com.wondertek.util.JSONUtils;
import com.wondertek.util.ResponseData;
import com.wondertek.util.ResultBean;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description:
* @Author W5669
* @Create 2025/7/22
* @Version 1.0
*/
@Service
@Slf4j
public class RoomOperationServiceImpl implements RoomOperationSerivice {
@Resource
private LiveMonitorRoomMapper liveMonitorRoomMapper;
@Resource
private StreamTaskMapper streamTaskMapper;
@Value("${transcode.delayTimeUrl}")
private String delayTimeUrl;
@Override
public ResultBean setDelayTime(DelayParam delayParam) {
log.info("-->【云审片平台】审片间延时设置,delayParam:{}",delayParam);
LiveMonitorRoom liveMonitorRoom = liveMonitorRoomMapper.selectById(delayParam.getRoomId());
LambdaQueryWrapper<StreamTask> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StreamTask::getRoomId,delayParam.getRoomId());
List<StreamTask> streamTasks = streamTaskMapper.selectList(wrapper);
//1.依次取出延时1、延时2、播出任务,设置转码平台相应的延时时间
streamTasks.forEach(streamTask -> {
if (streamTask.getPlayType().equals("delay1")){
delayTask(streamTask.getTaskId(),delayParam.getDelayFirst());
//更新任务
streamTask.setDelayTime(delayParam.getDelayFirst());
streamTaskMapper.updateById(streamTask);
}
});
//2.更新多画
return ResultBean.ok("设置成功");
}
public void delayTask(String taskId,int delayTime){
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("taskId", taskId);
paramsMap.put("delayTime", delayTime);
HttpResponse execute = null;
try {
execute = HttpRequest.post(delayTimeUrl)
.header("Content-Type", "application/json")
.body(JSONUtils.obj2json(paramsMap)).timeout(30000).execute();
if (execute.isOk()) {
log.info("-->请求转码系统延时接口,url:{},paramsMap:{}",delayTimeUrl,paramsMap);
String body = execute.body();
ResponseData response = JSONUtils.jsonToObject(body, new TypeReference<ResponseData>() {
});
if (response.getResultCode().equals("0")) {
log.info("请求转码系统延时接口成功");
}else {
log.info("请求转码系统延时接口响应失败,response:{}",response);
}
} else {
log.error("请求转码系统延时接口失败,url:{},body:{}", delayTimeUrl, execute.body());
}
} catch (Exception e) {
log.error("请求转码系统延时接口失败,url:{}", delayTimeUrl, e);
}
}
}