Krishya | dbfadaa | 2025-06-09 20:33:15 +0800 | [diff] [blame] | 1 | import React, { useEffect, useState, useContext } from 'react'; |
| 2 | import axios from 'axios'; |
| 3 | import { UserContext } from '../../context/UserContext'; |
| 4 | |
| 5 | const 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 | |
| 58 | export default UserStatusChecker; |