From 60b680e06ffe9d89cfac974872c22fdde3c56344 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Fri, 22 Mar 2024 18:08:51 +0800 Subject: [PATCH] add --- .../com/cool/store/enums/UserRoleEnum.java | 29 ++++++++++++++++ .../com/cool/store/dao/LineInterviewDAO.java | 4 +++ .../store/mapper/LineInterviewMapper.java | 7 ++++ .../resources/mapper/LineInterviewMapper.xml | 4 +++ .../store/vo/interview/InterviewDetailVO.java | 6 ++-- .../store/service/LineInterviewService.java | 8 +++++ .../impl/LineInterviewServiceImpl.java | 21 +++++++++--- .../service/impl/TRTCVideoServiceImpl.java | 33 ++++++++++++++----- .../webb/PCLineInterviewController.java | 10 +++++- 9 files changed, 106 insertions(+), 16 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java new file mode 100644 index 000000000..011d2482f --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java @@ -0,0 +1,29 @@ +package com.cool.store.enums; + +/** + * @author zhangchenbiao + * @FileName: UserRoleEnum + * @Description: 用户职位 + * @date 2024-03-22 16:37 + */ +public enum UserRoleEnum { + + INVESTMENT_MANAGER(1, "招商经理"), + SELECT_SITE_MANAGER(2, "选址人员"), + REGION_MANAGER(3, "大区经理"), + THEATER_MANAGER(4, "战区经理"), + ; + + private Integer code; + private String desc; + + UserRoleEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getCode() { + return code; + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInterviewDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInterviewDAO.java index 71218573e..38149dac4 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInterviewDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInterviewDAO.java @@ -60,4 +60,8 @@ public class LineInterviewDAO { return lineInterviewMapper.selectByPrimaryKey(interviewId); } + public LineInterviewDO getInterviewInfoByRoomId(String roomId){ + return lineInterviewMapper.getInterviewInfoByRoomId(roomId); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInterviewMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInterviewMapper.java index 790328153..a40fd740b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInterviewMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInterviewMapper.java @@ -23,4 +23,11 @@ public interface LineInterviewMapper extends Mapper { * @return */ Page getInterviewerPage(LineInterviewPageRequest request); + + /** + * 根据房间号获取面试信息 + * @param roomId + * @return + */ + LineInterviewDO getInterviewInfoByRoomId(@Param("roomId") String roomId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/LineInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/LineInterviewMapper.xml index 64a093140..c6170d44d 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/LineInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/LineInterviewMapper.xml @@ -75,5 +75,9 @@ and a.interviewer_user_id = #{interviewerUserId} + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewDetailVO.java index 87023e848..1539453c5 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewDetailVO.java @@ -1,5 +1,6 @@ package com.cool.store.vo.interview; +import com.alibaba.fastjson.JSONObject; import com.cool.store.entity.LineInfoDO; import com.cool.store.entity.LineInterviewDO; import com.cool.store.vo.LineAuditInfoVO; @@ -8,6 +9,7 @@ import lombok.Data; import javax.persistence.Column; import java.util.Date; +import java.util.List; @Data public class InterviewDetailVO { @@ -67,7 +69,7 @@ public class InterviewDetailVO { private Integer interviewType; @ApiModelProperty("视频链接") - private String videoUrl; + private List videoUrl; @ApiModelProperty("审核信息") private LineAuditInfoVO auditInfo; @@ -91,7 +93,7 @@ public class InterviewDetailVO { result.setRoomStatus(interviewInfo.getRoomStatus()); result.setInterviewStatus(interviewInfo.getInterviewStatus()); result.setInterviewType(interviewInfo.getInterviewType()); - result.setVideoUrl(interviewInfo.getVideoUrl()); + result.setVideoUrl(JSONObject.parseArray(interviewInfo.getVideoUrl(), String.class)); return result; } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/LineInterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/LineInterviewService.java index a3aebfae0..5c4ff83bc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/LineInterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/LineInterviewService.java @@ -82,4 +82,12 @@ public interface LineInterviewService { * @return */ InterviewDetailVO getInterviewDetail(Long lineId, Integer interviewType); + + /** + * 上传文件 + * @param interviewId + * @param videoUrlList + * @return + */ + Boolean uploadVideo(Long interviewId, List videoUrlList); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java index 3e7abcea7..de11b8567 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java @@ -1,5 +1,6 @@ package com.cool.store.service.impl; +import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.dto.interview.LineInterviewPageDTO; @@ -30,10 +31,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -254,6 +252,21 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt return result; } + @Override + public Boolean uploadVideo(Long interviewId, List videoUrlList) { + LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfoById(interviewId); + if(Objects.isNull(interviewInfo)){ + throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST); + } + List videoList = JSONObject.parseArray(interviewInfo.getVideoUrl(), String.class); + if(videoList == null){ + videoList = new ArrayList<>(); + } + videoList.addAll(videoUrlList); + interviewInfo.setVideoUrl(JSONObject.toJSONString(videoList.stream().distinct().collect(Collectors.toList()))); + return lineInterviewDAO.updateInterviewInfo(interviewInfo) > 0; + } + @Override protected Boolean initStage(Long auditId, LineInfoDO lineInfo) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java index 3f50b9364..9db91fe26 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java @@ -1,26 +1,41 @@ package com.cool.store.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dao.LineInterviewDAO; import com.cool.store.dto.trtc.callback.VideoCallBackDTO; +import com.cool.store.entity.LineInterviewDO; import com.cool.store.service.TRTCVideoService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; + @Service public class TRTCVideoServiceImpl implements TRTCVideoService { - /*@Autowired - private HyPartnerInterviewMapper interviewMapper;*/ + @Resource + private LineInterviewDAO lineInterviewDAO; @Override public void handleVideoCallBack(VideoCallBackDTO videoCallBackDTO) { - //防重 - /*Boolean hasVideoUrl = interviewMapper.hasVideoUrls(videoCallBackDTO.getEventInfo().getPayload().getTencentVod().getVideoUrl()); - if (hasVideoUrl) { - return; - }*/ //将视频播放地址拼接到对应的面试信息字段中 String videoUrl = videoCallBackDTO.getEventInfo().getPayload().getTencentVod().getVideoUrl(); String roomId = videoCallBackDTO.getEventInfo().getRoomId(); - //interviewMapper.addVideoUrl(roomId, videoUrl); + LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfoByRoomId(roomId); + if(Objects.isNull(interviewInfo)){ + return; + } + String[] split = videoUrl.split(","); + List videoList = JSONObject.parseArray(interviewInfo.getVideoUrl(), String.class); + if(Objects.isNull(videoList)){ + videoList = new ArrayList<>(); + } + videoList.addAll(Stream.of(split).collect(Collectors.toList())); + interviewInfo.setVideoUrl(JSONObject.toJSONString(videoList.stream().distinct().collect(Collectors.toList()))); + lineInterviewDAO.updateInterviewInfo(interviewInfo); } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLineInterviewController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLineInterviewController.java index d4ac4454c..18ab5e3ca 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLineInterviewController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLineInterviewController.java @@ -19,6 +19,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * @author zhangchenbiao @@ -66,11 +67,18 @@ public class PCLineInterviewController { return ResponseResult.success(lineInterviewService.enterInterviewRoom(interviewId, userId, InterviewUserTypeEnum.INTERVIEWER)); } - @GetMapping("/finish") @ApiOperation("结束面试") + @GetMapping("/finish") public ResponseResult finishInterview(@RequestParam("interviewId")Long interviewId) throws ApiException { String userId = CurrentUserHolder.getUserId(); lineInterviewService.finishInterview(interviewId, userId); return ResponseResult.success(); } + + @ApiOperation("上传文件") + @GetMapping("/upload/video") + public ResponseResult uploadVideo(@RequestParam("interviewId")Long interviewId, @RequestParam("videoUrlList") List videoUrlList) throws ApiException { + lineInterviewService.uploadVideo(interviewId, videoUrlList); + return ResponseResult.success(); + } }