feat: 添加用户端链接状态查询接口及自动刷新逻辑
主要修改: 1. 在LinkController中新增获取用户链接状态的接口,支持通过linkId或codeNo查询。 2. 在LinkStatusService中实现用户链接状态查询逻辑,包含自动刷新和二维码更新功能。 3. 更新LinkTask实体,添加needRefresh、refreshTime、qrCreatedAt和qrExpireAt字段以支持新功能。 4. 在ScriptClient中新增检查空闲设备、选区、刷新、检查上号状态等操作的实现。 5. 更新SecurityConfig,允许用户端获取链接状态接口公开访问。 技术细节: - 新增UserLinkStatusResponse DTO以支持用户链接状态的返回格式。 - 通过脚本端接口实现链接状态的自动刷新和二维码信息更新。
This commit is contained in:
@@ -7,6 +7,7 @@ import com.gameplatform.server.model.dto.link.LinkGenerateResponse;
|
||||
import com.gameplatform.server.model.dto.link.LinkListRequest;
|
||||
import com.gameplatform.server.model.dto.link.LinkListResponse;
|
||||
import com.gameplatform.server.model.dto.link.LinkStatusResponse;
|
||||
import com.gameplatform.server.model.dto.link.UserLinkStatusResponse;
|
||||
import com.gameplatform.server.service.link.LinkGenerationService;
|
||||
import com.gameplatform.server.service.link.LinkListService;
|
||||
import com.gameplatform.server.service.link.LinkStatusService;
|
||||
@@ -195,6 +196,37 @@ public class LinkController {
|
||||
return linkStatusService.isLinkValid(codeNo);
|
||||
}
|
||||
|
||||
@GetMapping("/status")
|
||||
@Operation(summary = "用户端获取链接状态", description = "根据链接ID或链接编号获取链接状态,包含自动刷新逻辑,用于用户端页面")
|
||||
public Mono<UserLinkStatusResponse> getUserLinkStatus(
|
||||
@RequestParam(value = "linkId", required = false) Long linkId,
|
||||
@RequestParam(value = "codeNo", required = false) String codeNo,
|
||||
@RequestParam(value = "code", required = false) String code) {
|
||||
log.info("=== 用户端获取链接状态 ===");
|
||||
log.info("linkId: {}, codeNo: {}, code: {}", linkId, codeNo, code);
|
||||
|
||||
// 如果提供了code参数,则将其作为codeNo使用
|
||||
String actualCodeNo = codeNo;
|
||||
if (actualCodeNo == null || actualCodeNo.trim().isEmpty()) {
|
||||
actualCodeNo = code;
|
||||
}
|
||||
|
||||
// 验证参数:linkId和实际的codeNo至少提供一个
|
||||
if (linkId == null && (actualCodeNo == null || actualCodeNo.trim().isEmpty())) {
|
||||
log.error("参数错误:linkId、codeNo或code至少提供一个");
|
||||
return Mono.error(new IllegalArgumentException("参数错误:linkId、codeNo或code至少提供一个"));
|
||||
}
|
||||
|
||||
return linkStatusService.getUserLinkStatus(linkId, actualCodeNo)
|
||||
.doOnSuccess(response -> {
|
||||
log.info("用户端链接状态查询成功: status={}, view={}, needRefresh={}",
|
||||
response.getStatus(), response.getView(), response.getNeedRefresh());
|
||||
})
|
||||
.doOnError(error -> {
|
||||
log.error("用户端链接状态查询失败: {}", error.getMessage(), error);
|
||||
});
|
||||
}
|
||||
|
||||
@DeleteMapping("/{codeNo}")
|
||||
@Operation(summary = "删除链接", description = "删除指定的链接,用户只能删除自己创建的链接")
|
||||
public Mono<Boolean> deleteLink(@PathVariable("codeNo") String codeNo, Authentication authentication) {
|
||||
|
||||
Reference in New Issue
Block a user