package com.seer.teach.iot.admin.service;

import com.seer.teach.iot.admin.req.AddBeatsReq;
import com.seer.teach.iot.admin.req.AddVersionReq;
import com.seer.teach.iot.admin.resp.APKDetailResp;
import com.seer.teach.iot.admin.resp.BeatVersionResp;
import com.seer.teach.iot.admin.resp.DeviceListResp;
import com.seer.teach.common.PageListBean;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 *
 * <p>
 *
 * </p >
 *
 * @author Captain
 * @since 2025-09-11 11:23
 */
public interface AdminVersionService {

    /**
     * 上传版本APK文件
     *
     * @param file 要上传的APK文件，类型为MultipartFile
     * @return APKDetailResp 返回APK文件的详细信息响应对象
     */
    APKDetailResp uploadVersionAPK(MultipartFile file);


    /**
     * 添加版本信息
     *
     * @param params 版本添加请求参数，包含版本相关信息
     */
    void addVersion(AddVersionReq params);


    /**
     * 向对象中添加节拍参数
     *
     * @param params 节拍参数列表，包含节拍相关的整数值
     */
    void addBeats(AddBeatsReq params);

    /**
     * 获取节拍版本列表
     *
     * @return 节拍版本响应对象列表，包含所有可用的节拍版本信息
     */
    List<BeatVersionResp> getBeatVersions();

        /**
     * 删除指定ID的节拍记录
     *
     * @param ids 要删除的节拍记录ID列表
     */
    void deleteBeats(List<Integer> ids);

        /**
     * 获取设备版本列表
     *
     * @param page 分页页码，从1开始计数
     * @param size 每页显示的记录数量
     * @param studentAccount 学生账号，用于筛选特定学生的设备版本信息
     * @return 返回分页的设备列表响应数据，包含设备版本相关信息
     */
    PageListBean<DeviceListResp> versionList(Integer page, Integer size, String studentAccount);

}
