const Product = require('../models/Product');
const { Op } = require('sequelize');

// 获取商品列表
const getProductList = async (req, res) => {
  try {
    // 从查询参数获取分页信息
    const page = parseInt(req.query.page) || 1;
    const limit = parseInt(req.query.limit) || 10;
    const offset = (page - 1) * limit;
    
    // 查询条件
    const whereClause = {};
    if (req.query.category) {
      whereClause.category = req.query.category;
    }
    if (req.query.status !== undefined) {
      whereClause.status = req.query.status;
    }
    if (req.query.name) {
      whereClause.name = { [Op.like]: `%${req.query.name}%` };
    }

    // 查询商品列表
    const { count, rows } = await Product.findAndCountAll({
      where: whereClause,
      limit: limit,
      offset: offset,
      order: [['created_at', 'DESC']]
    });

    return res.status(200).json({
      code: 200,
      msg: '获取商品列表成功',
      data: {
        products: rows,
        pagination: {
          currentPage: page,
          totalPages: Math.ceil(count / limit),
          totalItems: count,
          itemsPerPage: limit
        }
      }
    });
  } catch (error) {
    return res.status(500).json({
      code: 500,
      msg: '获取商品列表失败',
      error: error.message
    });
  }
};

// 获取单个商品详情
const getProductDetail = async (req, res) => {
  try {
    const { id } = req.params;
    
    const product = await Product.findByPk(id);
    
    if (!product) {
      return res.status(404).json({
        code: 404,
        msg: '商品不存在'
      });
    }
    
    return res.status(200).json({
      code: 200,
      msg: '获取商品详情成功',
      data: product
    });
  } catch (error) {
    return res.status(500).json({
      code: 500,
      msg: '获取商品详情失败',
      error: error.message
    });
  }
};

module.exports = {
  getProductList,
  getProductDetail
};