From 1da190e7f267bcd3501884f3aeaac7476850fec7 Mon Sep 17 00:00:00 2001 From: EricsHu <hrr145632> Date: 星期日, 26 十一月 2023 17:53:03 +0800 Subject: [PATCH] 优化菜单查询 --- src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java | 129 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 110 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java index 0e76919..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; +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, @@ -115,22 +133,95 @@ /** * 鏌ョ湅鐩存挱鏄庣粏 - * @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