package com.willalp.yiqing.service;

import com.willalp.yiqing.domain.HsYiqingUser;
import com.willalp.yiqing.domain.vo.DynamicTable;
import com.willalp.yiqing.domain.vo.PushVo;
import com.willalp.yiqing.domain.vo.TaskBelongSaveVo;
import com.willalp.yiqing.domain.vo.UserQueResultVo;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * @author xian
 */
public interface HsYiQingService {
    /**
     * 查询疫情登记信息
     *
     * @param hsYiqingUser 疫情登记用户
     * @return
     */
    List<Object> selectRegistrationInformationList(HsYiqingUser hsYiqingUser);

    /**
     * 获取问题表格 label 列头
     *
     * @return
     * @param queGroupId
     */
    List<DynamicTable> getQueTableLabel(String queGroupId);

    /**
     * 保存答题结果
     *
     * @param userQueResultVo
     * @return
     */
    int saveQueResult(UserQueResultVo userQueResultVo);

    /**
     * 验证用户答题并新增
     *
     * @param userQueResultVo
     * @return
     */
    UserQueResultVo verifyUserQueAndInsert(UserQueResultVo userQueResultVo);

    /**
     * 需要推送的用户
     *
     * @return
     */
    List<PushVo> needPushUser();

    /**
     * 查询用户未读状态任务
     *
     * @param userNo
     * @param orgNo
     * @return
     */
    Integer getUserNotRead(String userNo, String orgNo);

    /**
     * 用户查看任务 返回任务列表
     *
     * @param userNo
     * @param orgNo
     * @return
     */
    Map<String,Object> readTask(String userNo,String orgNo);

    /**
     * 用户点击任务 标记为已读并返回详情
     *
     * @param taskId
     * @param userNo
     * @return
     */
    PushVo clickTaskRead(String taskId, String userNo);

    /**
     * 修改用户任务状态
     *
     * @param taskId
     * @param userNo
     * @param status
     * @return
     */
    Integer upDateUserTaskStatus(String taskId, String userNo, Integer status);

    /**
     * 修改用户任务状态
     *
     * @param taskId
     * @param userNo
     * @param status
     * @return
     */
    Integer upDateUserIsOrder(String taskId, String userNo, Integer status);
    /**
     * 任务负责人保存
     *
     * @param taskBelongSaveVo
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    int taskBelongSave(TaskBelongSaveVo taskBelongSaveVo);
}
