package com.m2pool.pool.service;


import com.m2pool.common.core.web.Result.AjaxResult;
import com.m2pool.pool.dto.AllTicketListDto;
import com.m2pool.pool.dto.TicketListDto;
import com.m2pool.pool.vo.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.SQLException;
import java.util.List;


/**
 * @Description DragonBall Miner KS6工单系统服务类
 * @Date 2022/5/19 17:40
 * @Author 杜懿
 */
public interface TicketService {


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

    /**
     * 多文件上传
     * @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 vo
     * @return
     */
    public AjaxResult getPrivateTicketByStatus(PrivateTicketListVo vo);

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


    /**
     * 用户结束工单 仅能关闭工单状态为2或者9的工单
     *
     * @param vo@return
     */
    public AjaxResult endTicket(EndTicketVo vo);

/***************************************        维修人员相关接口        *************************************************/

    /**
     * 查看所有工单 条件搜索
     * @param
     * @param vo
     * @return
     */
    public List<AllTicketListDto> getAllTicket(AllTicketListVo vo);


    /**
     * 根据status获取技术支持工单列表
     * @param vo
     * @return
     */
    public List<TicketListDto> getSupportTicketList(StatusVo vo);


    /**
     * 技术支持人员回复工单
     * @param vo
     * @return
     */
    public AjaxResult onlineResponTicket(ResponTicketVo vo);

    /**
     * 技术支持人员/维修人员关闭用户工单   仅能关闭工单状态为2或者9的工单
     * @param vo
     * @return
     */
    public AjaxResult closeTicket(IdVo vo);

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




}
