派生自 projectDept/qhighschool

EricsHu
2023-06-19 bc3b37b1622091def1f6ee4c3eb3ff79499b3466
src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
@@ -1,10 +1,15 @@
package com.qxueyou.scc.controller;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hankcs.hanlp.corpus.tag.Nature;
import com.qxueyou.scc.base.dao.CommonDAO;
import com.qxueyou.scc.sdk.MTCloud;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -24,14 +29,18 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.spring.web.json.Json;
@Api(tags="直播管理接口")
import static com.hankcs.hanlp.corpus.tag.Nature.r;
import static com.hankcs.hanlp.corpus.tag.Nature.s;
@Api(tags="直播管理接口")
@RestController
@CrossOrigin(origins="*",maxAge=3600)
@RequestMapping(value = "/admin/videoLive")
public class VideoLiveController {
   
   // 分页查询中,默认记录条数和页数
   // 分页查询中,默认记录条数和页数
   private static final int DEFAULT_PAGE_SIZE = 10;
   private static final int DEFAULT_PAGE_NUM = 1;
   
@@ -46,25 +55,28 @@
   
   @Autowired
   MediaLiveDAO dao;
   @Autowired
    CommonDAO commonDAO;
   
   /**
    * 获取直播列表
    * 获取直播列表
    * 
    * @param keyword
    *            搜索关键字
    *            搜索关键字
    * @param pageNum
    *            页码
    *            页码
    * @param pageSize
    *            页数
    *            页数
    * @return
    */
   @ApiOperation(value = "获取创建人的直播列表")
   @ApiOperation(value = "获取创建人的直播列表")
   @GetMapping(value = "list")
   public Result list(String keyword, Integer pageNum, Integer pageSize) {
      
      List<MediaVideoLive> data = liveService.listOfMine(keyword, pageNum, pageSize);
      int count = liveService.listCountOfMine(keyword);
      return new Result(true, "success", CollectionUtils.newObjectMap("videoLiveCount", count, 
            "videoLiveLst",QBeanUtils.listBean2ListMap(data, CollectionUtils.newStringMap(
                  "creator","creator",
@@ -78,50 +90,125 @@
                  "status","status",
                  "pushUrl","rtmpPushUrl",
                  "hlsPullUrl","hlsPullUrl",
                  "previewImgUrl","previewImgUrl"
                  "previewImgUrl","previewImgUrl",
                  "courseId","courseId"
                  ))));
   }
   @ApiOperation(value = "获取已结束直播列表")
   @GetMapping(value = "listvideo")
   public Result listvideo() {
      List<MediaVideoLive> data = liveService.listvideo("9");
      return new Result(true, "success", CollectionUtils.newObjectMap("listVideo",data));
   }
   /**
    * 新增直播/更新直播
    * 新增直播/更新直播
    * 
    * @param videoLiveId
    *            直播id(更新的时候才需要传)
    *            直播id(更新的时候才需要传)
    * @param name
    *            直播名称
    *            直播名称
    * @param content
    *            直播介绍
    *            直播介绍
    * @param imgPath
    *            图片地址
    *            图片地址
    * @param startTime
    *            开始时间
    *            开始时间
    * @param endTime
    *            结束时间
    *            结束时间
    * @param isPlayBack
    *            是否回放
    *            是否回放
    * @param classIds
    *            班级id
    *            班级id
    * @return
    */
   @ApiOperation(value = "创建编辑直播")
   @ApiOperation(value = "创建编辑直播")
   @PostMapping(value = "addOrUpdate")
   public Result addOrUpdate(String videoLiveId, String name, String content,String teacherId,String teacherName,String subjectId,
         String subjectName,String definition,String imgPath, long startTime,long endTime, boolean isPlayBack, String classIds) {
      if(StringUtils.isEmpty(videoLiveId)) {
         return liveService.add(name, content,teacherId,teacherName,subjectId,subjectName,definition,imgPath, new Date(startTime), new Date(endTime), isPlayBack, StringUtils.isEmpty(classIds)?null:CollectionUtils.newList(String.class,classIds.split(",")));
      }else {
         return liveService.update(videoLiveId,name, content,teacherId,teacherName,subjectId,subjectName,definition,imgPath, new Date(startTime), new Date(endTime), isPlayBack,  StringUtils.isEmpty(classIds)?null:CollectionUtils.newList(String.class,classIds.split(",")));
         String subjectName,String definition,String imgPath, long startTime,long endTime, boolean isPlayBack, String classIds) throws Exception {
      MTCloud client = new MTCloud();
      HashMap<Object,Object> options = new HashMap<Object,Object>();
      options.put("barrage", 1);
      options.put("isPublic", 1);
      options.put("robotNumber", 1);
      options.put("robotType", 1);
      options.put("pptDisplay", 1);
      options.put("modetype", 6);
      //将long类型转换为String类型
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String startTime1 = simpleDateFormat.format(new Date(startTime));
      String endTime1 = simpleDateFormat.format(new Date(endTime));
        System.out.println(startTime1+"------"+endTime1);
      //调用第三方直播接口
      String s = client.courseAdd(name, ClientUtils.getUserId(), startTime1, endTime1, ClientUtils.getUserName(), "222", options);
      //json转换拿到courseId
      JSONObject jsonObject = JSON.parseObject(s);
      JSONObject data = jsonObject.getJSONObject("data");
//      System.out.println(Integer.parseInt(course_id));
      if(jsonObject.getString("code").equals("0")) {
            String course_id = (String) data.get("course_id");
         liveService.add(name, content,teacherId,teacherName,subjectId,subjectName,definition,imgPath, new Date(startTime), new Date(endTime),Integer.parseInt(course_id), isPlayBack, StringUtils.isEmpty(classIds)?null:CollectionUtils.newList(String.class,classIds.split(",")));
         return new Result(true, "成功", s);
      }
      return new Result(false,jsonObject.getString("msg"));
   }
   @ApiOperation(value = "开启直播")
   @GetMapping(value = "OpenLive")
   public Result OpenLive(int courseId) throws Exception {
      MTCloud client = new MTCloud();
      HashMap<Object,Object> options = new HashMap<Object, Object>();
      options.put("ssl", false);
      String res = client.courseLogin(ClientUtils.getUserId(),MTCloud.ACCOUNT_TYPE_THIRD, options);
      System.out.println(res);
      JSONObject jsonObject = JSON.parseObject(res);
      if(jsonObject.getString("code").equals("0")){
            JSONObject data = jsonObject.getJSONObject("data");
            String protocol = (String) data.get("url");
            return new Result(true,"开启成功",protocol);
        }
      return new Result(false,jsonObject.getString("msg"));
   }
    @ApiOperation(value = "修改直播状态")
    @GetMapping(value = "updateLive")
    public Result updateLive(Integer courseId)  {
        MediaVideoLive revamp = liveService.revamp(courseId);
        revamp.setStatus(MediaVideoLive.STATUS_LIVE_STOP);
        commonDAO.update(revamp);
        return new Result(true,"关闭成功");
    }
    @ApiOperation(value = "在线时长")
   @GetMapping(value = "onlineCommunication")
   public Result onlineCommunication(String courseId,Integer page, Integer size) throws Exception {
      MTCloud client = new MTCloud();
      HashMap<Object,Object> options = new HashMap<Object, Object>();
      options.put("ssl", false);
      String res = client.courseVisitorList(courseId,page,size,options);
      return new Result(true,"开启成功",res);
   }
//   @ApiOperation(value = "查看详情")
//   @GetMapping(value = "detailLive")
//   public Result detailLive(String liveId) {
//      commonDAO.find
//      return new Result(true,"开启成功",res);
//   }
   /**
    * 查询直播详情
    * 查询直播详情
    * 
    * @param videoLiveId
    *            直播id
    *            直播id
    * @return
    */
   @ApiOperation(value = "获取直播详情")
   @ApiOperation(value = "获取直播详情")
   @GetMapping(value = "queryDetail")
   public Result detail(String videoLiveId) {
      List<String> lstClassIds = null;
@@ -165,13 +252,13 @@
   }
   /**
    * 发布/多个以逗号隔开
    * 发布/多个以逗号隔开
    * 
    * @param videoLiveIds
    *            直播ids
    *            直播ids
    * @return
    */
   @ApiOperation(value = "发布直播")
   @ApiOperation(value = "发布直播")
   @PostMapping(value = "release")
   public Result release(String videoLiveIds) {
      for(String liveId:videoLiveIds.split(",")) {
@@ -181,13 +268,13 @@
   }
   /**
    * 取消发布/多个以逗号隔开
    * 取消发布/多个以逗号隔开
    * 
    * @param videoLiveIds
    *            直播ids
    *            直播ids
    * @return
    */
   @ApiOperation(value = "取消发布直播")
   @ApiOperation(value = "取消发布直播")
   @PostMapping(value = "cancel")
   public Result cance(String videoLiveIds) {
      
@@ -198,25 +285,25 @@
   }
   /**
    * 删除/多个以逗号隔开
    * 删除/多个以逗号隔开
    * 
    * @param videoLiveId
    * @param videoLiveIds
    * @return
    */
   @ApiOperation(value = "删除创建的直播")
   @ApiOperation(value = "删除创建的直播")
   @PostMapping(value = "delete")
   public Result delete(String videoLiveIds) {
      return liveService.delete(videoLiveIds.split(","));
   public Result delete(String videoLiveIds,String   courseIds) throws Exception {
      return liveService.delete(videoLiveIds.split(","),courseIds.split(","));
   }
   
   
   /**
    * 直播开始
    * 直播开始
    * 
    * @param videoLiveIds
    *            直播id
    *            直播id
    */
   @ApiOperation(value = "直播开始")
   @ApiOperation(value = "直播开始")
   @PostMapping(value = "start")
   public Result start(String videoLiveIds) {
@@ -228,12 +315,12 @@
   
   
   /**
    * 直播暂停
    * 直播暂停
    * 
    * @param videoLiveIds
    *            直播id
    *            直播id
    */
   @ApiOperation(value = "直播暂停")
   @ApiOperation(value = "直播暂停")
   @PostMapping(value = "pause")
   public Result pause(String videoLiveIds) {
      
@@ -244,12 +331,12 @@
   }
   /**
    * 直播结束
    * 直播结束
    * 
    * @param videoLiveId
    *            直播id
    * @param videoLiveIds
    *            直播id
    */
   @ApiOperation(value = "直播结束")
   @ApiOperation(value = "直播结束")
   @PostMapping(value = "stop")
   public Result stop(String videoLiveIds) {
@@ -262,18 +349,18 @@
   
   
   /**
    * 直播点赞
    * 直播点赞
    * 
    * @param videoLiveId
    *            直播id
    *            直播id
    */
   @ApiOperation(value = "直播点赞")
   @ApiOperation(value = "直播点赞")
   @PostMapping(value = "praise")
   public Result praise(String videoLiveId) {
      return liveService.doPraise(videoLiveId);
   }
   
   @ApiOperation(value = "学生端根据班级,课程过滤直播列表")
   @ApiOperation(value = "学生端根据班级,课程过滤直播列表")
   @GetMapping(value = "student/list")
   public Result list(String keyword,String classIds,String subjectId,Short status,Integer pageNum, Integer pageSize) {
      pageSize = pageSize != null && pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE;
@@ -300,11 +387,12 @@
                  "status","status",
                  "pushUrl","rtmpPushUrl",
                  "hlsPullUrl","hlsPullUrl",
                  "previewImgUrl","previewImgUrl"
                  "previewImgUrl","previewImgUrl",
                  "courseId","courseId"
            ))));
   }
   
   @ApiOperation(value = "直播回放列表")
   @ApiOperation(value = "直播回放列表")
   @GetMapping(value = "replay/list")
   public Result listReplay(String videoLiveId) {
      
@@ -326,7 +414,7 @@
      ))));
   }
   
   @ApiOperation(value = "测试直播回放")
   @ApiOperation(value = "测试直播回放")
   @GetMapping(value = "replay/test")
   public Result testReplay(String liveId) {
      mediaVideoLivePlayBackService.testPlayBack(liveId);