Commit c0fdf132 by zhangxingmin

push

parent aa7056c6
......@@ -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 房间号
......
......@@ -31,5 +31,9 @@ public interface ApiCoSessionService {
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);
}
......@@ -13,6 +13,7 @@ import com.yd.common.utils.RedisUtil;
import com.yd.communication.api.service.ApiCoSessionService;
import com.yd.communication.api.utils.ClientInfoUtils;
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.enums.CoSessionStatusEnum;
import com.yd.communication.feign.enums.ControlHolderTypeEnum;
......@@ -183,6 +184,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
// 获取 Token(调用 /user/generate/token)
String token = null;
String name = null;
GenerateTokenResponse tokenResp = null;
try {
GenerateTokenRequest tokenRequest = new GenerateTokenRequest();
......@@ -210,6 +212,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
if (data != null) {
tokenResp = JSONObject.parseObject(JSONObject.toJSONString(data), GenerateTokenResponse.class);
token = tokenResp.getToken();
name = tokenResp.getName();
}
}
}
......@@ -237,6 +240,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
roomRedisInfoDTO.setControlHolderId(session.getControlHolderId());
roomRedisInfoDTO.setRoomId(roomId);
roomRedisInfoDTO.setRoomPwd(roomPwd);
roomRedisInfoDTO.setName(name);
redisUtil.setCacheObject(RedisEnum.ROOM.getPrefix() + roomId + ":" + roomPwd, roomRedisInfoDTO,
RedisEnum.ROOM.getTimeout(), RedisEnum.ROOM.getTimeUnit());
log.info("【创建会话-内部】Redis缓存已设置, key={}", RedisEnum.ROOM.getPrefix() + roomId);
......@@ -335,11 +339,14 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
session.setRoomLink(roomLink);
iCoSessionService.saveOrUpdate(session);
// 设置房间链接失效时间(用于扫码和链接直接访问)
// redisUtil.setCacheObject(RedisEnum.ROOM_LINK.getPrefix() + session.getRoomId() + ":" + session.getRoomPwd(),
// session.getRoomLink(),
// RedisEnum.ROOM_LINK.getTimeout(),
// RedisEnum.ROOM_LINK.getTimeUnit());
// 设置房间链接失效时间(用于扫码和链接直接访问,默认2小时)
RoomLinkDTO roomLinkDTO = new RoomLinkDTO();
roomLinkDTO.setQrCodeRoomLink(qrCodeRoomLink);
roomLinkDTO.setRoomLink(roomLink);
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());
......@@ -353,7 +360,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
response.setStatus(session.getStatus());
response.setRoomLink(roomLink);
response.setRoomQrCode(roomQrCodeUrl);
// response.setExpirationTime(expirationDate);
response.setExpirationTime(expirationDate);
log.info("【创建会话】成功,roomId={}, sessionBizId={}", session.getRoomId(), session.getCoSessionBizId());
return Result.success(response);
......@@ -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
......
......@@ -7,7 +7,6 @@ import com.yd.communication.feign.response.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
......@@ -50,6 +49,26 @@ public interface ApiCoSessionFeignClient {
@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 房间号
......
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 {
//协同房间缓存信息redis参数
ROOM(RedisConstants.ROOM_KEY_PREFIX,1,TimeUnit.DAYS),
//房间链接缓存信息redis参数
ROOM_LINK(RedisConstants.ROOM_LINK_KEY_PREFIX,120,TimeUnit.DAYS),
ROOM_LINK(RedisConstants.ROOM_LINK_KEY_PREFIX,120,TimeUnit.MINUTES),
//code置换资源创建者token的缓存信息
;
......
......@@ -31,6 +31,11 @@ public class ApiCoSessionFeignFallbackFactory implements FallbackFactory<ApiCoSe
}
@Override
public Result<GetLinkStatusResponse> getLinkStatus(String roomId, String roomPwd) {
return null;
}
@Override
public Result<Boolean> isMy(String roomId, String roomPwd, HttpServletRequest httpRequest) {
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 {
*/
private String roomLink;
// /**
// * 链接失效时间
// */
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
// private Date expirationTime;
/**
* 链接失效时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
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