| | |
| | | import java.time.LocalDateTime; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | |
| | | @PostMapping(value = "/listBanner") |
| | | public R<List<TSysLive>> listBanner() { |
| | | return R.ok(sysLiveService.list(Wrappers.lambdaQuery(TSysLive.class) |
| | | .gt(TSysLive::getEndTime, LocalDateTime.now()) |
| | | .orderByDesc(TSysLive::getCreateTime))); |
| | | } |
| | | |
| | |
| | | @PostMapping(value = "/add") |
| | | public R<Boolean> add(@Validated @RequestBody TSysLive dto) { |
| | | // 直播开始时间无法小于当前时间 |
| | | if (dto.getStartTime().isBefore(LocalDateTime.now())) { |
| | | if (Objects.nonNull(dto.getStartTime()) && dto.getStartTime().isBefore(LocalDateTime.now())) { |
| | | return R.fail("直播开始时间无法小于当前时间"); |
| | | } |
| | | // 计算结束时间 |
| | | dto.setEndTime(dto.getStartTime().plusMinutes(dto.getExpectedDuration())); |
| | | if(Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getExpectedDuration())){ |
| | | dto.setEndTime(dto.getStartTime().plusMinutes(dto.getExpectedDuration())); |
| | | } |
| | | // 点击次数默认 0,避免后续自增时 NPE |
| | | if (Objects.isNull(dto.getClickCount())) { |
| | | dto.setClickCount(0); |
| | | } |
| | | |
| | | // 创建小鹅通直播 |
| | | XiaoeLiveDTO xiaoeLiveDTO = new XiaoeLiveDTO(); |
| | | xiaoeLiveDTO.setTitle(dto.getLiveTitle()); |
| | | xiaoeLiveDTO.setSummary(dto.getLiveIntroduction()); |
| | | xiaoeLiveDTO.setZbStartAt(DateUtils.localDateTimeToString(dto.getStartTime())); |
| | | xiaoeLiveDTO.setZbStopAt(dto.getExpectedDuration()); |
| | | // 直播类型 0-语音,1-录播直播,2-推流直播,默认为0-语音直播 |
| | | xiaoeLiveDTO.setAliveType(2); |
| | | xiaoeLiveDTO.setAliveMode(dto.getLiveMode()==1?0:1); |
| | | xiaoeLiveDTO.setUserId(dto.getLiveLecturer()); |
| | | xiaoeLiveDTO.setPaymentType(dto.getLiveType()==1?1:3); |
| | | xiaoeLiveDTO.setResourcePassword(dto.getResourcePassword()); |
| | | xiaoeLiveDTO.setDescrb(dto.getLiveDetail()); |
| | | String goslingLiveId = xiaoeUtils.addLive(xiaoeLiveDTO); |
| | | dto.setGoslingLiveId(goslingLiveId); |
| | | // XiaoeLiveDTO xiaoeLiveDTO = new XiaoeLiveDTO(); |
| | | // xiaoeLiveDTO.setTitle(dto.getLiveTitle()); |
| | | // xiaoeLiveDTO.setSummary(dto.getLiveIntroduction()); |
| | | // xiaoeLiveDTO.setZbStartAt(DateUtils.localDateTimeToString(dto.getStartTime())); |
| | | // xiaoeLiveDTO.setZbStopAt(dto.getExpectedDuration()); |
| | | // // 直播类型 0-语音,1-录播直播,2-推流直播,默认为0-语音直播 |
| | | // xiaoeLiveDTO.setAliveType(2); |
| | | // xiaoeLiveDTO.setAliveMode(dto.getLiveMode()==1?0:1); |
| | | // xiaoeLiveDTO.setUserId(dto.getLiveLecturer()); |
| | | // xiaoeLiveDTO.setPaymentType(dto.getLiveType()==1?1:3); |
| | | // xiaoeLiveDTO.setResourcePassword(dto.getResourcePassword()); |
| | | // xiaoeLiveDTO.setDescrb(dto.getLiveDetail()); |
| | | // String goslingLiveId = xiaoeUtils.addLive(xiaoeLiveDTO); |
| | | // dto.setGoslingLiveId(goslingLiveId); |
| | | |
| | | return R.ok(sysLiveService.save(dto)); |
| | | } |
| | |
| | | // if (dto.getStartTime().isBefore(LocalDateTime.now())) { |
| | | // return R.fail("直播已开始,无法编辑"); |
| | | // } |
| | | // 计算结束时间 |
| | | dto.setEndTime(dto.getStartTime().plusMinutes(dto.getExpectedDuration())); |
| | | // 计算结束时间(视频类型没有开始时间和预计时长,必须判空,否则编辑接口会 500) |
| | | if (Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getExpectedDuration())) { |
| | | dto.setEndTime(dto.getStartTime().plusMinutes(dto.getExpectedDuration())); |
| | | } |
| | | |
| | | // 编辑小鹅通直播 |
| | | XiaoeLiveDTO xiaoeLiveDTO = new XiaoeLiveDTO(); |
| | | xiaoeLiveDTO.setTitle(dto.getLiveTitle()); |
| | | xiaoeLiveDTO.setSummary(dto.getLiveIntroduction()); |
| | | xiaoeLiveDTO.setZbStartAt(DateUtils.localDateTimeToString(dto.getStartTime())); |
| | | xiaoeLiveDTO.setZbStopAt(dto.getExpectedDuration()); |
| | | // 直播类型 0-语音,1-录播直播,2-推流直播,默认为0-语音直播 |
| | | xiaoeLiveDTO.setAliveType(2); |
| | | xiaoeLiveDTO.setAliveMode(dto.getLiveMode()==1?0:1); |
| | | xiaoeLiveDTO.setUserId(dto.getLiveLecturer()); |
| | | xiaoeLiveDTO.setPaymentType(dto.getLiveType()==1?1:3); |
| | | xiaoeLiveDTO.setResourcePassword(dto.getResourcePassword()); |
| | | xiaoeLiveDTO.setDescrb(dto.getLiveDetail()); |
| | | xiaoeUtils.editLive(xiaoeLiveDTO); |
| | | // XiaoeLiveDTO xiaoeLiveDTO = new XiaoeLiveDTO(); |
| | | // xiaoeLiveDTO.setTitle(dto.getLiveTitle()); |
| | | // xiaoeLiveDTO.setSummary(dto.getLiveIntroduction()); |
| | | // xiaoeLiveDTO.setZbStartAt(DateUtils.localDateTimeToString(dto.getStartTime())); |
| | | // xiaoeLiveDTO.setZbStopAt(dto.getExpectedDuration()); |
| | | // // 直播类型 0-语音,1-录播直播,2-推流直播,默认为0-语音直播 |
| | | // xiaoeLiveDTO.setAliveType(2); |
| | | // xiaoeLiveDTO.setAliveMode(dto.getLiveMode()==1?0:1); |
| | | // xiaoeLiveDTO.setUserId(dto.getLiveLecturer()); |
| | | // xiaoeLiveDTO.setPaymentType(dto.getLiveType()==1?1:3); |
| | | // xiaoeLiveDTO.setResourcePassword(dto.getResourcePassword()); |
| | | // xiaoeLiveDTO.setDescrb(dto.getLiveDetail()); |
| | | // xiaoeUtils.editLive(xiaoeLiveDTO); |
| | | |
| | | return R.ok(sysLiveService.updateById(dto)); |
| | | } |
| | |
| | | @GetMapping(value = "/getDetailById") |
| | | public R<TSysLive> getDetailById(@RequestParam String id) { |
| | | TSysLive sysLive = sysLiveService.getById(id); |
| | | // 查询次数自增 使用数据库原子更新操作 |
| | | sysLive.setClickCount(sysLive.getClickCount()+1); |
| | | // 查询次数自增(历史数据 click_count 可能为 NULL,需判空) |
| | | sysLive.setClickCount(Objects.isNull(sysLive.getClickCount()) ? 1 : sysLive.getClickCount() + 1); |
| | | sysLiveService.updateById(sysLive); |
| | | // 如果是诊所 |
| | | Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); |
| | |
| | | redisCache.deleteObject(Constants.SYS_LIVE_CLICK_COUNT+id); |
| | | |
| | | // 删除直播 |
| | | TSysLive sysLive = sysLiveService.getById(id); |
| | | xiaoeUtils.deleteLive(sysLive.getGoslingLiveId()); |
| | | // TSysLive sysLive = sysLiveService.getById(id); |
| | | // xiaoeUtils.deleteLive(sysLive.getGoslingLiveId()); |
| | | |
| | | return R.ok(sysLiveService.removeById(id)); |
| | | } |