package com.seer.teach.pay.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.seer.teach.pay.entity.CoinConfigEntity;

import java.math.BigDecimal;

/**
 * <p>
 * 学豆配置表 服务类
 * </p>
 *
 * @author Captain
 * @since 2025-06-17
 */
public interface ICoinConfigService extends IService<CoinConfigEntity> {

    /**
     * 创建学豆配置，将原来的配置更新为不可用
     *
     * @param coinConfigEntity 学豆配置实体
     * @return 是否创建成功
     */
    boolean create(CoinConfigEntity coinConfigEntity);

    /**
     * 更新学豆配置
     *
     * @param coinConfigEntity 学豆配置实体
     * @return 是否更新成功
     */
    boolean update(CoinConfigEntity coinConfigEntity);

    /**
     * 查询启用状态下的最新学豆配置
     *
     * @return 启用且最新的 CoinConfigEntity 实体
     */
    CoinConfigEntity getActiveAndLatestCoinConfig();

    /**
     * 学豆转金额
     *
     * @param coin 学豆数量
     * @return 对应的金额信息
     */
    BigDecimal convertCoinToAmount(BigDecimal coin);

    /**
     * 学豆转金额
     *
     * @param coin 学豆数量
     * @param coinConfigEntity  配置
     * @return 对应的金额信息
     */
    BigDecimal convertCoinToAmount(String coin,CoinConfigEntity coinConfigEntity);

    /**
     * 学豆转金额
     *
     * @param coin 学豆数量
     * @param coinConfigEntity  配置
     * @return 对应的金额信息
     */
    BigDecimal convertCoinToAmount(BigDecimal coin,CoinConfigEntity coinConfigEntity);

    /**
     * 金额转学豆
     *
     * @param amount 金额
     * @param coinConfigId 配置id
     * @return 对应的学豆数量
     */
    BigDecimal convertAmountToCoin(BigDecimal amount,Integer coinConfigId);

    /**
     * 金额转学豆
     *
     * @param amount 金额
     * @param coinConfig 配置id
     * @return 对应的学豆数量
     */
    BigDecimal convertAmountToCoin(BigDecimal amount,CoinConfigEntity coinConfig);
}