| | |
| | | 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; |
| | |
| | | |
| | | |
| | | @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); |
| | |
| | | |
| | | save(live); |
| | | |
| | | //保存直播权限班级 |
| | | //保存直播权限班级 |
| | | if(classIds!=null && classIds.size()>0){ |
| | | this.doClearAndAddLiveReClass(live.getVideoLiveId(), classIds.toArray(new String[classIds.size()])); |
| | | } |
| | |
| | | |
| | | save(live); |
| | | |
| | | //更新班级课程关联关系 |
| | | //更新班级课程关联关系 |
| | | this.doClearAndAddLiveReClass(live.getVideoLiveId(), classIds!=null?classIds.toArray(new String[classIds.size()]):null); |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 清理并添加直播权限班级 |
| | | * 清理并添加直播权限班级 |
| | | * @param liveId |
| | | * @param classIds |
| | | */ |
| | |
| | | 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()); |
| | | } |
| | |
| | | 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); |
| | |
| | | |
| | | @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(); |
| | |
| | | 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, "直播马上开始了,请做好直播准备"); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | @Override |
| | | public Result doStop(String liveId) { |
| | | //发送生成回放消息 |
| | | //发送生成回放消息 |
| | | cacheService.lstRightPush(MediaVideoLivePlayBackService.LIVE_PLAYBACK_LST, liveId); |
| | | |
| | | return status(liveId,MediaVideoLive.STATUS_LIVE_DOWNLOAD); |
| | |
| | | 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); |
| | |
| | | |
| | | return this.findCountByComplexHql(hql.toString(), params); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<MediaVideoLive> listvideo(String status) { |
| | | |
| | | String hql = "from MediaVideoLive where deleteFlag is false and status=? order by createTime desc"; |
| | | |
| | | |
| | | return find(hql, CollectionUtils.newList(status), MediaVideoLive.class); |
| | | } |
| | | |
| | | @Override |
| | | public List<MediaVideoLive> listOfMine(String keyword, Integer pageNum, Integer pageSize) { |
| | | |
| | | String hql = "from MediaVideoLive where deleteFlag is false and name like ? and createId=? order by createTime desc"; |
| | | String hql = "from MediaVideoLive where deleteFlag is false and name like ? order by createTime desc"; |
| | | |
| | | return findList(hql, new Pager(pageSize, pageNum), CollectionUtils.newList(keyword + "%",ClientUtils.getUserId()), MediaVideoLive.class); |
| | | |
| | | return findList(hql, new Pager(pageSize, pageNum), CollectionUtils.newList(keyword + "%"), MediaVideoLive.class); |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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) { |