Browse Source

add 输注历史排序

18339543638 3 years ago
parent
commit
a9db704b64

+ 6 - 0
nb-im/src/main/java/com/nb/im/controller/ImRoomController.java

@@ -78,6 +78,12 @@ public class ImRoomController implements BaseSaveController<ImRoomEntity,String>
     }
 
 
+    @PostMapping("/finished/{roomId}")
+    @ApiOperation(value = "结束咨询")
+    public R<Boolean> finished(@PathVariable String roomId){
+        return R.success(imRoomService.finished(roomId));
+    }
+
     @PostMapping("/no_page")
     @ApiOperation(value = "聊天室列表查询",notes = "走非条件查询,条件查询请于安卓端自行实现")
     public R<List<ImRoomResult>> list(@RequestBody @Validated ImRoomQuery query){

+ 40 - 0
nb-im/src/main/java/com/nb/im/service/LocalImRoomService.java

@@ -1,12 +1,21 @@
 package com.nb.im.service;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+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.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.mapper.ImRoomMapper;
+import com.nb.im.room.ImRoomOperator;
+import com.nb.im.room.ImRoomOperatorManager;
 import com.nb.im.service.dto.ImRoomDto;
+import com.nb.im.utils.ImUtils;
+import com.nb.im.ws.PubMsgInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -28,6 +37,14 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
     @Lazy
     private LocalImRoomUserService chatRoomUserService;
 
+    @Autowired
+    @Lazy
+    private ImUtils imUtils;
+
+    @Autowired
+    @Lazy
+    private ImRoomOperatorManager roomOperatorManager;
+
     @Override
     public void validateBeforeSave(ImRoomEntity entity) {
 
@@ -100,4 +117,27 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
         Long result = this.baseMapper.maxSort(roomId);
         return result==null?0L:result;
     }
+
+    public Boolean finished(String roomId) {
+        boolean result = this.update(new UpdateWrapper<ImRoomEntity>()
+                .lambda()
+                .eq(ImRoomEntity::getId, roomId)
+                .set(ImRoomEntity::getStatus, ImStatusEnum.DOCTOR_LIFT));
+
+        if(result){
+            ImRoomOperator roomOperator = roomOperatorManager.getRoomOperator(roomId);
+            imUtils.send(roomId,
+                    PubMsgInfo.builder()
+                            .key(IdWorker.getIdStr())
+                            .roomId(roomId)
+                            .payload("医生已关闭聊天")
+                            .senderType(SponsorEnum.doctor)
+                            .senderId(roomOperator.getDoctorId())
+                            .msgType(ImMsgType.txt)
+                            .operationType(MsgEnum.FINISHED)
+                            .build());
+            roomOperator.close();
+        }
+        return result;
+    }
 }

+ 4 - 0
nb-im/src/main/java/com/nb/im/service/dto/ImRoomResult.java

@@ -1,6 +1,7 @@
 package com.nb.im.service.dto;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.nb.app.msg.enums.MsgEnum;
 import com.nb.core.enums.SexEnum;
 import com.nb.im.enums.ImMsgType;
 import com.nb.im.enums.ImStatusEnum;
@@ -61,6 +62,9 @@ public class ImRoomResult implements Serializable {
     @ApiModelProperty(value = "消息类型")
     private ImMsgType msgType;
 
+    @ApiModelProperty("消息操作类型")
+    private MsgEnum operationType;
+
     @ApiModelProperty("消息未读数量")
     private Integer unreadCount;
 }

+ 4 - 2
nb-im/src/main/resources/mapper/im/ImRoomMapper.xml

@@ -14,6 +14,7 @@
         <result column="total_count" property="totalCount"/>
         <result column="last_msg_time" property="lastMsgTime"/>
         <result column="payload" property="payload"/>
+        <result column="operation_type" property="operationType"/>
         <result column="msg_type" property="msgType"/>
     </resultMap>
 
@@ -31,7 +32,8 @@
         r.sponsor_type as sponsor_type,
         r.total_count as total_count,
         rm.payload as payload,
-        rm.msg_type as msg_type
+        rm.msg_type as msg_type,
+        rm.operation_type as operation_type
         from
         (select * from im_room
         <where>
@@ -52,7 +54,7 @@
         ) as r
         left join (select * from im_msg) as rm
         on rm.id=r.last_msg_id
-        order by last_msg_time
+        order by last_msg_time desc
     </select>
 
     <select id="queryPageMsgBlurry" resultMap="imRoomResult">

+ 1 - 0
nb-service-api/app-msg-api/src/main/java/com/nb/app/msg/enums/MsgEnum.java

@@ -28,6 +28,7 @@ public enum  MsgEnum  implements IEnum<Integer> {
     REGISTER(6,"新用户注册"),
     ASSIST_EVAL(7,"疼痛评估"),
     NORMAL(8,"正常消息"),
+    FINISHED(9,"医生断开聊天")
     ;
     @Getter
     @ApiModelProperty("枚举编码")

+ 3 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/dto/DeviceQuery.java

@@ -38,6 +38,9 @@ public class DeviceQuery implements Serializable {
     @ApiModelProperty("设备状态 0、未激活 1、在线 2、离线")
     private Integer status;
 
+    @ApiModelProperty("iccId")
+    private String iccId;
+
     @ApiModelProperty("分页查询")
     @NotNull(message = "分页查询参数不可为空")
     private Page<DeviceResult> page;

+ 3 - 0
nb-service/web-service/src/main/resources/mapper/bus/BusDeviceMapper.xml

@@ -72,6 +72,9 @@
             <if test="query.status!=null">
                 and status = #{query.status}
             </if>
+            <if test="query.iccId!=null">
+                and sim_iccid = #{query.iccId}
+            </if>
         </where>
         ) AS d
         LEFT JOIN (select * from bus_infusion_history) as i