package cn.iocoder.yudao.module.energy.service.account;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.energy.controller.admin.account.vo.EnergyAccountFlowPageReqVO;
import cn.iocoder.yudao.module.energy.controller.admin.account.vo.EnergyAccountPageReqVO;
import cn.iocoder.yudao.module.energy.controller.admin.account.vo.EnergyAccountSummaryVO;
import cn.iocoder.yudao.module.energy.dal.dataobject.account.EnergyAccountDO;
import cn.iocoder.yudao.module.energy.dal.dataobject.account.EnergyAccountFlowDO;
import cn.iocoder.yudao.module.energy.dal.dataobject.account.EnergyProjectAccountDO;
import java.math.BigDecimal;
import java.util.List;

public interface EnergyAccountService {
    PageResult<EnergyAccountDO> getAccountPage(EnergyAccountPageReqVO reqVO);
    EnergyAccountDO getAccount(Long id);
    EnergyAccountDO getOrCreateByCustomerId(Long customerId);
    EnergyProjectAccountDO getOrCreateByContractId(Long accountId, Long contractId, String projectName);
    List<EnergyProjectAccountDO> getProjectAccountsByAccountId(Long accountId);
    void deduct(Long customerId, Long contractId, BigDecimal amount, Long bizId, String bizCode, String remark);
    void recharge(Long customerId, BigDecimal amount, Long bizId, String bizCode, String remark);
    void updateThreshold(Long id, BigDecimal threshold);
    PageResult<EnergyAccountFlowDO> getFlowPage(EnergyAccountFlowPageReqVO reqVO);
    List<EnergyAccountDO> getAccountList();
    EnergyAccountSummaryVO getAccountSummary();
}
