package cn.iocoder.yudao.module.aftersales.service.ticket; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketPageReqVO; import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketSaveReqVO; import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO; import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketItemDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** * 售后工单 Service 接口 */ public interface AfterSaleTicketService { /** * 创建工单 * * @param createReqVO 创建信息 * @param userId 用户编号 * @return 编号 */ Long createTicket(@Valid AfterSaleTicketSaveReqVO createReqVO, Long userId); /** * 更新工单 * * @param updateReqVO 更新信息 */ void updateTicket(@Valid AfterSaleTicketSaveReqVO updateReqVO); /** * 删除工单 * * @param id 编号 */ void deleteTicket(Long id); /** * 获得工单 * * @param id 编号 * @return 工单 */ AfterSaleTicketDO getTicket(Long id); /** * 获得工单列表 * * @param ids 编号列表 * @return 工单列表 */ List getTicketList(Collection ids); /** * 获得工单分页 * * @param pageReqVO 分页查询 * @param userId 用户编号 * @return 工单分页 */ PageResult getTicketPage(AfterSaleTicketPageReqVO pageReqVO, Long userId); /** * 获得工单明细行列表 * * @param ticketId 工单编号 * @return 明细行列表 */ List getTicketItemListByTicketId(Long ticketId); /** * 分配处理人 * * @param id 工单编号 * @param handlerUserId 处理人用户编号 */ void assignTicket(Long id, Long handlerUserId); /** * 问题判定(确定问题类型、分类、严重程度) * * @param id 工单编号 * @param issueType 问题类型 * @param issueCategory 问题分类 * @param severityLevel 严重程度 */ void classifyTicket(Long id, Integer issueType, String issueCategory, Integer severityLevel); /** * 完结工单 * * @param id 工单编号 */ void resolveTicket(Long id); /** * 关闭工单 * * @param id 工单编号 */ void closeTicket(Long id); /** * 取消工单 * * @param id 工单编号 */ void cancelTicket(Long id); }