派生自 projectDept/qhighschool

yn147
2023-05-10 96286178ee1c257c130cb2ad964a781f36c4eee5
src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
@@ -7,6 +7,8 @@
import java.util.List;
import java.util.Map;
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.scheduling.annotation.Scheduled;
@@ -51,14 +53,15 @@
   
   
   @Override
   public Result add(String name, String content, String teacherId,String teacherName ,String subjectId,String subjectName,
         String definition,String imgPath, Date startTime, Date endTime, boolean record,List<String> classIds) {
   public Result add(String name, String content, String teacherId, String teacherName , String subjectId, String subjectName,
                 String definition, String imgPath, Date startTime, Date endTime, Integer courseId, boolean record, List<String> classIds) {
      
      UserTeacher teacher = teacherService.getTeacherByUserId(ClientUtils.getUserId());
      
      MediaVideoLive live = new MediaVideoLive();
      TraceUtils.setCreateTrace(live);
      live.setCourseId(courseId);
      live.setName(name);
      live.setRemark(content);
      live.setPreviewImgUrl(imgPath);
@@ -84,7 +87,7 @@
      
      save(live);
      
      //保存直播权限班级
      //保存直播权限班级
      if(classIds!=null && classIds.size()>0){
         this.doClearAndAddLiveReClass(live.getVideoLiveId(), classIds.toArray(new String[classIds.size()]));
      }
@@ -108,7 +111,7 @@
      
      save(live);
      
      //更新班级课程关联关系
      //更新班级课程关联关系
      this.doClearAndAddLiveReClass(live.getVideoLiveId(), classIds!=null?classIds.toArray(new String[classIds.size()]):null);
      
      
@@ -118,7 +121,7 @@
   }
   
   /**
    * 清理并添加直播权限班级
    * 清理并添加直播权限班级
    * @param liveId
    * @param classIds
    */
@@ -126,7 +129,7 @@
      List<String>  reIdLst =  this.find("select r.liveReClassId from MediaVideoLiveReClass r where r.liveId=?",
               CollectionUtils.newList(liveId), String.class);
      //删除关联关系
      //删除关联关系
      if(reIdLst!=null && reIdLst.size()>0){
         this.bulkUpdateInLoop("delete from MediaVideoLiveReClass  where liveReClassId=?", reIdLst.toArray());  
      }
@@ -155,25 +158,30 @@
      save(live);
      return Result.SUCCESS;
   }
   @Override
   public Result delete(String[] liveIds) {
   public Result delete(String[] liveIds,String [] courseIds) throws Exception {
      for(String liveId:liveIds) {
         delete(liveId);
         for(String courseId:courseIds) {
            MTCloud client = new MTCloud();
            String s = client.courseDelete(courseId);
         }
      }
      return Result.SUCCESS;
   }
   @Override
   public Result doIssue(String liveId) {
      status(liveId,MediaVideoLive.STATUS_LIVE_ORDER);
      doSendMsg(liveId,MsgInfo.TYPE_LIVE,"发布了直播");
      doSendMsg(liveId,MsgInfo.TYPE_LIVE,"发布了直播");
      return new Result(true);
   }
   
   private void doSendMsg(String liveId,short type,String msg){
      MediaVideoLive  liveInfo = this.read(liveId);
      //查询直播关联的班级
      //查询直播关联的班级
      String hql = "select s.userId from MediaVideoLiveReClass m,StuStudent s where m.classId=s.classId and m.liveId=? and m.deleteFlag is false and s.deleteFlag is false";
      
      List<String> lstUserIds = this.find(hql, CollectionUtils.newList(liveId),String.class);
@@ -188,7 +196,7 @@
   
   @Scheduled(cron = " 0 0/5 * * * ?")
   protected void doTimer() {
//      System.out.println("执行直播提醒定时器");
//      System.out.println("执行直播提醒定时器");
      Calendar cal = Calendar.getInstance();
      cal.add(Calendar.HOUR, 1);
      Date beginDate = cal.getTime();
@@ -196,13 +204,13 @@
      cal.add(Calendar.MINUTE, 5);
      Date endDate = cal.getTime();
      //查询1小时内将开始的直播
      //查询1小时内将开始的直播
       List<MediaVideoLive> lstLives = this.find("from MediaVideoLive where startTime>=? and startTime<? and status=? and deleteFlag is false ", 
             CollectionUtils.newList(beginDate,endDate,MediaVideoLive.STATUS_LIVE_REVIEW), MediaVideoLive.class);
      
      if(lstLives!=null && lstLives.size()>0){
         for(MediaVideoLive live:lstLives){
            this.doLiveRemindMsg(live.getVideoLiveId(),MsgInfo.TYPE_REMIND, "直播马上开始了,请做好直播准备");
            this.doLiveRemindMsg(live.getVideoLiveId(),MsgInfo.TYPE_REMIND, "直播马上开始了,请做好直播准备");
         }
      }
   }
@@ -238,7 +246,7 @@
   @Override
   public Result doStop(String liveId) {
      //发送生成回放消息
      //发送生成回放消息
      cacheService.lstRightPush(MediaVideoLivePlayBackService.LIVE_PLAYBACK_LST, liveId);
      
      return status(liveId,MediaVideoLive.STATUS_LIVE_DOWNLOAD);
@@ -262,14 +270,14 @@
   public List<MediaVideoLive> list(String keyword, String [] classIds,String subjectId,Short status,Integer pageNum, Integer pageSize) {
      StringBuffer hql = new StringBuffer(1000);
      Map<String,Object> params = new HashMap<String,Object>();
      hql.append("from MediaVideoLive m left join fetch m.classes c left join fetch m.subject s where m.deleteFlag is false  and m.name like :name ");
      hql.append("from MediaVideoLive m left join fetch m.classes  c left join fetch m.subject s where m.deleteFlag is false  and m.name like :name ");
      
      params.put("name",keyword + "%");
      
      if(classIds!=null && classIds.length>0){
         hql.append(" and (c.classId in(:classIds) or s.type=:subjectType)");
         hql.append(" and (c.classId in(:classIds) or s.type=:Type)");
         params.put("classIds", classIds);
         params.put("subjectType", Subject.TYPE_PUBLIC_SUBJECT);
         params.put("Type", Subject.TYPE_PUBLIC_SUBJECT);
      }else{
         hql.append(" and  s.type=:subjectType");
         params.put("subjectType", Subject.TYPE_PUBLIC_SUBJECT);
@@ -345,7 +353,14 @@
   public MediaVideoLive read(String liveId) {
      return read(MediaVideoLive.class,liveId);
   }
   @Override
   public MediaVideoLive revamp(int courseId) {
      String hql = "from MediaVideoLive where deleteFlag is false and courseId=?";
      MediaVideoLive unique = findUnique(hql, CollectionUtils.newList(courseId), MediaVideoLive.class);
      return unique ;
   }
   @SuppressWarnings("unchecked")
   @Override
   public List<MediaVideoLive> readByStatus(List<String> liveIdLst,short[] status) {