UserController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.ym.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ym.common.BaseResponse;
  5. import com.ym.mec.biz.dal.dto.TencentData;
  6. import com.ym.mec.biz.dal.dto.TencentImCallbackResult;
  7. import com.ym.mec.biz.dal.enums.ETencentImCallbackCommand;
  8. import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
  9. import com.ym.mec.common.entity.ImUserState;
  10. import com.ym.service.UserService;
  11. import io.rong.models.user.UserModel;
  12. import io.swagger.annotations.ApiOperation;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.*;
  17. import javax.servlet.http.HttpServletRequest;
  18. import java.util.List;
  19. @RestController
  20. @RequestMapping("/user")
  21. public class UserController {
  22. private static final Logger log = LoggerFactory.getLogger(UserController.class);
  23. @Autowired
  24. private UserService userService;
  25. @Autowired
  26. private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
  27. @RequestMapping(value = "/register", method = RequestMethod.POST)
  28. public Object register(@RequestBody UserModel userModel) throws Exception {
  29. return userService.register(userModel);
  30. }
  31. @RequestMapping(value = "/update", method = RequestMethod.POST)
  32. public Object update(@RequestBody UserModel userModel) throws Exception {
  33. return userService.update(userModel);
  34. }
  35. /**
  36. * 监听融云用户状态变更
  37. *
  38. * @param userState List<ImUserState>
  39. */
  40. @PostMapping(value = "/statusImUser")
  41. public BaseResponse statusImUser(@RequestBody List<ImUserState> userState) {
  42. log.info("statusImUser >>>>> : {}", JSONObject.toJSONString(userState));
  43. imLiveBroadcastRoomService.opsRoom(userState);
  44. return new BaseResponse<>();
  45. }
  46. @ApiOperation("腾讯im 回调接口")
  47. @PostMapping(value = "/tencentImCallback")
  48. public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {
  49. log.info("tencentImCallback body:{}", body);
  50. log.info("tencentImCallback request param:{}", JSON.toJSONString(request.getParameterMap()));
  51. String clientIP = request.getParameter("ClientIP");
  52. String optPlatform = request.getParameter("OptPlatform");
  53. if(request.getParameter("CallbackCommand").equals(ETencentImCallbackCommand.GROUP_CALLBACKONMEMBERSTATECHANGE.name())) {
  54. TencentData.CallbackOnMemberStateChange callbackOnMemberStateChange = TencentData.CallbackOnMemberStateChange.toObject(
  55. body);
  56. log.debug("callbackOnMemberStateChange: {}", callbackOnMemberStateChange);
  57. callbackOnMemberStateChange.setClientIP(clientIP);
  58. callbackOnMemberStateChange.setOptPlatform(optPlatform);
  59. imLiveBroadcastRoomService.callbackOnMemberStateChange(callbackOnMemberStateChange);
  60. } else if(request.getParameter("CallbackCommand").equals(ETencentImCallbackCommand.GROUP_CALLBACKAFTERMEMBEREXIT.name())) {
  61. TencentData.CallbackAfterMemberExit callbackAfterMemberExit = TencentData.CallbackAfterMemberExit.toObject(
  62. body);
  63. log.debug("callbackAfterMemberExit: {}", callbackAfterMemberExit);
  64. callbackAfterMemberExit.setClientIP(clientIP);
  65. callbackAfterMemberExit.setOptPlatform(optPlatform);
  66. imLiveBroadcastRoomService.callbackAfterMemberExit(callbackAfterMemberExit);
  67. } else if(request.getParameter("CallbackCommand").equals(ETencentImCallbackCommand.GROUP_CALLBACKAFTERNEWMEMBERJOIN.name())) {
  68. TencentData.CallbackAfterNewMemberJoin callbackAfterNewMemberJoin = TencentData.CallbackAfterNewMemberJoin.toObject(
  69. body);
  70. log.debug("CallbackAfterNewMemberJoin: {}", callbackAfterNewMemberJoin);
  71. callbackAfterNewMemberJoin.setClientIP(clientIP);
  72. callbackAfterNewMemberJoin.setOptPlatform(optPlatform);
  73. imLiveBroadcastRoomService.callbackAfterNewMemberJoin(callbackAfterNewMemberJoin);
  74. }
  75. return new TencentImCallbackResult();
  76. }
  77. @ApiOperation("腾讯云直播-推流 回调接口")
  78. @PostMapping(value = "/tencentStreamEventCallback")
  79. public TencentData.StreamEventCallbackResult tencentStreamEventCallback(@RequestBody String body) {
  80. log.info("tencentStreamEventCallback body:{}", body);
  81. TencentData.CallbackStreamStateEvent event = TencentData.CallbackStreamStateEvent.from(body);
  82. if (event.getEventType() == 0) {
  83. // 断流事件通知
  84. }
  85. if (event.getEventType() == 1) {
  86. // 推流事件通知
  87. }
  88. return TencentData.StreamEventCallbackResult.builder().code(0).build();
  89. }
  90. @ApiOperation("腾讯云直播-录制 回调接口")
  91. @PostMapping(value = "/tencentStreamRecordCallback")
  92. public TencentData.StreamEventCallbackResult tencentStreamRecordCallback(@RequestBody String body) {
  93. log.info("tencentStreamRecordCallback body:{}", body);
  94. TencentData.CallbackSteamRecordEvent event = TencentData.CallbackSteamRecordEvent.from(body);
  95. log.info("taskId={}, url={}", event.getTaskId(), event.getVideoUrl());
  96. return TencentData.StreamEventCallbackResult.builder().code(0).build();
  97. }
  98. @ApiOperation("腾讯云直播-推流异常 回调接口")
  99. @PostMapping(value = "/tencentStreamExceptionCallback")
  100. public TencentData.StreamEventCallbackResult tencentStreamExceptionCallback(@RequestBody String body) {
  101. log.info("tencentStreamExceptionCallback body:{}", body);
  102. return TencentData.StreamEventCallbackResult.builder().code(0).build();
  103. }
  104. }