LiveRoomController.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.ym.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ym.common.ETencentImCallbackCommand;
  5. import com.ym.mec.common.entity.ImRoomMessage;
  6. import com.ym.pojo.IMApiResultInfo;
  7. import com.ym.pojo.RecordNotify;
  8. import com.ym.pojo.TencentData;
  9. import com.ym.pojo.TencentImCallbackResult;
  10. import com.ym.service.LiveRoomService;
  11. import io.swagger.annotations.ApiOperation;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.web.bind.annotation.PostMapping;
  15. import org.springframework.web.bind.annotation.RequestBody;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import javax.servlet.http.HttpServletRequest;
  19. /**
  20. * @author hgw
  21. * Created by 2022-02-21
  22. */
  23. @RestController
  24. @RequestMapping("/liveRoom")
  25. @Slf4j
  26. public class LiveRoomController {
  27. @Autowired
  28. private LiveRoomService liveRoomService;
  29. @ApiOperation("创建直播房间")
  30. @PostMapping(value = "/create")
  31. public IMApiResultInfo createLiveRoom(String roomId, String roomName) throws Exception {
  32. return liveRoomService.createLiveRoom(roomId, roomName);
  33. }
  34. @ApiOperation("销毁直播房间")
  35. @PostMapping(value = "/destroy")
  36. public IMApiResultInfo destroyLiveRoom(String roomId) throws Exception {
  37. return liveRoomService.destroyLiveRoom(roomId);
  38. }
  39. @ApiOperation("向房间发送消息")
  40. @PostMapping(value = "/publishRoomMsg")
  41. public IMApiResultInfo publishRoomTextMsg(@RequestBody ImRoomMessage message) {
  42. return liveRoomService.publishRoomMessage(message);
  43. }
  44. @ApiOperation("录制结果回调")
  45. @RequestMapping(value = "/recordSync")
  46. public void recordSync(@RequestBody String body) {
  47. log.info("recordSync body:{}", body);
  48. RecordNotify recordNotify = JSONObject.parseObject(body, RecordNotify.class);
  49. liveRoomService.recordSync(recordNotify);
  50. }
  51. @ApiOperation("录制直播")
  52. @RequestMapping(value = "/startRecord")
  53. public void startRecord(String roomId, String videoResolution) throws Exception {
  54. liveRoomService.startRecord(roomId, videoResolution);
  55. }
  56. @ApiOperation("结束录制直播")
  57. @RequestMapping(value = "/stopRecord")
  58. public void stopRecord(String roomId) throws Exception {
  59. liveRoomService.stopRecord(roomId);
  60. }
  61. @ApiOperation("查询用户是否在聊天室")
  62. @RequestMapping(value = "/userExistInRoom")
  63. public boolean userExistInRoom(String chatroomId, String userId) {
  64. return liveRoomService.userExistInRoom(chatroomId, userId);
  65. }
  66. @ApiOperation("查询用户是否在聊天室")
  67. @PostMapping(value = "/checkOnline")
  68. public boolean checkOnline(String userId) {
  69. return liveRoomService.checkOnline(userId);
  70. }
  71. @ApiOperation("添加禁言成员-默认禁言120分钟")
  72. @PostMapping(value = "/addUserUnableSpeak")
  73. public boolean addUserUnableSpeak(String roomUid, String userId) {
  74. return liveRoomService.addUserUnableSpeak(roomUid, userId);
  75. }
  76. @ApiOperation("移除禁言成员")
  77. @PostMapping(value = "/removeUserUnableSpeak")
  78. public boolean removeUserUnableSpeak(String roomUid, String userId) {
  79. return liveRoomService.removeUserUnableSpeak(roomUid, userId);
  80. }
  81. /**
  82. * https://doc.rongcloud.cn/imserver/server/v1/chatroom/status
  83. */
  84. @ApiOperation("聊天室状态同步")
  85. @RequestMapping(value = "/syncChatRoomStatus")
  86. public void syncChatRoomStatus(@RequestBody String body) {
  87. log.info("syncChatRoomStatus body:{}", body);
  88. }
  89. @ApiOperation("腾讯im 回调接口")
  90. @PostMapping(value = "/tencentImCallback")
  91. public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {
  92. log.info("tencentImCallback body:{}", body);
  93. log.info("tencentImCallback request param:{}", JSON.toJSONString(request.getParameterMap()));
  94. if(request.getParameter("CallbackCommand").equals(ETencentImCallbackCommand.GROUP_CALLBACKONMEMBERSTATECHANGE.name())) {
  95. TencentData.CallbackOnMemberStateChange callbackOnMemberStateChange = TencentData.CallbackOnMemberStateChange.toObject(
  96. body);
  97. log.debug("callbackOnMemberStateChange: {}", callbackOnMemberStateChange);
  98. } else if(request.getParameter("CallbackCommand").equals(ETencentImCallbackCommand.GROUP_CALLBACKAFTERMEMBEREXIT.name())) {
  99. TencentData.CallbackAfterMemberExit callbackAfterMemberExit = TencentData.CallbackAfterMemberExit.toObject(
  100. body);
  101. log.debug("CallbackAfterMemberExit: {}", callbackAfterMemberExit);
  102. } else if(request.getParameter("CallbackCommand").equals(ETencentImCallbackCommand.GROUP_CALLBACKAFTERNEWMEMBERJOIN.name())) {
  103. TencentData.CallbackAfterNewMemberJoin callbackAfterNewMemberJoin = TencentData.CallbackAfterNewMemberJoin.toObject(
  104. body);
  105. log.debug("CallbackAfterNewMemberJoin: {}", callbackAfterNewMemberJoin);
  106. }
  107. return new TencentImCallbackResult();
  108. }
  109. }