feat(service): 添加撤回消息功能并优化工单查询
- 新增 sendTicketMessageWithdrawToApp 方法用于发送撤回消息通知 - 修改 TicketMapper.xml 中的工单查询 SQL,优化查询结果字段顺序 - 在 TicketVO 中添加 deviceAddress 字段用于存储设备地址 - 在 TiketController 中添加对 App 端的撤回消息通知
This commit is contained in:
parent
afe5d8e108
commit
9162905cbd
|
|
@ -362,6 +362,7 @@ public class TiketController extends ControllerBase {
|
||||||
ticketChatService.withdrawMessage(request.getTicketId(), request.getMessageId());
|
ticketChatService.withdrawMessage(request.getTicketId(), request.getMessageId());
|
||||||
//推送消息
|
//推送消息
|
||||||
ssePushService.sendTicketMessageWithdrawToAdmin(request.getTicketId(),request.getMessageId());
|
ssePushService.sendTicketMessageWithdrawToAdmin(request.getTicketId(),request.getMessageId());
|
||||||
|
ssePushService.sendTicketMessageWithdrawToApp(request.getTicketId(),request.getMessageId());
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,16 @@ public class SsePushService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendTicketMessageWithdrawToApp(Integer ticketId, String messageId){
|
||||||
|
try {
|
||||||
|
TicketMessagePushRequest request=new TicketMessagePushRequest().setTicketId(ticketId).setMessage(buildWithdrawMessage(messageId));
|
||||||
|
ApiResult<?> result = sendMessage(request,"app");
|
||||||
|
log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result));
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("发送消息出错", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private ApiResult<?> sendMessage(TicketMessagePushRequest request, String to) {
|
private ApiResult<?> sendMessage(TicketMessagePushRequest request, String to) {
|
||||||
RestTemplate restTemplate = new RestTemplate();
|
RestTemplate restTemplate = new RestTemplate();
|
||||||
return restTemplate.postForObject(sseUrl + "/sse/" + to + "/push/ticket/message", request, ApiResult.class);
|
return restTemplate.postForObject(sseUrl + "/sse/" + to + "/push/ticket/message", request, ApiResult.class);
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,9 @@ public class TicketVO {
|
||||||
//工单描述
|
//工单描述
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
//设备地址
|
||||||
|
private String deviceAddress;
|
||||||
|
|
||||||
//设备编号
|
//设备编号
|
||||||
private String deviceNo;
|
private String deviceNo;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,8 +84,8 @@
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="searchMy" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
<select id="searchMy" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
SELECT t.*,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),a2.`name`) AS 'areaName',IF(tf.id IS NULL, false, true) AS 'followed'
|
SELECT IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),a2.`name`) AS 'areaName',IF(tf.id IS NULL, false, true) AS 'followed'
|
||||||
,u.`name` AS 'createBy',t.handle,IF(LENGTH(l.language_value)>0,l.language_value,p.part_name) AS 'component',t.description
|
,u.`name` AS 'createBy',IF(LENGTH(l.language_value)>0,l.language_value,p.part_name) AS 'component',t.*
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
LEFT JOIN app_user u ON t.user_id=u.id
|
LEFT JOIN app_user u ON t.user_id=u.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||||
|
|
@ -99,9 +99,9 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
<select id="searchFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
SELECT t.*,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),a2.`name`) AS 'areaName',true AS 'followed'
|
SELECT IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),a2.`name`) AS 'areaName',true AS 'followed'
|
||||||
,u.`name` AS 'createBy',true AS 'followed',t.handle,IF(LENGTH(l.language_value)>0
|
,u.`name` AS 'createBy',true AS 'followed',t.handle,IF(LENGTH(l.language_value)>0
|
||||||
,l.language_value,p.part_name) AS 'component',t.description
|
,l.language_value,p.part_name) AS 'component',t.*
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
LEFT JOIN app_user u ON t.user_id=u.id
|
LEFT JOIN app_user u ON t.user_id=u.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||||
|
|
@ -115,9 +115,9 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="searchArea" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
<select id="searchArea" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
SELECT t.*,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),a2.`name`) AS 'areaName'
|
SELECT IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),a2.`name`) AS 'areaName'
|
||||||
,IF(tf.id IS NULL, false, true) AS 'followed',u.`name` AS 'createBy',t.handle,IF(LENGTH(l.language_value)>0
|
,IF(tf.id IS NULL, false, true) AS 'followed',u.`name` AS 'createBy',IF(LENGTH(l.language_value)>0
|
||||||
,l.language_value,p.part_name) AS 'component',t.description
|
,l.language_value,p.part_name) AS 'component',t.*
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
LEFT JOIN app_user u ON t.user_id=u.id
|
LEFT JOIN app_user u ON t.user_id=u.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||||
|
|
@ -127,10 +127,10 @@
|
||||||
LEFT JOIN t_base_language_data l ON p.id=l.source_id AND l.language_code=#{language}
|
LEFT JOIN t_base_language_data l ON p.id=l.source_id AND l.language_code=#{language}
|
||||||
LEFT JOIN v_device vd ON t.device_no=vd.device_no
|
LEFT JOIN v_device vd ON t.device_no=vd.device_no
|
||||||
WHERE t.state!=4
|
WHERE t.state!=4
|
||||||
<if test="request.isPrimary==false">
|
<if test="isPrimary==false">
|
||||||
AND FIND_IN_SET(#{companyId},u.company_id) AND vd.agent_code=#{companyCode}
|
AND FIND_IN_SET(#{companyId},u.company_id) AND vd.agent_code=#{companyCode}
|
||||||
</if>
|
</if>
|
||||||
<if test="request.isPrimary==true">
|
<if test="isPrimary==true">
|
||||||
AND (u.id=#{userId} OR FIND_IN_SET(u.company_id,#{companyId}))
|
AND (u.id=#{userId} OR FIND_IN_SET(u.company_id,#{companyId}))
|
||||||
</if>
|
</if>
|
||||||
<include refid="searchWhereCondition"/>
|
<include refid="searchWhereCondition"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue