Browse Source

feat:
新增订阅未读数量

18339543638 2 years ago
parent
commit
bebf2254ac

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

@@ -59,6 +59,14 @@ public class ImRoomController implements BaseSaveController<ImRoomEntity,String>
     }
 
 
+    @PostMapping("/doctor/no_page/{doctorId}")
+    @ApiOperation(value = "医生聊天室全部列表查询(最近一个月)",notes = "当一个病人存在多个聊天室时,进查询最近的一次,走非条件查询,条件查询请于安卓端自行实现")
+    public R<List<ImRoomResult>> recentList(@PathVariable("doctorId") String doctorId){
+        //仅查询最近一个月信息
+        List<ImRoomResult> result= imRoomService.getBaseMapper().queryDoctorRecentList(doctorId);
+        return R.success(result);
+    }
+
     @ApiOperation(value = "查询并自动创建与病人看护人的聊天室",notes = "若存在,则返回聊天室信息,若不存在,则返回空")
     @PostMapping("/look")
     public R<ImRoomEntity> getChatRoom(@RequestBody@Validated ImRoomDTO source){

+ 4 - 0
nb-im/src/main/java/com/nb/im/entity/ImRoomEntity.java

@@ -100,6 +100,9 @@ public class ImRoomEntity extends GenericEntity<String> {
     @ApiModelProperty("监控结束时间")
     private Date monitorFinishedTime;
 
+    @ApiModelProperty("医生的聊天室是否置顶")
+    private Boolean doctorTop;
+
     /**
      * 描述: 由看护人发起的咨询或一件疼痛呼叫
      * @author lifang
@@ -119,6 +122,7 @@ public class ImRoomEntity extends GenericEntity<String> {
         result.setDoctorId(source.getReceiverId());
         result.setSponsorType(SponsorEnum.assist);
         result.setTotalCount(1);
+        result.setDoctorTop(false);
         //等待医生确认
         result.setStatus(ImStatusEnum.WAITING);
         //默认院内管理

+ 6 - 10
nb-im/src/main/java/com/nb/im/mapper/ImRoomMapper.java

@@ -28,16 +28,12 @@ public interface ImRoomMapper extends BaseMapper<ImRoomEntity> {
      */
     List<ImRoomResult> queryPageNoneMsgBlurry(@Param("query") ImRoomQuery query);
 
-    /**
-     * 描述: 分页查询(查询条件包含信息内容)
-     * @author lifang
-     * @date 2022/8/16 23:21
-     * @param page
-     * @param query
-     * @return IPage<ImRoomResult>
-     */
-    IPage<ImRoomResult> queryPageMsgBlurry(Page<ImRoomResult> page, @Param("query") ImRoomQuery query);
-
     Long maxSort(@Param("roomId") String roomId);
 
+    /**
+     * 查询医生的最近聊天室列表
+     * @param doctorId
+     * @return
+     */
+    List<ImRoomResult> queryDoctorRecentList(String doctorId);
 }

+ 33 - 6
nb-im/src/main/resources/mapper/im/ImRoomMapper.xml

@@ -92,14 +92,10 @@
         order by last_msg_time desc
     </select>
 
-    <select id="queryPageMsgBlurry" resultMap="imRoomResult">
---         todo
-    </select>
-
 
     <select id="maxSort" resultType="java.lang.Long">
-                SELECT
-        MAX( sort )
+        SELECT
+            MAX( sort )
         FROM
             im_msg
         GROUP BY
@@ -107,4 +103,35 @@
         HAVING
             room_id = #{roomId};
     </select>
+
+    <select id="queryDoctorRecentList" resultMap="imRoomResult">
+        select
+        r.id as id,
+        r.patient_code as patient_code,
+        r.patient_age as patient_age,
+        r.patient_name_ps as patient_name_ps,
+        r.patient_name as patient_name,
+        r.patient_sex as patient_sex,
+        r.manage_type as manage_type,
+        r.`status` as status,
+        r.last_msg_time as last_msg_time,
+        r.sponsor_type as sponsor_type,
+        r.total_count as total_count,
+        r.create_time as create_time,
+        r.update_time as update_time,
+        r.doctor_avatar as doctor_avatar,
+        r.assist_avatar as assist_avatar,
+        r.assist_id as assist_id,
+        r.patient_id as patient_id,
+        rm.payload as payload,
+        rm.msg_type as msg_type,
+        rm.operation_type as operation_type
+        from
+            im_room as r
+        join (select MAX(id) as id,doctor_id,patient_id,assist_id from im_room group by doctor_id,patient_id,assist_id) as ir2 on r.id=ir2.id
+        left join (select * from im_msg) as rm
+        on rm.id=r.last_msg_id
+        where r.doctor_id=#{doctorId}
+        order by doctor_top desc , case when (status =1) then  0 else 1  end desc ,create_time desc
+    </select>
 </mapper>