package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.MusicGroupPaymentBaseCalender;
import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
import com.ym.mec.biz.dal.enums.CalenderBaseServiceEnum;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public interface MusicGroupPaymentCalenderBaseService<T> {

    Map<CalenderBaseServiceEnum,MusicGroupPaymentCalenderBaseService> calenderBaseServiceMap = new HashMap<>();

    /**
    * @description: 校验缴费项目金额，是否需要审核
     * @param baseCalender
    * @return void
    * @author zx
    * @date 2021/12/21 11:37
    */
    MusicGroupPaymentCalender.PaymentCalenderStatusEnum checkComponentAmount(MusicGroupPaymentBaseCalender baseCalender);

    /**
    * @description: 获取申请价格
     * @param baseCalender
    * @return java.math.BigDecimal
    * @author zx
    * @date 2021/12/21 23:35
    */
    BigDecimal getActualAmount(MusicGroupPaymentBaseCalender baseCalender);

    /**
    * @description: 获取原价
     * @param baseCalender
    * @return java.math.BigDecimal
    * @author zx
    * @date 2021/12/21 23:35
    */
    BigDecimal getOriginalAmount(MusicGroupPaymentBaseCalender baseCalender);

    /**
    * @description: 获取缴费项目价格
     * @param baseCalender
    * @return java.math.BigDecimal
    * @author zx
    * @date 2021/12/29 15:32
    */
    BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender baseCalender);

    /**
    * @description: 缴费项目关联初始化
     * @param bean
    * @return T
    * @author zx
    * @date 2021/12/24 14:31
    */
    <E> E initBean(E bean);
}
