package com.fdkankan.tk.controller; import cn.hutool.crypto.digest.MD5; import cn.hutool.jwt.JWTUtil; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.tk.common.ResultCode; import com.fdkankan.tk.common.ResultData; import com.fdkankan.tk.common.util.RedisKeyUtil; import com.fdkankan.tk.entity.Room; import com.fdkankan.tk.exception.BusinessException; import com.fdkankan.tk.request.CheckRoomPasswordParam; import com.fdkankan.tk.request.RoomAddParam; import com.fdkankan.tk.request.RoomListParam; import com.fdkankan.tk.response.RoomAddUserParam; import com.fdkankan.tk.service.IRoomService; import com.fdkankan.tk.service.IRoomShareLogService; import com.fdkankan.tk.util.MD5Utils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.IOException; /** *房间管理 */ @RestController @Slf4j public class RoomController extends BaseController{ @Autowired IRoomService roomService; @Autowired IRoomShareLogService roomShareLogService; @Autowired RedisUtil redisUtil; /** * 根据房间id获取详情 */ @GetMapping("/roomInfo") public ResultData roomInfo(@RequestParam(required = false) String roomId){ return ResultData.ok(roomService.getRoomInfo(roomId,getToken(),getWxToken(),request.getSession().getId())); } /** * 房间访问次数 +1 */ @GetMapping("/roomAddView") public ResultData roomAddView(@RequestParam(required = false) String roomId){ //roomService.roomAddView(roomId); return ResultData.ok(); } /** * 房间列表 */ @PostMapping("/roomList") public ResultData pageList(@RequestBody RoomListParam param){ return ResultData.ok(roomService.pageList(param,getToken(),getWxToken())); } /** * 创建房间 */ @PostMapping("/roomAddOrUpdate") public ResultData createRoom(@RequestBody RoomAddParam param){ return ResultData.ok(roomService.addOrUpdate(param,getToken())); } /** * 删除房间 */ @PostMapping("/roomDelete") public ResultData roomDelete(@RequestBody RoomAddParam param) { if(param.getRoomId() == null){ throw new BusinessException(ResultCode.PARAM_MISS); } roomService.deleteById(param.getRoomId()); return ResultData.ok(); } @GetMapping("/checkCanDel") public ResultData checkCanDel(@RequestParam(required = false) String roomId) { if(roomId == null){ throw new BusinessException(ResultCode.PARAM_MISS); } Room room = roomService.getById(roomId); if(room == null){ throw new BusinessException(ResultCode.ROOM_MISS); } return ResultData.ok(roomService.checkCanDel(room)); } /** * 获取分享二维码 * roomId 房间id * type follower leader */ @GetMapping("/roomGetShareCode") public ResultData roomGetShareCode(@RequestParam(required = false) String roomId){ if(roomId == null){ throw new BusinessException(ResultCode.PARAM_MISS); } return ResultData.ok(roomService.getWxQrCode(roomId,"follower")); } /** * 获取分享二维码 */ @GetMapping("/roomGetHostCode") public ResultData roomGetHostCode(@RequestParam(required = false) String roomId){ if(roomId == null){ throw new BusinessException(ResultCode.PARAM_MISS); } return ResultData.ok(roomService.getWxQrCode(roomId,"leader")); } /** * 加入房间,开启带看,退出房间 * type 0 加入房间,1退出房间 * role follower leader */ @GetMapping("/inOrOutRoom") public ResultData inOrOutRoom(@RequestParam(required = false) String role, @RequestParam(required = false) String roomId, @RequestParam(required = false) Integer type, @RequestParam(required = false) String userId){ String platform = request.getHeader("platform"); if(StringUtils.isBlank(platform)){ platform = "4dkankan"; } roomService.inOrOutRoom(roomId,role,type,userId,platform); return ResultData.ok(); } /** * 分享房间 * roomId 房间ida */ @GetMapping("/shareRoom") public ResultData shareRoom(@RequestParam(required = false) String roomId, @RequestParam(required = false) String userId){ if(roomId == null){ throw new BusinessException(ResultCode.PARAM_MISS); } roomShareLogService.saveLog(roomId,userId); return ResultData.ok(); } /** * 获取房间密码 */ @PostMapping("/checkRoomVisitPassword") public ResultData checkRoomVisitPassword(@RequestBody CheckRoomPasswordParam param){ if(StringUtils.isBlank(param.getRoomId()) || StringUtils.isBlank(param.getPassword())){ throw new BusinessException(ResultCode.PARAM_MISS); } String roomId = param.getRoomId(); if(param.getRoomId().contains("_")){ roomId = param.getRoomId().split("_")[0]; } Room room = roomService.getById(roomId); String pwd = MD5.create().digestHex(room.getVisitPassword()); Boolean flag = pwd.equals(param.getPassword()); if(flag){ if(StringUtils.isNotBlank(getWxToken())){ String redisKey = String.format(RedisKeyUtil.roomPassword, room.getRoomId(), room.getVisitPassword(),getWxToken()); redisUtil.set(redisKey,getWxToken(),60 * 60); log.info("rediskey:{}",redisKey); } if(StringUtils.isNotBlank(request.getSession().getId())){ String redisKey = String.format(RedisKeyUtil.roomPassword, room.getRoomId(), room.getVisitPassword(),request.getSession().getId()); redisUtil.set(redisKey,request.getSession().getId(),60 * 60); log.info("rediskey:{}",redisKey); } } return ResultData.ok(flag); } //火调解散房间 @GetMapping("/dissolveTheRoom") public ResultData dissolveTheRoom(@RequestParam(required = false) String roomId){ roomService.dissolveTheRoom(roomId); return ResultData.ok(); } //火调开启房间 @GetMapping("/openTheRoom") public ResultData openTheRoom(@RequestParam(required = false) String roomId){ roomService.openTheRoom(roomId); return ResultData.ok(); } //根据场景码获取房间号 @GetMapping("/getRoomIdByNum") public ResultData getRoomIdByNum(@RequestParam(required = false) String num){ Room room = roomService.getRoomIdByNum(num); if(room == null){ throw new BusinessException(ResultCode.ROOM_MISS); } return ResultData.ok(room); } }