package com.ruoyi.info.ad.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.info.ad.domain.Ad;
import com.ruoyi.info.ad.domain.bo.AdBo;
import com.ruoyi.info.ad.domain.vo.AdVo;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * 广告Service接口
 *
 * @author lubo
 * @date 2023-12-21
 */
public interface IAdService {

    /**
     * 查询广告分页
     *
     * @param bo 广告
     * @return 广告集合
     */
    TableDataInfo<AdVo> queryPageList(AdBo bo, PageQuery pageQuery);

    /**
     * 查询广告列表
     *
     * @param bo 广告
     * @return 广告集合
     */
    List<AdVo> queryList(AdBo bo);

    /**
     * 查询广告列表
     *
     * @param locationCode 广告
     * @return 广告集合
     */
    List<AdVo> queryListForApi(String locationCode);

    /**
     * 查询广告
     *
     * @param adId 广告主键
     * @return 广告
     */
    AdVo queryById(Long adId);

    /**
     * 详情广告
     *
     * @param adId 广告主键
     * @return 广告
     */
    Ad loadById(Long adId, Boolean tw);

    /**
     * 新增广告
     *
     * @param bo 广告
     * @return 结果
     */
    Boolean insertByBo(AdBo bo);

    /**
     * 修改广告
     *
     * @param bo 广告
     * @return 结果
     */
    Boolean updateByBo(AdBo bo);

    /**
     * 校验并批量删除广告信息
     *
     * @param ids 需要删除的广告主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return 结果
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 删除广告
     * @param id
     * @return
     */
    boolean delSingle(Long id);

    /**
     * 改变广告状态
     * @param id
     * @return
     */
    boolean setStatus(Long id);

    /**
     * 位置下的公告数
     * @param locationCode
     * @return
     */
    Long countAd(String locationCode);

}
