package com.jeesharp.business.modules.mall.service;

import com.jeesharp.business.modules.mall.entity.MallSpu;
import com.jeesharp.business.modules.mall.vo.MallSpuQueryVO;
import com.jeesharp.framework.mybatis.core.service.BaseInterface;
import com.jeesharp.framework.pojo.Page;

import java.util.List;
import java.util.Map;

/**
 * 商品SPU Service 接口
 */
public interface MallSpuService extends BaseInterface<MallSpu, MallSpuQueryVO> {

    /**
     * C 端：已上架且审核已通过的商品（limit 条），不按分类过滤。
     */
    List<MallSpu> listOnShelfSpusForPortal(int limit);

    /**
     * C 端：同上；{@code categoryId} 非空时仅返回该分类下商品。
     */
    List<MallSpu> listOnShelfSpusForPortal(int limit, String categoryId);

    /**
     * C 端：按多个类目主键筛选（含父级展开后的子类目集合）。
     */
    List<MallSpu> listOnShelfSpusForPortalByCategoryIds(int limit, List<String> categoryIds);

    List<MallSpu> listRecommendSpusForPortal(int limit);

    /**
     * C 端：已上架且审核已通过的商品，按名称模糊搜索。
     */
    List<MallSpu> searchOnShelfSpusForPortal(int limit, String keyword);

    /**
     * 按商品名称模糊匹配 SPU 主键列表（管理端筛选）。
     */
    List<String> findIdsBySpuNameLike(String spuName);

    /**
     * 批量按主键查询 SPU 名称映射。
     */
    Map<String, String> mapSpuNameByIds(List<String> ids);

    /**
     * 平台侧商品审核分页（跨租户，不走 dataScope）。
     */
    Page<MallSpu> findPageForPlatformAudit(Page<MallSpu> page, MallSpuQueryVO query);

    /**
     * 平台审核商品：仅待审核可处理；通过时默认上架。
     */
    void auditSpu(String spuId, Integer auditStatus, String auditBy, String auditRemark);
}
