package com.hotwj.platform.securityManagement.securityMeetingAttendee.service;

import com.hotwj.platform.securityManagement.securityMeetingAttendee.domain.bo.HotSecurityMeetingAttendeeBo;
import com.hotwj.platform.securityManagement.securityMeetingAttendee.domain.bo.HotSecurityMeetingMyQueryBo;
import com.hotwj.platform.securityManagement.securityMeetingAttendee.domain.vo.HotSecurityMeetingAttendeeVo;
import com.hotwj.platform.securityManagement.securityMeetingAttendee.domain.vo.HotSecurityMeetingMyVo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 会议参会人员详情Service接口
 *
 * @author shihongwei
 * @date 2026-02-03
 */
public interface IHotSecurityMeetingAttendeeService {

    /**
     * 完成会议签到
     *
     * @param taskId     任务ID
     * @param photoOssId 参会照片OSS ID
     * @param signOssId  签名文件OSS ID
     * @return 结果
     */
    Boolean completeSign(String taskId, Long photoOssId, Long signOssId);

    /**
     * 查询我的会议列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 结果
     */
    TableDataInfo<HotSecurityMeetingMyVo> queryMyMeetingList(HotSecurityMeetingMyQueryBo bo, PageQuery pageQuery);

    /**
     * 查询会议参会人员详情
     *
     * @param id 主键
     * @return 会议参会人员详情
     */
    HotSecurityMeetingAttendeeVo queryById(Long id);

    /**
     * 分页查询会议参会人员详情列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 会议参会人员详情分页列表
     */
    TableDataInfo<HotSecurityMeetingAttendeeVo> queryPageList(HotSecurityMeetingAttendeeBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的会议参会人员详情列表
     *
     * @param bo 查询条件
     * @return 会议参会人员详情列表
     */
    List<HotSecurityMeetingAttendeeVo> queryList(HotSecurityMeetingAttendeeBo bo);

    /**
     * 新增会议参会人员详情
     *
     * @param bo 会议参会人员详情
     * @return 是否新增成功
     */
    Boolean insertByBo(HotSecurityMeetingAttendeeBo bo);

    /**
     * 修改会议参会人员详情
     *
     * @param bo 会议参会人员详情
     * @return 是否修改成功
     */
    Boolean updateByBo(HotSecurityMeetingAttendeeBo bo);

    /**
     * 校验并批量删除会议参会人员详情信息
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
