Files
xingque/utils/dashou-profile.js
XingQue 782a18006e fix: 总会员/体验会员抢单池前端校验与会员状态同步
- dashou-profile 增强 userHasHuiyuan,支持总会员子类型与 ID 等价比较
- 会员支付成功后从 dashouxinxi 刷新完整 clumber,不再只写总会员 ID
- order-pool 对齐 accept-order:服务端 clumber、hasRequiredMember、抢单校验
- fighter 我的页下拉刷新正确同步管事/组长角色状态
2026-07-10 11:33:34 +08:00

53 lines
2.0 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.
/**
* 从服务端刷新打手会员/押金/积分等到 globalData抢单、考试等页共用
*/
import request from './request.js';
export async function refreshDashouMembership(app) {
app = app || getApp();
try {
const res = await request({ url: '/yonghu/dashouxinxi', method: 'POST' });
if (res && res.data && res.data.code == 200) {
const data = res.data.data || {};
const clumber = Array.isArray(data.clumber) ? data.clumber : [];
app.globalData.clumber = clumber;
if (data.yajin !== undefined) app.globalData.yajin = data.yajin;
if (data.jifen !== undefined) app.globalData.jinfen = data.jifen;
if (data.zhanghaostatus !== undefined) app.globalData.zhanghaoStatus = data.zhanghaostatus;
if (data.dashouzhuangtai !== undefined) app.globalData.dashouzhuangtai = data.dashouzhuangtai;
return clumber;
}
} catch (e) {
console.error('refreshDashouMembership failed', e);
}
return app.globalData.clumber || [];
}
/** 会员 ID 等价比较001 与 1 视为相同,与后端 huiyuan_ids_match 一致) */
export function huiyuanIdMatch(a, b) {
const left = String(a ?? '').trim();
const right = String(b ?? '').trim();
if (!left || !right) return false;
if (left === right) return true;
const leftCore = left.replace(/^0+/, '') || '0';
const rightCore = right.replace(/^0+/, '') || '0';
return leftCore === rightCore;
}
/** 用户是否持有某会员类型(与抢单卡片判断一致;支持总会员 included_huiyuan_ids / from_bundle */
export function userHasHuiyuan(huiyuanList, huiyuanId) {
if (!huiyuanId && huiyuanId !== 0) return true;
const list = huiyuanList || [];
const req = String(huiyuanId);
return list.some((h) => {
if (huiyuanIdMatch(h.huiyuanid, req) || huiyuanIdMatch(h.huiyuan_id, req)) {
return true;
}
const covers = h.included_huiyuan_ids || h.covers || [];
if (Array.isArray(covers) && covers.some((id) => huiyuanIdMatch(id, req))) {
return true;
}
return false;
});
}