fix: 总会员/体验会员抢单池前端校验与会员状态同步

- dashou-profile 增强 userHasHuiyuan,支持总会员子类型与 ID 等价比较
- 会员支付成功后从 dashouxinxi 刷新完整 clumber,不再只写总会员 ID
- order-pool 对齐 accept-order:服务端 clumber、hasRequiredMember、抢单校验
- fighter 我的页下拉刷新正确同步管事/组长角色状态
This commit is contained in:
XingQue
2026-07-10 11:33:34 +08:00
parent 4b60ebbc10
commit 782a18006e
4 changed files with 97 additions and 41 deletions

View File

@@ -399,6 +399,7 @@ Page(createPage({
this.loadMyZhidingOrders(),
]);
this.checkRoleStatuses();
this.syncConfiguredAssets();
const dashouOk = results[0].status === 'fulfilled';
if (showToast) {
wx.showToast({
@@ -491,16 +492,22 @@ Page(createPage({
throw new Error('打手信息获取失败');
},
_applyRoleStatusFromApi(field, active) {
const val = active ? 1 : 0;
wx.setStorageSync(field, val);
getApp().globalData[field] = val;
return val;
},
async _fetchGuanshiInfoSilent() {
const res = await request({ url: '/yonghu/guanshixinxi', method: 'POST' });
if (res && this._isApiSuccess(res.data)) {
const data = this._extractUserData(res.data);
// guanshixinxi 成功即表示已是管事;接口不返回 guanshistatus不能依赖本地旧缓存
if (data.guanshistatus !== undefined) {
wx.setStorageSync('guanshistatus', data.guanshistatus);
getApp().globalData.guanshistatus = data.guanshistatus;
}
if (!isRoleStatusActive(data.guanshistatus ?? wx.getStorageSync('guanshistatus'))) {
return;
this._applyRoleStatusFromApi('guanshistatus', isRoleStatusActive(data.guanshistatus));
} else {
this._applyRoleStatusFromApi('guanshistatus', true);
}
const app = getApp();
if (!app.globalData.guanshi) app.globalData.guanshi = {};
@@ -519,18 +526,19 @@ Page(createPage({
this._updateTotalAssets();
return;
}
this._applyRoleStatusFromApi('guanshistatus', false);
this.setData({ isGuanshi: false });
},
async _fetchZuzhangInfoSilent() {
const res = await request({ url: '/yonghu/zuzhangxinxi', method: 'POST' });
if (res && res.data.code === 200) {
const data = res.data.data || {};
// zuzhangxinxi 成功即表示已是组长;后台新增组长后本地缓存可能仍为 0
if (data.zuzhangstatus !== undefined) {
wx.setStorageSync('zuzhangstatus', data.zuzhangstatus);
getApp().globalData.zuzhangstatus = data.zuzhangstatus;
}
if (!isRoleStatusActive(data.zuzhangstatus ?? wx.getStorageSync('zuzhangstatus'))) {
return;
this._applyRoleStatusFromApi('zuzhangstatus', isRoleStatusActive(data.zuzhangstatus));
} else {
this._applyRoleStatusFromApi('zuzhangstatus', true);
}
this.setData({
isZuzhang: true,
@@ -541,6 +549,8 @@ Page(createPage({
this._updateTotalAssets();
return;
}
this._applyRoleStatusFromApi('zuzhangstatus', false);
this.setData({ isZuzhang: false });
},
async _fetchKaoheguanInfoSilent() {