gaoluyang
6 天以前 87d725aa16dcdcdd19f28cd3f3f162e950fd1d2f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
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.AfterSaleTicketEscalateReqVO;
import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketHandleReqVO;
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.controller.admin.ticket.vo.ticket.AfterSaleTicketSignInReqVO;
import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketStatisticsRespVO;
import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketTransferReqVO;
import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO;
import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketItemDO;
import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketLogDO;
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<AfterSaleTicketDO> getTicketList(Collection<Long> ids);
 
    /**
     * 获得工单分页
     *
     * @param pageReqVO 分页查询
     * @param userId    用户编号
     * @return 工单分页
     */
    PageResult<AfterSaleTicketDO> getTicketPage(AfterSaleTicketPageReqVO pageReqVO, Long userId);
 
    /**
     * 获得工单明细行列表
     *
     * @param ticketId 工单编号
     * @return 明细行列表
     */
    List<AfterSaleTicketItemDO> getTicketItemListByTicketId(Long ticketId);
 
    /**
     * 分配处理人
     *
     * @param id            工单编号
     * @param handlerUserId 处理人用户编号
     * @param operatorUserId 操作人用户编号
     */
    void assignTicket(Long id, Long handlerUserId, Long operatorUserId);
 
    /**
     * 问题判定(确定问题类型、分类、严重程度)
     *
     * @param id            工单编号
     * @param issueType     问题类型
     * @param issueCategory 问题分类
     * @param severityLevel 严重程度
     * @param operatorUserId 操作人用户编号
     */
    void classifyTicket(Long id, Integer issueType, String issueCategory, Integer severityLevel, Long operatorUserId);
 
    /**
     * 完结工单
     *
     * @param id 工单编号
     * @param operatorUserId 操作人用户编号
     */
    void resolveTicket(Long id, Long operatorUserId);
 
    /**
     * 关闭工单
     *
     * @param id 工单编号
     * @param operatorUserId 操作人用户编号
     */
    void closeTicket(Long id, Long operatorUserId);
 
    /**
     * 取消工单
     *
     * @param id 工单编号
     * @param operatorUserId 操作人用户编号
     */
    void cancelTicket(Long id, Long operatorUserId);
 
    /**
     * 现场签到(记录位置信息,保障服务真实性)
     *
     * @param reqVO  签到信息
     * @param userId 操作人用户编号
     */
    void signInTicket(@Valid AfterSaleTicketSignInReqVO reqVO, Long userId);
 
    /**
     * 转派工单
     *
     * @param reqVO  转派信息
     * @param userId 操作人用户编号
     */
    void transferTicket(@Valid AfterSaleTicketTransferReqVO reqVO, Long userId);
 
    /**
     * 升级工单
     *
     * @param reqVO  升级信息
     * @param userId 操作人用户编号
     */
    void escalateTicket(@Valid AfterSaleTicketEscalateReqVO reqVO, Long userId);
 
    /**
     * 新增处理记录
     *
     * @param reqVO  处理记录
     * @param userId 操作人用户编号
     */
    void addHandleRecord(@Valid AfterSaleTicketHandleReqVO reqVO, Long userId);
 
    /**
     * 获得工单操作/进度记录列表
     *
     * @param ticketId 工单编号
     * @return 记录列表
     */
    List<AfterSaleTicketLogDO> getTicketLogList(Long ticketId);
 
    /**
     * 获得工单助手统计
     *
     * @param sceneType 场景类型
     * @param userId    用户编号
     * @return 统计结果
     */
    AfterSaleTicketStatisticsRespVO getTicketStatistics(Integer sceneType, Long userId);
 
}