feat: 完成任务添加订阅

This commit is contained in:
Blizzard
2026-02-14 15:38:48 +08:00
parent 2d8ffd842a
commit 5800466e69
5 changed files with 123 additions and 113 deletions
+22 -28
View File
@@ -25,45 +25,39 @@ Page({
this.setData({ isLoading: true });
wx.showLoading({ title: '加载中...' });
try {
// Fetch Config Tree
const treeRes = await request.get('/config/badge/tree');
// Parallel Fetch: Config Tree & User Badges
const [treeRes, userBadgesRes] = await Promise.all([
request.get('/config/badge/tree'),
request.get('/profile/badge')
]);
const list = Array.isArray(treeRes) ? treeRes : (treeRes.data || []);
// DEBUG: Force Unlock All
// Extract user badge list from response structure { list: [...] }
let userBadgeList = [];
if (Array.isArray(userBadgesRes)) {
userBadgeList = userBadgesRes;
} else if (userBadgesRes && Array.isArray(userBadgesRes.list)) {
userBadgeList = userBadgesRes.list;
} else if (userBadgesRes && userBadgesRes.data) {
userBadgeList = userBadgesRes.data || [];
}
// Populate Achieved Map using Badge ID (not Record ID)
let achievedMap = {};
list.forEach(dim => {
if (dim.groups) {
dim.groups.forEach(grp => {
if (grp.badges) {
grp.badges.forEach(b => {
achievedMap[b.id] = true;
});
}
});
userBadgeList.forEach(b => {
const badgeId = b.badgeId || (b.badge ? b.badge.id : null);
if (badgeId) {
achievedMap[badgeId] = b;
}
});
// Original logic commented out for debug
/*
try {
const profile = await request.get('/profile/detail');
if (profile && profile.achievedBadges) {
profile.achievedBadges.forEach(b => {
const id = typeof b === 'string' ? b : b.id;
achievedMap[id] = true;
});
}
} catch (e) {
// Silent fail
}
*/
this.setData({
dimensions: list,
achievedMap
});
} catch (e) {
console.error('Fetch badge tree failed', e);
console.error('Fetch badge data failed', e);
wx.showToast({ title: '加载失败', icon: 'none' });
} finally {
this.setData({ isLoading: false });