package org.dromara.member.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.member.domain.bo.AppVersionBo;
import org.dromara.member.domain.vo.AppVersionVo;

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

/**
 * App版本信息Service接口
 *
 * @author pengles
 */
public interface AppVersionService {

    /**
     * 查询App版本信息
     */
    AppVersionVo queryById(Long versionId);

    /**
     * 查询App版本信息列表
     */
    TableDataInfo<AppVersionVo> queryPageList(AppVersionBo bo, PageQuery pageQuery);

    /**
     * 查询App版本信息列表
     */
    List<AppVersionVo> queryList(AppVersionBo bo);

    /**
     * 新增App版本信息
     */
    Boolean insertByBo(AppVersionBo bo);

    /**
     * 修改App版本信息
     */
    Boolean updateByBo(AppVersionBo bo);

    /**
     * 校验并批量删除App版本信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 检查版本更新
     */
    AppVersionVo checkUpdate(String platform, Integer currentVersionCode);

    /**
     * 获取指定平台的最新版本
     */
    AppVersionVo getLatestVersion(String platform);

    /**
     * 检查版本号是否唯一
     */
    Boolean checkVersionCodeUnique(AppVersionBo bo);

    /**
     * 获取版本历史列表
     */
    List<AppVersionVo> getVersionHistory(String platform, Integer limit);

    /**
     * 检查是否需要强制更新
     */
    Boolean checkForceUpdate(String platform, Integer currentVersionCode);

    /**
     * 获取版本更新信息
     */
    AppVersionVo getUpdateInfo(String platform, Integer currentVersionCode);

    /**
     * 批量发布版本
     */
    Boolean batchPublish(List<Long> versionIds);

    /**
     * 撤回版本
     */
    Boolean withdrawVersion(Long versionId);

}