Commit c0fdf132 by zhangxingmin

push

parent aa7056c6
...@@ -57,6 +57,29 @@ public class ApiCoSessionController implements ApiCoSessionFeignClient { ...@@ -57,6 +57,29 @@ public class ApiCoSessionController implements ApiCoSessionFeignClient {
} }
/** /**
* 获取房间链接状态信息
*
* @param roomId 房间号
* @param roomPwd 房间密码
* @return
*/
@Override
public Result<GetLinkStatusResponse> getLinkStatus(String roomId, String roomPwd) {
return apiCoSessionService.getLinkStatus(roomId,roomPwd);
}
/**
* 设置房间链接状态为失效
*
* @param request 加入会话请求
* @return 会话详情
*/
@Override
public Result<SetLinkFailureResponse> setLinkFailure(SetLinkFailureRequest request) {
return apiCoSessionService.setLinkFailure(request);
}
/**
* 判断资源创建者和参与者是否是同一个人(供参与者调用) * 判断资源创建者和参与者是否是同一个人(供参与者调用)
* *
* @param roomId 房间号 * @param roomId 房间号
......
...@@ -31,5 +31,9 @@ public interface ApiCoSessionService { ...@@ -31,5 +31,9 @@ public interface ApiCoSessionService {
Result<SessionDetailResponse> get(String roomId, String roomPwd); Result<SessionDetailResponse> get(String roomId, String roomPwd);
Result<GetLinkStatusResponse> getLinkStatus(String roomId, String roomPwd);
Result<SetLinkFailureResponse> setLinkFailure(SetLinkFailureRequest request);
Result<Boolean> isMy(String roomId, String roomPwd, HttpServletRequest httpRequest); Result<Boolean> isMy(String roomId, String roomPwd, HttpServletRequest httpRequest);
} }
...@@ -13,6 +13,7 @@ import com.yd.common.utils.RedisUtil; ...@@ -13,6 +13,7 @@ import com.yd.common.utils.RedisUtil;
import com.yd.communication.api.service.ApiCoSessionService; import com.yd.communication.api.service.ApiCoSessionService;
import com.yd.communication.api.utils.ClientInfoUtils; import com.yd.communication.api.utils.ClientInfoUtils;
import com.yd.communication.api.utils.QRCodeUtils; import com.yd.communication.api.utils.QRCodeUtils;
import com.yd.communication.feign.dto.RoomLinkDTO;
import com.yd.communication.feign.dto.RoomRedisInfoDTO; import com.yd.communication.feign.dto.RoomRedisInfoDTO;
import com.yd.communication.feign.enums.CoSessionStatusEnum; import com.yd.communication.feign.enums.CoSessionStatusEnum;
import com.yd.communication.feign.enums.ControlHolderTypeEnum; import com.yd.communication.feign.enums.ControlHolderTypeEnum;
...@@ -183,6 +184,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService { ...@@ -183,6 +184,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
// 获取 Token(调用 /user/generate/token) // 获取 Token(调用 /user/generate/token)
String token = null; String token = null;
String name = null;
GenerateTokenResponse tokenResp = null; GenerateTokenResponse tokenResp = null;
try { try {
GenerateTokenRequest tokenRequest = new GenerateTokenRequest(); GenerateTokenRequest tokenRequest = new GenerateTokenRequest();
...@@ -210,6 +212,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService { ...@@ -210,6 +212,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
if (data != null) { if (data != null) {
tokenResp = JSONObject.parseObject(JSONObject.toJSONString(data), GenerateTokenResponse.class); tokenResp = JSONObject.parseObject(JSONObject.toJSONString(data), GenerateTokenResponse.class);
token = tokenResp.getToken(); token = tokenResp.getToken();
name = tokenResp.getName();
} }
} }
} }
...@@ -237,6 +240,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService { ...@@ -237,6 +240,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
roomRedisInfoDTO.setControlHolderId(session.getControlHolderId()); roomRedisInfoDTO.setControlHolderId(session.getControlHolderId());
roomRedisInfoDTO.setRoomId(roomId); roomRedisInfoDTO.setRoomId(roomId);
roomRedisInfoDTO.setRoomPwd(roomPwd); roomRedisInfoDTO.setRoomPwd(roomPwd);
roomRedisInfoDTO.setName(name);
redisUtil.setCacheObject(RedisEnum.ROOM.getPrefix() + roomId + ":" + roomPwd, roomRedisInfoDTO, redisUtil.setCacheObject(RedisEnum.ROOM.getPrefix() + roomId + ":" + roomPwd, roomRedisInfoDTO,
RedisEnum.ROOM.getTimeout(), RedisEnum.ROOM.getTimeUnit()); RedisEnum.ROOM.getTimeout(), RedisEnum.ROOM.getTimeUnit());
log.info("【创建会话-内部】Redis缓存已设置, key={}", RedisEnum.ROOM.getPrefix() + roomId); log.info("【创建会话-内部】Redis缓存已设置, key={}", RedisEnum.ROOM.getPrefix() + roomId);
...@@ -335,11 +339,14 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService { ...@@ -335,11 +339,14 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
session.setRoomLink(roomLink); session.setRoomLink(roomLink);
iCoSessionService.saveOrUpdate(session); iCoSessionService.saveOrUpdate(session);
// 设置房间链接失效时间(用于扫码和链接直接访问) // 设置房间链接失效时间(用于扫码和链接直接访问,默认2小时)
// redisUtil.setCacheObject(RedisEnum.ROOM_LINK.getPrefix() + session.getRoomId() + ":" + session.getRoomPwd(), RoomLinkDTO roomLinkDTO = new RoomLinkDTO();
// session.getRoomLink(), roomLinkDTO.setQrCodeRoomLink(qrCodeRoomLink);
// RedisEnum.ROOM_LINK.getTimeout(), roomLinkDTO.setRoomLink(roomLink);
// RedisEnum.ROOM_LINK.getTimeUnit()); redisUtil.setCacheObject(RedisEnum.ROOM_LINK.getPrefix() + session.getRoomId() + ":" + session.getRoomPwd(),
roomLinkDTO,
RedisEnum.ROOM_LINK.getTimeout(),
RedisEnum.ROOM_LINK.getTimeUnit());
// 计算链接失效时间点 // 计算链接失效时间点
long expireMillis = RedisEnum.ROOM_LINK.getTimeUnit().toMillis(RedisEnum.ROOM_LINK.getTimeout()); long expireMillis = RedisEnum.ROOM_LINK.getTimeUnit().toMillis(RedisEnum.ROOM_LINK.getTimeout());
...@@ -353,7 +360,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService { ...@@ -353,7 +360,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
response.setStatus(session.getStatus()); response.setStatus(session.getStatus());
response.setRoomLink(roomLink); response.setRoomLink(roomLink);
response.setRoomQrCode(roomQrCodeUrl); response.setRoomQrCode(roomQrCodeUrl);
// response.setExpirationTime(expirationDate); response.setExpirationTime(expirationDate);
log.info("【创建会话】成功,roomId={}, sessionBizId={}", session.getRoomId(), session.getCoSessionBizId()); log.info("【创建会话】成功,roomId={}, sessionBizId={}", session.getRoomId(), session.getCoSessionBizId());
return Result.success(response); return Result.success(response);
...@@ -782,6 +789,55 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService { ...@@ -782,6 +789,55 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
} }
/** /**
* 获取房间链接状态信息
*
* @param roomId 房间号
* @param roomPwd 房间密码
* @return
*/
@Override
public Result<GetLinkStatusResponse> getLinkStatus(String roomId, String roomPwd) {
if (StringUtils.isBlank(roomId)) {
throw new BusinessException("房间号不能为空");
}
if (StringUtils.isBlank(roomPwd)) {
throw new BusinessException("房间密码不能为空");
}
RoomRedisInfoDTO roomRedisInfoDTO = redisUtil.getCacheObject(RedisEnum.ROOM.getPrefix() + roomId + ":" + roomPwd, RoomRedisInfoDTO.class);
GetLinkStatusResponse response = new GetLinkStatusResponse();
response.setReportOwnerName(roomRedisInfoDTO != null ? roomRedisInfoDTO.getName() : "");
RoomLinkDTO roomLinkDTO = redisUtil.getCacheObject(RedisEnum.ROOM_LINK.getPrefix() + roomId + ":" + roomPwd,RoomLinkDTO.class);
if (roomLinkDTO == null) {
//访问链接已失效
return Result.fail(ResultCode.LINK_INVALID.getCode(),ResultCode.LINK_INVALID.getMessage(),response);
}
return Result.success(response);
}
/**
* 设置房间链接状态为失效
*
* @param request 加入会话请求
* @return 会话详情
*/
@Override
public Result<SetLinkFailureResponse> setLinkFailure(SetLinkFailureRequest request) {
if (StringUtils.isBlank(request.getRoomId())) {
throw new BusinessException("房间号不能为空");
}
if (StringUtils.isBlank(request.getRoomPwd())) {
throw new BusinessException("房间密码不能为空");
}
//删除
redisUtil.deleteObject(RedisEnum.ROOM_LINK.getPrefix() + request.getRoomId() + ":" + request.getRoomPwd());
RoomRedisInfoDTO roomRedisInfoDTO = redisUtil.getCacheObject(RedisEnum.ROOM.getPrefix() + request.getRoomId() + ":" + request.getRoomPwd(), RoomRedisInfoDTO.class);
SetLinkFailureResponse response = new SetLinkFailureResponse();
response.setReportOwnerName(roomRedisInfoDTO != null ? roomRedisInfoDTO.getName() : "");
return Result.success(response);
}
/**
* 判断资源创建者和参与者是否是同一个人 * 判断资源创建者和参与者是否是同一个人
*/ */
@Override @Override
......
...@@ -7,7 +7,6 @@ import com.yd.communication.feign.response.*; ...@@ -7,7 +7,6 @@ import com.yd.communication.feign.response.*;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -50,6 +49,26 @@ public interface ApiCoSessionFeignClient { ...@@ -50,6 +49,26 @@ public interface ApiCoSessionFeignClient {
@RequestParam("roomPwd") String roomPwd); @RequestParam("roomPwd") String roomPwd);
/** /**
* 获取房间链接状态信息
*
* @param roomId 房间号
* @param roomPwd 房间密码
* @return
*/
@GetMapping("/link/status")
Result<GetLinkStatusResponse> getLinkStatus(@RequestParam("roomId") String roomId,
@RequestParam("roomPwd") String roomPwd);
/**
* 设置房间链接状态为失效
*
* @param request 加入会话请求
* @return 会话详情
*/
@PostMapping("/set/link/failure")
Result<SetLinkFailureResponse> setLinkFailure(@Validated @RequestBody SetLinkFailureRequest request);
/**
* 判断资源创建者和参与者是否是同一个人(供参与者调用) * 判断资源创建者和参与者是否是同一个人(供参与者调用)
* *
* @param roomId 房间号 * @param roomId 房间号
......
package com.yd.communication.feign.dto;
import lombok.Data;
@Data
public class RoomLinkDTO {
/**
* 纯链接
*/
private String roomLink;
/**
* 二维码里面的链接
*/
private String qrCodeRoomLink;
}
...@@ -12,7 +12,7 @@ public enum RedisEnum { ...@@ -12,7 +12,7 @@ public enum RedisEnum {
//协同房间缓存信息redis参数 //协同房间缓存信息redis参数
ROOM(RedisConstants.ROOM_KEY_PREFIX,1,TimeUnit.DAYS), ROOM(RedisConstants.ROOM_KEY_PREFIX,1,TimeUnit.DAYS),
//房间链接缓存信息redis参数 //房间链接缓存信息redis参数
ROOM_LINK(RedisConstants.ROOM_LINK_KEY_PREFIX,120,TimeUnit.DAYS), ROOM_LINK(RedisConstants.ROOM_LINK_KEY_PREFIX,120,TimeUnit.MINUTES),
//code置换资源创建者token的缓存信息 //code置换资源创建者token的缓存信息
; ;
......
...@@ -31,6 +31,11 @@ public class ApiCoSessionFeignFallbackFactory implements FallbackFactory<ApiCoSe ...@@ -31,6 +31,11 @@ public class ApiCoSessionFeignFallbackFactory implements FallbackFactory<ApiCoSe
} }
@Override @Override
public Result<GetLinkStatusResponse> getLinkStatus(String roomId, String roomPwd) {
return null;
}
@Override
public Result<Boolean> isMy(String roomId, String roomPwd, HttpServletRequest httpRequest) { public Result<Boolean> isMy(String roomId, String roomPwd, HttpServletRequest httpRequest) {
return null; return null;
} }
......
package com.yd.communication.feign.request;
import lombok.Data;
@Data
public class SetLinkFailureRequest {
private String roomId;
private String roomPwd;
}
...@@ -41,9 +41,9 @@ public class CreateResponse { ...@@ -41,9 +41,9 @@ public class CreateResponse {
*/ */
private String roomLink; private String roomLink;
// /** /**
// * 链接失效时间 * 链接失效时间
// */ */
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
// private Date expirationTime; private Date expirationTime;
} }
\ No newline at end of file
package com.yd.communication.feign.response;
import lombok.Data;
@Data
public class GetLinkStatusResponse {
/**
* 报告归属人姓名
*/
private String reportOwnerName;
}
package com.yd.communication.feign.response;
import lombok.Data;
@Data
public class SetLinkFailureResponse {
/**
* 报告归属人姓名
*/
private String reportOwnerName;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment