wanghongbo

日志修改

... ... @@ -24,4 +24,9 @@ public class MarkParam {
* 标记类型 markStart;markEnd
*/
private String operationType;
/**
* 审片间名称
*/
private String roomName;
}
... ...
... ... @@ -18,7 +18,7 @@ public class OperationLog {
@TableId (type = IdType.AUTO)
private Long id;
/** 业务ID */
private String businesId;
private String businessId;
/** 业务类型(如 cloudMonitor-云审片) */
private String businessType;
/** 操作类型(音画屏蔽、画面屏蔽、恢复、延时、标记) */
... ... @@ -38,6 +38,10 @@ public class OperationLog {
private String reponseCode;
/** 操作状态(0-成功 1-失败) */
private String status;
/** 审片间名称 */
private String roomName;
/** 描述信息 */
private String message;
}
\ No newline at end of file
... ...
... ... @@ -6,8 +6,9 @@ package com.wondertek.enums;
public enum RoomOperationEnum {
MARK_START("markStart", "标记开始"),
MARK_EDN("markEnd", "标记结束"),
BLOCK("block", "屏蔽"),
RECOVER("recover", "恢复");
BLOCK("block", "音画屏蔽"),
RECOVER("recover", "音画恢复"),
DELAY("delay", "延时");
private final String code;
... ...
... ... @@ -12,4 +12,6 @@ import com.wondertek.util.PageBean;
*/
public interface OperationLogService {
PageBean pageList(OperationLogDto operationLogDto);
void save(OperationLog opLog);
}
... ...
... ... @@ -35,4 +35,9 @@ public class OperationLogServiceImpl implements OperationLogService {
return new PageBean(Integer.parseInt(String.valueOf(resultPage.getPages())),resultPage.getTotal(),resultPage.getRecords());
}
@Override
public void save(OperationLog opLog) {
operationLogMapper.insertOrUpdate(opLog);
}
}
... ...
... ... @@ -11,13 +11,16 @@ import com.wondertek.dto.DelayParam;
import com.wondertek.dto.MarkParam;
import com.wondertek.entity.LiveMonitorRoom;
import com.wondertek.entity.MonitorMark;
import com.wondertek.entity.OperationLog;
import com.wondertek.entity.StreamTask;
import com.wondertek.enums.GlobalCodeEnum;
import com.wondertek.enums.RoomOperationEnum;
import com.wondertek.exception.BusinessException;
import com.wondertek.exception.ServiceException;
import com.wondertek.mapper.LiveMonitorRoomMapper;
import com.wondertek.mapper.MonitorMarkMapper;
import com.wondertek.mapper.StreamTaskMapper;
import com.wondertek.service.OperationLogService;
import com.wondertek.service.RoomOperationSerivice;
import com.wondertek.util.JSONUtils;
import com.wondertek.util.ResponseData;
... ... @@ -55,41 +58,68 @@ public class RoomOperationServiceImpl implements RoomOperationSerivice {
private String blockStatusUrl;
@Resource
private MonitorMarkMapper monitorMarkMapper;
@Resource
private OperationLogService operationLogService;
@Override
public ResultBean setDelayTime(DelayParam delayParam) {
LiveMonitorRoom liveMonitorRoom = liveMonitorRoomMapper.selectById(delayParam.getRoomId());
//日志
OperationLog opLog = new OperationLog();
opLog.setRoomName(liveMonitorRoom.getName());
opLog.setBusinessId(delayParam.getRoomId().toString());
opLog.setBusinessType("cloudMonitor");
opLog.setOperationType(RoomOperationEnum.DELAY.getCode());
opLog.setCreatedBy("admin");
opLog.setCreatedTime(LocalDateTime.now());
opLog.setRequestUrl(delayTimeUrl);
LambdaQueryWrapper<StreamTask> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StreamTask::getRoomId,delayParam.getRoomId());
List<StreamTask> streamTasks = streamTaskMapper.selectList(wrapper);
//1.依次取出延时1、延时2、播出任务,设置转码平台相应的延时时间
streamTasks.forEach(streamTask -> {
for (StreamTask streamTask : streamTasks){
if (streamTask.getPlayType().equals("delay1")){
delayTask(streamTask.getTaskId(),delayParam.getDelayFirst());
ResponseData responseData = delayTask(streamTask.getTaskId(), delayParam.getDelayFirst());
if (!responseData.isSuccess()){
opLog.setStatus("1");
opLog.setReponseResult(JSONUtils.obj2json(responseData));
return ResultBean.error();
}
//更新任务
streamTask.setDelayTime(delayParam.getDelayFirst());
streamTaskMapper.updateById(streamTask);
}
if (streamTask.getPlayType().equals("delay2")){
delayTask(streamTask.getTaskId(),delayParam.getDelaySecond());
ResponseData responseData = delayTask(streamTask.getTaskId(),delayParam.getDelaySecond());
if (!responseData.isSuccess()){
opLog.setStatus("1");
opLog.setReponseResult(JSONUtils.obj2json(responseData));
return ResultBean.error();
}
//更新任务
streamTask.setDelayTime(delayParam.getDelaySecond());
streamTaskMapper.updateById(streamTask);
}
if (streamTask.getPlayType().equals("play")){
delayTask(streamTask.getTaskId(),delayParam.getDelayPlay());
ResponseData responseData = delayTask(streamTask.getTaskId(),delayParam.getDelayPlay());
if (!responseData.isSuccess()){
opLog.setStatus("1");
opLog.setReponseResult(JSONUtils.obj2json(responseData));
return ResultBean.error();
}
//更新任务
streamTask.setDelayTime(delayParam.getDelayPlay());
streamTaskMapper.updateById(streamTask);
}
});
//2.更新多画
}
opLog.setStatus("0");
opLog.setReponseResult(JSONUtils.obj2json(ResponseData.ok()));
operationLogService.save(opLog);
return ResultBean.ok("设置成功");
}
public void delayTask(String taskId,int delayTime){
public ResponseData delayTask(String taskId, int delayTime){
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("taskId", taskId);
paramsMap.put("delayTime", delayTime);
... ... @@ -108,11 +138,14 @@ public class RoomOperationServiceImpl implements RoomOperationSerivice {
}else {
log.info("请求转码系统延时接口响应失败,response:{}",response);
}
return response;
} else {
log.error("请求转码系统延时接口失败,url:{},body:{}", delayTimeUrl, execute.body());
return ResponseData.error("请求转码系统延时接口失败");
}
} catch (Exception e) {
log.error("请求转码系统延时接口失败,url:{}", delayTimeUrl, e);
return ResponseData.error("请求转码系统延时接口失败");
}
}
... ... @@ -139,6 +172,17 @@ public class RoomOperationServiceImpl implements RoomOperationSerivice {
return ResultBean.error("当前审片间没有播放任务");
}
//日志
OperationLog opLog = new OperationLog();
opLog.setRoomName(liveMonitorRoom.getName());
opLog.setBusinessId(blockParam.getRoomId().toString());
opLog.setBusinessType("cloudMonitor");
opLog.setOperationType(blockParam.getBlockStatus().equals(0)?
RoomOperationEnum.BLOCK.getCode():RoomOperationEnum.RECOVER.getCode());
opLog.setCreatedBy("admin");
opLog.setCreatedTime(LocalDateTime.now());
opLog.setRequestUrl(blockStatusUrl);
log.info("-->审片间屏蔽前置逻辑耗时:{}ms",System.currentTimeMillis()-start);
streamTasks.forEach(streamTask -> {
//调用屏蔽接口
... ... @@ -159,20 +203,31 @@ public class RoomOperationServiceImpl implements RoomOperationSerivice {
});
if (response.getResultCode().equals("0")) {
log.info("请求转码系统屏蔽/恢复接口成功");
if(streamTask.getTaskType().equals("0")){
opLog.setStatus(GlobalCodeEnum.SUCCESS.getCode());
opLog.setReponseResult(JSONUtils.obj2json(response));
}
}else {
log.info("请求转码系统屏蔽/恢复接口响应失败,response:{}",response);
if(streamTask.getTaskType().equals("0")){
opLog.setStatus(GlobalCodeEnum.FAILURE.getCode());
opLog.setReponseResult(JSONUtils.obj2json(response));
}
throw new BusinessException("block_status_error", "屏蔽状态错误");
}
} else {
log.error("请求转码系统屏蔽/恢复接口失败,url:{},body:{}", blockStatusUrl, execute.body());
opLog.setStatus(GlobalCodeEnum.FAILURE.getCode());
throw new BusinessException("block_status_error", "屏蔽状态错误");
}
} catch (Exception e) {
log.error("请求转码系统屏蔽/恢复接口失败,url:{}", blockStatusUrl, e);
opLog.setStatus(GlobalCodeEnum.FAILURE.getCode());
throw new BusinessException("block_status_error", "屏蔽状态错误");
}
});
//保存操作日志
operationLogService.save(opLog);
//保存播控操作记录
MonitorMark monitorMark = new MonitorMark();
monitorMark.setRoomId(blockParam.getRoomId());
... ... @@ -207,6 +262,19 @@ public class RoomOperationServiceImpl implements RoomOperationSerivice {
monitorMark.setOperationTime(markParam.getMarkTime());
monitorMark.setCreatedBy("admin");
monitorMarkMapper.insert(monitorMark);
//日志
OperationLog opLog = new OperationLog();
opLog.setRoomName(markParam.getRoomName());
opLog.setBusinessId(markParam.getRoomId().toString());
opLog.setBusinessType("cloudMonitor");
opLog.setOperationType(markParam.getOperationType());
opLog.setCreatedBy("admin");
opLog.setCreatedTime(LocalDateTime.now());
opLog.setRequestUrl(delayTimeUrl);
opLog.setStatus("0");
operationLogService.save(opLog);
return ResultBean.ok(monitorMark);
}
... ...