Files
Wechat/utils/display-config.js

85 lines
2.7 KiB
JavaScript
Raw Permalink 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.
/**
* 按俱乐部 + page_key 拉取公告/轮播(必须带 X-Club-Id)
* 约定(与星阙小程序一致,注意与客服后台中文名曾有历史对调感):
* order_pool → 点单商城首页
* accept_order → 抢单池页
* merchant_home → 商家首页
* 禁止多页共用同一个 shangpinlunbo 槽,否则会串台。
*/
import { buildClubHeaders, getClubId } from './club-context';
function ensureGonggaoStore(app) {
const g = app.globalData || {};
if (!g._gonggaoByPage) g._gonggaoByPage = {};
return g._gonggaoByPage;
}
/** 读取某页面的缓存(按 club_id + page_key 隔离) */
export function getCachedGonggaoLunbo(app, pageKey = 'order_pool') {
app = app || getApp();
const cid = getClubId(app);
const store = ensureGonggaoStore(app);
const entry = store[pageKey];
if (entry && entry.clubId === cid) {
return {
shangpingonggao: entry.shangpingonggao || '',
shangpinlunbo: entry.shangpinlunbo || [],
};
}
// 兼容旧版单槽缓存(仅当 page_key 一致时才命中)
const g = app.globalData || {};
if (g._gonggaoPageKey === pageKey && g._gonggaoClubId === cid) {
return {
shangpingonggao: g.shangpingonggao || '',
shangpinlunbo: g.shangpinlunbo || [],
};
}
return null;
}
export function isGonggaoCacheValid(app, pageKey = 'order_pool') {
const cached = getCachedGonggaoLunbo(app, pageKey);
if (!cached) return false;
return !!(cached.shangpingonggao || (cached.shangpinlunbo && cached.shangpinlunbo.length));
}
export function applyGonggaoToGlobal(app, data, pageKey = 'order_pool') {
if (!data) return;
const g = app.globalData;
const payload = {
shangpingonggao: data.shangpingonggao || '',
shangpinlunbo: data.shangpinlunbo || [],
clubId: getClubId(app),
};
ensureGonggaoStore(app)[pageKey] = payload;
// 保留直读字段,但必须记下 page_key,避免跨页误用
g.shangpingonggao = payload.shangpingonggao;
g.shangpinlunbo = payload.shangpinlunbo;
g._gonggaoClubId = payload.clubId;
g._gonggaoPageKey = pageKey;
}
export function fetchGonggaoLunbo(app, pageKey = 'order_pool') {
const apiBase = app.globalData && app.globalData.apiBaseUrl;
if (!apiBase) {
return Promise.resolve(null);
}
return new Promise((resolve, reject) => {
wx.request({
url: `${apiBase}/peizhi/shangpingonggao/`,
method: 'POST',
header: buildClubHeaders({ 'content-type': 'application/json' }),
data: { page_key: pageKey },
success: (res) => {
if (res.statusCode === 200 && res.data) {
applyGonggaoToGlobal(app, res.data, pageKey);
resolve(res.data);
} else {
reject(new Error('shangpingonggao 请求失败'));
}
},
fail: reject,
});
});
}