package com.hzs.member.detail.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
import com.hzs.common.domain.member.detail.CuMemberServiceLogExt;
import com.hzs.member.detail.vo.CuMemberServiceLogVO;
import com.hzs.member.handlebusiness.vo.BusinessMemberVO;
import org.apache.ibatis.annotations.Param;

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

/**
 * 会员更名、密码修改表 服务类
 */
public interface ICuMemberServiceLogService extends IService<CuMemberServiceLog> {

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

    /**
     * 查询用户是否已经存在未审核业务
     **/
    List<CuMemberServiceLogVO> selectServiceLogList(CuMemberServiceLogVO cuMemberServiceLogVO);

    /**
     * 查询
     *
     * @param cuMemberServiceLog
     * @return
     */
    List<CuMemberServiceLogExt> selectByServiceLogList(CuMemberServiceLog cuMemberServiceLog);

    /**
     * 查询会员原值
     **/
    List<BusinessMemberVO> selectOldValue(BusinessMemberVO businessMemberVO);

    /**
     * 再次发起签呈
     **/
    CuMemberServiceLogVO againBusiness(List<CuMemberServiceLog> cmslList, CuMemberServiceLogVO cuMemberServiceLogVO);

    /**
     * 根据用户、业务类型查询业务办理仩
     *
     * @param cuMemberServiceLog 业务信息
     * @return List<CuMemberServiceLog>
     */
    List<CuMemberServiceLog> selectServiceValue(CuMemberServiceLogExt cuMemberServiceLog);

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

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

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

    /**
     * 查询列表信息
     *
     * @param editType
     * @param memberCode
     * @param memberName
     * @param pkCountry
     * @param approveStatus
     * @return
     */
    List<CuMemberServiceLog> queryList(Integer editType, String memberCode, String memberName, Integer pkCountry, Integer approveStatus);

    /**
     * 查询展示列表
     *
     * @return
     */
    List<CuMemberServiceLog> selectByList(CuMemberServiceLogExt memberServiceLogExt);

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

}
