|
|
@@ -2,9 +2,11 @@ package com.nb.im.service;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
|
|
|
+import com.nb.app.assistant.api.event.ImSuccessEvent;
|
|
|
import com.nb.app.assistant.api.event.UpdateBindPatientEvent;
|
|
|
import com.nb.app.assistant.api.feign.result.UpdateBindPatientParam;
|
|
|
import com.nb.app.msg.enums.MsgEnum;
|
|
|
@@ -17,6 +19,7 @@ import com.nb.im.entity.ImRoomEntity;
|
|
|
import com.nb.im.enums.ImMsgType;
|
|
|
import com.nb.im.enums.ImStatusEnum;
|
|
|
import com.nb.im.enums.SponsorEnum;
|
|
|
+import com.nb.im.event.ImFinishedEvent;
|
|
|
import com.nb.im.mapper.ImRoomMapper;
|
|
|
import com.nb.im.room.ImRoomOperator;
|
|
|
import com.nb.im.room.ImRoomOperatorManager;
|
|
|
@@ -30,6 +33,7 @@ import org.springframework.context.event.EventListener;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.swing.*;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
@@ -118,13 +122,15 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
public void postUpdate(ImRoomEntity entity) {
|
|
|
if(ImStatusEnum.SUCCESS.equals(entity.getStatus())){
|
|
|
autoFinishRoom(entity.getId());
|
|
|
+ SpringUtil.publishEvent(new ImSuccessEvent(this,entity.getAssistId(),entity.getDoctorId(),entity.getPatientId()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void postSave(ImRoomEntity entity) {
|
|
|
if(ImStatusEnum.SUCCESS.equals(entity.getStatus())){
|
|
|
- autoFinishRoom(entity.getId()); }
|
|
|
+ autoFinishRoom(entity.getId());
|
|
|
+ SpringUtil.publishEvent(new ImSuccessEvent(this,entity.getAssistId(),entity.getDoctorId(),entity.getPatientId()));}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -165,12 +171,17 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void successChatRoom(String chatRoomId,String doctorId) {
|
|
|
+ ImRoomEntity room = this.getById(chatRoomId);
|
|
|
+ if(room==null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (this.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
.lambda()
|
|
|
.eq(ImRoomEntity::getId,chatRoomId)
|
|
|
.set(ImRoomEntity::getSuccessTime,new Date())
|
|
|
.set(ImRoomEntity::getStatus, ImStatusEnum.SUCCESS))) {
|
|
|
autoFinishRoom(chatRoomId);
|
|
|
+ SpringUtil.publishEvent(new ImSuccessEvent(this,room.getAssistId(),room.getDoctorId(),room.getPatientId()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -187,13 +198,17 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean finished(String roomId) {
|
|
|
+ public Boolean finished(String roomId,boolean assistLift){
|
|
|
+ ImRoomEntity room = this.getById(roomId);
|
|
|
+ if(room==null){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
boolean result = this.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
.lambda()
|
|
|
.eq(ImRoomEntity::getId, roomId)
|
|
|
.set(ImRoomEntity::getStatus, ImStatusEnum.DOCTOR_LIFT));
|
|
|
|
|
|
- if(result){
|
|
|
+ if(result&&!assistLift){
|
|
|
ImRoomOperator roomOperator = roomOperatorManager.getRoomOperator(roomId);
|
|
|
imUtils.send(roomId,
|
|
|
PubMsgInfo.builder()
|
|
|
@@ -206,10 +221,16 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
.operationType(MsgEnum.FINISHED)
|
|
|
.build());
|
|
|
roomOperator.close();
|
|
|
+ SpringUtil.publishEvent( new ImFinishedEvent(this,room.getAssistId(),room.getDoctorId(),room.getPatientId()));
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean finished(String roomId) {
|
|
|
+ return finished(roomId,false);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private void autoFinishRoom(String roomId){
|
|
|
delayMessageManager.add(new DelayMessage(Value.simple(roomId),AUTO_FINISH_DELAY, DelayMessageProperties.of(TimeUnit.MINUTES,1)));
|