package cn.pluss.platform.channel;

import cn.pluss.platform.entity.MerchantImage;
import com.alibaba.fastjson.JSONObject;

import java.util.Map;

/**
 * 进件接口定义
 * @author DJH
 */
public interface MerchantAuditService {

    /**
     * 图片上传, 并将上传的图片code保存到传入的实体类中
     * @param merchantImage 图片信息
     */
    void imageUpload(MerchantImage merchantImage);

    /**
     * @param url       图片url，本地存储或OSS
     * @param picType   图片类型
     */
    void imageUpload(String url, String picType);

    /**
     * 进件
     * @param userId 用户id
     */
    void merchantAudit(String userId, boolean isFailCheck);

    void merchantAuditCheck(String userId, boolean isFailCheck);

    /**
     * 修改进件信息，当前特指修改结算信息
     * @param userId
     * @return
     */
    void editMerchantAudit(String userId);

    /**
     * 手动查询进件结果
     * @param result 查询进件信息参数
     */
    JSONObject merchantAuditResult(Map<String, Object> result) throws Exception ;

    /**
     * 进件回调
     * @param auditResult 进件回调的数据
     */
    JSONObject merchantAuditCallback(JSONObject auditResult) throws Exception;

    /**
     * 修改进件
     * @param auditResult   回调信息
     * @return  返回信息
     * @throws Exception    可能存在得异常信息
     */
    JSONObject editMerchantCallback(JSONObject auditResult) throws Exception;

    /**
     * 图片类型转换，源照片类型主要为乐刷定义的图片类型，参考MerchantImage
     *
     * @param imageType 图片类型
     * @return 对应通道的图片定义类型
     */
    String imgTypeTransform(String imageType);

    void checkSign(JSONObject receiveData) throws Exception;

    default void step1(String userId) {}

    default void step2(String userId) {}

    default void step3(String userId) {}

    default void step4(String userId) {}
}
