package com.hzs.member.self.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.self.CuSelfServiceLog;
import com.hzs.member.self.vo.MyOrderItemsVO;
import com.hzs.member.self.vo.SelfModifyAddressVO;
import com.hzs.member.self.vo.DomicileChangeVO;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;

import java.util.List;

/**
 * 自助服务日志表 服务类
 */
public interface ICuSelfServiceLogService extends IService<CuSelfServiceLog> {

    /**
     * 自助服务-查询已申请修改收货地址
     **/
    List<SelfModifyAddressVO> querySelfModifyAddressList(SelfModifyAddressVO selfModifyAddressVO);

    /**
     * 自助服务-查询已申请修改收货地址(管理端)
     **/
    List<SelfModifyAddressVO> querySelfModifyAddressManageList(SelfModifyAddressVO selfModifyAddressVO);

    /**
     *
     **/
    Integer selectByMaxApproveNumber(CuSelfServiceLog cuSelfServiceLog);

    /**
     * 自助服务-申请修改收货地址
     **/
    boolean putin(SelfModifyAddressVO selfModifyAddressVO);

    /**
     * 保存户籍变更信息
     *
     * @param domicileChangeVO 户籍变更信息
     * @return Boolean
     */
    Boolean saveChangeDomicile(DomicileChangeVO domicileChangeVO);

    /**
     * 自助服务-审批修改收货地址
     **/
    boolean selfExamine(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * 根据业务类型、用户ID查询自助服务
     *
     * @param domicileChangeVO 自助服务信息
     * @return List<DomicileChangeVO>
     */
    Object[] selectSelfServiceByPkMember(DomicileChangeVO domicileChangeVO);

    /**
     * 自助服务是否显示户籍认证
     *
     * @param pkCountry 国家ID
     * @param pkMember  会员ID
     * @return Integer
     */
    Integer showIndexDomicile(Integer pkCountry, Long pkMember);

    /**
     * 查看详情
     *
     * @param pkId
     * @return
     */
    DomicileChangeVO selectDomicileChangeDetail(Long pkId);

    /**
     * 根据业务类型、业务编号查询自助信息
     *
     * @param editType   业务类型
     * @param businessNo 业务编号
     * @return CuSelfServiceLog
     */
    CuSelfServiceLog selectSelfServiceByBusinessNo(Integer editType, String businessNo);

    /**
     *
     **/
    List<MyOrderItemsVO> queryListByOrderId(List<Long> orderIdList);

    /**
     * 自助服务-申请修改收货地址-管理员初审
     **/
    boolean firstInstance(List<SelfModifyAddressVO> selList);

    /**
     * 校验自助服务-修改地址、订单自提页签是否显示 0 显示 1 隐藏
     **/
    Integer showHiddenAddress(Long pkMember, Integer pkCountry);

}
