2026-07-12 17:38:53 +08:00

162 lines
5.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function () {
'use strict';
function params() {
return new URLSearchParams(window.location.search || '');
}
function normalizeOverview(payload) {
var profile = (payload && payload.profile) || {};
var role = (payload && payload.bd_profile) || {};
return {
profile: {
userId: String(profile.user_id || role.user_id || ''),
displayUserId: String(
profile.display_user_id ||
profile.user_id ||
role.user_id ||
''
),
name: String(profile.username || ''),
avatar: String(profile.avatar || ''),
contact: String(
profile.contact_info || profile.contactInfo || ''
),
},
};
}
function normalizeStats(payload, range) {
return {
range: (payload && payload.range) || range,
agencies: Array.isArray(payload && payload.items)
? payload.items.map(function (item) {
var agency = item.agency || {};
var owner = item.owner || {};
return {
id: String(agency.agency_id || ''),
shortId: String(
agency.short_id || agency.agency_id || ''
),
name: String(agency.name || ''),
avatar: String(agency.avatar || ''),
ownerId: String(
owner.display_user_id || owner.user_id || ''
),
ownerName: String(owner.username || ''),
country: String(item.country || owner.country || ''),
totalHosts: Number(item.total_hosts || 0),
giftedHostCount: Number(item.gifted_host_count || 0),
diamondEarnings: Number(item.diamond_earnings || 0),
joinedAtMS: Number(item.joined_at_ms || 0),
};
})
: [],
};
}
function mockData(range) {
return {
profile: {
userId: '163028',
displayUserId: '163028',
name: 'dada',
avatar: '',
contact: '1586668885',
},
stats: normalizeStats(
{
items: [
{
agency: {
agency_id: '343434',
short_id: '343434',
name: 'Fami Stars',
},
owner: {
display_user_id: '3534',
username: 'Agency owner',
},
country: 'Saudi Arabia',
total_hosts: 12,
gifted_host_count: 8,
diamond_earnings: 5152051,
joined_at_ms: new Date(
2025,
4,
31,
15,
0
).getTime(),
},
],
},
range
),
};
}
function load(range) {
if (params().get('mock') === '1')
return Promise.resolve(mockData(range));
var api = window.HyAppAPI || {};
if (!api.bdCenter || !api.user) {
return Promise.reject(new Error('guild_api_unavailable'));
}
return Promise.all([
api.bdCenter.overview(),
api.bdCenter.stats({
start_date: range.startDate,
end_date: range.endDate,
}),
]).then(function (results) {
var overview = normalizeOverview(results[0]);
return {
profile: overview.profile,
stats: normalizeStats(results[1], range),
};
});
}
function commandID() {
var random =
window.crypto && window.crypto.randomUUID
? window.crypto.randomUUID()
: Date.now() + '-' + Math.random().toString(16).slice(2);
return 'fami-bd-invite-agency:' + random;
}
function saveContact(value) {
if (params().get('mock') === '1') return Promise.resolve({});
return window.HyAppAPI.user.updateContact({ contact_info: value });
}
function inviteAgency(displayUserID, agencyName) {
if (params().get('mock') === '1') return Promise.resolve({});
var api = window.HyAppAPI;
// BD 写接口使用内部 user_id展示 ID 解析由 gateway 完成,避免把短号误当主键。
return api.user
.resolveDisplayUserID(displayUserID)
.then(function (payload) {
var user =
(payload && (payload.user || payload.profile)) ||
payload ||
{};
var userID = user.user_id || user.userId;
if (!userID) throw new Error('agency_owner_not_found');
return api.bdCenter.inviteAgency({
command_id: commandID(),
target_user_id: String(userID),
agency_name: String(agencyName || '').trim(),
});
});
}
window.HyGuild = window.HyGuild || {};
window.HyGuild.bdCenter = {
load: load,
saveContact: saveContact,
inviteAgency: inviteAgency,
};
})();