RoomController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package com.fdkankan.tk.controller;
  2. import cn.hutool.crypto.digest.MD5;
  3. import cn.hutool.jwt.JWTUtil;
  4. import com.fdkankan.redis.util.RedisUtil;
  5. import com.fdkankan.tk.common.ResultCode;
  6. import com.fdkankan.tk.common.ResultData;
  7. import com.fdkankan.tk.common.util.RedisKeyUtil;
  8. import com.fdkankan.tk.entity.Room;
  9. import com.fdkankan.tk.exception.BusinessException;
  10. import com.fdkankan.tk.request.CheckRoomPasswordParam;
  11. import com.fdkankan.tk.request.RoomAddParam;
  12. import com.fdkankan.tk.request.RoomListParam;
  13. import com.fdkankan.tk.response.RoomAddUserParam;
  14. import com.fdkankan.tk.service.IRoomService;
  15. import com.fdkankan.tk.service.IRoomShareLogService;
  16. import com.fdkankan.tk.util.MD5Utils;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.*;
  21. import java.io.IOException;
  22. /**
  23. *房间管理
  24. */
  25. @RestController
  26. @Slf4j
  27. public class RoomController extends BaseController{
  28. @Autowired
  29. IRoomService roomService;
  30. @Autowired
  31. IRoomShareLogService roomShareLogService;
  32. @Autowired
  33. RedisUtil redisUtil;
  34. /**
  35. * 根据房间id获取详情
  36. */
  37. @GetMapping("/roomInfo")
  38. public ResultData roomInfo(@RequestParam(required = false) String roomId){
  39. return ResultData.ok(roomService.getRoomInfo(roomId,getToken(),getWxToken(),request.getSession().getId()));
  40. }
  41. /**
  42. * 房间访问次数 +1
  43. */
  44. @GetMapping("/roomAddView")
  45. public ResultData roomAddView(@RequestParam(required = false) String roomId){
  46. //roomService.roomAddView(roomId);
  47. return ResultData.ok();
  48. }
  49. /**
  50. * 房间列表
  51. */
  52. @PostMapping("/roomList")
  53. public ResultData pageList(@RequestBody RoomListParam param){
  54. return ResultData.ok(roomService.pageList(param,getToken(),getWxToken()));
  55. }
  56. /**
  57. * 创建房间
  58. */
  59. @PostMapping("/roomAddOrUpdate")
  60. public ResultData createRoom(@RequestBody RoomAddParam param){
  61. return ResultData.ok(roomService.addOrUpdate(param,getToken()));
  62. }
  63. /**
  64. * 删除房间
  65. */
  66. @PostMapping("/roomDelete")
  67. public ResultData roomDelete(@RequestBody RoomAddParam param) {
  68. if(param.getRoomId() == null){
  69. throw new BusinessException(ResultCode.PARAM_MISS);
  70. }
  71. roomService.deleteById(param.getRoomId());
  72. return ResultData.ok();
  73. }
  74. @GetMapping("/checkCanDel")
  75. public ResultData checkCanDel(@RequestParam(required = false) String roomId) {
  76. if(roomId == null){
  77. throw new BusinessException(ResultCode.PARAM_MISS);
  78. }
  79. Room room = roomService.getById(roomId);
  80. if(room == null){
  81. throw new BusinessException(ResultCode.ROOM_MISS);
  82. }
  83. return ResultData.ok(roomService.checkCanDel(room));
  84. }
  85. /**
  86. * 获取分享二维码
  87. * roomId 房间id
  88. * type follower leader
  89. */
  90. @GetMapping("/roomGetShareCode")
  91. public ResultData roomGetShareCode(@RequestParam(required = false) String roomId){
  92. if(roomId == null){
  93. throw new BusinessException(ResultCode.PARAM_MISS);
  94. }
  95. return ResultData.ok(roomService.getWxQrCode(roomId,"follower"));
  96. }
  97. /**
  98. * 获取分享二维码
  99. */
  100. @GetMapping("/roomGetHostCode")
  101. public ResultData roomGetHostCode(@RequestParam(required = false) String roomId){
  102. if(roomId == null){
  103. throw new BusinessException(ResultCode.PARAM_MISS);
  104. }
  105. return ResultData.ok(roomService.getWxQrCode(roomId,"leader"));
  106. }
  107. /**
  108. * 加入房间,开启带看,退出房间
  109. * type 0 加入房间,1退出房间
  110. * role follower leader
  111. */
  112. @GetMapping("/inOrOutRoom")
  113. public ResultData inOrOutRoom(@RequestParam(required = false) String role,
  114. @RequestParam(required = false) String roomId,
  115. @RequestParam(required = false) Integer type,
  116. @RequestParam(required = false) String userId){
  117. String platform = request.getHeader("platform");
  118. roomService.inOrOutRoom(roomId,role,type,userId,platform);
  119. return ResultData.ok();
  120. }
  121. /**
  122. * 分享房间
  123. * roomId 房间ida
  124. */
  125. @GetMapping("/shareRoom")
  126. public ResultData shareRoom(@RequestParam(required = false) String roomId,
  127. @RequestParam(required = false) String userId){
  128. if(roomId == null){
  129. throw new BusinessException(ResultCode.PARAM_MISS);
  130. }
  131. roomShareLogService.saveLog(roomId,userId);
  132. return ResultData.ok();
  133. }
  134. /**
  135. * 获取房间密码
  136. */
  137. @PostMapping("/checkRoomVisitPassword")
  138. public ResultData checkRoomVisitPassword(@RequestBody CheckRoomPasswordParam param){
  139. if(StringUtils.isBlank(param.getRoomId()) || StringUtils.isBlank(param.getPassword())){
  140. throw new BusinessException(ResultCode.PARAM_MISS);
  141. }
  142. String roomId = param.getRoomId();
  143. if(param.getRoomId().contains("_")){
  144. roomId = param.getRoomId().split("_")[0];
  145. }
  146. Room room = roomService.getById(roomId);
  147. String pwd = MD5.create().digestHex(room.getVisitPassword());
  148. Boolean flag = pwd.equals(param.getPassword());
  149. if(flag){
  150. if(StringUtils.isNotBlank(getWxToken())){
  151. String redisKey = String.format(RedisKeyUtil.roomPassword, room.getRoomId(), room.getVisitPassword(),getWxToken());
  152. redisUtil.set(redisKey,getWxToken(),60 * 60);
  153. log.info("rediskey:{}",redisKey);
  154. }
  155. if(StringUtils.isNotBlank(request.getSession().getId())){
  156. String redisKey = String.format(RedisKeyUtil.roomPassword, room.getRoomId(), room.getVisitPassword(),request.getSession().getId());
  157. redisUtil.set(redisKey,request.getSession().getId(),60 * 60);
  158. log.info("rediskey:{}",redisKey);
  159. }
  160. }
  161. return ResultData.ok(flag);
  162. }
  163. //火调解散房间
  164. @GetMapping("/dissolveTheRoom")
  165. public ResultData dissolveTheRoom(@RequestParam(required = false) String roomId){
  166. roomService.dissolveTheRoom(roomId);
  167. return ResultData.ok();
  168. }
  169. //火调开启房间
  170. @GetMapping("/openTheRoom")
  171. public ResultData openTheRoom(@RequestParam(required = false) String roomId){
  172. roomService.openTheRoom(roomId);
  173. return ResultData.ok();
  174. }
  175. //根据场景码获取房间号
  176. @GetMapping("/getRoomIdByNum")
  177. public ResultData getRoomIdByNum(@RequestParam(required = false) String num){
  178. Room room = roomService.getRoomIdByNum(num);
  179. if(room == null){
  180. throw new BusinessException(ResultCode.ROOM_MISS);
  181. }
  182. return ResultData.ok(room);
  183. }
  184. }