// utils/shop.js import { ensureLogin } from './login'; import request from './request'; // 封装后的请求对象,路径请按实际调整 /** * 获取当前用户绑定的店铺商品数据 * 自动确保登录,然后请求 /shangdian/hqsp 接口 * 注意:本方法不涉及公告和轮播图,公告轮播图由页面独立调用原接口 * @returns {Promise} 返回后端商品数据(包含 shangpinleixing, shangpinzhuanqu, shangpinliebiao) */ export async function fetchShopGoods() { // 1. 确保已登录 await ensureLogin(); // 2. 请求商品数据 return new Promise((resolve, reject) => { request({ url: '/shangdian/hqsp', method: 'POST', data: {} // 无需传参,后端从 token 解析用户及绑定店铺 }) .then(res => { if (res.statusCode === 200 && res.data && res.data.code === 200) { const data = res.data.data; // 后端返回的商品数据应当包含 shangpinleixing, shangpinzhuanqu, shangpinliebiao resolve(data); } else { const msg = res.data?.msg || '获取商品失败'; wx.showToast({ title: msg, icon: 'none' }); reject(new Error(msg)); } }) .catch(err => { console.error('获取商品失败:', err); wx.showToast({ title: '网络错误,请重试', icon: 'none' }); reject(err); }); }); } /** * 绑定店铺(扫码时调用) * @param {string} dianpuId 店铺ID(从二维码解析) * @returns {Promise} */ export async function bindShop(dianpuId) { if (!dianpuId) return; await ensureLogin(); // 确保登录 return new Promise((resolve, reject) => { request({ url: '/shangdian/bdsd', method: 'POST', data: { dianpu_id: dianpuId } }) .then(res => { if (res.statusCode === 200 && res.data && res.data.code === 200) { // 绑定成功,后端已记录关系 resolve(); } else { const msg = res.data?.msg || '店铺绑定失败'; wx.showToast({ title: msg, icon: 'none' }); reject(new Error(msg)); } }) .catch(err => { console.error('绑定店铺失败:', err); wx.showToast({ title: '网络错误,绑定失败', icon: 'none' }); reject(err); }); }); }