修复查看帖子、评论、回复评论、点赞、收藏,添加用户等级
Change-Id: Ida9590d7ccee08dcd787a36c7e5cb39a3e26cd0d
diff --git a/src/pages/LevelPage/LevelPage.jsx b/src/pages/LevelPage/LevelPage.jsx
new file mode 100644
index 0000000..55ce6b6
--- /dev/null
+++ b/src/pages/LevelPage/LevelPage.jsx
@@ -0,0 +1,100 @@
+import React, { useEffect, useState } from 'react';
+import { getExperience, updateExperience, checkUpgrade, upgradeUserLevel } from '../../api/level';
+import LevelCard from '../../components/LevelCard';
+
+const user_id = 1; // 实际项目中请从用户上下文获取
+
+const LevelPage = () => {
+ const [levelInfo, setLevelInfo] = useState(null);
+ const [upgradeStatus, setUpgradeStatus] = useState(null);
+ const [message, setMessage] = useState('');
+
+ const fetchExperience = async () => {
+ try {
+ const res = await getExperience(user_id);
+ setLevelInfo(res.data);
+ } catch (error) {
+ console.error(error);
+ }
+ };
+
+ const handleUpdate = async () => {
+ try {
+ const res = await updateExperience({ user_id, experience: 50, source: '签到' });
+ setMessage(res.data.message || '经验更新成功');
+ fetchExperience();
+ } catch (error) {
+ console.error(error);
+ }
+ };
+
+ const handleCheckUpgrade = async () => {
+ try {
+ const res = await checkUpgrade(user_id);
+ setUpgradeStatus(res.data);
+ } catch (error) {
+ console.error(error);
+ }
+ };
+
+ const handleUpgrade = async () => {
+ try {
+ const res = await upgradeUserLevel({ user_id, can_upgrade: true });
+ setMessage(res.data.message || '升级成功');
+ fetchExperience();
+ } catch (error) {
+ setMessage(error.response?.data?.message || '升级失败');
+ }
+ };
+
+ useEffect(() => {
+ fetchExperience();
+ }, []);
+
+ return (
+ <div className="max-w-xl mx-auto p-4">
+ <h1 className="text-2xl font-bold mb-4">我的等级</h1>
+ {levelInfo && (
+ <LevelCard
+ level={levelInfo.level}
+ current={levelInfo.current_experience}
+ next={levelInfo.next_level_experience}
+ />
+ )}
+
+ <div className="space-x-2 mb-4">
+ <button
+ onClick={handleUpdate}
+ className="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"
+ >
+ 模拟签到加经验
+ </button>
+ <button
+ onClick={handleCheckUpgrade}
+ className="px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700"
+ >
+ 检查是否可升级
+ </button>
+ </div>
+
+ {upgradeStatus && (
+ <div className="mb-4">
+ {upgradeStatus.can_upgrade ? (
+ <button
+ onClick={handleUpgrade}
+ className="px-4 py-2 bg-purple-600 text-white rounded hover:bg-purple-700"
+ >
+ 升级到下一级
+ </button>
+ ) : (
+ <p className="text-gray-700">当前还不能升级。</p>
+ )}
+ </div>
+ )}
+
+ {message && <div className="text-sm text-green-700 mt-2">{message}</div>}
+ </div>
+ );
+};
+
+export default LevelPage;