package com.liquidnet.client.admin.zhengzai.goblin.service;

import com.liquidnet.client.admin.zhengzai.goblin.dto.SqbPerfGoodsBindItemParam;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinAdminSqbGoodsVo;
import com.liquidnet.service.goblin.dto.vo.GoblinSqbPerfGoodsVo;
import com.liquidnet.service.goblin.dto.vo.GoblinSqbPerfListRespVo;

import java.util.List;

/**
 * 演出-收钱吧商品关联 服务接口
 */
public interface ISqbPerformanceGoodsService {

    /**
     * 关联演出与商品（批量，支持换购价/演出级自动下架全局配置）
     *
     * @param performancesId 演出ID
     * @param items          绑定项列表（仅含 SKU ID、排序、换购价）
     * @param autoOffline    演出结束后不在前台列表展示 0-否 1-是（全局配置，仅列表隐藏）
     * @return 操作结果
     */
    ResponseDto<Boolean> bind(String performancesId, List<SqbPerfGoodsBindItemParam> items, Integer autoOffline);

    /**
     * 解除演出与商品关联
     *
     * @param performancesId 演出ID
     * @param skuId          SKU ID
     * @return 操作结果
     */
    ResponseDto<Boolean> unbind(String performancesId, String skuId);

    /**
     * 查询演出关联的收钱吧商品列表（包含全局配置）
     *
     * @param performancesId 演出ID
     * @return 商品列表及配置
     */
    ResponseDto<GoblinSqbPerfListRespVo> list(String performancesId);

    /**
     * 搜索收钱吧商品（skuType=33）；有关键词时按 SPU 商品名称模糊匹配；无关键词时返回少量候选 SKU。
     *
     * @param keyword 商品（SPU）名称关键词，可为空
     * @return 列表项含 spuTitle、skuTitle、title（一般为「商品名-规格名」）
     */
    ResponseDto<List<GoblinAdminSqbGoodsVo>> searchGoods(String keyword);
}
