feat: 星之界打手端UI与提现/充值/排行榜等页面同步更新

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 22:56:08 +08:00
parent 40bc391f76
commit 2ea2860791
103 changed files with 7856 additions and 6814 deletions

View File

@@ -29,7 +29,7 @@ export function userHasHuiyuan(huiyuanList, huiyuanId) {
const list = huiyuanList || [];
const req = String(huiyuanId);
return list.some((h) => {
if (String(h.huiyuanid) === req) return true;
if (String(h.huiyuanid) === req || String(h.huiyuan_id) === req) return true;
const covers = h.included_huiyuan_ids || h.covers || [];
return Array.isArray(covers) && covers.some((id) => String(id) === req);
});

View File

@@ -22,22 +22,76 @@ export const ICON_KEYS = {
MERCHANT_REFRESH: 'merchant_refresh',
FIGHTER_RECHARGE_MEMBER: 'fighter_recharge_member',
FIGHTER_RECHARGE_DEPOSIT: 'fighter_recharge_deposit',
FIGHTER_RECHARGE_VIP_BG: 'fighter_recharge_vip_bg',
FIGHTER_DEPOSIT_BG: 'fighter_deposit_bg',
FIGHTER_DEPOSIT_HERO: 'fighter_deposit_hero',
FIGHTER_DEPOSIT_BENEFIT_1: 'fighter_deposit_benefit_1',
FIGHTER_DEPOSIT_BENEFIT_2: 'fighter_deposit_benefit_2',
FIGHTER_DEPOSIT_BENEFIT_3: 'fighter_deposit_benefit_3',
FIGHTER_DEPOSIT_BENEFIT_4: 'fighter_deposit_benefit_4',
FIGHTER_RECHARGE_BENEFIT_1: 'fighter_recharge_benefit_1',
FIGHTER_RECHARGE_BENEFIT_2: 'fighter_recharge_benefit_2',
FIGHTER_RECHARGE_BENEFIT_3: 'fighter_recharge_benefit_3',
FIGHTER_RECHARGE_ADVANTAGE_1: 'fighter_recharge_advantage_1',
FIGHTER_RECHARGE_ADVANTAGE_2: 'fighter_recharge_advantage_2',
FIGHTER_RECHARGE_ADVANTAGE_3: 'fighter_recharge_advantage_3',
FIGHTER_RECHARGE_ADVANTAGE_4: 'fighter_recharge_advantage_4',
FIGHTER_ORDER_PENDING: 'fighter_order_pending',
FIGHTER_ORDER_SETTLING: 'fighter_order_settling',
FIGHTER_ORDER_DONE: 'fighter_order_done',
FIGHTER_ORDER_CLOSED: 'fighter_order_closed',
FIGHTER_TRADE_COMMISSION: 'fighter_trade_commission',
FIGHTER_TRADE_WITHDRAW: 'fighter_trade_withdraw',
FIGHTER_TRADE_SETTLE: 'fighter_trade_settle',
FIGHTER_TRADE_DEDUCT: 'fighter_trade_deduct',
FIGHTER_TRADE_RECHARGE: 'fighter_trade_recharge',
FIGHTER_INVITE_SUBORDINATE: 'fighter_invite_subordinate',
FIGHTER_INVITE_POSTER: 'fighter_invite_poster',
FIGHTER_INVITE_CODE: 'fighter_invite_code',
FIGHTER_KUAISHOU_CASH: 'fighter_kuaishou_cash',
FIGHTER_MINE_COPY: 'fighter_mine_copy',
FIGHTER_MINE_EDIT: 'fighter_mine_edit',
FIGHTER_MINE_QIEPIAN: 'fighter_mine_qiepian',
FIGHTER_MINE_PENALTY_TIP: 'fighter_mine_penalty_tip',
FIGHTER_MINE_KEFU: 'fighter_mine_kefu',
FIGHTER_MINE_SHANGJIA: 'fighter_mine_shangjia',
FIGHTER_MINE_PUNISH: 'fighter_mine_punish',
FIGHTER_MINE_MEDAL: 'fighter_mine_medal',
FIGHTER_MINE_BOOK: 'fighter_mine_book',
FIGHTER_MINE_RANK: 'fighter_mine_rank',
FIGHTER_MINE_INVITE: 'fighter_mine_invite',
FIGHTER_MINE_CONTACT: 'fighter_mine_contact',
FIGHTER_MINE_RECORD: 'fighter_mine_record',
FIGHTER_MINE_KAOHE_DAFEN: 'fighter_mine_kaohe_dafen',
FIGHTER_MINE_KAOHE_JILU: 'fighter_mine_kaohe_jilu',
FIGHTER_MINE_KAOHE_ZHONGXIN: 'fighter_mine_kaohe_zhongxin',
FIGHTER_MINE_DASHOU_AUTH: 'fighter_mine_dashou_auth',
FIGHTER_MINE_CLEAR: 'fighter_mine_clear',
FIGHTER_MINE_SWITCH: 'fighter_mine_switch',
MINE_PINDAO: 'mine_pindao',
ICON_REFRESH: 'icon_refresh',
};
/** 仅后台上传后才展示,不使用 CDN/本地兜底 */
/** 仅后台上传后才展示(页面大背景),横幅/功能图标走 resolveMiniappIcon */
export const CONFIG_ONLY_ICON_KEYS = new Set([
ICON_KEYS.FIGHTER_RECHARGE_MEMBER,
ICON_KEYS.FIGHTER_RECHARGE_DEPOSIT,
ICON_KEYS.FIGHTER_RECHARGE_VIP_BG,
ICON_KEYS.FIGHTER_DEPOSIT_BG,
ICON_KEYS.FIGHTER_DEPOSIT_HERO,
]);
export const ICON_FOLDER = 'beijing/tubiao/chengxutubiao';
/** 逍遥梦原版金牌横幅(硬编码时代 82.png */
export const MERCHANT_GOLD_BANNER_FALLBACK = 'https://bintao.xmxym88.com/xcx/bintao/82.png';
/** 频道入口图标默认相对路径(拼接 ossImageUrl后台上传 mine_pindao 后覆盖) */
export const PINDAO_ICON_FALLBACK = 'beijing/tubiao/grzx_pindao.jpg';
/** 打手中心图标默认相对路径(后台未上传时由后端 default 下发,此处仅离线兜底) */
export function defaultIconRel(key) {
return `${ICON_FOLDER}/${key}.png`;
}
function ossBase(app) {
return (app && app.globalData && app.globalData.ossImageUrl) || '';
}
@@ -69,7 +123,12 @@ export function resolveMiniappIcon(app, key, fallback = '') {
}
const icons = (app && app.globalData && app.globalData.miniappIcons) || {};
const path = icons[key];
if (!path) return fallback;
if (!path) {
if (!fallback) return '';
if (fallback.startsWith('http')) return fallback;
const base = ossBase(app);
return base ? base + fallback : fallback;
}
if (path.startsWith('http')) return path;
return ossBase(app) + path;
}
@@ -97,7 +156,6 @@ export function resolvePindaoImages(app) {
}).filter(Boolean);
}
/** 预加载频道图片,减少弹窗打开后等待 */
export function preloadPindaoImages(urls) {
(urls || []).forEach((src) => {
if (!src) return;
@@ -105,7 +163,6 @@ export function preloadPindaoImages(urls) {
});
}
/** 打开频道前拉取最新 qdpzhq 配置(避免本地缓存无 pindao 数据) */
export async function refreshPindaoConfig(app) {
app = app || getApp();
try {
@@ -131,7 +188,6 @@ export async function refreshPindaoConfig(app) {
return { cfg, images };
}
/** 后台静默预热频道(不打断 UI */
export function warmupPindaoConfig(app) {
const cached = resolvePindaoImages(app || getApp());
if (cached.length) preloadPindaoImages(cached);
@@ -154,7 +210,6 @@ export function resolvePosterBg(app, role) {
return path.startsWith('http') ? path : base + path;
}
/** 进入海报页拉取当前俱乐部背景配置 */
export async function refreshPosterConfig(app) {
app = app || getApp();
try {