diff --git a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushChatMessage.java b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushChatMessage.java index b098f71c..fbd9eeb2 100644 --- a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushChatMessage.java +++ b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushChatMessage.java @@ -95,4 +95,8 @@ public class PushChatMessage extends CommonEntity { @TableField(exist = false) private String[] phone; + @TableField(exist = false) + @ApiModelProperty("游标记录从那条开始") + private String cursor; + } diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/ImContent.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/ImContent.java index d22a4ca7..b6d45a7d 100644 --- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/ImContent.java +++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/ImContent.java @@ -1,5 +1,6 @@ package com.cloud.kicc.system.api.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.cloud.kicc.common.data.entity.CommonEntity; import io.swagger.annotations.ApiModel; @@ -65,4 +66,8 @@ public class ImContent extends CommonEntity { @ApiModelProperty("撤销标记") private String revert; + @TableField(exist = false) + @ApiModelProperty("游标记录从那条开始") + private String cursor; + } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java index 05847d62..8c00cfb0 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java @@ -1,6 +1,7 @@ package com.cloud.kicc.commonbiz.controller; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Arrays; import java.util.Map; +import java.util.Objects; /** *

@@ -56,7 +58,14 @@ public class PushChatMessageController { @ApiOperation(value = "分页好友历史记录查询") public R listFriendHistoryMessage(Page page, PushChatMessage pushChatMessage) { IPage> result = iPushChatMessageService.listFriendHistoryMessage(page, pushChatMessage); - return R.ok(result.getRecords(), result.getTotal()); + String cursor = result.getRecords() + .stream() + .findFirst() + .map(record -> Objects.toString(record.get("createTime"), null)) + .orElse(null); + return R.ok(MapUtil.builder("cursor", cursor) + .put("data", result.getRecords()) + .build()); } @GetMapping("/{id:\\w+}") diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushChatMessageMapper.xml b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushChatMessageMapper.xml index 1142cb34..ec123f1d 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushChatMessageMapper.xml +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushChatMessageMapper.xml @@ -35,6 +35,9 @@ common_push_chat_message pm pm.del_flag = '0' + + and pm.create_time < #{ew.cursor} + and (pm.user_id = #{ew.userId} and pm.alias = #{ew.alias}) or (pm.user_id = #{ew.alias} and pm.alias = #{ew.userId}) diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java index 14ab796f..21a42ead 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ChatGptController.java @@ -1,5 +1,6 @@ package com.cloud.kicc.system.controller; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -16,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; import java.util.Map; +import java.util.Objects; /** *

@@ -40,7 +42,14 @@ public class ChatGptController { // 查询当前用户的所有会话内的聊天记录 SecurityUtils.openInterfaceTemporaryLoginSession(imContent.getSendUserId()); IPage> result = iImContentService.listHistoryMessage(page, imContent); - return R.ok(result.getRecords(), result.getTotal()); + String cursor = result.getRecords() + .stream() + .findFirst() + .map(record -> Objects.toString(record.get("sendTime"), null)) + .orElse(null); + return R.ok(MapUtil.builder("cursor", cursor) + .put("data", result.getRecords()) + .build()); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/ImContentMapper.xml b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/ImContentMapper.xml index 711a7f25..dfec6628 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/ImContentMapper.xml +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/ImContentMapper.xml @@ -27,10 +27,13 @@ sys_im_content im left join sys_file sf on im.files = sf.id im.del_flag = '0' + + and im.send_time < #{ew.cursor} + and (im.send_user_id = #{ew.sendUserId} and im.receive_user_id = #{ew.receiveUserId}) or (im.send_user_id = #{ew.receiveUserId} and im.receive_user_id = #{ew.sendUserId}) - order by im.send_time desc + order by im.send_time asc