RoomController.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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. if(StringUtils.isBlank(platform)){
  119. platform = "4dkankan";
  120. }
  121. roomService.inOrOutRoom(roomId,role,type,userId,platform);
  122. return ResultData.ok();
  123. }
  124. /**
  125. * 分享房间
  126. * roomId 房间ida
  127. */
  128. @GetMapping("/shareRoom")
  129. public ResultData shareRoom(@RequestParam(required = false) String roomId,
  130. @RequestParam(required = false) String userId){
  131. if(roomId == null){
  132. throw new BusinessException(ResultCode.PARAM_MISS);
  133. }
  134. roomShareLogService.saveLog(roomId,userId);
  135. return ResultData.ok();
  136. }
  137. /**
  138. * 获取房间密码
  139. */
  140. @PostMapping("/checkRoomVisitPassword")
  141. public ResultData checkRoomVisitPassword(@RequestBody CheckRoomPasswordParam param){
  142. if(StringUtils.isBlank(param.getRoomId()) || StringUtils.isBlank(param.getPassword())){
  143. throw new BusinessException(ResultCode.PARAM_MISS);
  144. }
  145. String roomId = param.getRoomId();
  146. if(param.getRoomId().contains("_")){
  147. roomId = param.getRoomId().split("_")[0];
  148. }
  149. Room room = roomService.getById(roomId);
  150. String pwd = MD5.create().digestHex(room.getVisitPassword());
  151. Boolean flag = pwd.equals(param.getPassword());
  152. if(flag){
  153. if(StringUtils.isNotBlank(getWxToken())){
  154. String redisKey = String.format(RedisKeyUtil.roomPassword, room.getRoomId(), room.getVisitPassword(),getWxToken());
  155. redisUtil.set(redisKey,getWxToken(),60 * 60);
  156. log.info("rediskey:{}",redisKey);
  157. }
  158. if(StringUtils.isNotBlank(request.getSession().getId())){
  159. String redisKey = String.format(RedisKeyUtil.roomPassword, room.getRoomId(), room.getVisitPassword(),request.getSession().getId());
  160. redisUtil.set(redisKey,request.getSession().getId(),60 * 60);
  161. log.info("rediskey:{}",redisKey);
  162. }
  163. }
  164. return ResultData.ok(flag);
  165. }
  166. //火调解散房间
  167. @GetMapping("/dissolveTheRoom")
  168. public ResultData dissolveTheRoom(@RequestParam(required = false) String roomId){
  169. roomService.dissolveTheRoom(roomId);
  170. return ResultData.ok();
  171. }
  172. //火调开启房间
  173. @GetMapping("/openTheRoom")
  174. public ResultData openTheRoom(@RequestParam(required = false) String roomId){
  175. roomService.openTheRoom(roomId);
  176. return ResultData.ok();
  177. }
  178. //根据场景码获取房间号
  179. @GetMapping("/getRoomIdByNum")
  180. public ResultData getRoomIdByNum(@RequestParam(required = false) String num){
  181. Room room = roomService.getRoomIdByNum(num);
  182. if(room == null){
  183. throw new BusinessException(ResultCode.ROOM_MISS);
  184. }
  185. return ResultData.ok(room);
  186. }
  187. }