【优化】添加多语言支持
This commit is contained in:
parent
b7e9df3c12
commit
08b0eb40e5
|
|
@ -436,7 +436,7 @@ public class TicketController extends ControllerBase {
|
|||
//推送消息
|
||||
ssePushService.sendTicketMessage(Long.valueOf(ticket.getId()), message, MultilingualUtil.getLanguage());
|
||||
request.getUserIds().forEach(userId -> {
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单");
|
||||
});
|
||||
adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(ticket.getId()), MessageSubType.TicketToBeAssigned.getState());
|
||||
return ApiResult.success();
|
||||
|
|
@ -496,12 +496,9 @@ public class TicketController extends ControllerBase {
|
|||
ticketChatService.addMessage(Long.valueOf(id), message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage());
|
||||
String receiverUserLanguageCode = StrUtil.equals(ticket.getUserPlatform(), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(ticket.getUserId()).getLanguageCode();
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成", receiverUserLanguageCode);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成");
|
||||
deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()).forEach(cqm -> {
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成");
|
||||
});
|
||||
}
|
||||
return ApiResult.success();
|
||||
|
|
@ -529,7 +526,7 @@ public class TicketController extends ControllerBase {
|
|||
ticketChatService.addMessage(Long.valueOf(id), message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage());
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回");
|
||||
adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(id), MessageSubType.TicketSolutionAudit.getState());
|
||||
}
|
||||
return ApiResult.success();
|
||||
|
|
@ -832,20 +829,30 @@ public class TicketController extends ControllerBase {
|
|||
MessageVO vo = new MessageVO();
|
||||
List<ChatMessageVO> messageVOS = ticketChatService.getMessages(Long.valueOf(ticketId), userId);
|
||||
String languageCode = MultilingualUtil.getLanguage();
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
messageVOS.forEach(m -> {
|
||||
if (m.getSenderId() == 0 && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode));
|
||||
m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (m.isWithdrawn()) {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) {
|
||||
m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode));
|
||||
}
|
||||
});
|
||||
if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
messageVOS.forEach(m -> {
|
||||
if (StrUtil.equals(m.getFrom(), "call")) {
|
||||
if (StrUtil.equals(m.getContent(), "发起了视频通话")) {
|
||||
if (StrUtil.equals(m.getSenderFrom(), Constant.FROM_ADMIN) && Objects.equals(m.getSenderId(), userId)) {
|
||||
m.setContent(aliYunTranslate.translateWord("您" + m.getContent(), aliyunCode));
|
||||
} else {
|
||||
m.setContent(m.getSenderName() + aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
} else {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
} else {
|
||||
if (m.isWithdrawn()) {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) {
|
||||
m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
vo.setMessages(messageVOS);
|
||||
vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":admin:" + userId, "count")).orElse("0")));
|
||||
|
|
@ -1432,37 +1439,35 @@ public class TicketController extends ControllerBase {
|
|||
// VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中");
|
||||
// ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom);
|
||||
AdminUser adminUser = adminUserService.getById(sendUserId);
|
||||
String receiverUserLanguageCode = StrUtil.equals(receiveUserFrom, Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(receiveUserId).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId("admin-uid-" + sendUserId)
|
||||
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(0)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
|
||||
)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(0)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
|
||||
)
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
);
|
||||
if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) {
|
||||
ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), Long.valueOf(ticketId));
|
||||
} else {
|
||||
ssePushService.sendTicketCallToAdmin(adminUser, receiveUserId, Long.valueOf(ticketId));
|
||||
}
|
||||
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser.getUserName());
|
||||
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser);
|
||||
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, receiveUserFrom + "-uid-" + receiveUserId);
|
||||
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, 1, TimeUnit.MINUTES);
|
||||
return ApiResult.success();
|
||||
|
|
@ -1487,24 +1492,25 @@ public class TicketController extends ControllerBase {
|
|||
.setSenderId("admin-uid-" + adminUser.getId())
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(0)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(0)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
)
|
||||
)
|
||||
, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
);
|
||||
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
|
||||
// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN);
|
||||
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId);
|
||||
|
|
@ -1535,21 +1541,22 @@ public class TicketController extends ControllerBase {
|
|||
.throwMessage("你已在通话中");
|
||||
ssePushService.sendTicketCallJoinedToAdmin(AdminUserUtil.getUserId(), ticketId);
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要
|
||||
.setReceiverId("admin-uid-" + AdminUserUtil.getUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要
|
||||
.setReceiverId("admin-uid-" + AdminUserUtil.getUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContent("加入通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
.setContent("加入通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AdminUserUtil.getUserId())
|
||||
.setCategory("ticketCallJoined")
|
||||
.setFrom("admin")
|
||||
)
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AdminUserUtil.getUserId())
|
||||
.setCategory("ticketCallJoined")
|
||||
.setFrom("admin")
|
||||
)
|
||||
, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
)
|
||||
);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -1565,50 +1572,46 @@ public class TicketController extends ControllerBase {
|
|||
Set<String> userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
|
||||
if (CollectionUtil.isNotEmpty(userIds)) {
|
||||
userIds.forEach(uid -> {
|
||||
List<String> us = StrUtil.split(uid, "-");
|
||||
String receiverUserLanguageCode = StrUtil.equals(us.get(0), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(Integer.valueOf(us.get(2))).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(uid)//不重要
|
||||
.setReceiverId(uid)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话结束")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2)))
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("admin")
|
||||
)
|
||||
.setSenderId(uid)//不重要
|
||||
.setReceiverId(uid)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话结束")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2)))
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("admin")
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
|
||||
} else {
|
||||
if (request.getReject()) {
|
||||
String receiverUserLanguageCode = StrUtil.equals(request.getFrom(), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(request.getFromUserId()).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要
|
||||
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话拒接")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话拒接")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AdminUserUtil.getUserId())
|
||||
.setCategory("ticketCallReject")
|
||||
.setFrom("admin")
|
||||
)
|
||||
.setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要
|
||||
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话拒接")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话拒接")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AdminUserUtil.getUserId())
|
||||
.setUserName(AdminUserUtil.getUserName())
|
||||
.setCategory("ticketCallReject")
|
||||
.setFrom("admin")
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
)
|
||||
);
|
||||
}
|
||||
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.nflg.mobilebroken.admin.event;
|
||||
|
||||
import com.nflg.mobilebroken.admin.service.SsePushService;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
||||
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.service.TicketChatService;
|
||||
import com.nflg.mobilebroken.starter.service.impl.AliYunTranslate;
|
||||
import org.springframework.beans.BeansException;
|
||||
|
|
@ -16,16 +18,16 @@ import java.time.Instant;
|
|||
public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
||||
private final Integer ticketId;
|
||||
private final String userName;
|
||||
private final AdminUser adminUser;
|
||||
private final String language;
|
||||
|
||||
private SsePushService ssePushService;
|
||||
private TicketChatService ticketChatService;
|
||||
|
||||
public TicketCallBeginEvent(Object source, Integer ticketId, String userName, String language) {
|
||||
public TicketCallBeginEvent(Object source, Integer ticketId, AdminUser adminUser, String language) {
|
||||
super(source);
|
||||
this.ticketId = ticketId;
|
||||
this.userName = userName;
|
||||
this.adminUser = adminUser;
|
||||
this.language = language;
|
||||
}
|
||||
|
||||
|
|
@ -40,9 +42,10 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio
|
|||
.setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
.setFrom("call")
|
||||
.setTicketState(TicketState.Processing.getState())
|
||||
.setSenderId(0)
|
||||
.setSenderName("通话助手")
|
||||
.setContentPre(userName)
|
||||
.setSenderFrom(Constant.FROM_ADMIN)
|
||||
.setSenderId(adminUser.getId())
|
||||
.setSenderName(adminUser.getUserName())
|
||||
.setContentPre(adminUser.getUserName())
|
||||
.setContent("发起了视频通话")
|
||||
.setCreateTime(Instant.now());
|
||||
ticketChatService.addMessage(Long.valueOf(ticketId), message);
|
||||
|
|
|
|||
|
|
@ -67,13 +67,11 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
if (Objects.nonNull(userId)) {
|
||||
String from = userId.toString().startsWith("1") ? "app" : "admin";
|
||||
userId = Integer.valueOf(userId.toString().substring(1));
|
||||
String receiverUserLanguageCode = StrUtil.equals(from, Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(userId).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(from + "-uid-0")//不重要
|
||||
.setReceiverId(from + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(String.valueOf(ticket.getId()))
|
||||
|
|
@ -83,7 +81,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
.setFrom("admin")
|
||||
)
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.nflg.mobilebroken.admin.publisher;
|
|||
import com.nflg.mobilebroken.admin.event.*;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.TicketDTO;
|
||||
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
|
@ -44,9 +45,9 @@ public class TicketEventPublisher {
|
|||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketCallBeginEvent(Integer ticketId, String userName) {
|
||||
public void publishTicketCallBeginEvent(Integer ticketId, AdminUser adminUser) {
|
||||
String language = MultilingualUtil.getLanguage();
|
||||
TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, userName, language);
|
||||
TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, adminUser, language);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -411,20 +411,30 @@ public class TicketController extends ControllerBase {
|
|||
MessageVO vo = new MessageVO();
|
||||
List<ChatMessageVO> messageVOS = ticketChatService.getMessages(ticketId, userId);
|
||||
String languageCode = MultilingualUtil.getLanguage();
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
messageVOS.forEach(m -> {
|
||||
if (m.getSenderId() == 0 && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode));
|
||||
m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (m.isWithdrawn()) {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) {
|
||||
m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode));
|
||||
}
|
||||
});
|
||||
if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
messageVOS.forEach(m -> {
|
||||
if (StrUtil.equals(m.getFrom(), "call")) {
|
||||
if (StrUtil.equals(m.getContent(), "发起了视频通话")) {
|
||||
if (StrUtil.equals(m.getSenderFrom(), Constant.FROM_APP) && Objects.equals(m.getSenderId(), userId)) {
|
||||
m.setContent(aliYunTranslate.translateWord("您" + m.getContent(), aliyunCode));
|
||||
} else {
|
||||
m.setContent(m.getSenderName() + aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
} else {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
} else {
|
||||
if (m.isWithdrawn()) {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) {
|
||||
m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
vo.setMessages(messageVOS);
|
||||
vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":app:" + userId, "count")).orElse("0")));
|
||||
|
|
@ -538,7 +548,7 @@ public class TicketController extends ControllerBase {
|
|||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(id, message);
|
||||
ssePushService.sendTicketMessageToApp(id, message);
|
||||
uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启");
|
||||
// stringRedisTemplate.opsForValue().set(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, ticket.getId()), DateTimeUtil.format(LocalDateTime.now()));
|
||||
stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", ticket.getId().toString());
|
||||
appMessageService.setReaded(AppUserUtil.getUserId(), AppUserUtil.getFrom(), MessageSubType.TicketCompletion.getState());
|
||||
|
|
@ -634,27 +644,28 @@ public class TicketController extends ControllerBase {
|
|||
.setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId())
|
||||
.setReceiverId("admin-uid-" + handlerUserId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(appUser.getName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(appUser.getName())
|
||||
// .setContentPre(appUser.getName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(appUser.getId())
|
||||
.setUserName(appUser.getName())
|
||||
.setUserAvatar(appUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("app")
|
||||
.setReceiverId("admin-uid-" + handlerUserId)
|
||||
)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
// .setContentPre(appUser.getName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(appUser.getId())
|
||||
.setUserName(appUser.getName())
|
||||
.setUserAvatar(appUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("app")
|
||||
.setReceiverId("admin-uid-" + handlerUserId)
|
||||
)
|
||||
)
|
||||
, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
);
|
||||
ssePushService.sendTicketCallToAdmin(appUser, handlerUserId, ticketId);
|
||||
// ticketCallService.add(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP, handlerUserId, Constant.FROM_ADMIN);
|
||||
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, appUser.getName());
|
||||
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, appUser);
|
||||
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, Constant.FROM_ADMIN + "-uid-" + handlerUserId);
|
||||
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, 1, TimeUnit.MINUTES);
|
||||
return ApiResult.success();
|
||||
|
|
@ -675,25 +686,24 @@ public class TicketController extends ControllerBase {
|
|||
VUtils.trueThrowBusinessError(channelUsers.getUsers().contains(ShengWangUtil.getUserId(AppUserUtil.getUserId(), AppUserUtil.getFrom())))
|
||||
.throwMessage("你已在通话中");
|
||||
ssePushService.sendTicketCallJoined(AppUserUtil.getUserId(), ticketId, AppUserUtil.getFrom());
|
||||
String receiverUserLanguageCode = StrUtil.equals(AppUserUtil.getFrom(), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(AppUserUtil.getUserId()).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要
|
||||
.setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要
|
||||
.setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContent("加入通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
.setContent("加入通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AppUserUtil.getUserId())
|
||||
.setCategory("ticketCallJoined")
|
||||
.setFrom("app")
|
||||
)
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AppUserUtil.getUserId())
|
||||
.setUserName(AppUserUtil.getUserName())
|
||||
.setCategory("ticketCallJoined")
|
||||
.setFrom("app")
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
)
|
||||
);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -709,49 +719,45 @@ public class TicketController extends ControllerBase {
|
|||
Set<String> userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
|
||||
if (CollectionUtil.isNotEmpty(userIds)) {
|
||||
userIds.forEach(uid -> {
|
||||
List<String> us = StrUtil.split(uid, "-");
|
||||
String receiverUserLanguageCode = StrUtil.equals(us.get(0), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(Integer.valueOf(us.get(2))).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(uid)//不重要
|
||||
.setReceiverId(uid)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话结束")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2)))
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("app")
|
||||
)
|
||||
.setSenderId(uid)//不重要
|
||||
.setReceiverId(uid)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话结束")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2)))
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("app")
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
|
||||
} else {
|
||||
String receiverUserLanguageCode = StrUtil.equals(request.getFrom(), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(request.getFromUserId()).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要
|
||||
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话拒接")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话拒接")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AppUserUtil.getUserId())
|
||||
.setCategory("ticketCallReject")
|
||||
.setFrom("app")
|
||||
)
|
||||
.setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要
|
||||
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContent("视频通话拒接")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话拒接")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(ticket.getType())
|
||||
.setUserId(AppUserUtil.getUserId())
|
||||
.setUserName(AppUserUtil.getUserName())
|
||||
.setCategory("ticketCallReject")
|
||||
.setFrom("app")
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
)
|
||||
);
|
||||
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_APP + "-uid-" + AppUserUtil.getUserId());
|
||||
}
|
||||
taskScheduler.schedule(() -> {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.nflg.mobilebroken.cfs.event;
|
||||
|
||||
import com.nflg.mobilebroken.cfs.service.SsePushService;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
||||
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
import com.nflg.mobilebroken.repository.service.TicketChatService;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
|
@ -15,16 +17,16 @@ import java.time.Instant;
|
|||
public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
||||
private final Long ticketId;
|
||||
private final String userName;
|
||||
private final AppUser appUser;
|
||||
private final String language;
|
||||
|
||||
private SsePushService ssePushService;
|
||||
private TicketChatService ticketChatService;
|
||||
|
||||
public TicketCallBeginEvent(Object source, Long ticketId, String userName, String language) {
|
||||
public TicketCallBeginEvent(Object source, Long ticketId, AppUser appUser, String language) {
|
||||
super(source);
|
||||
this.ticketId = ticketId;
|
||||
this.userName = userName;
|
||||
this.appUser = appUser;
|
||||
this.language = language;
|
||||
}
|
||||
|
||||
|
|
@ -34,19 +36,20 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio
|
|||
this.ticketChatService = applicationContext.getBean(TicketChatService.class);
|
||||
}
|
||||
|
||||
public void send(){
|
||||
public void send() {
|
||||
ChatMessageDTO message = new ChatMessageDTO()
|
||||
.setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
.setFrom("call")
|
||||
.setTicketState(TicketState.Processing.getState())
|
||||
.setSenderId(0)
|
||||
.setSenderName("通话助手")
|
||||
.setContentPre(userName)
|
||||
.setSenderFrom(Constant.FROM_APP)
|
||||
.setSenderId(appUser.getId())
|
||||
.setSenderName(appUser.getName())
|
||||
.setContentPre(appUser.getName())
|
||||
.setContent("发起了视频通话")
|
||||
.setCreateTime(Instant.now());
|
||||
ticketChatService.addMessage(ticketId, message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(ticketId,message);
|
||||
ssePushService.sendTicketMessageToApp(ticketId,message);
|
||||
ssePushService.sendTicketMessageToAdmin(ticketId, message);
|
||||
ssePushService.sendTicketMessageToApp(ticketId, message);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,13 +67,11 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
if (Objects.nonNull(userId)) {
|
||||
String from = userId.toString().startsWith("1") ? "app" : "admin";
|
||||
userId = Integer.valueOf(userId.toString().substring(1));
|
||||
String receiverUserLanguageCode = StrUtil.equals(from, Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(userId).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(from + "-uid-0")//不重要
|
||||
.setReceiverId(from + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(String.valueOf(ticket.getId()))
|
||||
|
|
@ -83,7 +81,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
.setFrom("app")
|
||||
)
|
||||
)
|
||||
,receiverUserLanguageCode);
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.nflg.mobilebroken.cfs.publisher;
|
|||
import com.nflg.mobilebroken.cfs.event.*;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.TicketDTO;
|
||||
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
|
@ -55,9 +56,9 @@ public class TicketEventPublisher {
|
|||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketCallBeginEvent(Long ticketId, String userName) {
|
||||
public void publishTicketCallBeginEvent(Long ticketId, AppUser appUser) {
|
||||
String language = MultilingualUtil.getLanguage();
|
||||
TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, userName, language);
|
||||
TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, appUser, language);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ public class ChatMessageDTO {
|
|||
//来源
|
||||
private String from;
|
||||
|
||||
// 发送者来源,app或者admin
|
||||
private String senderFrom;
|
||||
|
||||
// 发送者id
|
||||
private Integer senderId;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,14 +9,17 @@ import java.util.Objects;
|
|||
@Accessors(chain = true)
|
||||
public class UniPushMessageBody {
|
||||
|
||||
//来源
|
||||
private String from;
|
||||
|
||||
private String title;
|
||||
|
||||
// 消息内容前缀
|
||||
private String contentPre;
|
||||
|
||||
public String getContentPre() {
|
||||
return Objects.isNull(contentPre) ? "" : contentPre + " ";
|
||||
}
|
||||
// // 消息内容前缀
|
||||
// private String contentPre;
|
||||
//
|
||||
// public String getContentPre() {
|
||||
// return Objects.isNull(contentPre) ? "" : contentPre + " ";
|
||||
// }
|
||||
|
||||
private String content;
|
||||
|
||||
|
|
|
|||
|
|
@ -31,12 +31,12 @@ public class UniPushMessageCallPayload {
|
|||
|
||||
private String title;
|
||||
|
||||
// 消息内容前缀
|
||||
private String contentPre;
|
||||
|
||||
public String getContentPre() {
|
||||
return Objects.isNull(contentPre) ? "" : contentPre;
|
||||
}
|
||||
// // 消息内容前缀
|
||||
// private String contentPre;
|
||||
//
|
||||
// public String getContentPre() {
|
||||
// return Objects.isNull(contentPre) ? "" : contentPre;
|
||||
// }
|
||||
|
||||
private String content;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@ public class ChatMessageVO {
|
|||
//来源
|
||||
private String from;
|
||||
|
||||
// 发送者来源,app或者admin
|
||||
private String senderFrom;
|
||||
|
||||
// 发送者id
|
||||
private Integer senderId;
|
||||
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ public class TicketController extends ControllerBase {
|
|||
ssePushService.sendTicketMessageToApp(ticket.getId(), message);
|
||||
ssePushService.sendTicketMessageToAdmin(ticket.getId(), message);
|
||||
request.getUserIds().forEach(userId -> {
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单");
|
||||
});
|
||||
adminMessageService.setReaded(AdminUserUtil.getUserId(), ticket.getId(), MessageSubType.TicketToBeAssigned.getState());
|
||||
return ApiResult.success();
|
||||
|
|
@ -492,12 +492,9 @@ public class TicketController extends ControllerBase {
|
|||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(id, message);
|
||||
ssePushService.sendTicketMessageToApp(id, message);
|
||||
String receiverUserLanguageCode = StrUtil.equals(ticket.getUserPlatform(), Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(ticket.getUserId()).getLanguageCode();
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成", receiverUserLanguageCode);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成");
|
||||
deviceTypeService.getCqms(ticket.getDeviceNo()).forEach(cqm -> {
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成");
|
||||
});
|
||||
}
|
||||
return ApiResult.success();
|
||||
|
|
@ -527,7 +524,7 @@ public class TicketController extends ControllerBase {
|
|||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(id, message);
|
||||
ssePushService.sendTicketMessageToApp(id, message);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE);
|
||||
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回");
|
||||
stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", id.toString());
|
||||
adminMessageService.setReaded(AdminUserUtil.getUserId(), id, MessageSubType.TicketSolutionAudit.getState());
|
||||
}
|
||||
|
|
@ -833,20 +830,30 @@ public class TicketController extends ControllerBase {
|
|||
MessageVO vo = new MessageVO();
|
||||
List<ChatMessageVO> messageVOS = ticketChatService.getMessages(ticketId, userId);
|
||||
String languageCode = MultilingualUtil.getLanguage();
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
messageVOS.forEach(m -> {
|
||||
if (m.getSenderId() == 0 && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode));
|
||||
m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (m.isWithdrawn()) {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) {
|
||||
m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode));
|
||||
}
|
||||
});
|
||||
if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
messageVOS.forEach(m -> {
|
||||
if (StrUtil.equals(m.getFrom(), "call")) {
|
||||
if (StrUtil.equals(m.getContent(), "发起了视频通话")) {
|
||||
if (StrUtil.equals(m.getSenderFrom(), Constant.FROM_ADMIN) && Objects.equals(m.getSenderId(), userId)) {
|
||||
m.setContent(aliYunTranslate.translateWord("您" + m.getContent(), aliyunCode));
|
||||
} else {
|
||||
m.setContent(m.getSenderName() + aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
} else {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
} else {
|
||||
if (m.isWithdrawn()) {
|
||||
m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode));
|
||||
}
|
||||
if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) {
|
||||
m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
vo.setMessages(messageVOS);
|
||||
vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":admin:" + userId, "count")).orElse("0")));
|
||||
|
|
@ -1402,37 +1409,35 @@ public class TicketController extends ControllerBase {
|
|||
// VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中");
|
||||
// ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom);
|
||||
AdminUser adminUser = adminUserService.getById(sendUserId);
|
||||
String receiverUserLanguageCode = StrUtil.equals(receiveUserFrom, Constant.FROM_ADMIN)
|
||||
? Constant.DEFAULT_LANGUAGE_CODE
|
||||
: appUserService.getById(receiveUserId).getLanguageCode();
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId("admin-uid-" + sendUserId)
|
||||
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(1)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
|
||||
)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(ticketId))
|
||||
.setTicketType(1)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
|
||||
)
|
||||
)
|
||||
, receiverUserLanguageCode);
|
||||
);
|
||||
if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) {
|
||||
ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), ticketId);
|
||||
} else {
|
||||
ssePushService.sendTicketCallToAdmin(adminUser, receiveUserId, ticketId);
|
||||
}
|
||||
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser.getUserName());
|
||||
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser);
|
||||
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, receiveUserFrom + "-uid-" + receiveUserId);
|
||||
stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, 1, TimeUnit.MINUTES);
|
||||
return ApiResult.success();
|
||||
|
|
@ -1462,24 +1467,25 @@ public class TicketController extends ControllerBase {
|
|||
.setSenderId("admin-uid-" + adminUser.getId())
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setFrom("call")
|
||||
.setTitle("视频通话")
|
||||
.setContentPre(adminUser.getUserName())
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(1)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTitle("视频通话")
|
||||
// .setContentPre(adminUser.getUserName())
|
||||
.setContent("请求与您视频通话")
|
||||
.setTicketId(String.valueOf(request.getTicketId()))
|
||||
.setTicketType(1)
|
||||
.setUserId(adminUser.getId())
|
||||
.setUserName(adminUser.getUserName())
|
||||
.setUserAvatar(adminUser.getAvatar())
|
||||
.setCategory("ticketCall")
|
||||
.setFrom("admin")
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
)
|
||||
)
|
||||
, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
);
|
||||
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
|
||||
// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN);
|
||||
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.nflg.mobilebroken.gongfu.event;
|
||||
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.gongfu.service.SsePushService;
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
||||
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.service.TicketChatService;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
|
@ -15,16 +17,16 @@ import java.time.Instant;
|
|||
public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
||||
private final Long ticketId;
|
||||
private final String userName;
|
||||
private final AdminUser adminUser;
|
||||
private final String language;
|
||||
|
||||
private SsePushService ssePushService;
|
||||
private TicketChatService ticketChatService;
|
||||
|
||||
public TicketCallBeginEvent(Object source, Long ticketId, String userName, String language) {
|
||||
public TicketCallBeginEvent(Object source, Long ticketId, AdminUser adminUser, String language) {
|
||||
super(source);
|
||||
this.ticketId = ticketId;
|
||||
this.userName = userName;
|
||||
this.adminUser = adminUser;
|
||||
this.language = language;
|
||||
}
|
||||
|
||||
|
|
@ -39,14 +41,15 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio
|
|||
.setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
.setFrom("call")
|
||||
.setTicketState(TicketState.Processing.getState())
|
||||
.setSenderId(0)
|
||||
.setSenderName("通话助手")
|
||||
.setContentPre(userName)
|
||||
.setSenderFrom(Constant.FROM_ADMIN)
|
||||
.setSenderId(adminUser.getId())
|
||||
.setSenderName(adminUser.getUserName())
|
||||
.setContentPre(adminUser.getUserName())
|
||||
.setContent("发起了视频通话")
|
||||
.setCreateTime(Instant.now());
|
||||
ticketChatService.addMessage(Long.valueOf(ticketId), message);
|
||||
ticketChatService.addMessage(ticketId, message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(Long.valueOf(ticketId), message);
|
||||
ssePushService.sendTicketMessageToApp(Long.valueOf(ticketId), message);
|
||||
ssePushService.sendTicketMessageToAdmin(ticketId, message);
|
||||
ssePushService.sendTicketMessageToApp(ticketId, message);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.nflg.mobilebroken.gongfu.publisher;
|
|||
|
||||
import com.nflg.mobilebroken.gongfu.event.*;
|
||||
import com.nflg.mobilebroken.common.util.MultilingualUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.entity.GongfuTicket;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
|
@ -43,9 +44,9 @@ public class TicketEventPublisher {
|
|||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
||||
public void publishTicketCallBeginEvent(Long ticketId, String userName) {
|
||||
public void publishTicketCallBeginEvent(Long ticketId, AdminUser adminUser) {
|
||||
String language = MultilingualUtil.getLanguage();
|
||||
TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, userName, language);
|
||||
TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, adminUser, language);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ public class TicketChatService {
|
|||
.setId(m.getId())
|
||||
.setFrom(m.getFrom())
|
||||
.setTicketState(m.getTicketState())
|
||||
.setSenderFrom(m.getSenderFrom())
|
||||
.setSenderId(m.getSenderId())
|
||||
.setSenderName(m.getSenderName())
|
||||
.setSenderAvatar(m.getSenderAvatar())
|
||||
|
|
@ -79,6 +80,7 @@ public class TicketChatService {
|
|||
.setId(m.getQuote().getId())
|
||||
.setFrom(m.getQuote().getFrom())
|
||||
.setTicketState(m.getQuote().getTicketState())
|
||||
.setSenderFrom(m.getQuote().getSenderFrom())
|
||||
.setSenderId(m.getQuote().getSenderId())
|
||||
.setSenderName(m.getQuote().getSenderName())
|
||||
.setSenderAvatar(m.getQuote().getSenderAvatar())
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ public class UniPushService {
|
|||
private AliYunTranslate aliYunTranslate;
|
||||
|
||||
@Async("httpExecutor")
|
||||
public CompletableFuture<Void> send(UniPushMessage message, String languageCode) {
|
||||
translate(message, languageCode);
|
||||
public CompletableFuture<Void> send(UniPushMessage message) {
|
||||
// translate(message, languageCode);
|
||||
log.info("发送uniapp消息:{}", JSONUtil.toJsonStr(message));
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(url, message, String.class);
|
||||
|
|
@ -43,21 +43,21 @@ public class UniPushService {
|
|||
return CompletableFuture.completedFuture(null);
|
||||
}
|
||||
|
||||
private void translate(UniPushMessage message, String languageCode) {
|
||||
if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
UniPushMessageBody body = message.getSendData();
|
||||
body.setTitle(aliYunTranslate.translateWord(body.getTitle(), aliyunCode));
|
||||
body.setContent(body.getContentPre() + aliYunTranslate.translateWord(body.getContent(), aliyunCode));
|
||||
if (body.getPayload() instanceof UniPushMessageCallPayload) {
|
||||
UniPushMessageCallPayload payload = (UniPushMessageCallPayload) body.getPayload();
|
||||
payload.setTitle(aliYunTranslate.translateWord(payload.getTitle(), aliyunCode));
|
||||
payload.setContent(payload.getContentPre() + aliYunTranslate.translateWord(payload.getContent(), aliyunCode));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// private void translate(UniPushMessage message, String languageCode) {
|
||||
// if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
|
||||
// String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
|
||||
// if (StrUtil.isNotBlank(aliyunCode)) {
|
||||
// UniPushMessageBody body = message.getSendData();
|
||||
// body.setTitle(aliYunTranslate.translateWord(body.getTitle(), aliyunCode));
|
||||
// body.setContent(body.getContentPre() + aliYunTranslate.translateWord(body.getContent(), aliyunCode));
|
||||
// if (body.getPayload() instanceof UniPushMessageCallPayload) {
|
||||
// UniPushMessageCallPayload payload = (UniPushMessageCallPayload) body.getPayload();
|
||||
// payload.setTitle(aliYunTranslate.translateWord(payload.getTitle(), aliyunCode));
|
||||
// payload.setContent(payload.getContentPre() + aliYunTranslate.translateWord(payload.getContent(), aliyunCode));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// public void sendTicketMessage(String from, String to, ChatMessageDTO data) {
|
||||
// send(new UniPushMessage()
|
||||
|
|
@ -70,37 +70,37 @@ public class UniPushService {
|
|||
// );
|
||||
// }
|
||||
|
||||
public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content, String languageCode) {
|
||||
public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content) {
|
||||
send(new UniPushMessage()
|
||||
.setSenderId("admin-uid-" + AdminUserUtil.getUserId())
|
||||
.setReceiverId(platform + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setSenderId("admin-uid-" + AdminUserUtil.getUserId())
|
||||
.setReceiverId(platform + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("工单消息")
|
||||
.setContent(content)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(ticketId)
|
||||
.setTicketType(type)
|
||||
.setTitle("工单消息")
|
||||
.setContent(content)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(ticketId)
|
||||
.setTicketType(type)
|
||||
.setTitle("工单消息")
|
||||
.setContent(content)
|
||||
)
|
||||
)
|
||||
, languageCode);
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content, String languageCode) {
|
||||
public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content) {
|
||||
send(new UniPushMessage()
|
||||
.setSenderId("app-uid-" + AppUserUtil.getUserId())
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setSenderId("app-uid-" + AppUserUtil.getUserId())
|
||||
.setReceiverId("admin-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("工单消息")
|
||||
.setContent(content)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(ticketId)
|
||||
.setTicketType(type)
|
||||
.setTitle("工单消息")
|
||||
.setContent(content)
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(ticketId)
|
||||
.setTicketType(type)
|
||||
.setTitle("工单消息")
|
||||
.setContent(content)
|
||||
)
|
||||
)
|
||||
, languageCode);
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue