// 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);
      });
  });
}