package com.fs.erp.http;

import com.fs.erp.dto.*;

/**
 * JST ERP 接口服务类
 */
public interface JstErpHttpService {
    /**
     * 获取access_token、refresh_token
     *
     * 开放平台对token的过期时间默认设置为<strong>30天</strong>
     * 过期前12小时内调用才会有效，
     * 调用成功后生成新的access_token原access_token有5分钟的过期时间,5分钟后失效
     * @param dto 请求参数
     * @return GetInitTokenResponseDTO
     */
    GetInitTokenResponseDTO getInitToken(GetInitTokenRequestDTO dto);

    /**
     * 更新access_token、refresh_token
     * 开放平台对token的过期时间默认设置为30天，如开发者的token过期未换，无法再调用更新token这个接口需要返回上一步骤重新授权。
     * 15天内刷新无效，刷新成功后原access_token有5分钟的过期时间
     * @param dto 请求参数
     * @return GetInitTokenResponseDTO
     */
    GetInitTokenResponseDTO refreshToken(RefreshTokenRequestDTO dto);

    /**
     * 普通商品资料上传
     * @param dto 请求参数
     * @return ProductUploadResultDTO
     */
    ProductUploadResultDTO uploadGoods(GoodsInfoDTO dto);

    /**
     * 普通商品资料查询（按sku查询）
     * @param dto 请求参数
     * @return ProductResponseDTO
     */
    ProductResponseDTO queryGoods(ProductQueryRequestDTO dto);

    /**
     * 订单上传(商家自有商城、跨境线下)
     * @param dto 请求参数
     * @return ErpOrderResponseDTO
     */
    ErpOrderResponseDTO upload(ShopOrderDTO dto);

    /**
     * 订单查询（自有商城、跨境线下）
     * @param dto 请求参数
     * @return OrderQueryResponseDTO
     */
    OrderQueryResponseDTO query(OrderQueryRequestDTO dto);

    /**
     * 订单取消-按内部单号取消
     * @param dto 请求参数
     * @return CommonResponse
     */
    CommonResponse cancel(OrderCancelRequestDTO dto);
}
