package com.ruoyi.system.service;

import com.ruoyi.system.domain.PosStoreNewebpay;
import com.ruoyi.system.domain.dto.StoreNewebpayCredentialDto;
import com.ruoyi.system.domain.vo.PosStoreNewebpayVo;

import java.util.List;

/**
 * 门店蓝新金流支付凭证 Service（纯 DB；联网验证在 Controller 层）。
 *
 * <p>复用 009 pos_store_ezpay 的开通管理状态机：0未申请/1申请中/2已开通。
 *
 * @author ruoyi
 * @date 2026-06-22
 */
public interface IPosStoreNewebpayService {

    /** 取门店「已开通且启用」的蓝新凭证；否则 null。发起支付前判断用。 */
    PosStoreNewebpay getEnabledConfig(Long storeId);

    /** 按 storeId 取行；无行则返回 status=0 的内存对象。 */
    PosStoreNewebpay getOrCreateByStoreId(Long storeId);

    /** 按蓝新 MerchantID 查凭证（回调用）。 */
    PosStoreNewebpay getByMerchantId(String merchantId);

    /** 开通管理列表。 */
    List<PosStoreNewebpayVo> selectNewebpayStoreList(PosStoreNewebpayVo query);

    /** 门店蓝新详情（不存在抛异常）。 */
    PosStoreNewebpayVo selectNewebpayStoreDetail(Long storeId);

    /** 发起申请 0→1。 */
    int apply(Long storeId);

    /** 录入凭证并标记已开通（→2，is_enabled=1）。 */
    int enableWithCredentials(StoreNewebpayCredentialDto dto);

    /** 停用/恢复（仅已开通）。 */
    int toggleEnable(Long storeId);

    /** 重置状态（凭证作废，→1）。 */
    int reset(Long storeId);

    /** 设置启用的支付方式（CREDIT/LINEPAY/APPLEPAY）。 */
    int setEnabledPayments(Long storeId, String enabledPayments);

    /** 记录凭证验证结果。 */
    int recordVerifyResult(Long storeId, String result);
}
