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..82dd8853 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 @@ -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, "分派工单"); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE); }); adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(ticket.getId()), MessageSubType.TicketToBeAssigned.getState()); return ApiResult.success(); @@ -496,9 +496,12 @@ 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, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成"); + 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); deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()).forEach(cqm -> { - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成"); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE); }); } return ApiResult.success(); @@ -526,7 +529,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], "工单被驳回"); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE); adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(id), MessageSubType.TicketSolutionAudit.getState()); } return ApiResult.success(); @@ -1429,28 +1432,31 @@ 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() + .setSenderId("admin-uid-" + sendUserId) + .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) + .setSendData(new UniPushMessageBody() .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) + .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 { @@ -1470,11 +1476,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,27 +1484,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() + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + userId) + .setSendData(new UniPushMessageBody() .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) + .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); @@ -1534,21 +1535,21 @@ 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() - .setTitle("视频通话") - .setContent("加入通话") - .setPayload(new UniPushMessageCallPayload() + .setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要 + .setReceiverId("admin-uid-" + AdminUserUtil.getUserId()) + .setSendData(new UniPushMessageBody() .setTitle("视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(ticket.getType()) - .setUserId(AdminUserUtil.getUserId()) - .setCategory("ticketCallJoined") - .setFrom("admin") + .setContent("加入通话") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") + .setTicketId(String.valueOf(ticketId)) + .setTicketType(ticket.getType()) + .setUserId(AdminUserUtil.getUserId()) + .setCategory("ticketCallJoined") + .setFrom("admin") + ) ) - ) - ); + , Constant.DEFAULT_LANGUAGE_CODE); return ApiResult.success(); } @@ -1564,43 +1565,50 @@ public class TicketController extends ControllerBase { Set userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); if (CollectionUtil.isNotEmpty(userIds)) { userIds.forEach(uid -> { + List 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() + .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() + .setTitle("视频通话") + .setContent("视频通话拒接") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话拒接") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(ticket.getType()) + .setUserId(AdminUserUtil.getUserId()) + .setCategory("ticketCallReject") + .setFrom("admin") + ) ) - ) - ); + , receiverUserLanguageCode); } stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId()); } 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..c7b7a6be 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 { @@ -63,20 +67,23 @@ 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() - .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() + .setTitle("视频通话结束") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(String.valueOf(ticket.getId())) + .setTicketType(ticket.getType()) + .setUserId(userId) + .setCategory("ticketCallEnd") + .setFrom("admin") + ) ) - ) - ); + , receiverUserLanguageCode); } } } 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..13063978 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 @@ -538,7 +538,7 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToApp(id, message); - uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启"); + uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启", Constant.DEFAULT_LANGUAGE_CODE); // 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()); @@ -631,27 +631,27 @@ 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() + .setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId()) + .setReceiverId("admin-uid-" + handlerUserId) + .setSendData(new UniPushMessageBody() .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) + .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()); @@ -675,22 +675,25 @@ 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() - .setTitle("视频通话") - .setContent("加入通话") - .setPayload(new UniPushMessageCallPayload() + .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 + .setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId()) + .setSendData(new UniPushMessageBody() .setTitle("视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(ticket.getType()) - .setUserId(AppUserUtil.getUserId()) - .setCategory("ticketCallJoined") - .setFrom("app") + .setContent("加入通话") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") + .setTicketId(String.valueOf(ticketId)) + .setTicketType(ticket.getType()) + .setUserId(AppUserUtil.getUserId()) + .setCategory("ticketCallJoined") + .setFrom("app") + ) ) - ) - ); + , receiverUserLanguageCode); return ApiResult.success(); } @@ -706,42 +709,49 @@ public class TicketController extends ControllerBase { Set userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); if (CollectionUtil.isNotEmpty(userIds)) { userIds.forEach(uid -> { + List 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() + .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() + .setTitle("视频通话") + .setContent("视频通话拒接") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话拒接") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(ticket.getType()) + .setUserId(AppUserUtil.getUserId()) + .setCategory("ticketCallReject") + .setFrom("app") + ) ) - ) - ); + , receiverUserLanguageCode); stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_APP + "-uid-" + AppUserUtil.getUserId()); } taskScheduler.schedule(() -> { 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..e64e93e9 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 { @@ -63,6 +67,9 @@ 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) @@ -76,7 +83,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC .setFrom("app") ) ) - ); + ,receiverUserLanguageCode); } } } 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 9b022a68..ea006d4b 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-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..4bef7ce3 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 @@ -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, "分派工单"); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE); }); adminMessageService.setReaded(AdminUserUtil.getUserId(), ticket.getId(), MessageSubType.TicketToBeAssigned.getState()); return ApiResult.success(); @@ -492,9 +492,12 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToApp(id, message); - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成"); + 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); deviceTypeService.getCqms(ticket.getDeviceNo()).forEach(cqm -> { - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成"); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE); }); } return ApiResult.success(); @@ -524,7 +527,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], "工单被驳回"); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE); stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", id.toString()); adminMessageService.setReaded(AdminUserUtil.getUserId(), id, MessageSubType.TicketSolutionAudit.getState()); } @@ -958,7 +961,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 +1224,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()); @@ -1399,28 +1402,31 @@ 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() + .setSenderId("admin-uid-" + sendUserId) + .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) + .setSendData(new UniPushMessageBody() .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) + .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 { @@ -1453,27 +1459,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() + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + userId) + .setSendData(new UniPushMessageBody() .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) + .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); diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml index fff6bdbf..c9688b76 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..a3e2259b 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 @@ -34,8 +34,8 @@ public class UniPushService { private AliYunTranslate aliYunTranslate; @Async("httpExecutor") - public CompletableFuture send(UniPushMessage message) { - translate(message); + public CompletableFuture send(UniPushMessage message, String languageCode) { + translate(message, languageCode); log.info("发送uniapp消息:{}", JSONUtil.toJsonStr(message)); RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.postForEntity(url, message, String.class); @@ -43,63 +43,64 @@ 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) { + public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content, String languageCode) { send(new UniPushMessage() - .setSenderId("admin-uid-" + AdminUserUtil.getUserId()) - .setReceiverId(platform + "-uid-" + userId) - .setSendData(new UniPushMessageBody() - .setTitle("工单消息") - .setContent(content) - .setPayload(new UniPushMessageCallPayload() - .setTicketId(ticketId) - .setTicketType(type) + .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) + ) ) - ) - ); + , languageCode); } - public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content) { + public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content, String languageCode) { send(new UniPushMessage() - .setSenderId("app-uid-" + AppUserUtil.getUserId()) - .setReceiverId("admin-uid-" + userId) - .setSendData(new UniPushMessageBody() - .setTitle("工单消息") - .setContent(content) - .setPayload(new UniPushMessageCallPayload() - .setTicketId(ticketId) - .setTicketType(type) + .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) + ) ) - ) - ); + , languageCode); } } \ No newline at end of file