package cn.hanghui.outapi.platform.tenant.service;

import cn.hanghui.outapi.platform.common.entity.rest.RestResult;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofDeviceDto;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofDeviceMiniDto;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofDeviceSearch;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofDeviceUpdateMiniDto;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofDeviceVo;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofNoticeDto;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofNoticeLessVo;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofNoticeSearch;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofNoticeVo;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofTemplateDto;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofTemplateLessVo;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofTemplateSearch;
import cn.hanghui.outapi.platform.tenant.entity.dto.proof.ProvisionalIdentityProofTemplateVo;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * @author shisl
 * @package cn.hanghui.outapi.platform.tenant.service
 * @class ProvisionalProofService
 * @date 2024/5/13 上午11:03
 * @description
 */
public interface ProvisionalProofService {

    /**
     * 须知-新增/编辑
     *
     * @param dto
     * @return
     */
    Boolean noticeEdit(ProvisionalIdentityProofNoticeDto dto);

    /**
     * 须知列表
     *
     * @return
     */
    List<ProvisionalIdentityProofNoticeLessVo> noticeList();

    /**
     * 须知列表(分页)
     *
     * @param dto
     * @return
     */
    IPage<ProvisionalIdentityProofNoticeVo> noticePage(ProvisionalIdentityProofNoticeSearch dto);

    /**
     * 须知-删除
     *
     * @param noticeId
     * @return
     */
    Boolean noticeDelete(Long noticeId);

    /**
     * 须知-模版详情
     *
     * @param noticeId
     * @return
     */
    ProvisionalIdentityProofNoticeVo noticeDetail(Long noticeId);

    /**
     * 模版-新增/编辑
     *
     * @param dto
     * @return
     */
    Boolean templateEdit(ProvisionalIdentityProofTemplateDto dto);

    /**
     * 模版列表
     *
     * @return
     */
    List<ProvisionalIdentityProofTemplateLessVo> templateList();

    /**
     * 模版列表(分页)
     *
     * @param dto
     * @return
     */
    IPage<ProvisionalIdentityProofTemplateVo> templatePage(ProvisionalIdentityProofTemplateSearch dto);

    /**
     * 模版-删除
     *
     * @param templateId
     * @return
     */
    Boolean templateDelete(Long templateId);

    /**
     * 模版-模版详情
     *
     * @param templateId
     * @return
     */
    ProvisionalIdentityProofTemplateVo templateDetail(Long templateId);

    /**
     * 临证设备配置-添加/编辑
     *
     * @param dto
     * @return
     */
    RestResult<Boolean> deviceAdd(ProvisionalIdentityProofDeviceDto dto);

    /**
     * 临证设备列表（分页）
     *
     * @param dto
     * @return
     */
    RestResult<IPage<ProvisionalIdentityProofDeviceVo>> devicePage(ProvisionalIdentityProofDeviceSearch dto);

    /**
     * 临证设备授权
     *
     * @param deviceId
     * @return
     */
    RestResult<Boolean> deviceEnable(Long deviceId);

    /**
     * 临证设备删除
     *
     * @param deviceId
     * @return
     */
    RestResult<Boolean> deviceDel(Long deviceId);

    /**
     * 临证设备取消授权
     *
     * @param deviceId
     * @return
     */
    RestResult<Boolean> deviceDisable(Long deviceId);

    /**
     * 临证设备-获取配置信息
     *
     * @param dto
     * @return
     */
    ProvisionalIdentityProofDeviceVo snConfig(ProvisionalIdentityProofDeviceMiniDto dto);

    /**
     * 临证设备-修改配置信息
     *
     * @param dto
     */
    void updateConfig(ProvisionalIdentityProofDeviceUpdateMiniDto dto);

    /**
     * 获取设备配置集合
     *
     * @param dto
     * @return
     */
    List<ProvisionalIdentityProofDeviceVo> snsConfigsForProof(ProvisionalIdentityProofDeviceMiniDto dto);
}
