# 前端链接访问示例 ## 概述 当用户访问链接页面时(如 `https://你的域名/ABC12345`),前端需要自动请求后端获取链接的详细信息,并根据状态显示相应的内容。 ## 接口说明 ### 1. 获取链接状态(主要接口) ``` GET /api/link/{codeNo}/status ``` **响应示例:** ```json { "codeNo": "ABC12345", "batchId": 123, "status": "NEW", "statusDesc": "新建", "expireAt": "2024-01-15T16:30:00", "isExpired": false, "remainingSeconds": 3600, "quantity": 50, "times": 10, "totalPoints": 500, "region": null, "machineId": null, "loginAt": null, "createdAt": "2024-01-15T12:00:00", "updatedAt": "2024-01-15T12:00:00" } ``` ### 2. 检查链接是否存在 ``` GET /api/link/{codeNo}/exists ``` **响应:** `true` 或 `false` ### 3. 检查链接是否有效 ``` GET /api/link/{codeNo}/valid ``` **响应:** `true` 或 `false` ## 前端实现示例 ### React 组件示例 ```jsx import React, { useState, useEffect } from 'react'; import { useParams } from 'react-router-dom'; const LinkPage = () => { const { codeNo } = useParams(); const [linkStatus, setLinkStatus] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchLinkStatus(); }, [codeNo]); const fetchLinkStatus = async () => { try { setLoading(true); const response = await fetch(`/api/link/${codeNo}/status`); if (!response.ok) { if (response.status === 404) { setError('链接不存在'); } else { setError('获取链接信息失败'); } return; } const data = await response.json(); setLinkStatus(data); } catch (err) { setError('网络错误'); console.error('获取链接状态失败:', err); } finally { setLoading(false); } }; const formatTime = (seconds) => { if (seconds <= 0) return '已过期'; const hours = Math.floor(seconds / 3600); const minutes = Math.floor((seconds % 3600) / 60); const secs = seconds % 60; if (hours > 0) { return `${hours}小时${minutes}分钟`; } else if (minutes > 0) { return `${minutes}分钟${secs}秒`; } else { return `${secs}秒`; } }; if (loading) { return
{error}
链接编号: {codeNo}
⚠️ 此链接已过期,无法使用
点击下方按钮开始执行任务
请按照提示完成游戏任务
恭喜!任务已完成,奖励点数已发放
使用手机扫描二维码访问
{{ error }}
链接编号: {{ codeNo }}
⚠️ 此链接已过期,无法使用