package com.propertyManagement.business.service;

import com.propertyManagement.business.domain.WxPayRecord;
import com.propertyManagement.business.domain.vo.WxPayRecordVo;
import com.propertyManagement.business.domain.bo.WxPayRecordBo;
import com.propertyManagement.common.core.page.TableDataInfo;
import com.propertyManagement.common.core.domain.PageQuery;
import com.propertyManagement.pay.support.pay.PayReqModel;
import com.siashan.unipay4j.core.Result;

import java.util.Collection;
import java.util.List;

/**
 * 缴费记录Service接口
 *
 * @author liushuai
 * @date 2025-05-14
 */
public interface IWxPayRecordService {

    /**
     * 查询缴费记录
     */
    WxPayRecordVo queryById(Long recordId);

    /**
     * 查询缴费记录列表
     */
    TableDataInfo<WxPayRecordVo> queryPageList(WxPayRecordBo bo, PageQuery pageQuery);

    /**
     * 查询缴费记录列表
     */
    List<WxPayRecordVo> queryList(WxPayRecordBo bo);

    /**
     * 支付订单
     */
    Result<Object> pay(PayReqModel payReqModel);

    /**
     * 支付回调
     * @param orderId
     * @param payChannelCode
     * @param payMchCode
     * @param payAppCode
     */
    void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode, String type);

    /**
     * 新增缴费记录
     */
    Boolean insertByBo(WxPayRecordBo bo);

    /**
     * 修改缴费记录
     */
    Boolean updateByBo(WxPayRecordBo bo);

    /**
     * 校验并批量删除缴费记录信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
