package com.jeesharp.business.modules.pay.paychannelconfig.service;

import com.jeesharp.business.modules.pay.paychannelconfig.entity.PayChannelConfig;
import com.jeesharp.business.modules.pay.paychannelconfig.vo.PayChannelConfigQueryVO;
import com.jeesharp.framework.mybatis.core.service.BaseInterface;

/**
 * 支付渠道公共配置领域服务接口。
 *
 * @author jeesharp
 * @since 2026-05-25
 */
public interface PayChannelConfigService extends BaseInterface<PayChannelConfig, PayChannelConfigQueryVO> {

    /**
     * 租户优先：先查指定租户生效配置，无则回落平台级（tenant_id 为空）。
     */
    PayChannelConfig findActiveByChannelCode(String channelCode, String tenantId);

    PayChannelConfig findByChannelAndConfigCode(String channelCode, String configCode, String tenantId);

    void disableOtherActiveExcept(String channelCode, String tenantId, String keepId);

    /**
     * 新增渠道公共配置（仅插入；主键由框架生成）。
     */
    PayChannelConfig createPayChannelConfig(PayChannelConfig entity);

    /**
     * 更新渠道公共配置（平台级仅允许改回调相关字段，其余场景整单更新）。
     */
    void updatePayChannelConfig(PayChannelConfig entity);
}
