package cn.muchinfo.rma.business.chart;

import cn.muchinfo.rma.global.data.chart.ChartTSData
import cn.muchinfo.rma.global.data.chart.HistoryDatas
import cn.muchinfo.rma.global.data.chart.HistoryTikData
import cn.muchinfo.rma.netManage.base.ResponseCallback
import cn.muchinfo.rma.netManage.utils.MyOkHttpUtils
import cn.muchinfo.rma.view.base.app.BaseResult
import cn.muchinfo.rma.view.base.app.Constant
import com.blankj.utilcode.util.SPUtils
import okhttp3.Call
import java.lang.Exception


class ChartManager {

    /**
     * 分时图数据查询
     * @param params Map<String, String>  goodsCode 商品代码（必填）
     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] ChartTSData?, [@kotlin.ParameterName] Error?, Unit>
     */
    fun queryTsData(
        params: Map<String, String>,
        responseBack: (isSuccess: Boolean, respData: ChartTSData?, error: Error?) -> Unit
    ) {
        MyOkHttpUtils().query(
            URL = SPUtils.getInstance()
                .getString(Constant.goCommonSearchUrl) + "/Quote/QueryTSData",
            params = params,
            type = "1",
            callback = object : ResponseCallback<BaseResult<ChartTSData>>() {
                override fun onResponse(response: BaseResult<ChartTSData>?, id: Int) {
                    responseBack(true, response?.data, null)
                }

                override fun onError(call: Call?, e: Exception?, id: Int) {
                    responseBack(false, null, Error(e?.message))
                }
            }
        )
    }

    /**
     * 查询行情Tik数据
     * @param params Map<String, String> goodsCode 商品代码（必填） /startTime 开始时间，格式：yyyy-MM-dd HH:mm:ss /endTime 结束时间，格式：yyyy-MM-dd HH:mm:ss /count 条数 / isAsc 是否按时间顺序排序（默认为时间倒序排序）
     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] HistoryTikData?, [@kotlin.ParameterName] Error?, Unit>
     */
    fun queryHistoryTikDatas(
        params: Map<String, String>,
        responseBack: (isSuccess: Boolean, respData: HistoryTikData?, error: Error?) -> Unit
    ) {
        MyOkHttpUtils().query(
            URL = SPUtils.getInstance()
                .getString(Constant.goCommonSearchUrl) + "/Quote/QueryHistoryTikDatas",
            params = params,
            type = "1",
            callback = object : ResponseCallback<BaseResult<HistoryTikData>>() {
                override fun onResponse(response: BaseResult<HistoryTikData>?, id: Int) {
                    responseBack(true, response?.data, null)
                }

                override fun onError(call: Call?, e: Exception?, id: Int) {
                    responseBack(false, null, Error(e?.message))
                }
            }
        )
    }

    /**
     * 查询行情历史数据
     * @param params Map<String, String> goodsCode 商品代码（必填）/ cycleType 周期类型, 0-秒 1: 1分钟 2: 5分钟 3: 30分钟 4: 60分钟 120: 2小时 240: 4小时 11: 日线（必填） /startTime 开始时间，格式：yyyy-MM-dd HH:mm:ss /endTime 结束时间，格式：yyyy-MM-dd HH:mm:ss /count 条数 / isAsc 是否按时间顺序排序（默认为时间倒序排序）
     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] HistoryDatas?, [@kotlin.ParameterName] Error?, Unit>
     */
    fun queryHistoryDatas(
        params: Map<String, String>,
        responseBack: (isSuccess: Boolean, respData: HistoryDatas?, error: Error?) -> Unit
        ) {
            MyOkHttpUtils().query(
                URL = SPUtils.getInstance()
                    .getString(Constant.goCommonSearchUrl) + "/Quote/QueryHistoryDatas",
                params = params,
                type = "1",
                callback = object : ResponseCallback<BaseResult<HistoryDatas>>() {
                    override fun onResponse(response: BaseResult<HistoryDatas>?, id: Int) {
                        responseBack(true, response?.data, null)
                    }

                    override fun onError(call: Call?, e: Exception?, id: Int) {
                        responseBack(false, null, Error(e?.message))
                    }
                }
            )
    }
}
