package com.ruoyi.ccdi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.domain.dto.*;
import com.ruoyi.ccdi.domain.vo.CcdiIntermediaryEntityDetailVO;
import com.ruoyi.ccdi.domain.vo.CcdiIntermediaryPersonDetailVO;
import com.ruoyi.ccdi.domain.vo.CcdiIntermediaryVO;

/**
 * 中介Service接口
 *
 * @author ruoyi
 * @date 2026-02-04
 */
public interface ICcdiIntermediaryService {

    /**
     * 分页查询中介列表
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 中介VO分页结果
     */
    Page<CcdiIntermediaryVO> selectIntermediaryPage(Page<CcdiIntermediaryVO> page, CcdiIntermediaryQueryDTO queryDTO);

    /**
     * 查询个人中介详情
     *
     * @param bizId 人员ID
     * @return 个人中介详情VO
     */
    CcdiIntermediaryPersonDetailVO selectIntermediaryPersonDetail(String bizId);

    /**
     * 查询实体中介详情
     *
     * @param socialCreditCode 统一社会信用代码
     * @return 实体中介详情VO
     */
    CcdiIntermediaryEntityDetailVO selectIntermediaryEntityDetail(String socialCreditCode);

    /**
     * 新增个人中介
     *
     * @param addDTO 新增DTO
     * @return 结果
     */
    int insertIntermediaryPerson(CcdiIntermediaryPersonAddDTO addDTO);

    /**
     * 修改个人中介
     *
     * @param editDTO 编辑DTO
     * @return 结果
     */
    int updateIntermediaryPerson(CcdiIntermediaryPersonEditDTO editDTO);

    /**
     * 新增实体中介
     *
     * @param addDTO 新增DTO
     * @return 结果
     */
    int insertIntermediaryEntity(CcdiIntermediaryEntityAddDTO addDTO);

    /**
     * 修改实体中介
     *
     * @param editDTO 编辑DTO
     * @return 结果
     */
    int updateIntermediaryEntity(CcdiIntermediaryEntityEditDTO editDTO);

    /**
     * 批量删除中介
     *
     * @param ids 需要删除的ID数组
     * @return 结果
     */
    int deleteIntermediaryByIds(String[] ids);

    /**
     * 校验人员ID唯一性
     *
     * @param personId 人员ID
     * @param bizId    排除的人员ID
     * @return true=唯一, false=不唯一
     */
    boolean checkPersonIdUnique(String personId, String bizId);

    /**
     * 校验统一社会信用代码唯一性
     *
     * @param socialCreditCode 统一社会信用代码
     * @param excludeId        排除的ID
     * @return true=唯一, false=不唯一
     */
    boolean checkSocialCreditCodeUnique(String socialCreditCode, String excludeId);

    /**
     * 导入个人中介数据
     *
     * @param list          Excel实体列表
     * @param updateSupport 是否更新支持
     * @return 结果
     */
    String importIntermediaryPerson(java.util.List<com.ruoyi.ccdi.domain.excel.CcdiIntermediaryPersonExcel> list, boolean updateSupport);

    /**
     * 导入实体中介数据
     *
     * @param list          Excel实体列表
     * @param updateSupport 是否更新支持
     * @return 结果
     */
    String importIntermediaryEntity(java.util.List<com.ruoyi.ccdi.domain.excel.CcdiIntermediaryEntityExcel> list, boolean updateSupport);
}
