package com.gxwebsoft.app.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.app.entity.AppTicket;
import com.gxwebsoft.app.entity.AppTicketReply;
import com.gxwebsoft.app.param.AppTicketParam;
import com.gxwebsoft.common.core.web.PageResult;

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

/**
 * 应用工单 Service
 */
public interface AppTicketService extends IService<AppTicket> {

    /** 客户端：查自己提交的工单（分页） */
    PageResult<AppTicket> myPage(AppTicketParam param, Integer userId);

    /** 技术端：查询所有工单（分页） */
    PageResult<AppTicket> allPage(AppTicketParam param);

    /** 提交工单（自动分配） */
    AppTicket submit(AppTicket ticket, Integer userId);

    /** 更新状态（技术人员操作） */
    void updateStatus(Long ticketId, String status, Integer operatorId);

    /** 分配处理人 */
    void assign(Long ticketId, Integer assigneeId);

    /** 关闭工单（提交人操作） */
    void closeByUser(Long ticketId, Integer userId);

    /** 获取工单回复列表 */
    List<AppTicketReply> getReplies(Long ticketId);

    /** 添加回复 */
    AppTicketReply addReply(AppTicketReply reply, Integer userId);

    /** 统计数据 */
    Map<String, Long> stats(Long websiteId, Integer userId);

    /** 获取技术人员列表（角色：developer/admin 的应用成员） */
    List<Map<String, Object>> getTechStaffList();
}
