腾讯音视频回调

This commit is contained in:
俞扬
2023-06-29 02:00:14 +08:00
parent aad7bedce3
commit 0d8e9b99dc
21 changed files with 484 additions and 64 deletions

View File

@@ -0,0 +1,13 @@
package com.cool.store.service;
import com.cool.store.exception.ApiException;
import com.cool.store.request.GetTipsInfoReq;
/**
* @Author: young.yu
* @Date: 2023-06-28 21:34
* @Description:
*/
public interface CommonService {
String getTipsInfo(GetTipsInfoReq request) throws ApiException;
}

View File

@@ -69,5 +69,4 @@ public interface InterviewService {
public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile);
String getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException;
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.service;
import com.cool.store.dto.trtc.callback.VideoCallBackDTO;
import com.cool.store.request.TRTCVideoCallBackReq;
public interface TRTCVideoService {
@@ -7,6 +8,8 @@ public interface TRTCVideoService {
/**
* 音视频上传成功后的回调处理
*/
void handleVideoCallBack(TRTCVideoCallBackReq req);
// void handleVideoCallBack(TRTCVideoCallBackReq req);
void handleVideoCallBack(VideoCallBackDTO videoCallBackDTO);
}

View File

@@ -0,0 +1,129 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dto.log.LogFieldDTO;
import com.cool.store.entity.HyPartnerCertificationInfoDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerTaskInfoLogDO;
import com.cool.store.enums.OperateLogFieldValueEnum;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.mapper.HyPartnerCertificationInfoMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.mapper.HyPartnerTaskInfoLogMapper;
import com.cool.store.request.GetTipsInfoReq;
import com.cool.store.service.CommonService;
import com.cool.store.utils.StringUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
* @Author: young.yu
* @Date: 2023-06-28 21:35
* @Description:
*/
@Service
public class CommonServiceImpl implements CommonService {
@Autowired
private HyPartnerTaskInfoLogMapper hyPartnerTaskInfoLogMapper;
@Autowired
private HyPartnerLineInfoMapper hyPartnerLineInfoMapper;
@Autowired
private HyPartnerCertificationInfoMapper hyPartnerCertificationInfoMapper;
@Override
public String getTipsInfo(GetTipsInfoReq request) throws ApiException {
List<HyPartnerLineInfoDO> lineInfoList = hyPartnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(Long.parseLong(request.getPartnerLineId())));
if (CollectionUtils.isEmpty(lineInfoList)) {
return null;
}
HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfoList.get(0);
String workflowStage = hyPartnerLineInfoDO.getWorkflowStage();
String workflowStatus = hyPartnerLineInfoDO.getWorkflowStatus();
Long partnerLineId = hyPartnerLineInfoDO.getId();
if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_2.getCode())) {
return getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间");
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_3.getCode())) {
String tips = getInterviewTips(partnerLineId, OperateTypeEnum.MODIFY_INTERVIEW_TIME, "");
if (StringUtils.isNotEmpty(tips)) {
return tips + ("修改面试预约时间");
} else {
return getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间");
}
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_4.getCode())) {
return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "结束面试");
}else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_5.getCode())) {
HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId);
String intentionContractNo = null;
if(partnerCertificationInfoDO != null){
intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo();
}
return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "发起加盟商资质审核|"+intentionContractNo);
}else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) {
HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId);
String intentionContractNo = null;
if(partnerCertificationInfoDO != null){
intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo();
}
return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "审核通过|"+intentionContractNo);
}
return null;
}
public String getInterviewTips(Long partnerLineId, OperateTypeEnum operateTypeEnum, String action) {
StringBuffer sb = new StringBuffer();
sb.append(StringUtil.REPLACE_0)
.append(" ")
.append(StringUtil.REPLACE_1)
.append("").append(StringUtil.REPLACE_2).append(" ").append(action);
String content = sb.toString();
return getSuitableTipsInfo(content, partnerLineId,
operateTypeEnum,
OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode(),
OperateLogFieldValueEnum.MOBILE.getCode(),
OperateLogFieldValueEnum.OPERATE_TIME.getCode());
}
public String getSuitableTipsInfo(String content, Long partnerLineId, OperateTypeEnum operateTypeEnum, String... replaceKeys) {
List<HyPartnerTaskInfoLogDO> hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(partnerLineId, operateTypeEnum.getCode());
if (CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)) {
return null;
}
HyPartnerTaskInfoLogDO hyPartnerTaskInfoLogDO = hyPartnerTaskInfoLogDOS.get(0);
String fieldCopy = hyPartnerTaskInfoLogDO.getFieldCopy();
List<LogFieldDTO> logFieldDTOS = JSONObject.parseArray(fieldCopy, LogFieldDTO.class);
List<String> params = new ArrayList<>();
for (String replaceKey : replaceKeys) {
String value = "";
Optional<LogFieldDTO> logFieldDTOOptional = logFieldDTOS.stream().filter(l -> l.getCode().equals(replaceKey)).findFirst();
if (logFieldDTOOptional.isPresent()) {
value = logFieldDTOOptional.get().getValue();
try {
value = DateUtil.format(DateUtil.parseDateTime(value), "yyyy/MM/dd HH:mm:ss");
} catch (Exception e) {
//异常代表不是时间格式,不做处理
}
}
params.add(value);
}
return MessageFormat.format(content, params.toArray());
}
}

View File

@@ -200,8 +200,12 @@ public class FlowServiceImpl implements FlowService {
hyPartnerInterviewDO.setUpdateTime(new Date());
//更新面试信息
//更新面试状态
hyPartnerInterviewDO.setStatus(null);
interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_5);
//获取当前操作人
LoginUserInfo operator = CurrentUserHolder.getUser();
hyPartnerInterviewDO.setRecorder(operator.getName()+" "+operator.getMobile());
hyPartnerInterviewDO.setRecordTime(new Date());
hyPartnerInterviewDO.setAuthCode(authCode);
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
@@ -213,7 +217,6 @@ public class FlowServiceImpl implements FlowService {
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
}
//记录日志
LoginUserInfo operator = CurrentUserHolder.getUser();
CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
.summary(request.getSummary()).qualiVerifyContent(JSON.toJSONString(partnerCertificationInfoDO)).build();
logService.recordBizLog(operator,hyPartnerInterviewDO.getPartnerLineId(), OperateTypeEnum.CREATE_QUALIFYVERIFY,log);

View File

@@ -12,7 +12,6 @@ import com.cool.store.context.LoginUserInfo;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dao.HyPartnerTaskInfoLogDAO;
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
@@ -102,9 +101,6 @@ public class InterviewServiceImpl implements InterviewService {
@Autowired
private EnterpriseUserDAO enterpriseUserDAO;
@Autowired
private HyPartnerTaskInfoLogMapper hyPartnerTaskInfoLogMapper;
@Override
public List<InterviewVO> getInterviewList(GetInterviewListReq request) {
List<InterviewVO> interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request);
@@ -629,39 +625,4 @@ public class InterviewServiceImpl implements InterviewService {
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
}
@Override
public String getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException {
String content = " 修改面试预约时间";
String operatorName = null;
String operatorMobile = null;
String operatorTime = null;
List<HyPartnerTaskInfoLogDO> hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(request.getPartnerLineId(), OperateTypeEnum.MODIFY_INTERVIEW_TIME.getCode());
if(CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)){
hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(request.getPartnerLineId(), OperateTypeEnum.INTERVIEW_APPOINTMENT.getCode());
if(CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)){
return null;
}
content = " 提交面试预约时间";
}
HyPartnerTaskInfoLogDO hyPartnerTaskInfoLogDO = hyPartnerTaskInfoLogDOS.get(0);
String fieldCopy = hyPartnerTaskInfoLogDO.getFieldCopy();
List<LogFieldDTO> logFieldDTOS = JSONObject.parseArray(fieldCopy, LogFieldDTO.class);
for(LogFieldDTO logFieldDTO:logFieldDTOS){
if(OperateLogFieldValueEnum.OPERATE_TIME.getCode().equals(logFieldDTO.getCode())){
operatorTime = logFieldDTO.getValue();
}
if(OperateLogFieldValueEnum.MOBILE.getCode().equals(logFieldDTO.getCode())){
operatorMobile = logFieldDTO.getValue();
}
if(OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode().equals(logFieldDTO.getCode())){
operatorName = logFieldDTO.getValue();
}
}
StringBuffer sb = new StringBuffer();
sb.append(operatorName)
.append(" "+operatorMobile)
.append("").append(DateUtil.format(DateUtil.parseDateTime(operatorTime),"yyyy/MM/dd HH:mm:ss")).append(content);
return sb.toString();
}
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.service.impl;
import com.cool.store.dto.trtc.callback.VideoCallBackDTO;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.request.TRTCVideoCallBackReq;
import com.cool.store.service.TRTCVideoService;
@@ -15,12 +16,19 @@ public class TRTCVideoServiceImpl implements TRTCVideoService {
/**
* 音视频上传成功后的回调处理
*/
// @Override
// public void handleVideoCallBack(TRTCVideoCallBackReq req) {
// //将视频播放地址拼接到对应的面试信息字段中
// String videoUrl = req.getEventInfo().getPayLoad().getTencentVod().getVideoUrl();
// String roomId = req.getEventInfo().getRoomId();
// interviewMapper.addVideoUrl(roomId, videoUrl);
// }
@Override
public void handleVideoCallBack(TRTCVideoCallBackReq req) {
public void handleVideoCallBack(VideoCallBackDTO videoCallBackDTO) {
//将视频播放地址拼接到对应的面试信息字段中
String videoUrl = req.getEventInfo().getPayLoad().getTencentVod().getVideoUrl();
String roomId = req.getEventInfo().getRoomId();
String videoUrl = videoCallBackDTO.getEventInfo().getPayload().getTencentVod().getVideoUrl();
String roomId = videoCallBackDTO.getEventInfo().getRoomId();
interviewMapper.addVideoUrl(roomId, videoUrl);
}
}