@@ -70,37 +70,48 @@ public PageResp<Message> list(@NotNull ListMessageReq req) {
7070
7171 String conversationID = req .getConversationID ();
7272 Integer pageSize = req .getLimit ();
73-
74- // 创建分页获取器
75- PageFetcher <Message > pageFetcher =
76- request -> {
77- req .setAfterID (request .getPageToken ()); // 设置 lastID
78- ListMessageResp resp = Utils .execute (api .list (conversationID , req , req ));
79-
80- return PageResponse .<Message >builder ()
81- .hasMore (resp .getData ().size () >= pageSize )
82- .data (resp .getData ())
83- .lastID (resp .getLastID ()) // 使用 firstID 作为上一页的 token
84- .nextID (resp .getFirstID ()) // 使用 lastID 作为下一页的 token
85- .build ();
86- };
73+ PageFetcher <Message > pageFetcher = getMessagePageFetcher (req , conversationID );
8774
8875 // 创建基于 token 的分页器
8976 TokenBasedPaginator <Message > paginator = new TokenBasedPaginator <>(pageFetcher , req .getLimit ());
9077
9178 // 获取当前页数据
9279 PageRequest initialRequest =
93- PageRequest .builder ().pageSize (pageSize ).pageToken (req .getBeforeID ()).build ();
80+ PageRequest .builder ().pageSize (pageSize ).pageToken (req .getAfterID ()).build ();
9481
9582 PageResponse <Message > currentPage = pageFetcher .fetch (initialRequest );
83+ paginator .setCurrentPage (currentPage );
9684
9785 return PageResp .<Message >builder ()
9886 .items (currentPage .getData ())
9987 .iterator (paginator )
100- .lastID (currentPage .getNextID ())
88+ .lastID (currentPage .getLastID ())
89+ .firstID (currentPage .getFirstID ())
90+ .hasMore (currentPage .isHasMore ())
10191 .build ();
10292 }
10393
94+ @ NotNull
95+ private PageFetcher <Message > getMessagePageFetcher (
96+ @ NotNull ListMessageReq req , String conversationID ) {
97+
98+ // 创建分页获取器
99+ PageFetcher <Message > pageFetcher =
100+ request -> {
101+ // 当前迭代器仅支持向后翻页,若有向前翻页需求,请自行处理
102+ req .setAfterID (request .getPageToken ());
103+ ListMessageResp resp = Utils .execute (api .list (conversationID , req , req ));
104+ return PageResponse .<Message >builder ()
105+ .hasMore (resp .isHasMore ())
106+ .pageToken (resp .getLastID ())
107+ .firstID (resp .getFirstID ())
108+ .lastID (resp .getLastID ())
109+ .data (resp .getData ())
110+ .build ();
111+ };
112+ return pageFetcher ;
113+ }
114+
104115 /*
105116 * Get the detailed information of specified message.
106117
0 commit comments