73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
// utils/shop.js
|
||
import { ensureLogin } from './login';
|
||
import request from './request'; // 封装后的请求对象,路径请按实际调整
|
||
|
||
/**
|
||
* 获取当前用户绑定的店铺商品数据
|
||
* 自动确保登录,然后请求 /shangdian/hqsp 接口
|
||
* 注意:本方法不涉及公告和轮播图,公告轮播图由页面独立调用原接口
|
||
* @returns {Promise<Object>} 返回后端商品数据(包含 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<void>}
|
||
*/
|
||
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);
|
||
});
|
||
});
|
||
} |