package com.ruoyi.cms.mapper.rc;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.rc.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 公共招聘会Mapper接口
 */
public interface PublicJobFairMapper extends BaseMapper<PublicJobFair> {

    /**
     * 分页查询招聘会列表
     */
    List<PublicJobFair> selectPublicJobFairList(@Param("query") PublicJobFairQuery query);

    /**
     * 查询招聘会详情
     */
    PublicJobFairDetail selectPublicJobFairDetailById(@Param("jobFairId") String jobFairId);

    /**
     * 查询招聘会关联的企业列表
     */
    List<PublicJobFairCompanyVO> selectCompanyListByJobFairId(@Param("jobFairId") String jobFairId);

    /**
     * 查询招聘会关联的岗位列表
     */
    List<Job> selectJobListByJobFairIdAndCompanyId(@Param("jobFairId") String jobFairId, @Param("companyId") Long companyId);

    /**
     * 检查用户是否已报名
     */
    Integer checkUserSignUp(@Param("jobFairId") String jobFairId, @Param("personId") Long personId);

    // ========== CMS后台管理接口 ==========

    /**
     * 根据ID查询招聘会
     */
    PublicJobFair selectPublicJobFairById(@Param("jobFairId") String jobFairId);

    /**
     * 新增招聘会
     */
    int insertPublicJobFair(PublicJobFair publicJobFair);

    /**
     * 修改招聘会
     */
    int updatePublicJobFair(PublicJobFair publicJobFair);

    /**
     * 批量删除招聘会
     */
    int deletePublicJobFairByIds(@Param("jobFairIds") String[] jobFairIds);

    /**
     * 添加企业到招聘会
     */
    int insertJobFairCompany(PublicJobFairCompany company);

    /**
     * 批量添加企业到招聘会
     */
    int insertJobFairCompanyBatch(@Param("list") List<PublicJobFairCompany> companies);

    /**
     * 删除招聘会企业关联
     */
    int deleteJobFairCompanyById(@Param("id") String id);

    /**
     * 添加岗位到招聘会
     */
    int insertJobFairJob(PublicJobFairJob job);

    /**
     * 批量添加岗位到招聘会
     */
    int insertJobFairJobBatch(@Param("list") List<PublicJobFairJob> jobs);

    /**
     * 删除招聘会岗位关联
     */
    int deleteJobFairJobById(@Param("id") String id);

    /**
     * 查询招聘会报名列表（包含用户信息）
     */
    List<JobFairSignUpVO> selectSignUpListByJobFairId(@Param("jobFairId") String jobFairId);
}
