package com.haha.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.haha.entity.NewProductApply;

import java.util.Map;

/**
 * 新品申请服务接口
 */
public interface NewProductApplyService extends IService<NewProductApply> {

    /**
     * 分页查询新品申请列表
     *
     * @param page     页码
     * @param pageSize 每页条数
     * @param params   查询参数
     * @return 分页结果
     */
    IPage<NewProductApply> getPage(int page, int pageSize, Map<String, Object> params);

    /**
     * 提交新品申请
     * 将申请信息保存到本地数据库，并调用哈哈平台API提交申请
     *
     * @param apply           申请信息
     * @param applicantId     申请人ID
     * @param applicantName   申请人名称
     * @return 申请记录ID
     */
    Long submitApply(NewProductApply apply, Long applicantId, String applicantName);

    /**
     * 根据哈哈平台回调更新申请状态
     *
     * @param hahaApplyId 哈哈平台工单编号
     * @param status      状态：2已通过，3已拒绝
     * @param hahaCode    哈哈平台商品code（审核通过时）
     * @param rejectReason 拒绝原因
     */
    void updateByCallback(String hahaApplyId, Integer status, String hahaCode, String rejectReason);

    /**
     * 获取申请统计信息
     *
     * @return 统计信息
     */
    Map<String, Object> getStatistics();

    /**
     * 查询商品总库中是否存在该条码的商品
     *
     * @param barcode 商品条码
     * @return 商品信息（如果存在返回商品信息，否则返回null）
     */
    Map<String, Object> checkBarcodeInTotalList(String barcode);
}
