|  | @@ -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));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 |