
package com.tmerclub.cloud.product.mapper;

import com.tmerclub.cloud.common.product.vo.GiveawayVO;
import com.tmerclub.cloud.product.dto.GiveawayDTO;
import com.tmerclub.cloud.product.model.Giveaway;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 赠品表
 *
 * @author tmerclub
 * @date 2022-08-16 11:11:58
 */
public interface GiveawayMapper {

    /**
     * 获取赠品表列表
     *
     * @return 赠品表列表
     */
    List<Giveaway> list();

    /**
     * 根据商品id获取赠品
     *
     * @param spuId 商品id
     * @return 赠品
     */
    GiveawayVO getBySpuId(@Param("spuId") Long spuId);

    /**
     * 根据店铺id获取赠品表
     *
     * @param giveawayDTO
     * @param lang
     * @return
     */
    List<GiveawayVO> listByShopId(@Param("giveawayDTO") GiveawayDTO giveawayDTO, @Param("lang") Integer lang);

    /**
     * 根据赠品表id获取赠品表
     *
     * @param giveawayId 赠品表id
     * @param lang
     * @return 赠品表
     */
    GiveawayVO getByGiveawayId(@Param("giveawayId") Long giveawayId, @Param("lang") Integer lang);

    /**
     * 保存赠品表
     *
     * @param giveaway 赠品表
     */
    void save(@Param("giveaway") Giveaway giveaway);

    /**
     * 更新赠品表
     *
     * @param giveaway 赠品表
     * @param status
     * @param isUpdate 是否更新，0更新，1改变状态
     * @return
     */
    boolean update(@Param("giveaway") Giveaway giveaway, @Param("status") Integer status, @Param("isUpdate") Integer isUpdate);


    /**
     * 根据主商品id查询数量
     *
     * @param spuId
     * @param giveawayId
     * @return
     */
    Integer count(@Param("spuId") Long spuId, @Param("giveawayId") Long giveawayId);

    /**
     * 根据主商品id查询赠品表
     *
     * @param spuId
     * @param giveawayId
     * @param status
     * @return
     */
    List<GiveawayVO> countList(@Param("spuId") Long spuId, @Param("giveawayId") Long giveawayId, @Param("status") Integer status);


    /**
     * 获取应该结束但是没有结束的赠品列表
     *
     * @return 应该结束但是没有结束的赠品列表
     */
    List<Giveaway> listUnEndButNeedEndActivity();

    /**
     * 获取未启动的赠品活动
     *
     * @return
     */
    List<Long> listUnStartButNeedStartActivity();

    /**
     * 启动未开启的赠品活动
     */
    void startGiveawayActivity();

    /**
     * 更新赠品活动状态
     *
     * @param giveawayList
     */
    void changeGiveawayActivityStatusByGiveawayIdList(@Param("giveawayList") List<Giveaway> giveawayList);

    /**
     * 根据赠送商品id，获取主商品id列表
     *
     * @param spuId
     * @return
     */
    List<Long> listMainSpuIdByGiveawaySpuId(@Param("spuId") Long spuId);
}
