package cn.iocoder.yudao.module.aftersales.service.problem; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.aftersales.controller.admin.problem.vo.AfterSaleProblemPageReqVO; import cn.iocoder.yudao.module.aftersales.controller.admin.problem.vo.AfterSaleProblemSaveReqVO; import cn.iocoder.yudao.module.aftersales.dal.dataobject.problem.AfterSaleProblemDO; import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** * 售后问题库 Service 接口 */ public interface AfterSaleProblemService { /** * 创建问题(人工建档),初始状态草稿 * * @param createReqVO 创建信息 * @param userId 当前用户编号(沉淀人) * @return 问题编号 */ Long createProblem(@Valid AfterSaleProblemSaveReqVO createReqVO, Long userId); /** * 更新问题 * * @param updateReqVO 更新信息 */ void updateProblem(@Valid AfterSaleProblemSaveReqVO updateReqVO); /** * 删除问题(仅草稿) * * @param id 问题编号 */ void deleteProblem(Long id); /** * 获得问题 * * @param id 问题编号 * @return 问题 */ AfterSaleProblemDO getProblem(Long id); /** * 获得问题列表 * * @param ids 编号列表 * @return 问题列表 */ List getProblemList(Collection ids); /** * 获得问题分页 * * @param pageReqVO 分页查询 * @return 问题分页 */ PageResult getProblemPage(AfterSaleProblemPageReqVO pageReqVO); /** * 发布问题 * * @param id 问题编号 */ void publishProblem(Long id); /** * 停用问题 * * @param id 问题编号 */ void disableProblem(Long id); /** * 新工单受理参考检索:命中已发布历史问题 * * @param pageReqVO 参考检索条件(取 itemId/issueCategory/issueType/rootCauseCategory/keyword) * @return 已发布问题列表(至多10条) */ List getReferenceList(AfterSaleProblemPageReqVO pageReqVO); /** * 工单归档时自动沉淀问题(草稿态);同一工单仅沉淀一次(幂等) * * @param ticket 售后工单 * @return 沉淀出的问题 */ AfterSaleProblemDO createProblemFromTicket(AfterSaleTicketDO ticket); }