package com.sonic.lion.service;

import com.sonic.lion.domain.entity.PayAccountFundThird;
import com.sonic.lion.domain.input.AccountGenerateInput;
import com.sonic.lion.domain.input.BindBankCardInput;
import com.sonic.lion.enums.ThirdAccountType;
import org.springframework.lang.NonNull;

/**
 * @author: code
 * @date: 2025/05/12
 * @Description:
 * @version: 1.0.0
 */
public interface PayAccountFundThirdService {

    /**
     * 查询用户三方openId
     *
     * @param accountId
     * @param thirdAccountType
     * @return
     */
    PayAccountFundThird getByAccountIdAndAppType(Long accountId, ThirdAccountType thirdAccountType);

    /**
     * 根据三方账户openId和类型查询对应账户id
     *
     * @param openId
     * @param thirdAccountType
     * @return
     */
    Long getAccountIdByOpenId(String openId, ThirdAccountType thirdAccountType);

    /**
     * 用户三方账号
     *
     * @param input
     */
    void generate(@NonNull AccountGenerateInput input);

    /**
     * 绑定银行卡
     *
     * @param input
     */
    void bindBankCard(@NonNull BindBankCardInput input);

    /**
     * 绑定stripe的账号
     * @param uid
     * @param customerId
     * @return
     * @throws Exception
     */
    PayAccountFundThird bindStripe(Long uid, String customerId);

}
