package com.qmth.distributed.print.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.distributed.print.business.entity.CloudUserPushStatus;
import com.qmth.teachcloud.common.entity.SysUser;
import com.qmth.teachcloud.common.enums.userPush.SyncStatusEnum;
import com.qmth.teachcloud.common.enums.userPush.UserPushResultEnum;

import java.util.List;

/**
 * @Description: 云阅卷用户推送状态服务类
 * @Author: CaoZixuan
 * @Date: 2022-08-08
 */
public interface CloudUserPushStatusService extends IService<CloudUserPushStatus> {

    /**
     * 根据用户id查询用户推送状态记录
     *
     * @param userId   用户id
     * @param schoolId 学校id
     * @return 云阅卷推送状态
     */
    CloudUserPushStatus findRecordByUserId(Long userId, Long schoolId);

    /**
     * 更新用户推送记录
     *
     * @param userId           用户id
     * @param markerPushResult 评卷员推送结果
     * @param leaderPushResult 科组长推送结果
     * @param syncStatus       推送最终状态
     * @param requestUser      请求用户
     */
    void updateUserPushRecord(Long userId, UserPushResultEnum markerPushResult, UserPushResultEnum leaderPushResult, SyncStatusEnum syncStatus, SysUser requestUser);

    /**
     * 查找所有需要重新推送云阅卷的用户id集合
     * @param schoolId 学校id
     * @return 用户id集合
     */
    List<Long> findNeedPushAgainUserIdList(Long schoolId);
}
