package cn.iocoder.yudao.module.system.service.yk;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YKPaymentRecordConfirmVO;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyPaymentRecordPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyPaymentRecordPageRespVO;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyPaymentRecordSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.yk.YkElderlyPaymentRecordDO;

import javax.validation.*;
import java.math.BigDecimal;
import java.util.List;


/**
 * 颐康长者收款记录信息 Service 接口
 *
 * @author 系统管理员
 */
public interface YkElderlyPaymentRecordService {

    /**
     * 创建颐康长者收款记录信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createElderlyPaymentRecord(@Valid YkElderlyPaymentRecordSaveReqVO createReqVO);

    /**
     * 收款信息确认交易变动接口
     * @param createReqVO
     * @return
     */
    String paymentRecordConfirmChangeRecord(@Valid YKPaymentRecordConfirmVO createReqVO);

    /**
     * 更新颐康长者收款记录信息
     *
     * @param updateReqVO 更新信息
     */
    void updateElderlyPaymentRecord(@Valid YkElderlyPaymentRecordSaveReqVO updateReqVO);

    /**
     * 删除颐康长者收款记录信息
     *
     * @param id 编号
     */
    void deleteElderlyPaymentRecord(Long id);

    /**
     * 获得颐康长者收款记录信息
     *
     * @param id 编号
     * @return 颐康长者收款记录信息
     */
    YkElderlyPaymentRecordDO getElderlyPaymentRecord(Long id);

    /**
     * 获得颐康长者收款记录信息分页
     *
     * @param pageReqVO 分页查询
     * @return 颐康长者收款记录信息分页
     */
    PageResult<YkElderlyPaymentRecordDO> getElderlyPaymentRecordPage(YkElderlyPaymentRecordPageReqVO pageReqVO);

    /**
     * 获得颐康长者收款记录信息分页（包含统计信息）
     *
     * @param pageReqVO 分页查询
     * @return 颐康长者收款记录信息分页（包含统计信息）
     */
    YkElderlyPaymentRecordPageRespVO getElderlyPaymentRecordPageWithStats(YkElderlyPaymentRecordPageReqVO pageReqVO);

    /**
     * 批量删除颐康长者收款记录信息
     *
     * @param ids 编号列表
     */
    void batchDeleteElderlyPaymentRecord(List<Long> ids);

}