package com.vctgo.system.service;

import java.util.List;

import com.vctgo.system.api.domain.VoteEvents;
import com.vctgo.system.api.domain.VoteScoringItem;
import com.vctgo.system.api.domain.VoteSubmission;
import com.vctgo.system.api.domain.dto.VoteExpertWorkingPlatformDto;
import com.vctgo.system.api.domain.vo.VoteExpertSubmissionCountVo;
import com.vctgo.system.api.domain.vo.VoteExpertSubmissionVo;
import com.vctgo.system.api.domain.vo.VoteExpertWorkingPlatformVo;
import com.vctgo.system.domain.SysPlatformExpert;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 * 专家附属信息Service接口
 *
 * @author caesar
 * @date 2024-03-27
 */
public interface ISysPlatformExpertService
{
    /**
     * 查询专家附属信息
     *
     * @param id 专家附属信息主键
     * @return 专家附属信息
     */
    SysPlatformExpert selectSysPlatformExpertById(Long id);

    /**
     * 查询专家附属信息列表-分页
     *
     * @param sysPlatformExpert 专家附属信息
     * @return 专家附属信息集合
     */
    IPage<SysPlatformExpert> selectSysPlatformExpertPage(SysPlatformExpert sysPlatformExpert);
    /**
     * 查询专家附属信息列表
     *
     * @param sysPlatformExpert 专家附属信息
     * @return 专家附属信息集合
     */
    List<SysPlatformExpert> selectSysPlatformExpertList(SysPlatformExpert sysPlatformExpert);

    /**
     * 新增专家附属信息
     *
     * @param sysPlatformExpert 专家附属信息
     * @return 结果
     */
    int insertSysPlatformExpert(SysPlatformExpert sysPlatformExpert);

    /**
     * 修改专家附属信息
     *
     * @param sysPlatformExpert 专家附属信息
     * @return 结果
     */
    int updateSysPlatformExpert(SysPlatformExpert sysPlatformExpert);

    /**
     * 逻辑删除专家附属信息
     *
     * @param ids
     * @return 结果
     */
    int logicalDeleteSysPlatformExpertByIds(Long[] ids,Long userId);

    /**
     * 批量删除专家附属信息
     *
     * @param ids 需要删除的专家附属信息主键集合
     * @return 结果
     */
    int deleteSysPlatformExpertByIds(Long[] ids);

    /**
     * 删除专家附属信息信息
     *
     * @param id 专家附属信息主键
     * @return 结果
     */
    int deleteSysPlatformExpertById(Long id);

    IPage<VoteExpertWorkingPlatformVo> expertPage(VoteExpertWorkingPlatformDto voteExpertWorkingPlatformDto);

    IPage<VoteExpertSubmissionVo> submissionList(VoteExpertWorkingPlatformDto voteExpertWorkingPlatformDto);

    VoteExpertSubmissionCountVo submissionCount(VoteExpertWorkingPlatformDto voteExpertWorkingPlatformDto);

    List<VoteScoringItem> item(Long ruleId);

    VoteEvents eventDetails(Long eventId);

    VoteSubmission submissionDetails(VoteExpertWorkingPlatformDto voteExpertWorkingPlatformDto);

    int commitGrade(VoteExpertWorkingPlatformDto voteExpertWorkingPlatformDto);
}
