From fd4a2e4c23b9a3f8eb43519bec48d27536f17ed6 Mon Sep 17 00:00:00 2001 From: 18792927508 <1322446236@qq.com> Date: Fri, 19 Jan 2024 11:09:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=BC=9A=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mscase/MsCaseApplicationController.java | 53 +- .../mscase/MsVideoConferenceController.java | 172 +++++++ .../com/ruoyi/common/enums/AnnexTypeEnum.java | 1 + .../entity/mscase/MsCaseApplication.java | 6 +- .../domain/vo/mscase/BookingVO.java | 41 ++ .../vo/mscase/MsCaseApplicationReq.java | 18 + .../domain/vo/mscase/MsCaseApplicationVO.java | 4 + .../domain/vo/mscase/SendRoomNoMessageVO.java | 29 ++ .../domain/vo/mscase/VideoCallBackVO.java | 26 + .../mscase/MsCaseApplicationMapper.java | 35 +- .../mapper/mscase/MsCaseLogRecordMapper.java | 5 +- .../mscase/MsCaseApplicationService.java | 22 + .../mscase/VideoConferenceService.java | 83 ++++ .../impl/MsCaseApplicationServiceImpl.java | 181 ++++++- .../mscase/impl/MsCasePaymentServiceImpl.java | 2 + .../impl/VideoConferenceServiceImpl.java | 457 ++++++++++++++++++ .../resources/mapper/system/SysUserMapper.xml | 4 +- .../mscase/MsCaseApplicationMapper.xml | 16 + .../mscase/MsCaseLogRecordMapper.xml | 10 +- 19 files changed, 1131 insertions(+), 34 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsVideoConferenceController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/BookingVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/SendRoomNoMessageVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/VideoCallBackVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/VideoConferenceService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/VideoConferenceServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java index 226487d..53fb844 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java @@ -1,11 +1,13 @@ package com.ruoyi.web.controller.wisdomarbitrate.mscase; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.BookingVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService; @@ -33,7 +35,7 @@ public class MsCaseApplicationController extends BaseController { @GetMapping("/list") public TableDataInfo page(MsCaseApplicationReq req) { - startPage(); + //startPage(); List list = caseApplicationService.list(req); return getDataTable(list); } @@ -150,5 +152,54 @@ public class MsCaseApplicationController extends BaseController { public AjaxResult listMediator( ) { return caseApplicationService.listMediator(); } + /** + * 保存预约 + * @param + * @return + */ + @PostMapping("/updateBooking") + public AjaxResult updateBooking(@RequestBody BookingVO vo ) { + if(vo.getId()==null || CollectionUtil.isEmpty(vo.getHerDates())|| CollectionUtil.isEmpty(vo.getUserList())){ + return error("参数校验失败"); + } + return caseApplicationService.updateBooking(vo); + } + /** + * 核实调解员 + * @param + * @return + */ + @PostMapping("/verifyMediator") + public AjaxResult verifyMediator(@RequestBody BookingVO vo ) { + if((vo.getId() == null && StrUtil.isEmpty(vo.getBatchNumber())) + || vo.getCaseFlowId()==null + || CollectionUtil.isEmpty(vo.getUserList())){ + return error("参数校验失败"); + } + return caseApplicationService.verifyMediator(vo); + } + /** + * 确认调解时间 + * @param + * @return + */ + @PostMapping("/confirmDate") + public AjaxResult confirmDate(@RequestBody BookingVO vo ) { + if((vo.getId() == null && StrUtil.isEmpty(vo.getBatchNumber())) + || vo.getCaseFlowId()==null + || CollectionUtil.isEmpty(vo.getHerDates())){ + return error("参数校验失败"); + } + return caseApplicationService.verifyMediator(vo); + } + /** + * 查询预约信息 + * @param + * @return + */ + @GetMapping("/selectReservation") + public AjaxResult selectReservation(@RequestParam("id") Long id ) { + return caseApplicationService.selectReservation(id); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsVideoConferenceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsVideoConferenceController.java new file mode 100644 index 0000000..b4a994b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsVideoConferenceController.java @@ -0,0 +1,172 @@ +package com.ruoyi.web.controller.wisdomarbitrate.mscase; + +import cn.hutool.core.util.StrUtil; +import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsReservedConferenceVO; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.SendRoomNoMessageVO; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.VideoCallBackVO; +import com.ruoyi.wisdomarbitrate.service.mscase.VideoConferenceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * 视频会议控制层 + * @Author wangqiong + * @Date 2024/01/8 + * @Version V1.0 + */ +@RestController +@RequestMapping("/video") +public class MsVideoConferenceController extends BaseController { + @Autowired + private VideoConferenceService videoService; + /** + * 根据案件ID查询视频 + * @param caseId 案件id + * @return + */ + @GetMapping("/videoList") + public AjaxResult videoList(@RequestParam("caseId") Long caseId) { + + return videoService.videoList(caseId); + } + /** + * 获取userSign + * @param userId + * @return + */ + @Anonymous + @GetMapping("/generateUserSign") + public AjaxResult generateUserSign(@RequestParam(required = true) String userId){ + if(StrUtil.isEmpty(userId)){ + error("参数校验失败"); + } + return AjaxResult.success(videoService.generateUserSign(userId)); + } + /** + * 生成房间号 + * @return + */ + @Anonymous + @GetMapping("/createRoomId") + public AjaxResult createRoomId(@RequestParam("caseId") Long caseId) { + + return success(videoService.createRoomId(caseId)); + } + /** + * 根据案件id查询已预约的会议 + * @param caseId + * @return + */ + @Anonymous + @GetMapping("/reserveConferenceList") + public AjaxResult reserveConferenceList( @RequestParam("caseId") Long caseId) { + + return success(videoService.reserveConferenceList(caseId)); + } + /** + * 预约会议 + * @param reservedConferenceVO + * @return + */ + @PostMapping("/reservedConference") + public AjaxResult reservedConference(@Validated @RequestBody MsReservedConferenceVO reservedConferenceVO) throws Exception { + + return videoService.reservedConference(reservedConferenceVO); + } + /** + * 从腾讯云下载文件到本地 + * @param + * @return + */ + @Anonymous + @PostMapping("/videoRollBack") + public AjaxResult videoRollBack( @RequestBody VideoCallBackVO vo) { + if(StrUtil.isNotEmpty(vo.getFileId()) && StrUtil.isNotEmpty(vo.getVideoUrl()) && StrUtil.isNotEmpty(vo.getRoomId())) { + videoService.videoRollBack(vo.getFileId(), vo.getVideoUrl(), vo.getRoomId()); + } + return success(); + } + /** + * 根据房间号绑定案件ID + * @param + * @return + */ + @Anonymous + @PostMapping("/bindCaseId") + public AjaxResult bindCaseId(@Valid @RequestBody SendRoomNoMessageVO vo) { + + return videoService.bindCaseId(vo.getId(),vo.getRoomNo()); + } + + /** + * 开启腾讯云录制 + * @param vo + * @return + * @throws Exception + */ + @Anonymous + @PostMapping("/openCloudRecording") + private AjaxResult openCloudRecording( @RequestBody MsReservedConferenceVO vo) { + if(vo.getCaseId()==null || vo.getRoomId()==null){ + return AjaxResult.error("参数错误"); + } + return videoService.openCloudRecording(vo.getCaseId(),vo.getRoomId()); + } + /** + * 关闭腾讯云录制 + * @param taskId 任务ID + * @return + */ + @Anonymous + @PostMapping("/closeDeleteCloudRecording") + public AjaxResult closeDeleteCloudRecording(@RequestParam("taskId") String taskId){ + return videoService.closeDeleteCloudRecording(taskId); + } + /** + * 解散房间 + * @param reservedConferenceVO + * @return + */ + @Anonymous + @PostMapping("/dissolveRoom") + public AjaxResult dissolveRoom( @RequestBody MsReservedConferenceVO reservedConferenceVO) { + if( reservedConferenceVO.getRoomId()==null){ + return error("参数校验失败"); + } + + return videoService.dissolveRoom(reservedConferenceVO.getRoomId()); + } + /** + * 根据userId查询该用户是否是秘书 + * @param userId + * @return + */ + @Anonymous + @GetMapping("secretaryRoleByUserId") + public AjaxResult secretaryRoleByUserId( @RequestParam(value = "userId",required = true) Long userId) { + + return videoService.secretaryRoleByUserId(userId); + } + /** + * 根据html字符串转pdf并和案件关联 + * @param reservedConferenceVO + * @return + */ + @Anonymous + @PostMapping("htmlToPDF") + public AjaxResult secretaryRoleByUserId( @RequestBody MsReservedConferenceVO reservedConferenceVO) { + if( reservedConferenceVO.getCaseId()==null || StrUtil.isEmpty(reservedConferenceVO.getHtmlContent())){ + return success(); + } + + return videoService.htmlToPDF(reservedConferenceVO); + } + + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/AnnexTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/AnnexTypeEnum.java index 3cc150c..e4365b3 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/AnnexTypeEnum.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/AnnexTypeEnum.java @@ -14,6 +14,7 @@ public enum AnnexTypeEnum implements EnumsInterface { APPLICATION_EVIDENCE(2, "申请人证据"), MEDIATION_APPLICATION(3, "调解申请书"), PAYMENT_RECEIPT(4, "缴费单"), + MEETING_VIDEO(5, "会议视频"), ; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/entity/mscase/MsCaseApplication.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/entity/mscase/MsCaseApplication.java index ba3c671..3ab9893 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/entity/mscase/MsCaseApplication.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/entity/mscase/MsCaseApplication.java @@ -30,7 +30,7 @@ public class MsCaseApplication { * 批次 */ @Column(name = "batch_number") - private String batchNumber; + private String batchNumber=null; /** * 模板id @@ -71,7 +71,7 @@ public class MsCaseApplication { * 开庭日期 */ @Column(name = "hear_date") - private Date hearDate; + private String hearDate; /** * 调解应缴费用 @@ -83,7 +83,7 @@ public class MsCaseApplication { * 调解员id */ @Column(name = "mediator_id") - private Long mediatorId; + private String mediatorId; /** * 调解员名称 diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/BookingVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/BookingVO.java new file mode 100644 index 0000000..52b5426 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/BookingVO.java @@ -0,0 +1,41 @@ +package com.ruoyi.wisdomarbitrate.domain.vo.mscase; + +import com.ruoyi.common.core.domain.entity.SysUser; +import lombok.Data; + +import java.util.List; + +/** + * @Classname BookingVO + * @Description 保存预约 + * @Version 1.0.0 + * @Date 2024/1/16 16:40 + * @Created wangqiong + */ +@Data +public class BookingVO { + /** + * 调解员列表 + */ + private List userList; + /** + * 调解员列表 + */ + private List mediatorList; + /** + * 开庭日期集合 + */ + private List herDates; + /** + * 案件id + */ + private Long id; + /** + * 案件id + */ + private Integer caseFlowId; + /** + * 批次 + */ + private String batchNumber; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationReq.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationReq.java index 75fcf63..9aa4c74 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationReq.java @@ -41,6 +41,24 @@ public class MsCaseApplicationReq { * 结束时间 */ private String endTime; + /** + * 用户名 + */ private String userName; + /** + * 是否同意,0-否,1-是 + */ + private Integer yesOrNo; + /** + * 调解员id + */ + + private String mediatorId; + + /** + * 调解员名称 + */ + + private String mediatorName; } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationVO.java index 0487f35..fc30b66 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseApplicationVO.java @@ -53,5 +53,9 @@ public class MsCaseApplicationVO extends MsCaseApplication { * 自定义字段 */ private List columnValueList; + /** + * 待办状态,0-待办,1-已办 + */ + private Integer pendingStatus; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/SendRoomNoMessageVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/SendRoomNoMessageVO.java new file mode 100644 index 0000000..9b1465d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/SendRoomNoMessageVO.java @@ -0,0 +1,29 @@ +package com.ruoyi.wisdomarbitrate.domain.vo.mscase; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + +/** + * @author wangqiong + * @description 发送房间号短信入参类 + * @date 2023-10-10 15:20 + */ +@Data +public class SendRoomNoMessageVO implements Serializable { + private static final long serialVersionUID = 1L; + @NotNull(message = "案件id不能为空") + private Long id; + @NotEmpty(message = "房间号不能为空") + private String roomNo; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date scheduleStartTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date scheduleEndTime; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/VideoCallBackVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/VideoCallBackVO.java new file mode 100644 index 0000000..379f11d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/VideoCallBackVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.wisdomarbitrate.domain.vo.mscase; + +import lombok.Data; + +/** + * @Classname VideoCallBackVO + * @Description 视频回调VO + * @Version 1.0.0 + * @Date 2024/1/18 15:02 + * @Created wangqiong + */ +@Data +public class VideoCallBackVO { + /** + * 附件id + */ + private String fileId; + /** + * 视频地址 + */ + private String videoUrl; + /** + * 房间号 + */ + private String roomId; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java index bcb7979..9b4c198 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java @@ -1,7 +1,6 @@ package com.ruoyi.wisdomarbitrate.mapper.mscase; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication; -import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MediatorVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import org.apache.ibatis.annotations.Param; @@ -35,7 +34,7 @@ public interface MsCaseApplicationMapper extends Mapper { * @param caseStatusNames * @return */ - @Select("