blob: 7b8b30358ee5f9975e59a0d0f38f9363688e04fd [file] [log] [blame]
Krishyadbfadaa2025-06-09 20:33:15 +08001import React, { useEffect, useState, useContext } from 'react';
2import axios from 'axios';
3import { UserContext } from '../../context/UserContext';
4
5const UserStatusChecker = () => {
6 const { user } = useContext(UserContext); // 假设你在上下文中已经有 user 信息
7 const [statusMessage, setStatusMessage] = useState('');
8 const [statusType, setStatusType] = useState('normal'); // normal / warning / danger
9
10 useEffect(() => {
11 if (user?.id) {
12 checkUserShareRate(user.id);
13 }
14 }, [user]);
15
16 const checkUserShareRate = async (userId) => {
17 try {
18 const response = await axios.get(`/users/${userId}/share-rate`);
19 const message = response.data;
20
21 setStatusMessage(message);
22
23 if (message.includes('账号已被注销')) {
24 setStatusType('danger');
25 } else if (message.includes('警告')) {
26 setStatusType('warning');
27 } else {
28 setStatusType('normal');
29 }
30
31 } catch (error) {
32 console.error('获取用户状态失败:', error);
33 setStatusMessage('无法获取用户状态');
34 setStatusType('danger');
35 }
36 };
37
38 const getStatusStyle = () => {
39 switch (statusType) {
40 case 'warning':
41 return { backgroundColor: '#fff3cd', color: '#856404', padding: '10px', borderRadius: '8px' };
42 case 'danger':
43 return { backgroundColor: '#f8d7da', color: '#721c24', padding: '10px', borderRadius: '8px' };
44 default:
45 return { backgroundColor: '#d4edda', color: '#155724', padding: '10px', borderRadius: '8px' };
46 }
47 };
48
49 return (
50 <div style={{ marginTop: '20px' }}>
51 <div style={getStatusStyle()}>
52 <strong>账号状态提示:</strong> {statusMessage}
53 </div>
54 </div>
55 );
56};
57
58export default UserStatusChecker;