|
@@ -4,9 +4,11 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.nb.app.msg.enums.MsgEnum;
|
|
import com.nb.app.msg.enums.MsgEnum;
|
|
|
-import com.nb.auth.bean.LoginUser;
|
|
|
|
|
-import com.nb.auth.utils.SecurityUtil;
|
|
|
|
|
import com.nb.common.crud.BaseService;
|
|
import com.nb.common.crud.BaseService;
|
|
|
|
|
+import com.nb.common.queue.delay.manager.DelayMessageManager;
|
|
|
|
|
+import com.nb.common.queue.delay.message.DelayMessage;
|
|
|
|
|
+import com.nb.common.queue.delay.message.DelayMessageProperties;
|
|
|
|
|
+import com.nb.core.Value;
|
|
|
import com.nb.im.entity.ImRoomEntity;
|
|
import com.nb.im.entity.ImRoomEntity;
|
|
|
import com.nb.im.enums.ImMsgType;
|
|
import com.nb.im.enums.ImMsgType;
|
|
|
import com.nb.im.enums.ImStatusEnum;
|
|
import com.nb.im.enums.ImStatusEnum;
|
|
@@ -26,6 +28,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
+
|
|
|
|
|
+import static com.nb.im.constant.ImRoomConstant.AUTO_FINISH_DELAY;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author lifang
|
|
* @author lifang
|
|
@@ -52,6 +57,10 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
@Lazy
|
|
@Lazy
|
|
|
private ImRoomOperatorManager roomOperatorManager;
|
|
private ImRoomOperatorManager roomOperatorManager;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ @Lazy
|
|
|
|
|
+ private DelayMessageManager delayMessageManager;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void validateBeforeSave(ImRoomEntity entity) {
|
|
public void validateBeforeSave(ImRoomEntity entity) {
|
|
|
if(entity.getManageType()==null&& StrUtil.isNotEmpty(entity.getPatientId())){
|
|
if(entity.getManageType()==null&& StrUtil.isNotEmpty(entity.getPatientId())){
|
|
@@ -72,6 +81,17 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void postUpdate(ImRoomEntity entity) {
|
|
|
|
|
+ if(ImStatusEnum.SUCCESS.equals(entity.getStatus())){
|
|
|
|
|
+ autoFinishRoom(entity.getId()); }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void postSave(ImRoomEntity entity) {
|
|
|
|
|
+ if(ImStatusEnum.SUCCESS.equals(entity.getStatus())){
|
|
|
|
|
+ autoFinishRoom(entity.getId()); }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 描述: 创建聊天室
|
|
* 描述: 创建聊天室
|
|
@@ -111,12 +131,13 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
*/
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void successChatRoom(String chatRoomId,String doctorId) {
|
|
public void successChatRoom(String chatRoomId,String doctorId) {
|
|
|
- this.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
|
|
|
|
+ if (this.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
.lambda()
|
|
.lambda()
|
|
|
.eq(ImRoomEntity::getId,chatRoomId)
|
|
.eq(ImRoomEntity::getId,chatRoomId)
|
|
|
.set(ImRoomEntity::getSuccessTime,new Date())
|
|
.set(ImRoomEntity::getSuccessTime,new Date())
|
|
|
- .set(ImRoomEntity::getStatus,ImStatusEnum.SUCCESS)
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ .set(ImRoomEntity::getStatus, ImStatusEnum.SUCCESS))) {
|
|
|
|
|
+ autoFinishRoom(chatRoomId);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -153,4 +174,9 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
|
|
|
}
|
|
}
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private void autoFinishRoom(String roomId){
|
|
|
|
|
+ delayMessageManager.add(new DelayMessage(Value.simple(roomId),AUTO_FINISH_DELAY, DelayMessageProperties.of(TimeUnit.MINUTES,1)));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|