ImLiveBroadcastRoomController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. package com.ym.mec.web.controller;
  2. import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
  3. import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
  4. import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
  5. import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
  6. import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
  7. import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
  8. import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
  9. import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
  10. import com.ym.mec.common.controller.BaseController;
  11. import com.ym.mec.common.entity.HttpResponseResult;
  12. import com.ym.mec.common.entity.ImUserState;
  13. import com.ym.mec.common.page.PageInfo;
  14. import com.ym.mec.common.page.WrapperUtil;
  15. import io.swagger.annotations.*;
  16. import org.springframework.security.access.prepost.PreAuthorize;
  17. import org.springframework.web.bind.annotation.*;
  18. import javax.annotation.Resource;
  19. import javax.servlet.http.HttpServletResponse;
  20. import javax.validation.Valid;
  21. import java.io.IOException;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.concurrent.CompletableFuture;
  25. /**
  26. * 直播房间管理表(ImLiveBroadcastRoom)表控制层
  27. *
  28. * @author hgw
  29. * @since 2022-02-17 20:52:04
  30. */
  31. @Api(tags = "直播房间管理表")
  32. @RestController
  33. @RequestMapping("/imLiveBroadcastRoom")
  34. public class ImLiveBroadcastRoomController extends BaseController {
  35. /**
  36. * 服务对象
  37. */
  38. @Resource
  39. private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
  40. @ApiImplicitParams({
  41. @ApiImplicitParam(name = "search", dataType = "String", value = "模糊查询关键字"),
  42. @ApiImplicitParam(name = "liveState", dataType = "Integer", value = "直播状态 0未开始 1开始 2结束"),
  43. @ApiImplicitParam(name = "startTime", dataType = "String", value = "开始时间"),
  44. @ApiImplicitParam(name = "endTime", dataType = "String", value = "结束时间"),
  45. @ApiImplicitParam(name = "popularize", dataType = "Integer", value = "是否在首页推广 0否 1是"),
  46. @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
  47. @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
  48. })
  49. @ApiOperation("后台-分页查询直播间列表")
  50. @PostMapping("/queryPage")
  51. public HttpResponseResult<PageInfo<ImLiveBroadcastRoomVo>> queryPage(@RequestBody Map<String, Object> param) {
  52. return succeed(imLiveBroadcastRoomService.queryPage(param));
  53. }
  54. @ApiImplicitParams({
  55. @ApiImplicitParam(name = "search", dataType = "String", value = "模糊查询关键字"),
  56. @ApiImplicitParam(name = "subjectId", dataType = "Integer", value = "声部id"),
  57. @ApiImplicitParam(name = "organId", dataType = "Integer", value = "分部id"),
  58. @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
  59. @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
  60. })
  61. @ApiOperation("直播间预约人员信息")
  62. @PostMapping("/query/roomUser")
  63. public HttpResponseResult<PageInfo<RoomReservationUserVo>> queryRoomUser(@RequestBody @Valid RoomReservationUserSearch query) {
  64. return succeed(imLiveBroadcastRoomService.queryRoomUser(query));
  65. }
  66. @ApiImplicitParams({
  67. @ApiImplicitParam(name = "search", dataType = "String", value = "模糊查询关键字"),
  68. @ApiImplicitParam(name = "subjectId", dataType = "Integer", value = "声部id"),
  69. @ApiImplicitParam(name = "organId", dataType = "Integer", value = "分部id"),
  70. })
  71. @ApiOperation(value = "导出训练营详情")
  72. @PostMapping(value = "/exportReservationRoomUser")
  73. public void exportReservationRoomUser(@RequestBody RoomReservationUserSearch query, HttpServletResponse response) throws IOException {
  74. imLiveBroadcastRoomService.exportReservationRoomUser(query, response);
  75. }
  76. @ApiOperation("查询房间信息并校验房间是否合规")
  77. @GetMapping("/queryRoom")
  78. public HttpResponseResult<ImLiveBroadcastRoomVo> queryRoomAndCheck(@ApiParam(value = "房间uid", required = true) String roomUid,
  79. @ApiParam(value = "用户id", required = true) Integer userId) {
  80. return succeed(imLiveBroadcastRoomService.queryRoomAndCheck(roomUid, userId, null));
  81. }
  82. @ApiOperation("查询房间信息")
  83. @GetMapping("/queryRoomInfo")
  84. public HttpResponseResult<ImLiveBroadcastRoomVo> queryRoomInfo(@ApiParam(value = "房间uid", required = true) String roomUid) {
  85. return succeed(imLiveBroadcastRoomService.queryRoomInfo(roomUid));
  86. }
  87. @ApiOperation("创建直播间")
  88. @PostMapping("/add")
  89. @PreAuthorize("@pcs.hasPermissions('imLiveBroadcastRoom/add')")
  90. public HttpResponseResult<Object> add(@Valid @RequestBody ImLiveBroadcastRoomDto dto) {
  91. imLiveBroadcastRoomService.add(dto);
  92. //看是否需要马上创建房间
  93. CompletableFuture.runAsync(imLiveBroadcastRoomService::createLiveRoom);
  94. return succeed();
  95. }
  96. @ApiOperation("修改直播间信息-已开播无法修改")
  97. @PostMapping("/update")
  98. public HttpResponseResult<Object> update(@Valid @RequestBody ImLiveBroadcastRoomDto dto) {
  99. imLiveBroadcastRoomService.update(dto);
  100. return succeed();
  101. }
  102. /**
  103. * 修改是否禁言
  104. *
  105. * @param id 房间表id
  106. * @param whetherChat 是否允许聊天互动 0允许 1不允许
  107. */
  108. @ApiOperation("修改是否禁言")
  109. @GetMapping(value = "/whetherChat/{id}")
  110. public HttpResponseResult<Object> whetherChat(@ApiParam(value = "房间表id", required = true) @PathVariable("id") Integer id,
  111. @ApiParam(value = "是否允许聊天互动 0允许 1不允许", required = true) Integer whetherChat) {
  112. imLiveBroadcastRoomService.whetherChat(id, whetherChat);
  113. return succeed();
  114. }
  115. /**
  116. * 关闭直播间
  117. *
  118. * @param id 房间表id
  119. */
  120. @ApiOperation("关闭直播间")
  121. @GetMapping(value = "/roomDestroy/{id}")
  122. public HttpResponseResult<Object> roomDestroy(@ApiParam(value = "房间表id", required = true) @PathVariable("id") Integer id) {
  123. imLiveBroadcastRoomService.roomDestroy(id);
  124. return succeed();
  125. }
  126. @ApiImplicitParams({
  127. @ApiImplicitParam(name = "id", dataType = "Integer", value = "房间id"),
  128. })
  129. @ApiOperation("删除直播间信息-已开播无法删除")
  130. @PostMapping("/delete")
  131. @PreAuthorize("@pcs.hasPermissions('imLiveBroadcastRoom/delete')")
  132. public HttpResponseResult<Object> delete(@RequestBody Map<String, Object> param) {
  133. Integer id = WrapperUtil.toInt(param, "id", "请传入房间id");
  134. imLiveBroadcastRoomService.delete(id);
  135. return succeed();
  136. }
  137. @ApiOperation("推广直播间-每个机构只能有一个直播间在首页推广")
  138. @GetMapping("/opsPopularize")
  139. @PreAuthorize("@pcs.hasPermissions('imLiveBroadcastRoom/opsPopularize')")
  140. public HttpResponseResult<Object> opsPopularize(@ApiParam(value = "房间id", required = true) Integer id,
  141. @ApiParam(value = "是否在首页推广 0否 1是", required = true) Integer popularize) {
  142. imLiveBroadcastRoomService.opsPopularize(id, popularize);
  143. return succeed();
  144. }
  145. @ApiOperation("同步点赞数量")
  146. @GetMapping("/syncLike")
  147. public HttpResponseResult<Object> syncLike(@ApiParam(value = "房间uid", required = true) String roomUid,
  148. @ApiParam(value = "点赞数", required = true) Integer likeNum) {
  149. imLiveBroadcastRoomService.syncLike(roomUid, likeNum);
  150. return succeed();
  151. }
  152. @PostMapping("/quitRoom")
  153. public HttpResponseResult<Object> quitRoom(@RequestBody List<ImUserState> userState) {
  154. imLiveBroadcastRoomService.opsRoom(userState);
  155. return succeed();
  156. }
  157. @ApiOperation("主讲人进入房间")
  158. @GetMapping("/speakerJoinRoom")
  159. public HttpResponseResult<ImLiveBroadcastRoomVo> speakerJoinRoom(String roomUid) {
  160. return succeed(imLiveBroadcastRoomService.speakerJoinRoom(roomUid));
  161. }
  162. @ApiOperation("进入房间")
  163. @GetMapping("/joinRoom")
  164. public HttpResponseResult<Object> joinRoom(String roomUid, Integer userId) {
  165. imLiveBroadcastRoomService.joinRoom(roomUid, userId);
  166. return succeed();
  167. }
  168. @ApiOperation("开启/关闭直播的录像")
  169. @GetMapping("/opsLiveVideo")
  170. public HttpResponseResult<Object> opsLiveVideo(@ApiParam(value = "房间uid", required = true) String roomUid,
  171. @ApiParam(value = "用户id", required = true) Integer userId,
  172. @ApiParam(value = "type 1:开始直播-开始录像 2:关闭直播关闭录像", required = true) Integer type) {
  173. if (type == 1) {
  174. imLiveBroadcastRoomService.startLive(roomUid, userId);
  175. } else if (type == 2) {
  176. imLiveBroadcastRoomService.closeLive(roomUid, userId);
  177. } else {
  178. failed("type参数错误");
  179. }
  180. return succeed();
  181. }
  182. @GetMapping("/test")
  183. public Object test(String roomUid) {
  184. return imLiveBroadcastRoomService.test(roomUid);
  185. }
  186. @GetMapping("/destroyExpiredLiveRoom")
  187. public Object destroyExpiredLiveRoom() {
  188. imLiveBroadcastRoomService.destroyExpiredLiveRoom();
  189. return succeed();
  190. }
  191. @GetMapping("/shareGroup")
  192. public HttpResponseResult<Object> shareGroup(@ApiParam(value = "房间uid", required = true) String roomUid,
  193. @ApiParam(value = "群编号", required = true) String groupIds) {
  194. imLiveBroadcastRoomService.shareGroup(roomUid, groupIds);
  195. return succeed();
  196. }
  197. @ApiOperation("获取房间人员")
  198. @GetMapping("/queryRoomUserInfo")
  199. public HttpResponseResult<List<BaseRoomUserVo>> queryRoomUserInfo(@ApiParam(value = "房间uid", required = true) String roomUid) {
  200. return succeed(imLiveBroadcastRoomService.queryRoomLimitOnlineUserInfo(roomUid));
  201. }
  202. @ApiOperation("根据传入的用户id查询用户信息")
  203. @PostMapping("/queryBaseUserInfo")
  204. public HttpResponseResult<List<BaseRoomUserVo>> queryBaseUserInfo(@RequestBody List<Integer> userIdList) {
  205. return succeed(imLiveBroadcastRoomService.queryBaseUserInfo(userIdList));
  206. }
  207. @ApiOperation("查询直播间商品订单列表")
  208. @GetMapping("/queryLiveRoomGoodsOrderList")
  209. public HttpResponseResult<PageInfo<LiveRoomGoodsOrderVo>> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo) {
  210. return succeed(imLiveBroadcastRoomService.queryLiveRoomGoodsOrderList(queryInfo));
  211. }
  212. }