|
|
@@ -80,6 +80,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public CsMessageVo sendTextMessage(CsMessageBo bo) {
|
|
|
Long senderId = resolveSenderId(bo.getSenderId());
|
|
|
+ CsSession session = sessionMapper.selectById(bo.getSessionId());
|
|
|
CsMessage message = new CsMessage();
|
|
|
message.setSessionId(bo.getSessionId());
|
|
|
message.setMsgNo(bo.getMsgNo());
|
|
|
@@ -97,8 +98,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
StrUtil.sub(bo.getContent(), 0, 100));
|
|
|
|
|
|
CsMessageVo vo = converter.convert(message, CsMessageVo.class);
|
|
|
- // 广播前填充 senderRole/senderName/senderAvatar 等字段,确保前端能正确识别发送者
|
|
|
- enrichMessageVo(vo, sessionMapper.selectById(bo.getSessionId()), null, null, Collections.emptyMap());
|
|
|
+ enrichRealtimeMessageVo(vo, session);
|
|
|
messagingTemplate.convertAndSend("/topic/session/" + bo.getSessionId(), vo);
|
|
|
notifyWaiter(vo);
|
|
|
|
|
|
@@ -116,6 +116,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
public CsMessageVo sendImageMessage(Long sessionId, String msgNo, Long senderId, MultipartFile file, Integer senderType) {
|
|
|
try {
|
|
|
Long actualSenderId = resolveSenderId(senderId);
|
|
|
+ CsSession session = sessionMapper.selectById(sessionId);
|
|
|
OssClient ossClient = OssFactory.instance();
|
|
|
String fileName = file.getOriginalFilename();
|
|
|
InputStream inputStream = file.getInputStream();
|
|
|
@@ -146,7 +147,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
sessionService.updateLastMessage(sessionId, "[图片]");
|
|
|
|
|
|
CsMessageVo vo = converter.convert(message, CsMessageVo.class);
|
|
|
- enrichMessageVo(vo, sessionMapper.selectById(sessionId), null, null, Collections.emptyMap());
|
|
|
+ enrichRealtimeMessageVo(vo, session);
|
|
|
messagingTemplate.convertAndSend("/topic/session/" + sessionId, vo);
|
|
|
notifyWaiter(vo);
|
|
|
|
|
|
@@ -167,6 +168,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
public CsMessageVo sendFileMessage(Long sessionId, String msgNo, Long senderId, MultipartFile file, Integer senderType) {
|
|
|
try {
|
|
|
Long actualSenderId = resolveSenderId(senderId);
|
|
|
+ CsSession session = sessionMapper.selectById(sessionId);
|
|
|
OssClient ossClient = OssFactory.instance();
|
|
|
String fileName = file.getOriginalFilename();
|
|
|
InputStream inputStream = file.getInputStream();
|
|
|
@@ -197,7 +199,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
sessionService.updateLastMessage(sessionId, "[文件]" + fileName);
|
|
|
|
|
|
CsMessageVo vo = converter.convert(message, CsMessageVo.class);
|
|
|
- enrichMessageVo(vo, sessionMapper.selectById(sessionId), null, null, Collections.emptyMap());
|
|
|
+ enrichRealtimeMessageVo(vo, session);
|
|
|
messagingTemplate.convertAndSend("/topic/session/" + sessionId, vo);
|
|
|
notifyWaiter(vo);
|
|
|
|
|
|
@@ -211,6 +213,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public CsMessageVo sendJobCard(CsMessageBo bo) {
|
|
|
Long senderId = resolveSenderId(bo.getSenderId());
|
|
|
+ CsSession session = sessionMapper.selectById(bo.getSessionId());
|
|
|
CsMessage message = new CsMessage();
|
|
|
message.setSessionId(bo.getSessionId());
|
|
|
message.setMsgNo(bo.getMsgNo());
|
|
|
@@ -226,7 +229,7 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
sessionService.updateLastMessage(bo.getSessionId(), "[岗位推荐]");
|
|
|
|
|
|
CsMessageVo vo = converter.convert(message, CsMessageVo.class);
|
|
|
- enrichMessageVo(vo, sessionMapper.selectById(bo.getSessionId()), null, null, Collections.emptyMap());
|
|
|
+ enrichRealtimeMessageVo(vo, session);
|
|
|
messagingTemplate.convertAndSend("/topic/session/" + bo.getSessionId(), vo);
|
|
|
notifyWaiter(vo);
|
|
|
|
|
|
@@ -289,6 +292,21 @@ public class CsMessageServiceImpl implements ICsMessageService {
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+ private void enrichRealtimeMessageVo(CsMessageVo vo, CsSession session) {
|
|
|
+ CsSeatConfig seat = session != null && session.getSeatId() != null
|
|
|
+ ? seatConfigMapper.selectById(session.getSeatId())
|
|
|
+ : null;
|
|
|
+ Map<Long, SysUser> waiterMap = Collections.emptyMap();
|
|
|
+ if (vo != null && Objects.equals(vo.getSenderType(), 2) && vo.getSenderId() != null) {
|
|
|
+ SysUser waiter = sysUserMapper.selectById(vo.getSenderId());
|
|
|
+ if (waiter != null) {
|
|
|
+ waiterMap = Collections.singletonMap(waiter.getUserId(), waiter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ MainCompanyApply companyApply = loadCompanyApply(session);
|
|
|
+ enrichMessageVo(vo, session, seat, companyApply, waiterMap);
|
|
|
+ }
|
|
|
+
|
|
|
private List<CsMessageVo> enrichMessageVos(List<CsMessageVo> records, CsSession session) {
|
|
|
if (records == null || records.isEmpty()) {
|
|
|
return records;
|