Files
Wechat/utils/shop.js

73 lines
2.3 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.
// 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);
});
});
}