diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index e46aa1f3..57088fe0 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -829,20 +829,30 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List 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"))); @@ -1430,33 +1440,34 @@ public class TicketController extends ControllerBase { // ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom); AdminUser adminUser = adminUserService.getById(sendUserId); uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + sendUserId) - .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .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) + .setSenderId("admin-uid-" + sendUserId) + .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .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) + ) ) - ) ); 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(); @@ -1470,11 +1481,6 @@ public class TicketController extends ControllerBase { @PostMapping("addCallUser") public ApiResult addCallUser(@Valid @RequestBody CallUserAddRequest request) { AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId()); -// TicketCall ticketCall = ticketCallService.lambdaQuery() -// .eq(TicketCall::getTicketId, request.getTicketId()) -// .eq(TicketCall::getState, 1) -// .one(); -// VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中"); List userNames = new ArrayList<>(); request.getUserIds().forEach(userId -> { AdminUser adminUser1 = adminUserService.getById(userId); @@ -1483,26 +1489,27 @@ public class TicketController extends ControllerBase { userNames.add(adminUser1.getUserName()); } else { uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + adminUser.getId()) - .setReceiverId("admin-uid-" + userId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .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) + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + userId) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .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) + ) ) - ) ); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); // ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); @@ -1537,6 +1544,7 @@ public class TicketController extends ControllerBase { .setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要 .setReceiverId("admin-uid-" + AdminUserUtil.getUserId()) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话") .setContent("加入通话") .setPayload(new UniPushMessageCallPayload() @@ -1568,6 +1576,7 @@ public class TicketController extends ControllerBase { .setSenderId(uid)//不重要 .setReceiverId(uid) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话") .setContent("视频通话结束") .setPayload(new UniPushMessageCallPayload() @@ -1589,6 +1598,7 @@ public class TicketController extends ControllerBase { .setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要 .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话") .setContent("视频通话拒接") .setPayload(new UniPushMessageCallPayload() @@ -1596,6 +1606,7 @@ public class TicketController extends ControllerBase { .setTicketId(String.valueOf(request.getTicketId())) .setTicketType(ticket.getType()) .setUserId(AdminUserUtil.getUserId()) + .setUserName(AdminUserUtil.getUserName()) .setCategory("ticketCallReject") .setFrom("admin") ) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java index 349dbcbd..978aab15 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java @@ -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); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java index c6097a5a..8b80b13c 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java @@ -1,12 +1,14 @@ package com.nflg.mobilebroken.admin.event; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.admin.service.ShengWangService; 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.*; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.service.IAppUserService; import com.nflg.mobilebroken.repository.service.TicketChatService; import com.nflg.mobilebroken.starter.service.UniPushService; import org.springframework.beans.BeansException; @@ -28,6 +30,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC private ShengWangService shengWangService; private StringRedisTemplate stringRedisTemplate; private UniPushService uniPushService; + private IAppUserService appUserService; public TicketCallEndEvent(Object source, TicketDTO ticket) { super(source); @@ -41,6 +44,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC this.shengWangService = applicationContext.getBean(ShengWangService.class); this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class); this.uniPushService = applicationContext.getBean(UniPushService.class); + this.appUserService = applicationContext.getBean(IAppUserService.class); } public void send() throws IOException, InterruptedException { @@ -64,19 +68,20 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC String from = userId.toString().startsWith("1") ? "app" : "admin"; userId = Integer.valueOf(userId.toString().substring(1)); uniPushService.send(new UniPushMessage() - .setSenderId(from + "-uid-0")//不重要 - .setReceiverId(from + "-uid-" + userId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话结束") - .setPayload(new UniPushMessageCallPayload() - .setTicketId(String.valueOf(ticket.getId())) - .setTicketType(ticket.getType()) - .setUserId(userId) - .setCategory("ticketCallEnd") - .setFrom("admin") + .setSenderId(from + "-uid-0")//不重要 + .setReceiverId(from + "-uid-" + userId) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话结束") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(String.valueOf(ticket.getId())) + .setTicketType(ticket.getType()) + .setUserId(userId) + .setCategory("ticketCallEnd") + .setFrom("admin") + ) ) - ) - ); + ); } } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java index 0aae2a3a..7fc7deb4 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java @@ -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); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index fa3d3c28..94e5e4c7 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -411,20 +411,30 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List 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"))); @@ -631,30 +641,31 @@ public class TicketController extends ControllerBase { // VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), Constant.FROM_ADMIN, handlerUserId)).throwMessage("对方正在通话中"); AppUser appUser = appUserService.getById(ticket.getUserId()); uniPushService.send(new UniPushMessage() - .setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId()) - .setReceiverId("admin-uid-" + handlerUserId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(appUser.getName()) - .setContent("请求与您视频通话") - .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) + .setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId()) + .setReceiverId("admin-uid-" + handlerUserId) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") +// .setContentPre(appUser.getName()) + .setContent("请求与您视频通话") + .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) + ) ) - ) ); 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(); @@ -679,6 +690,7 @@ public class TicketController extends ControllerBase { .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 .setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId()) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话") .setContent("加入通话") .setPayload(new UniPushMessageCallPayload() @@ -686,6 +698,7 @@ public class TicketController extends ControllerBase { .setTicketId(String.valueOf(ticketId)) .setTicketType(ticket.getType()) .setUserId(AppUserUtil.getUserId()) + .setUserName(AppUserUtil.getUserName()) .setCategory("ticketCallJoined") .setFrom("app") ) @@ -710,6 +723,7 @@ public class TicketController extends ControllerBase { .setSenderId(uid)//不重要 .setReceiverId(uid) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话") .setContent("视频通话结束") .setPayload(new UniPushMessageCallPayload() @@ -730,6 +744,7 @@ public class TicketController extends ControllerBase { .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话") .setContent("视频通话拒接") .setPayload(new UniPushMessageCallPayload() @@ -737,6 +752,7 @@ public class TicketController extends ControllerBase { .setTicketId(String.valueOf(request.getTicketId())) .setTicketType(ticket.getType()) .setUserId(AppUserUtil.getUserId()) + .setUserName(AppUserUtil.getUserName()) .setCategory("ticketCallReject") .setFrom("app") ) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java index 0ec641a7..40407a2f 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java @@ -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); } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java index c0357b44..8fa6f0c9 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java @@ -1,11 +1,13 @@ package com.nflg.mobilebroken.cfs.event; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.cfs.service.ShengWangService; 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.*; +import com.nflg.mobilebroken.repository.service.IAppUserService; import com.nflg.mobilebroken.repository.service.TicketChatService; import com.nflg.mobilebroken.starter.service.UniPushService; import org.springframework.beans.BeansException; @@ -27,6 +29,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC private ShengWangService shengWangService; private StringRedisTemplate stringRedisTemplate; private UniPushService uniPushService; + private IAppUserService appUserService; public TicketCallEndEvent(Object source, TicketDTO ticket) { super(source); @@ -40,6 +43,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC this.shengWangService = applicationContext.getBean(ShengWangService.class); this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class); this.uniPushService = applicationContext.getBean(UniPushService.class); + this.appUserService = applicationContext.getBean(IAppUserService.class); } public void send() throws IOException, InterruptedException { @@ -67,6 +71,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC .setSenderId(from + "-uid-0")//不重要 .setReceiverId(from + "-uid-" + userId) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话结束") .setPayload(new UniPushMessageCallPayload() .setTicketId(String.valueOf(ticket.getId())) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java index 5fa8f3a5..2eab5dd4 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java @@ -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); } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java index 5f035f65..6f1d846a 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java @@ -13,6 +13,8 @@ public class Constant { public static final String DEFAULT_LANGUAGE_CODE = "cn"; + public static final String HEADER_LANGUAGE = "language"; + public static final String DICTIONARY_TYPE_SERVICE_EVALUATION = "ServiceEvaluation"; public static final String DICTIONARY_TYPE_EXPERIENCE_EVALUATION = "ExperienceEvaluation"; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java index ec67d355..db5dbffd 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java @@ -21,6 +21,9 @@ public class ChatMessageDTO { //来源 private String from; + // 发送者来源,app或者admin + private String senderFrom; + // 发送者id private Integer senderId; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java index aeca8e6c..8cf8c0e0 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java @@ -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; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java index 5ef4b374..b9176682 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java @@ -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; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java index 30231eae..d624f92b 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java @@ -15,6 +15,9 @@ public class ChatMessageVO { //来源 private String from; + // 发送者来源,app或者admin + private String senderFrom; + // 发送者id private Integer senderId; diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java index 800c9f16..df7cca6d 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java @@ -830,20 +830,30 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List 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"))); @@ -958,7 +968,7 @@ public class TicketController extends ControllerBase { @GetMapping("getSolutionReviewDepartment") @ApiMark(moduleName = "工单管理", apiName = "获取工单解决方案评审部门") public ApiResult> getSolutionReviewDepartment(@Valid @RequestParam @NotNull Long ticketId) { - return ApiResult.success(ticketSolutionAuditService.getByTicket(ticketId,MultilingualUtil.getLanguage())); + return ApiResult.success(ticketSolutionAuditService.getByTicket(ticketId, MultilingualUtil.getLanguage())); } /** @@ -1221,7 +1231,7 @@ public class TicketController extends ControllerBase { } } //解决方案审核 - List reviewDepartments = ticketSolutionAuditService.getByTicket(ticketId,MultilingualUtil.getLanguage()) + List reviewDepartments = ticketSolutionAuditService.getByTicket(ticketId, MultilingualUtil.getLanguage()) .stream() .filter(vo -> StrUtil.isNotBlank(vo.getUserName())) .collect(Collectors.toList()); @@ -1400,33 +1410,34 @@ public class TicketController extends ControllerBase { // ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom); AdminUser adminUser = adminUserService.getById(sendUserId); uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + sendUserId) - .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .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) + .setSenderId("admin-uid-" + sendUserId) + .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .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) + ) ) - ) ); 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(); @@ -1453,26 +1464,27 @@ public class TicketController extends ControllerBase { userNames.add(adminUser1.getUserName()); } else { uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + adminUser.getId()) - .setReceiverId("admin-uid-" + userId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .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) + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + userId) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .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) + ) ) - ) ); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); // ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java index 3efd485a..5de51b8f 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java @@ -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,9 +41,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(ticketId, message); diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java index dfeeaff2..7ad99343 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java @@ -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); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java index bedc1aab..0533a5cd 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java @@ -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()) diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml index 8a7be793..1ae8994a 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml @@ -61,6 +61,7 @@ , u.title_id , p.position_name AS 'title' , u.type + ,u.language_code FROM app_user u LEFT JOIN t_base_customer c ON u.company_id = c.id LEFT JOIN t_base_area a1 ON u.area_id = a1.id diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/interceptor/LanguageInterceptor.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/interceptor/LanguageInterceptor.java index 4ebc2207..1ce5c566 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/interceptor/LanguageInterceptor.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/interceptor/LanguageInterceptor.java @@ -1,6 +1,9 @@ package com.nflg.mobilebroken.starter.interceptor; +import cn.dev33.satoken.session.SaSession; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.util.MultilingualUtil; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @@ -14,12 +17,14 @@ public class LanguageInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 从请求头中获取 language 参数 - String language = request.getHeader("language"); - if(StrUtil.isNotBlank(language)){ + String language = request.getHeader(Constant.HEADER_LANGUAGE); + if (StrUtil.isNotBlank(language)) { MultilingualUtil.setLanguage(language); + StpUtil.getTokenSession().set(Constant.HEADER_LANGUAGE, language); } return true; } + @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 请求完成后清理 ThreadLocal,防止内存泄漏 diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java index 3da9d7e9..d4d9ced1 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java @@ -35,7 +35,7 @@ public class UniPushService { @Async("httpExecutor") public CompletableFuture send(UniPushMessage message) { - translate(message); +// translate(message, languageCode); log.info("发送uniapp消息:{}", JSONUtil.toJsonStr(message)); RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.postForEntity(url, message, String.class); @@ -43,31 +43,32 @@ public class UniPushService { return CompletableFuture.completedFuture(null); } - private void translate(UniPushMessage message) { - String languageCode = MultilingualUtil.getLanguage(); - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - if (StrUtil.isNotBlank(aliyunCode) && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - 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() - .setSenderId(from) - .setReceiverId(to) - .setSendData(new UniPushMessageBody() - .setTitle("工单聊天消息") - .setContent(CollectionUtil.isNotEmpty(data.getAttachments()) ? "文件" : (CollectionUtil.isNotEmpty(data.getImages()) ? "图片" : data.getContent())) - ) - ); - } +// public void sendTicketMessage(String from, String to, ChatMessageDTO data) { +// send(new UniPushMessage() +// .setSenderId(from) +// .setReceiverId(to) +// .setSendData(new UniPushMessageBody() +// .setTitle("工单聊天消息") +// .setContent(CollectionUtil.isNotEmpty(data.getAttachments()) ? "文件" : (CollectionUtil.isNotEmpty(data.getImages()) ? "图片" : data.getContent())) +// ) +// ); +// } public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content) { send(new UniPushMessage()