package com.ruoyi.jarvis.service;

import com.alibaba.fastjson2.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * WPS365 API服务接口
 * 
 * @author system
 */
public interface IWPS365ApiService {
    
    /**
     * 获取用户信息
     * 
     * @param accessToken 访问令牌
     * @return 用户信息
     */
    JSONObject getUserInfo(String accessToken);
    
    /**
     * 获取文件列表
     * 
     * @param accessToken 访问令牌
     * @param params 查询参数（page, page_size等）
     * @return 文件列表
     */
    JSONObject getFileList(String accessToken, Map<String, Object> params);
    
    /**
     * 获取文件信息
     * 
     * @param accessToken 访问令牌
     * @param fileToken 文件token
     * @return 文件信息
     */
    JSONObject getFileInfo(String accessToken, String fileToken);
    
    /**
     * 更新单元格数据（KSheet - 在线表格）
     * 
     * @param accessToken 访问令牌
     * @param fileToken 文件token
     * @param sheetIdx 工作表索引（从0开始）
     * @param range 单元格范围（如：A1:B2）
     * @param values 单元格值（二维数组，第一维是行，第二维是列）
     * @return 更新结果
     */
    JSONObject updateCells(String accessToken, String fileToken, int sheetIdx, String range, List<List<Object>> values);
    
    /**
     * 读取单元格数据
     * 
     * @param accessToken 访问令牌
     * @param fileToken 文件token
     * @param sheetIdx 工作表索引
     * @param range 单元格范围
     * @return 单元格数据
     */
    JSONObject readCells(String accessToken, String fileToken, int sheetIdx, String range);
    
    /**
     * 获取工作表列表
     * 
     * @param accessToken 访问令牌
     * @param fileToken 文件token
     * @return 工作表列表
     */
    JSONObject getSheetList(String accessToken, String fileToken);
    
    /**
     * 创建数据表
     * 
     * @param accessToken 访问令牌
     * @param fileToken 文件token
     * @param sheetName 工作表名称
     * @return 创建结果
     */
    JSONObject createSheet(String accessToken, String fileToken, String sheetName);
    
    /**
     * 批量更新单元格数据
     * 
     * @param accessToken 访问令牌
     * @param fileToken 文件token
     * @param sheetIdx 工作表索引
     * @param updates 更新列表，每个元素包含range和values
     * @return 更新结果
     */
    JSONObject batchUpdateCells(String accessToken, String fileToken, int sheetIdx, List<Map<String, Object>> updates);
    
    /**
     * 读取AirSheet工作表数据
     * 
     * @param accessToken 访问令牌
     * @param worksheetId 工作表ID（文件ID）
     * @param range 单元格范围（如：A1:B10，可选）
     * @return 单元格数据
     */
    JSONObject readAirSheetCells(String accessToken, String worksheetId, String range);
    
    /**
     * 更新AirSheet工作表数据
     * 
     * @param accessToken 访问令牌
     * @param worksheetId 工作表ID（文件ID）
     * @param range 单元格范围（如：A1:B2）
     * @param values 单元格值（二维数组，第一维是行，第二维是列）
     * @return 更新结果
     */
    JSONObject updateAirSheetCells(String accessToken, String worksheetId, String range, List<List<Object>> values);
}

