| 
					
				 | 
			
			
				@@ -0,0 +1,157 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.yonge.cooleshow.teacher.controller; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.microsvc.toolkit.middleware.live.message.TencentWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dto.LiveRoomStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.service.ImGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.service.ImLiveBroadcastRoomMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.service.LiveRoomService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.wrapper.liveroom.ImLiveBroadcastRoomMemberWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.wrapper.liveroom.LiveRoomWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.controller.BaseController; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.toolset.base.page.PageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import io.swagger.annotations.Api; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import io.swagger.annotations.ApiImplicitParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import io.swagger.annotations.ApiImplicitParams; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import io.swagger.annotations.ApiParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.GetMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.PostMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.PutMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.RequestBody; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.RequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.RequestParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.bind.annotation.RestController; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.validation.Valid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Optional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 直播房间管理表(ImLiveBroadcastRoom)表控制层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author hgw 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @since 2022-02-17 20:52:04 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Api(tags = "直播房间管理表") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@RestController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@RequestMapping("${app-config.url.teacher:}/imLiveBroadcastRoom") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class TeacherImLiveBroadcastRoomController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 服务对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private LiveRoomService liveRoomService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ImGroupService imGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("查询房间信息并校验房间是否合规") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiImplicitParams({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid", required = true), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @ApiImplicitParam(name = "userId", dataType = "Integer", value = "用户id", required = true), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @ApiImplicitParam(name = "liveAssistant", dataType = "Boolean", value = "直播助手"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping("/queryRoom") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<LiveRoomWrapper.LiveRoomVo> queryRoomAndCheck(@ApiParam(value = "房间uid", required = true) String roomUid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                 @ApiParam(value = "用户id", required = true) Long userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                 @RequestParam(defaultValue = "false") Boolean liveAssistant) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 请求来源业源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int osType = 2; // 老师端 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Optional.ofNullable(liveAssistant).orElse(false)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            osType = 3; // 直播助手 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(liveRoomService.queryRoomAndCheck(roomUid, userId, osType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("关闭直播间") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping(value = "/roomDestroy") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Object> roomDestroy(@ApiParam(value = "房间Uid", required = true) String roomUid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        liveRoomService.destroyLiveRoom(roomUid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("同步点赞数量") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping("/syncLike") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Object> syncLike(@ApiParam(value = "房间uid", required = true) String roomUid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                               @ApiParam(value = "点赞数", required = true) Integer likeNum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        liveRoomService.syncLike(roomUid, likeNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("主讲人进入房间") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping("/speakerJoinRoom") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<LiveRoomWrapper.LiveRoomVo> speakerJoinRoom(String roomUid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(liveRoomService.speakerCheckRoomInfo(roomUid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("获取房间人员") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping("/queryRoomUserInfo") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<List<LiveRoomWrapper.BaseRoomUserVo>> queryRoomUserInfo(@ApiParam(value = "房间uid", required = true) String roomUid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(liveRoomService.queryRoomLimitOnlineUserInfo(roomUid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("设置是否允许连麦") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping("/whetherMic") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Object> whetherMic(@ApiParam(value = "房间uid", required = true) String roomUid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                 @ApiParam(value = "是否连麦 0:是 1否", required = true) Integer whetherMic) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        liveRoomService.whetherMic(roomUid,whetherMic); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("设置连麦状态") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @PutMapping("/userWhetherMic") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Object> userWhetherMic(@ApiParam(value = "房间uid", required = true) String roomUid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                 @ApiParam(value = "用户id", required = true) String userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                 @ApiParam(value = "连麦状态 0:未申请1:申请连麦中2:连麦中", required = true) Integer whetherMicStatus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long userIdLong = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNotBlank(userId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userIdLong = Long.parseLong(imGroupService.analysisImUserId(userId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        liveRoomService.userWhetherMic(roomUid,userIdLong,whetherMicStatus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("分页查询直播间人员列表") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiImplicitParams({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ApiImplicitParam(name = "search", dataType = "String", value = "模糊搜索 学员编号姓名"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ApiImplicitParam(name = "onlineStatus", dataType = "String ", value = "0:离线 1:在线  不传是全部"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ApiImplicitParam(name = "whetherMicStatus", dataType = "String", value = "连麦状态 0:未申请1:申请连麦中2:连麦中"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @PostMapping("/queryRoomMember") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<PageInfo<ImLiveBroadcastRoomMemberWrapper.ImLiveBroadcastRoomMember>> queryRoomMember(@RequestBody Map<String, Object> param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(imLiveBroadcastRoomMemberService.queryRoomMember(param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("更新直播间状态") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @PostMapping("/updateRoomStatus") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Boolean> updateRoomStatus(@RequestBody @Valid LiveRoomStatus status ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(liveRoomService.updateRoomStatus(status)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiOperation("直播间推流状态") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ApiImplicitParams({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间Uid", required = true), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @GetMapping(value = "/liveStreamStatus") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<TencentWrapper.LiveStreamState> roomLiveStream(String roomUid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 直播间推流状态查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return succeed(liveRoomService.roomLiveStreamStatus(roomUid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |