package com.hzs.member.detail;

import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
import com.hzs.common.domain.member.detail.CuMemberServiceLogExt;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface ICuMemberServiceLogServiceApi {

    /**
     * 查询pk_id最大的业务办理
     *
     * @param pkMember     会员编号
     * @param editTypeList 查询类型
     */
    List<CuMemberServiceLog> queryMaxCuMemberServiceLog(Long pkMember, List<Integer> editTypeList);

    /**
     * 查询最大审核次数
     *
     * @param pkMember
     * @param editType
     * @return
     */
    Integer selectByMaxApproveNumber(Long pkMember, Integer editType, Integer approveStatus);

    /**
     * 新增
     *
     * @param memberLog
     * @return
     */
    R<Boolean> insert(CuMemberServiceLog memberLog);

    /**
     * 根据业务单号查询
     *
     * @return
     */
    R<CuMemberServiceLog> selectByBusinessNo(String businessNo);

    /**
     * 根据业务单号修改信息
     *
     * @param memberLog
     * @return
     */
    R<Boolean> updateByBusinessNo(CuMemberServiceLog memberLog);

    /**
     * 根据业务单号查询业务日志
     **/
    R<List<CuMemberServiceLog>> selectCuMemberServiceLog(String businessNo);

    /**
     * 查询指定会员政策币信息
     *
     * @param pkMember 会员ID
     * @return
     */
    R<CuMemberServiceLogExt> queryPolicy(Long pkMember);

    /**
     * @param pkMember         会员主键 pkMember
     * @param approvalBusiness 类型 EApprovalBusiness
     * @param approveStatus    提交签呈状态 EApproveStatus
     * @return
     */
    R<Integer> queryCount(Long pkMember, Integer approvalBusiness, Integer approveStatus);

    /**
     * 查询最新一条变动记录
     *
     * @param pkMember      会员ID
     * @param editType      业务类型
     * @param approveStatus 审核状态
     * @return
     */
    R<CuMemberServiceLog> selectTopData(Long pkMember, int editType, int approveStatus);

    /**
     * 查询激活操作数据
     *
     * @param queryDate
     * @return
     */
    R<List<CuMemberServiceLog>> listActivateLog(@Param("queryDate") Date queryDate);

}
