From 63c8bc319fd02d9f39b729f136fb3af01c773de1 Mon Sep 17 00:00:00 2001
From: yn147 <2270338776@qq.com>
Date: 星期六, 25 十一月 2023 14:27:14 +0800
Subject: [PATCH] 学籍导入、班级
---
src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java | 151 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 121 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
index 58aa137..ca7e119 100644
--- a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
+++ b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
@@ -1,13 +1,21 @@
package com.qxueyou.scc.stucontroller;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.qxueyou.scc.base.dao.CommonDAO;
+import com.qxueyou.scc.base.model.Pager;
+import com.qxueyou.scc.config.IpUtils;
+import com.qxueyou.scc.sdk.MTCloud;
+import com.qxueyou.scc.teach.live.model.AccessLog;
+import com.qxueyou.scc.teach.live.utils.RedisCache;
+import com.qxueyou.scc.teach.student.model.StuStudent;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -27,8 +35,12 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
-@Api(tags="直播接口-学员端")
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+@Api(tags="鐩存挱鎺ュ彛-瀛﹀憳绔�")
@RestController
+@CrossOrigin
@RequestMapping(value = "/stu/live")
public class StuLiveController {
@@ -40,6 +52,12 @@
@Autowired
MediaLiveDAO dao;
+
+ @Autowired
+ RedisCache redisCache;
+
+ @Autowired
+ CommonDAO commonDAO;
private final static short[] PUBLIC_LIVE_STATUS = new short[] {
MediaVideoLive.STATUS_LIVE_LIVE,MediaVideoLive.STATUS_LIVE_PAUSE,
@@ -47,14 +65,14 @@
};
/**
- * 获取直播列表
- * @param classId 班级id
+ * 鑾峰彇鐩存挱鍒楄〃
+ * @param classId 鐝骇id
* @return
*/
- @ApiOperation(value = "获取直播列表", notes = "")
+ @ApiOperation(value = "鑾峰彇鐩存挱鍒楄〃", notes = "")
@ApiImplicitParams({
- @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
- @ApiImplicitParam(name = "status", value = "直播状态(2正在直播,5直播中的暂停状态,9停止直播,3回放)", required = true, paramType="query", dataType = "String"),
+ @ApiImplicitParam(name = "classId", value = "鐝骇id", required = true, paramType="query", dataType = "String"),
+ @ApiImplicitParam(name = "status", value = "鐩存挱鐘舵�侊紙2姝e湪鐩存挱锛�5鐩存挱涓殑鏆傚仠鐘舵�侊紝9鍋滄鐩存挱锛�3鍥炴斁锛�", required = true, paramType="query", dataType = "String"),
})
@GetMapping(value = "list")
public Result list(String classId, Short status) {
@@ -81,7 +99,7 @@
"previewImgUrl","imgPath"
));
- //添加聊天室id
+ //娣诲姞鑱婂ぉ瀹d
if(lst!=null && lst.size()>0){
for(Map<String,Object> map:lst) {
map.put("chatroomId", dao.getChatRoomId((String)map.get("videoLiveId")));
@@ -92,17 +110,17 @@
}
/**
- * 获取直播id
+ * 鑾峰彇鐩存挱id
* @param classId
* @return
*/
private List<String> getLiveIdLst(String classId) {
List<String> liveIds = new ArrayList<String>(5);
- //获取班级列表及班级所在直播列表
+ //鑾峰彇鐝骇鍒楄〃鍙婄彮绾ф墍鍦ㄧ洿鎾垪琛�
if(StringUtils.isNotEmpty(classId)) {
liveIds = dao.getClassLives(classId);
- }else { //查询学员所在的全部班级
+ }else { //鏌ヨ瀛﹀憳鎵�鍦ㄧ殑鍏ㄩ儴鐝骇
List<ClsClass> clsLst = classService.listMyClass();
Set<String> ids = new HashSet<String>();
for(ClsClass cls:clsLst) {
@@ -114,23 +132,96 @@
}
/**
- * 查看直播明细
- * @param liveId 直播id
+ * 鏌ョ湅鐩存挱鏄庣粏
+ * @param couresId 鐩存挱id
* @return
*/
@GetMapping(value = "view")
- public Result view(String liveId) {
-
- MediaVideoLive live = liveService.read(liveId);
-
- return new Result(true, "success", CollectionUtils.newObjectMap(
- "startTime",live.getStartTime(),
- "endTime",live.getEndTime(),
- "name",live.getName(),
- "hlsPullUrl",live.getHlsPullUrl(),
- "imgPath",live.getPreviewImgUrl(),
- "chatroomId",dao.getChatRoomId(liveId),
- "remark",live.getRemark()
- ));
+ public Result view(String couresId, String userId, String userName, String logId, HttpServletRequest request) throws Exception {
+ String redisLiveUrl = redisCache.getCacheObject("LIVE_URL" + userId);
+ AccessLog accessLog=new AccessLog();
+ if(StringUtils.isEmpty(logId)){
+ String ip = IpUtils.getIpAddr(request);
+ String cityInfo = null;
+ try {
+ cityInfo = IpUtils.getCityInfo(ip);
+ } catch (Exception e) {
+ log.error("鑾峰彇ip褰掑睘鍦颁俊鎭け璐ワ紒");
+ }
+ accessLog.setCourseId(couresId);
+ accessLog.setEnterTime(new Date());
+ accessLog.setType("guangxi");
+ accessLog.setName(userName);
+ accessLog.setIp(ip);
+ accessLog.setIpAttribution(cityInfo);
+ accessLog.setCreateTime(new Date());
+ accessLog.setUpdateTime(new Date());
+ commonDAO.save(accessLog);
+ }
+ if (!StringUtils.isEmpty(redisLiveUrl)){
+ return new Result(true, "success",CollectionUtils.newObjectMap("url",redisLiveUrl,"log",accessLog.getLogId()));
+ }
+ MTCloud client = new MTCloud();
+ String userRole = null;
+ HashMap<Object,Object> options = new HashMap<Object, Object>();
+ if(userId.equals("")){
+ userId= randomId();
+ }
+ if(userName.equals("") || userName==null){
+ userName= "娓稿";
+ userRole=MTCloud.ROLE_GUEST;
+ }else {
+ userRole=MTCloud.ROLE_USER;
+ }
+ options.put("ssl", true);
+ String res = client.courseAccess(couresId,userId,userName,userRole, 10000, options);
+
+ JSONObject jsonObject = JSON.parseObject(res);
+
+ if(jsonObject.getString("code").equals("0")){
+ JSONObject data = jsonObject.getJSONObject("data");
+ String liveUrl = (String) data.get("liveUrl");
+ StringBuffer redisLiveKey = new StringBuffer("LIVE_URL");
+ redisLiveKey.append(userId);
+ redisCache.setCacheObject(redisLiveKey.toString(),liveUrl,5, TimeUnit.MINUTES);
+ return new Result(true, "success",CollectionUtils.newObjectMap("url",liveUrl,"log",accessLog.getLogId()));
+ }
+
+ return new Result(false, jsonObject.getString("msg"));
}
+
+ @ApiOperation(value = "绂诲紑璺紨鐩存挱闂�")
+ @GetMapping(value = "leaveRoadShow")
+ public Result enterIntoRoadShow(String logId) {
+// System.out.println(logId);
+ if(!StringUtils.isEmpty(logId)){
+ StringBuffer hql=new StringBuffer("from AccessLog where logId=?");
+ List<Object> args = CollectionUtils.newList(logId);
+ AccessLog accessLogs = commonDAO.findUnique(hql.toString(), args, AccessLog.class);
+// System.out.println(accessLogs);
+ accessLogs.setLeaveTime(new Date());
+ accessLogs.setUpdateTime(new Date());
+ commonDAO.update(accessLogs);
+ return new Result(true,"閫�鍑烘垚鍔�");
+ }
+ return new Result(false,"logId涓嶈兘涓虹┖");
+ }
+
+
+ public String randomId() {
+ Random random=new Random();
+ String str="";
+ for (int i = 0; i <12; i++) {
+ if(i==0){
+ //棣栦綅涓嶈兘涓�0涓旀暟瀛楀彇鍊煎尯闂翠负 [1,9]
+ str+=(random.nextInt(9)+1);
+ }else{
+ //鍏朵綑浣嶇殑鏁板瓧鐨勫彇鍊煎尯闂翠负 [0,9]
+ str+=random.nextInt(10);
+ }
+ }
+ return str;
+ }
+
+
}
--
Gitblit v1.8.0