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 bb3fd6c9..49cd4d04 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 @@ -349,7 +349,7 @@ public class TicketController extends ControllerBase { List adminUsers = adminUserService.listByIds(Arrays.stream(handle.split(",")).map(Integer::parseInt).collect(Collectors.toList())); handle = adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.joining(",")); } - AppUser primaryUser = appUserService.getPrimaryByCompanyId(user.getCompanyId()); + AppUser primaryUser = user.getIsPrimary()?user:appUserService.getPrimaryByCompanyId(user.getCompanyId()); TicketInfoVO vo = new TicketInfoVO() .setId(ticket.getId()) .setNo(ticket.getNo()) @@ -458,8 +458,11 @@ public class TicketController extends ControllerBase { .setContent(request.getContent()) .setCreateTime(Instant.now()) .setAttachments(request.getAttachments()) - .setImages(request.getImages()) - .setQuote(request.getQuote()); + .setImages(request.getImages()); + if(Objects.nonNull(request.getQuoteId())){ + ChatMessageDTO quoteMessage = ticketChatService.getMessage(request.getTicketId(), request.getQuoteId()); + message.setQuote(quoteMessage); + } ticketChatService.addMessage(request.getTicketId(), message); //推送消息 try { diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TestController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TestController.java index 2f88d561..e7c28fd3 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TestController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TestController.java @@ -1,8 +1,12 @@ package com.nflg.mobilebroken.cfs.controller; +import com.nflg.mobilebroken.cfs.publisher.TicketEventPublisher; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.dto.NotifyDTO; import com.nflg.mobilebroken.common.pojo.dto.SSEMessageDTO; +import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.Ticket; +import com.nflg.mobilebroken.repository.service.ITicketService; import com.nflg.mobilebroken.starter.service.impl.APPSSEManagerService; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; @@ -21,6 +25,12 @@ public class TestController extends ControllerBase { @Resource private APPSSEManagerService sseManagerService; + @Resource + private TicketEventPublisher ticketEventPublisher; + + @Resource + private ITicketService ticketService; + @GetMapping("sse/send") public ApiResult sendSse(@RequestParam String userId, @RequestParam String message) throws IOException { SSEMessageDTO messageDTO = new SSEMessageDTO() @@ -29,4 +39,11 @@ public class TestController extends ControllerBase { sseManagerService.send(Integer.valueOf(userId), messageDTO); return ApiResult.success(); } + + @GetMapping("sss") + public ApiResult sss(){ + Ticket ticket =ticketService.getById(8); + ticketEventPublisher.publishTicketCreateEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone()); + return ApiResult.success(); + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index e17ff8c1..07d7f9c9 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -187,7 +187,7 @@ public class TiketController extends ControllerBase { Ticket ticket = ticketService.getById(id); AppUser user = appUserService.getById(ticket.getUserId()); AppArea appArea = appAreaService.getById(user.getAreaId()); - TBaseCustomer company = customerService.getById(Integer.valueOf(user.getCompanyId())); + List companys = customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())); DeviceInfoVO device = deviceService.getByDeviceNo(ticket.getDeviceNo()); String handle = ticket.getHandle(); if (StrUtil.isNotBlank(handle)) { @@ -212,7 +212,7 @@ public class TiketController extends ControllerBase { .setCreateTime(ticket.getCreateTime()) .setAreaName(appArea.getName()) .setSolveTime(ticket.getSolveTime()) - .setCompanyName(company.getAgencyCompanyName()) + .setCompanyName(StrUtil.join(",",companys.stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()))) .setHandle(handle) .setSolution(ticket.getSolution()) .setSolutionAttachments(StrUtil.isNotBlank(ticket.getSolutionAttachments()) ? StrUtil.split(ticket.getSolutionAttachments(), ",") : Collections.emptyList()) @@ -291,12 +291,11 @@ public class TiketController extends ControllerBase { .setContent(request.getContent()) .setCreateTime(Instant.now()) .setAttachments(request.getAttachments()) - .setImages(request.getImages()) - .setQuote(request.getQuote()); -// ticketChatService.pushMessage(request.getTicketId(),message); -// TicketChat chat=ticketChatService.findByTicketId(request.getTicketId()); -// chat.getMessages().add(message); -// ticketChatService.save(chat); + .setImages(request.getImages()); + if(Objects.nonNull(request.getQuoteId())){ + ChatMessageDTO quoteMessage = ticketChatService.getMessage(request.getTicketId(), request.getQuoteId()); + message.setQuote(quoteMessage); + } ticketChatService.addMessage(request.getTicketId(), message); //推送消息 String handle = ticket.getHandle(); diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCreateEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCreateEvent.java index 809174eb..66d3ac88 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCreateEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCreateEvent.java @@ -29,6 +29,7 @@ public class TicketCreateEvent extends ApplicationEvent { private final Ticket ticket; private final String language; private final String zone; + @Resource private IDictionaryItemTranslateService dictionaryItemTranslateService; @Resource diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java index ea157e7c..f9e1d85a 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java @@ -1,6 +1,5 @@ package com.nflg.mobilebroken.common.pojo.request; -import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; import lombok.Data; import javax.validation.constraints.NotNull; @@ -23,5 +22,5 @@ public class AddChatMessageRequest { private List images; // 引用的消息 - private ChatMessageDTO quote; + private Long quoteId; } 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 437b1bc9..223c60ea 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 @@ -74,4 +74,24 @@ public class TicketChatService { // 执行更新操作 mongoTemplate.findAndModify(query, update, TicketChatDTO.class); } + + public ChatMessageDTO getMessage(Integer ticketId, Long messageId) { + // 构建查询条件 + Query query = new Query(); + query.addCriteria(Criteria.where("ticketId").is(ticketId)); + + // 查询 TicketChatDTO + TicketChatDTO ticketChat = mongoTemplate.findOne(query, TicketChatDTO.class); + + // 从 TicketChatDTO 中提取 ChatMessageDTO + if (ticketChat != null) { + for (ChatMessageDTO message : ticketChat.getMessages()) { + if (messageId.equals(message.getId())) { + return message; + } + } + } + + return null; // 如果未找到,返回 null + } }