package com.jxy.marketall.service;


import com.jxy.common.core.web.Result.AjaxResult;
import com.jxy.marketall.vo.*;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.nio.file.NoSuchFileException;
import java.sql.SQLException;


/**
 * @Description ETF服务类
 * @Date 2022/5/19 17:40
 * @Author 杜懿
 */
public interface UserHelpService {

    /**
     * 获取问题类型下拉列表
     * @return
     */
    public AjaxResult getTypeList();

    /**
     * 根据文件id下载文件 多个
     * @return
     */
    public void downloadByIds(String ids, HttpServletRequest request, HttpServletResponse response);


    /**
     * 单文件上传
     * @return
     */
    public AjaxResult uploadFile(MultipartFile file) throws SQLException;

    /**
     * 多文件上传
     * @return
     */
    public AjaxResult uploadFiles(MultipartFile[] file) throws SQLException;

    /**
     * 提交工单
     * @param vo
     * @return
     */
    public AjaxResult submitTicket(TicketVo vo);

    /**
     * 工单内容补充提交
     * @param vo
     * @return
     */
    public AjaxResult resubmitTicket(ResubmitTicketVo vo);

    /**
     * 已回复工单设为已读
     * @param id
     * @return
     */
    public AjaxResult readTicket(long id);

    /**
     * 结束工单
     * @param id
     * @return
     */
    public AjaxResult endTicket(long id);

    /**
     * 修改工单状态为撤回
     * @param id
     * @return
     */
    public AjaxResult retractTicket(long id);


    /**
     * 工单提交审核 修改工单状态为待审核
     * @param id
     * @return
     */
    public AjaxResult submitAuditTicket(long id);


    /**
     * 查看工单详情
     * @param id
     * @return
     */
    public AjaxResult getTicketDetails(long id);

    /**
     * 根据status获取个人工单列表
     * @param status
     * @return
     */
    public AjaxResult getPrivateTicketByStatus(int status);

    /**
     * 获取当前用户未读工单数
     * @return
     */
    public  AjaxResult getUnreadCount();

    /**
     * 根据status获取工单列表
     * @param status
     * @return
     */
    public AjaxResult getTicketList(int status);

    /**
     * 每日工单数详情
     * @param vo
     * @return
     */
    public AjaxResult getDailyCount(QueryVo vo);

    /**
     * 回复工单
     * @param vo
     * @return
     */
    public AjaxResult responTicket(ResponTicketVo vo);

    /**
     * 审核工单
     * @param vo
     * @return
     */
    public AjaxResult auditTicket(AuditTicketVo vo);

}
