You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by zi...@apache.org on 2022/08/25 09:06:23 UTC

[inlong] branch release-1.3.0 updated (f63ebf9f3 -> 9fe9c54b1)

This is an automated email from the ASF dual-hosted git repository.

zirui pushed a change to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git


    from f63ebf9f3 [INLONG-5681][TubeMQ] The C++ SDK does not switch after the active Master node hangs up (#5682)
     new 34cbdfab0 [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)
     new 1f97f2021 [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)
     new 9fe9c54b1 [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../inlong/manager/client/ut/Kafka2HiveTest.java   | 14 ++--
 .../inlong/manager/client/cli/DescribeCommand.java |  4 +-
 .../inlong/manager/client/cli/ListCommand.java     |  4 +-
 inlong-manager/manager-client/pom.xml              |  4 --
 .../apache/inlong/manager/client/api/DataNode.java |  4 +-
 .../inlong/manager/client/api/InlongClient.java    |  6 +-
 .../manager/client/api/LowLevelInlongClient.java   |  4 +-
 .../org/apache/inlong/manager/client/api/User.java |  4 +-
 .../apache/inlong/manager/client/api/Workflow.java |  6 +-
 .../manager/client/api/impl/DataNodeImpl.java      |  4 +-
 .../manager/client/api/impl/InlongClientImpl.java  | 14 ++--
 .../manager/client/api/impl/InlongClusterImpl.java |  8 +--
 .../client/api/impl/LowLevelInlongClientImpl.java  |  6 +-
 .../inlong/manager/client/api/impl/UserImpl.java   |  4 +-
 .../manager/client/api/impl/WorkflowImpl.java      |  6 +-
 .../client/api/inner/client/DataNodeClient.java    |  6 +-
 .../api/inner/client/InlongClusterClient.java      | 14 ++--
 .../client/api/inner/client/InlongGroupClient.java | 16 ++---
 .../api/inner/client/InlongStreamClient.java       |  8 +--
 .../client/api/inner/client/StreamSinkClient.java  |  6 +-
 .../api/inner/client/StreamSourceClient.java       |  6 +-
 .../client/api/inner/client/UserClient.java        |  6 +-
 .../api/inner/client/WorkflowApproverClient.java   |  4 +-
 .../client/api/inner/client/WorkflowClient.java    | 11 +--
 .../manager/client/api/service/DataNodeApi.java    |  4 +-
 .../client/api/service/InlongClusterApi.java       |  6 +-
 .../manager/client/api/service/InlongGroupApi.java |  4 +-
 .../client/api/service/InlongStreamApi.java        |  6 +-
 .../manager/client/api/service/StreamSinkApi.java  |  4 +-
 .../client/api/service/StreamSourceApi.java        |  4 +-
 .../inlong/manager/client/api/service/UserApi.java |  4 +-
 .../manager/client/api/service/WorkflowApi.java    |  6 +-
 .../client/api/service/WorkflowApproverApi.java    |  4 +-
 .../client/api/service/WorkflowEventApi.java       |  4 +-
 .../client/api/inner/ClientFactoryTest.java        | 32 ++++-----
 .../api/inner/WorkflowApproverClientTest.java      |  4 +-
 .../client/api/inner/WorkflowClientTest.java       |  6 +-
 .../dao/mapper/StreamSourceEntityMapper.java       |  2 -
 .../resources/mappers/StreamSourceEntityMapper.xml |  5 --
 .../inlong/manager/pojo/common/PageResult.java     | 79 ++++++++++++++++++++++
 .../manager/pojo/sort/util/FieldRelationUtils.java | 24 +++----
 .../manager/pojo/sort/util/LoadNodeUtils.java      | 11 ++-
 .../inlong/manager/pojo/page/PageResultTest.java   | 72 ++++++++++++++++++++
 .../service/cluster/InlongClusterService.java      |  8 +--
 .../service/cluster/InlongClusterServiceImpl.java  | 41 ++++++-----
 .../manager/service/core/ConsumptionService.java   |  4 +-
 .../manager/service/core/HeartbeatService.java     | 10 +--
 .../service/core/WorkflowApproverService.java      |  4 +-
 .../manager/service/core/WorkflowEventService.java |  4 +-
 .../service/core/impl/AgentServiceImpl.java        | 20 +++---
 .../service/core/impl/ConsumptionServiceImpl.java  | 16 +++--
 .../service/core/impl/HeartbeatServiceImpl.java    | 27 +++-----
 .../core/impl/WorkflowApproverServiceImpl.java     |  9 ++-
 .../core/impl/WorkflowEventServiceImpl.java        | 12 ++--
 .../manager/service/group/InlongGroupService.java  |  4 +-
 .../service/group/InlongGroupServiceImpl.java      | 12 ++--
 .../manager/service/node/DataNodeService.java      |  4 +-
 .../manager/service/node/DataNodeServiceImpl.java  | 12 ++--
 .../manager/service/sink/AbstractSinkOperator.java | 15 ++--
 .../manager/service/sink/StreamSinkOperator.java   |  4 +-
 .../manager/service/sink/StreamSinkService.java    |  4 +-
 .../service/sink/StreamSinkServiceImpl.java        | 12 ++--
 .../service/source/AbstractSourceOperator.java     | 19 ++++--
 .../service/source/StreamSourceOperator.java       |  4 +-
 .../service/source/StreamSourceService.java        |  4 +-
 .../service/source/StreamSourceServiceImpl.java    | 13 ++--
 .../service/stream/InlongStreamService.java        |  6 +-
 .../service/stream/InlongStreamServiceImpl.java    | 18 ++---
 .../inlong/manager/service/user/UserService.java   |  6 +-
 .../manager/service/user/UserServiceImpl.java      | 13 ++--
 .../manager/service/workflow/WorkflowService.java  | 14 ++--
 .../service/workflow/WorkflowServiceImpl.java      | 23 ++++---
 .../service/cluster/InlongClusterServiceTest.java  | 12 ++--
 .../service/core/impl/DataNodeServiceTest.java     |  6 +-
 .../workflow/WorkflowApproverServiceImplTest.java  |  6 +-
 .../main/resources/h2/apache_inlong_manager.sql    |  5 +-
 .../manager-web/sql/apache_inlong_manager.sql      |  5 +-
 .../web/controller/ConsumptionController.java      |  4 +-
 .../manager/web/controller/DataNodeController.java |  4 +-
 .../web/controller/HeartbeatController.java        | 10 +--
 .../web/controller/InlongClusterController.java    | 10 +--
 .../web/controller/InlongGroupController.java      |  6 +-
 .../web/controller/InlongStreamController.java     |  6 +-
 .../web/controller/StreamSinkController.java       |  6 +-
 .../web/controller/StreamSourceController.java     |  6 +-
 .../manager/web/controller/UserController.java     |  4 +-
 .../web/controller/WorkflowApproverController.java |  4 +-
 .../manager/web/controller/WorkflowController.java | 12 ++--
 .../web/controller/WorkflowEventController.java    |  4 +-
 .../controller/openapi/OpenClusterController.java  |  4 +-
 .../inlong/sort/parser/impl/FlinkSqlParser.java    |  8 +--
 91 files changed, 535 insertions(+), 379 deletions(-)
 create mode 100644 inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java
 create mode 100644 inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java


[inlong] 02/03: [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)

Posted by zi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zirui pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 1f97f202108731d7bf31381d3f3e404fd46fabc2
Author: woofyzhao <49...@qq.com>
AuthorDate: Thu Aug 25 16:04:36 2022 +0800

    [INLONG-5691][Manager] Remove the append operation for agent IPs (#5692)
---
 .../manager/dao/mapper/StreamSourceEntityMapper.java |  2 --
 .../resources/mappers/StreamSourceEntityMapper.xml   |  5 -----
 .../manager/service/core/impl/AgentServiceImpl.java  | 20 ++++++++------------
 .../src/main/resources/h2/apache_inlong_manager.sql  |  5 +++--
 .../manager-web/sql/apache_inlong_manager.sql        |  5 +++--
 5 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java
index eabd61220..3b0144d3d 100644
--- a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java
+++ b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/StreamSourceEntityMapper.java
@@ -129,8 +129,6 @@ public interface StreamSourceEntityMapper {
 
     int updateSnapshot(StreamSourceEntity entity);
 
-    int appendAgentIp(@Param("id") Integer id, @Param("agentIp") String agentIp);
-
     /**
      * Physical delete stream sources.
      */
diff --git a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
index 32f8c56ef..c1b955f57 100644
--- a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
+++ b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
@@ -390,11 +390,6 @@
             modify_time = modify_time
         where id = #{id,jdbcType=INTEGER}
     </update>
-    <update id="appendAgentIp">
-        update stream_source
-        set agent_ip = IF(agent_ip is NULL or agent_ip = '', #{agentIp,jdbcType=VARCHAR}, CONCAT(agent_ip, ',', #{agentIp}))
-        where id = #{id,jdbcType=INTEGER}
-    </update>
 
     <delete id="deleteByRelatedId">
         delete
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java
index 94ec64d61..91b3f7238 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/AgentServiceImpl.java
@@ -30,12 +30,12 @@ import org.apache.inlong.common.pojo.agent.DataConfig;
 import org.apache.inlong.common.pojo.agent.TaskRequest;
 import org.apache.inlong.common.pojo.agent.TaskResult;
 import org.apache.inlong.common.pojo.agent.TaskSnapshotRequest;
-import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.consts.SourceType;
 import org.apache.inlong.manager.common.enums.SourceStatus;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.InlongStreamEntity;
 import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
 import org.apache.inlong.manager.dao.mapper.DataSourceCmdConfigEntityMapper;
@@ -212,6 +212,8 @@ public class AgentServiceImpl implements AgentService {
         final String agentIp = taskRequest.getAgentIp();
         final String agentClusterName = taskRequest.getClusterName();
         final String uuid = taskRequest.getUuid();
+        Preconditions.checkTrue(StringUtils.isNotBlank(agentIp) || StringUtils.isNotBlank(agentClusterName),
+                "both agent ip and cluster name are blank when fetching file task");
         List<StreamSourceEntity> sourceEntities = sourceMapper.selectByAgentIpOrCluster(needAddStatusList,
                 Lists.newArrayList(SourceType.FILE), agentIp, agentClusterName,TASK_FETCH_SIZE * 10);
         List<DataConfig> fileTasks = Lists.newArrayList();
@@ -235,18 +237,15 @@ public class AgentServiceImpl implements AgentService {
                 continue;
             }
 
-            // Cluster name is not blank, split task if necessary
-            // The agent ip field of the entity holds the ip list of the agents that has already been issued
+            // Cluster name is not blank, split subtask if necessary
+            // The template task's id is assigned to the subtask's template id field
             if (StringUtils.isNotBlank(destClusterName) && destClusterName.equals(agentClusterName)
                     && Objects.isNull(sourceEntity.getTemplateId())) {
 
                 // Is the task already fetched by this agent ?
-                if (StringUtils.isNotBlank(sourceEntity.getAgentIp())) {
-                    if (Arrays.asList(sourceEntity.getAgentIp().split(InlongConstants.COMMA)).contains(agentIp)) {
-                        LOGGER.debug("Task={} has already been fetched by agentIP={}", sourceEntity.getExtParams(),
-                                agentIp);
-                        continue;
-                    }
+                List<StreamSourceEntity> subSources = sourceMapper.selectByTemplateId(sourceEntity.getId());
+                if (subSources.stream().anyMatch(subSource -> subSource.getAgentIp().equals(agentIp))) {
+                    continue;
                 }
 
                 // If not, clone a sub task for the new agent
@@ -264,9 +263,6 @@ public class AgentServiceImpl implements AgentService {
                 if (sourceMapper.insert(fileEntity) > 0) {
                     fileTasks.add(getDataConfig(fileEntity, op));
                 }
-
-                // Append new agent ip
-                sourceMapper.appendAgentIp(sourceEntity.getId(), agentIp);
             }
             if (fileTasks.size() >= TASK_FETCH_SIZE) {
                 break;
diff --git a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
index 2d7753dfb..99a22413c 100644
--- a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
+++ b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
@@ -382,7 +382,7 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     `source_name`         varchar(128) NOT NULL DEFAULT '' COMMENT 'source_name',
     `source_type`         varchar(20)           DEFAULT '0' COMMENT 'Source type, including: FILE, DB, etc',
     `template_id`         int(11)      DEFAULT NULL COMMENT 'Id of the template task this agent belongs to',
-    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task',
+    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task, NULL if this is a template task',
     `uuid`                varchar(30)           DEFAULT NULL COMMENT 'Mac uuid of the agent running the task',
     `data_node_name`      varchar(128)          DEFAULT NULL COMMENT 'Node name, which links to data_node table',
     `inlong_cluster_name` varchar(128)          DEFAULT NULL COMMENT 'Cluster name of the agent running the task',
@@ -401,7 +401,8 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     PRIMARY KEY (`id`),
     UNIQUE KEY `unique_source_name` (`inlong_group_id`, `inlong_stream_id`, `source_name`, `is_deleted`),
     KEY `source_status_index` (`status`, `is_deleted`),
-    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`)
+    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`),
+    KEY `template_id_index` (`template_id`)
 );
 
 -- ----------------------------
diff --git a/inlong-manager/manager-web/sql/apache_inlong_manager.sql b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
index 0c249a2ff..e7bbf585b 100644
--- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
+++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
@@ -403,7 +403,7 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     `source_name`         varchar(128) NOT NULL DEFAULT '' COMMENT 'source_name',
     `source_type`         varchar(20)           DEFAULT '0' COMMENT 'Source type, including: FILE, DB, etc',
     `template_id`         int(11)      DEFAULT NULL COMMENT 'Id of the template task this agent belongs to',
-    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task',
+    `agent_ip`            varchar(40)           DEFAULT NULL COMMENT 'Ip of the agent running the task, NULL if this is a template task',
     `uuid`                varchar(30)           DEFAULT NULL COMMENT 'Mac uuid of the agent running the task',
     `data_node_name`      varchar(128)          DEFAULT NULL COMMENT 'Node name, which links to data_node table',
     `inlong_cluster_name` varchar(128)          DEFAULT NULL COMMENT 'Cluster name of the agent running the task',
@@ -422,7 +422,8 @@ CREATE TABLE IF NOT EXISTS `stream_source`
     PRIMARY KEY (`id`),
     UNIQUE KEY `unique_source_name` (`inlong_group_id`, `inlong_stream_id`, `source_name`, `is_deleted`),
     KEY `source_status_index` (`status`, `is_deleted`),
-    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`)
+    KEY `source_agent_ip_index` (`agent_ip`, `is_deleted`),
+    KEY `template_id_index` (`template_id`)
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='Stream source table';
 


[inlong] 03/03: [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)

Posted by zi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zirui pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 9fe9c54b12d460744eb7418d21a4bde17a4f90b4
Author: leosanqing <st...@qq.com>
AuthorDate: Thu Aug 25 16:06:08 2022 +0800

    [INLONG-5290][Manager] Optimize the objects returned by paging queries (#5558)
---
 .../inlong/manager/client/ut/Kafka2HiveTest.java   | 14 ++--
 .../inlong/manager/client/cli/DescribeCommand.java |  4 +-
 .../inlong/manager/client/cli/ListCommand.java     |  4 +-
 inlong-manager/manager-client/pom.xml              |  4 --
 .../apache/inlong/manager/client/api/DataNode.java |  4 +-
 .../inlong/manager/client/api/InlongClient.java    |  6 +-
 .../manager/client/api/LowLevelInlongClient.java   |  4 +-
 .../org/apache/inlong/manager/client/api/User.java |  4 +-
 .../apache/inlong/manager/client/api/Workflow.java |  6 +-
 .../manager/client/api/impl/DataNodeImpl.java      |  4 +-
 .../manager/client/api/impl/InlongClientImpl.java  | 14 ++--
 .../manager/client/api/impl/InlongClusterImpl.java |  8 +--
 .../client/api/impl/LowLevelInlongClientImpl.java  |  6 +-
 .../inlong/manager/client/api/impl/UserImpl.java   |  4 +-
 .../manager/client/api/impl/WorkflowImpl.java      |  6 +-
 .../client/api/inner/client/DataNodeClient.java    |  6 +-
 .../api/inner/client/InlongClusterClient.java      | 14 ++--
 .../client/api/inner/client/InlongGroupClient.java | 16 ++---
 .../api/inner/client/InlongStreamClient.java       |  8 +--
 .../client/api/inner/client/StreamSinkClient.java  |  6 +-
 .../api/inner/client/StreamSourceClient.java       |  6 +-
 .../client/api/inner/client/UserClient.java        |  6 +-
 .../api/inner/client/WorkflowApproverClient.java   |  4 +-
 .../client/api/inner/client/WorkflowClient.java    | 11 +--
 .../manager/client/api/service/DataNodeApi.java    |  4 +-
 .../client/api/service/InlongClusterApi.java       |  6 +-
 .../manager/client/api/service/InlongGroupApi.java |  4 +-
 .../client/api/service/InlongStreamApi.java        |  6 +-
 .../manager/client/api/service/StreamSinkApi.java  |  4 +-
 .../client/api/service/StreamSourceApi.java        |  4 +-
 .../inlong/manager/client/api/service/UserApi.java |  4 +-
 .../manager/client/api/service/WorkflowApi.java    |  6 +-
 .../client/api/service/WorkflowApproverApi.java    |  4 +-
 .../client/api/service/WorkflowEventApi.java       |  4 +-
 .../client/api/inner/ClientFactoryTest.java        | 32 ++++-----
 .../api/inner/WorkflowApproverClientTest.java      |  4 +-
 .../client/api/inner/WorkflowClientTest.java       |  6 +-
 .../inlong/manager/pojo/common/PageResult.java     | 79 ++++++++++++++++++++++
 .../inlong/manager/pojo/page/PageResultTest.java   | 72 ++++++++++++++++++++
 .../service/cluster/InlongClusterService.java      |  8 +--
 .../service/cluster/InlongClusterServiceImpl.java  | 41 ++++++-----
 .../manager/service/core/ConsumptionService.java   |  4 +-
 .../manager/service/core/HeartbeatService.java     | 10 +--
 .../service/core/WorkflowApproverService.java      |  4 +-
 .../manager/service/core/WorkflowEventService.java |  4 +-
 .../service/core/impl/ConsumptionServiceImpl.java  | 16 +++--
 .../service/core/impl/HeartbeatServiceImpl.java    | 27 +++-----
 .../core/impl/WorkflowApproverServiceImpl.java     |  9 ++-
 .../core/impl/WorkflowEventServiceImpl.java        | 12 ++--
 .../manager/service/group/InlongGroupService.java  |  4 +-
 .../service/group/InlongGroupServiceImpl.java      | 12 ++--
 .../manager/service/node/DataNodeService.java      |  4 +-
 .../manager/service/node/DataNodeServiceImpl.java  | 12 ++--
 .../manager/service/sink/AbstractSinkOperator.java | 15 ++--
 .../manager/service/sink/StreamSinkOperator.java   |  4 +-
 .../manager/service/sink/StreamSinkService.java    |  4 +-
 .../service/sink/StreamSinkServiceImpl.java        | 12 ++--
 .../service/source/AbstractSourceOperator.java     | 19 ++++--
 .../service/source/StreamSourceOperator.java       |  4 +-
 .../service/source/StreamSourceService.java        |  4 +-
 .../service/source/StreamSourceServiceImpl.java    | 13 ++--
 .../service/stream/InlongStreamService.java        |  6 +-
 .../service/stream/InlongStreamServiceImpl.java    | 18 ++---
 .../inlong/manager/service/user/UserService.java   |  6 +-
 .../manager/service/user/UserServiceImpl.java      | 13 ++--
 .../manager/service/workflow/WorkflowService.java  | 14 ++--
 .../service/workflow/WorkflowServiceImpl.java      | 23 ++++---
 .../service/cluster/InlongClusterServiceTest.java  | 12 ++--
 .../service/core/impl/DataNodeServiceTest.java     |  6 +-
 .../workflow/WorkflowApproverServiceImplTest.java  |  6 +-
 .../web/controller/ConsumptionController.java      |  4 +-
 .../manager/web/controller/DataNodeController.java |  4 +-
 .../web/controller/HeartbeatController.java        | 10 +--
 .../web/controller/InlongClusterController.java    | 10 +--
 .../web/controller/InlongGroupController.java      |  6 +-
 .../web/controller/InlongStreamController.java     |  6 +-
 .../web/controller/StreamSinkController.java       |  6 +-
 .../web/controller/StreamSourceController.java     |  6 +-
 .../manager/web/controller/UserController.java     |  4 +-
 .../web/controller/WorkflowApproverController.java |  4 +-
 .../manager/web/controller/WorkflowController.java | 12 ++--
 .../web/controller/WorkflowEventController.java    |  4 +-
 .../controller/openapi/OpenClusterController.java  |  4 +-
 83 files changed, 502 insertions(+), 332 deletions(-)

diff --git a/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java b/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java
index b60b05bd7..f53524ca6 100644
--- a/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java
+++ b/inlong-manager/manager-client-examples/src/test/java/org/apache/inlong/manager/client/ut/Kafka2HiveTest.java
@@ -17,17 +17,18 @@
 
 package org.apache.inlong.manager.client.ut;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.inlong.manager.client.api.InlongGroup;
 import org.apache.inlong.manager.client.api.InlongGroupContext;
 import org.apache.inlong.manager.client.api.InlongStreamBuilder;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.enums.DataFormat;
 import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.enums.ProcessName;
 import org.apache.inlong.manager.common.enums.ProcessStatus;
 import org.apache.inlong.manager.common.enums.TaskStatus;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.pulsar.InlongPulsarInfo;
 import org.apache.inlong.manager.pojo.sink.SinkField;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -40,7 +41,6 @@ import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
-import org.apache.inlong.manager.common.util.JsonUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -327,8 +327,8 @@ class Kafka2HiveTest extends BaseTest {
         streamInfo.setSourceList(kafkaSources);
         streamInfo.setSinkList(hiveSinks);
 
-        Response<PageInfo<InlongStreamInfo>> fullStreamResponsePage = Response.success(
-                new PageInfo<>(Lists.newArrayList(streamInfo))
+        Response<PageResult<InlongStreamInfo>> fullStreamResponsePage = Response.success(
+                new PageResult<>(Lists.newArrayList(streamInfo))
         );
         stubFor(
                 post(urlMatching(MANAGER_URL_PREFIX + "/stream/listAll.*"))
@@ -369,7 +369,7 @@ class Kafka2HiveTest extends BaseTest {
         stubFor(
                 get(urlMatching(MANAGER_URL_PREFIX + "/workflow/event/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(
                                         Lists.newArrayList(eventLogView1, eventLogView2)
                                 ))))
                         )
@@ -378,7 +378,7 @@ class Kafka2HiveTest extends BaseTest {
         stubFor(
                 get(urlMatching(MANAGER_URL_PREFIX + "/stream/config/log/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>())))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>())))
                         )
         );
     }
diff --git a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java
index 630bd1660..4a5d33df7 100644
--- a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java
+++ b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/DescribeCommand.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.client.cli;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongStreamClient;
 import org.apache.inlong.manager.client.api.inner.client.StreamSinkClient;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.client.api.inner.client.StreamSourceClient;
 import org.apache.inlong.manager.client.cli.pojo.GroupInfo;
 import org.apache.inlong.manager.client.cli.util.ClientUtils;
 import org.apache.inlong.manager.client.cli.util.PrintUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -97,7 +97,7 @@ public class DescribeCommand extends AbstractCommand {
                 InlongGroupClient groupClient = ClientUtils.clientFactory.getGroupClient();
                 InlongGroupPageRequest pageRequest = new InlongGroupPageRequest();
                 pageRequest.setKeyword(group);
-                PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(pageRequest);
+                PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(pageRequest);
                 PrintUtils.print(pageInfo.getList(), GroupInfo.class);
             } catch (Exception e) {
                 System.out.println(e.getMessage());
diff --git a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
index 84a259a96..c313746c7 100644
--- a/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
+++ b/inlong-manager/manager-client-tools/src/main/java/org/apache/inlong/manager/client/cli/ListCommand.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.client.cli;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.enums.SimpleGroupStatus;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongStreamClient;
@@ -31,6 +30,7 @@ import org.apache.inlong.manager.client.cli.pojo.SourceInfo;
 import org.apache.inlong.manager.client.cli.pojo.StreamInfo;
 import org.apache.inlong.manager.client.cli.util.ClientUtils;
 import org.apache.inlong.manager.client.cli.util.PrintUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -113,7 +113,7 @@ public class ListCommand extends AbstractCommand {
                 ClientUtils.initClientFactory();
                 InlongGroupClient groupClient = ClientUtils.clientFactory.getGroupClient();
 
-                PageInfo<InlongGroupBriefInfo> groupPageInfo = groupClient.listGroups(pageRequest);
+                PageResult<InlongGroupBriefInfo> groupPageInfo = groupClient.listGroups(pageRequest);
                 PrintUtils.print(groupPageInfo.getList(), GroupInfo.class);
             } catch (Exception e) {
                 System.out.println(e.getMessage());
diff --git a/inlong-manager/manager-client/pom.xml b/inlong-manager/manager-client/pom.xml
index e8aacf7c1..e4c58bbbd 100644
--- a/inlong-manager/manager-client/pom.xml
+++ b/inlong-manager/manager-client/pom.xml
@@ -53,10 +53,6 @@
             <groupId>commons-collections</groupId>
             <artifactId>commons-collections</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java
index 54a044a85..9c5c31eb1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/DataNode.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
 
@@ -45,7 +45,7 @@ public interface DataNode {
      * @param request page request conditions
      * @return node list
      */
-    PageInfo<DataNodeResponse> list(DataNodeRequest request);
+    PageResult<DataNodeResponse> list(DataNodeRequest request);
 
     /**
      * Update data node.
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java
index 801b66523..132d37c35 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/InlongClient.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.impl.InlongClientImpl;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
@@ -28,6 +27,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupStatusInfo;
 
@@ -134,7 +134,7 @@ public interface InlongClient {
      * @param request page request conditions
      * @return cluster tag list
      */
-    PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request);
+    PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request);
 
     /**
      * Update cluster tag.
@@ -222,7 +222,7 @@ public interface InlongClient {
      * @param request page request conditions
      * @return cluster node list
      */
-    PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request);
+    PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request);
 
     /**
      * Update cluster node.
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java
index fb8824651..57d67ab57 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/LowLevelInlongClient.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.impl.LowLevelInlongClientImpl;
 import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 
@@ -56,6 +56,6 @@ public interface LowLevelInlongClient {
      * @return group info page
      * @throws Exception the exception may throw
      */
-    PageInfo<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) throws Exception;
+    PageResult<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) throws Exception;
 
 }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java
index 21c091651..ac2d405e6 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/User.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
 
@@ -52,7 +52,7 @@ public interface User {
      * @param request request
      * @return user info list
      */
-    PageInfo<UserInfo> list(UserRequest request);
+    PageResult<UserInfo> list(UserRequest request);
 
     /**
      * Update user info
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java
index b6edbe647..a97575107 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/Workflow.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
@@ -87,7 +87,7 @@ public interface Workflow {
      * @param request workflow process request
      * @return process response list
      */
-    PageInfo<ProcessResponse> listProcess(ProcessRequest request);
+    PageResult<ProcessResponse> listProcess(ProcessRequest request);
 
     /**
      * Get task list
@@ -95,5 +95,5 @@ public interface Workflow {
      * @param request workflow task query request
      * @return task response list
      */
-    PageInfo<TaskResponse> listTask(TaskRequest request);
+    PageResult<TaskResponse> listTask(TaskRequest request);
 }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java
index 1696518c5..87fa11bf6 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/DataNodeImpl.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.DataNode;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.DataNodeClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
 
@@ -51,7 +51,7 @@ public class DataNodeImpl implements DataNode {
     }
 
     @Override
-    public PageInfo<DataNodeResponse> list(DataNodeRequest request) {
+    public PageResult<DataNodeResponse> list(DataNodeRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
         return dataNodeClient.list(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java
index c373bfb11..eac22c0fa 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClientImpl.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -35,6 +34,8 @@ import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.InlongClusterClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.HttpUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -44,13 +45,12 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupStatusInfo;
 import org.apache.inlong.manager.pojo.source.StreamSource;
-import org.apache.inlong.manager.common.util.HttpUtils;
-import org.apache.inlong.manager.common.util.Preconditions;
 
 import java.util.List;
 import java.util.Map;
@@ -108,7 +108,7 @@ public class InlongClientImpl implements InlongClient {
 
     @Override
     public List<InlongGroup> listGroup(String expr, int status, int pageNum, int pageSize) {
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(expr, status, pageNum,
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(expr, status, pageNum,
                 pageSize);
         if (CollectionUtils.isEmpty(pageInfo.getList())) {
             return Lists.newArrayList();
@@ -127,7 +127,7 @@ public class InlongClientImpl implements InlongClient {
         request.setGroupIdList(groupIds);
         request.setListSources(true);
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(request);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups(request);
         List<InlongGroupBriefInfo> briefInfos = pageInfo.getList();
         Map<String, InlongGroupStatusInfo> groupStatusMap = Maps.newHashMap();
         if (CollectionUtils.isNotEmpty(briefInfos)) {
@@ -170,7 +170,7 @@ public class InlongClientImpl implements InlongClient {
     }
 
     @Override
-    public PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
+    public PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
         return clusterClient.listTag(request);
     }
 
@@ -238,7 +238,7 @@ public class InlongClientImpl implements InlongClient {
     }
 
     @Override
-    public PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request) {
+    public PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request) {
         Preconditions.checkNotNull(request.getParentId(), "Cluster id cannot be empty");
         return clusterClient.listNode(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java
index 4a11ace32..4f6748f76 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongClusterImpl.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.InlongCluster;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.InlongClusterClient;
@@ -26,6 +25,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeResponse;
 import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 
 import java.util.List;
 
@@ -45,7 +45,7 @@ public class InlongClusterImpl implements InlongCluster {
         ClusterPageRequest request = new ClusterPageRequest();
         request.setName(clusterName);
         request.setType(clusterType);
-        PageInfo<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
+        PageResult<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
         return clusterNodePage.getList();
     }
 
@@ -55,7 +55,7 @@ public class InlongClusterImpl implements InlongCluster {
         request.setName(clusterName);
         request.setType(clusterType);
         request.setClusterTagList(clusterTags);
-        PageInfo<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
+        PageResult<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
         return clusterNodePage.getList();
     }
 
@@ -65,7 +65,7 @@ public class InlongClusterImpl implements InlongCluster {
         request.setName(clusterName);
         request.setType(clusterType);
         request.setClusterTag(clusterTag);
-        PageInfo<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
+        PageResult<ClusterNodeResponse> clusterNodePage = clusterClient.listNode(request);
         return clusterNodePage.getList();
     }
 
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java
index c34fe8b74..d006ed00f 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/LowLevelInlongClientImpl.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.base.Splitter;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
@@ -27,10 +26,11 @@ import org.apache.inlong.manager.client.api.LowLevelInlongClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongClusterClient;
 import org.apache.inlong.manager.client.api.inner.client.InlongGroupClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.HttpUtils;
 import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
-import org.apache.inlong.manager.common.util.HttpUtils;
 
 import java.util.Map;
 
@@ -79,7 +79,7 @@ public class LowLevelInlongClientImpl implements LowLevelInlongClient {
     }
 
     @Override
-    public PageInfo<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) {
+    public PageResult<InlongGroupBriefInfo> listGroup(InlongGroupPageRequest request) {
         InlongGroupClient groupClient = ClientUtils.getClientFactory(configuration).getGroupClient();
         return groupClient.listGroups(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java
index 712854324..ef86ff2a2 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/UserImpl.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.User;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.UserClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
 
@@ -55,7 +55,7 @@ public class UserImpl implements User {
     }
 
     @Override
-    public PageInfo<UserInfo> list(UserRequest request) {
+    public PageResult<UserInfo> list(UserRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
         return userClient.list(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java
index aea0f9ee6..f86cc028b 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/WorkflowImpl.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.client.api.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.Workflow;
 import org.apache.inlong.manager.client.api.inner.client.ClientFactory;
 import org.apache.inlong.manager.client.api.inner.client.WorkflowClient;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
@@ -79,13 +79,13 @@ public class WorkflowImpl implements Workflow {
     }
 
     @Override
-    public PageInfo<ProcessResponse> listProcess(ProcessRequest request) {
+    public PageResult<ProcessResponse> listProcess(ProcessRequest request) {
         Preconditions.checkNotNull(request, "process request cannot be null");
         return workflowClient.listProcess(request);
     }
 
     @Override
-    public PageInfo<TaskResponse> listTask(TaskRequest request) {
+    public PageResult<TaskResponse> listTask(TaskRequest request) {
         Preconditions.checkNotNull(request, "task request cannot be null");
         return workflowClient.listTask(request);
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java
index 463be9fed..b2248d31c 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/DataNodeClient.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.DataNodeApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
@@ -71,9 +71,9 @@ public class DataNodeClient {
      * @param request page request conditions
      * @return node list
      */
-    public PageInfo<DataNodeResponse> list(DataNodeRequest request) {
+    public PageResult<DataNodeResponse> list(DataNodeRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
-        Response<PageInfo<DataNodeResponse>> response = ClientUtils.executeHttpCall(dataNodeApi.list(request));
+        Response<PageResult<DataNodeResponse>> response = ClientUtils.executeHttpCall(dataNodeApi.list(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java
index b855ae426..b0cf37001 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongClusterClient.java
@@ -17,11 +17,10 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.InlongClusterApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
-import org.apache.inlong.manager.pojo.common.Response;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -31,7 +30,8 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
-import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 
 /**
  * Client for {@link InlongClusterApi}.
@@ -75,8 +75,8 @@ public class InlongClusterClient {
      * @param request page request conditions
      * @return cluster tag list
      */
-    public PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
-        Response<PageInfo<ClusterTagResponse>> response = ClientUtils.executeHttpCall(
+    public PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
+        Response<PageResult<ClusterTagResponse>> response = ClientUtils.executeHttpCall(
                 inlongClusterApi.listTag(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
@@ -215,8 +215,8 @@ public class InlongClusterClient {
      * @param request page request conditions
      * @return cluster node list
      */
-    public PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request) {
-        Response<PageInfo<ClusterNodeResponse>> response = ClientUtils.executeHttpCall(
+    public PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request) {
+        Response<PageResult<ClusterNodeResponse>> response = ClientUtils.executeHttpCall(
                 inlongClusterApi.listNode(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java
index 148e9b8cc..aabafaf64 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongGroupClient.java
@@ -17,24 +17,24 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import lombok.SneakyThrows;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.common.enums.SimpleGroupStatus;
 import org.apache.inlong.manager.client.api.service.InlongGroupApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
-import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
+import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupResetRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupTopicInfo;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
-import org.apache.inlong.manager.common.util.JsonUtils;
-import org.apache.inlong.manager.common.util.Preconditions;
 import org.springframework.boot.configurationprocessor.json.JSONObject;
 import retrofit2.Call;
 
@@ -105,7 +105,7 @@ public class InlongGroupClient {
     /**
      * Get inlong group list.
      */
-    public PageInfo<InlongGroupBriefInfo> listGroups(String keyword, int status, int pageNum, int pageSize) {
+    public PageResult<InlongGroupBriefInfo> listGroups(String keyword, int status, int pageNum, int pageSize) {
         InlongGroupPageRequest request = InlongGroupPageRequest.builder()
                 .keyword(keyword)
                 .status(status)
@@ -113,7 +113,7 @@ public class InlongGroupClient {
         request.setPageNum(pageNum <= 0 ? 1 : pageNum);
         request.setPageSize(pageSize);
 
-        Response<PageInfo<InlongGroupBriefInfo>> pageInfoResponse = ClientUtils.executeHttpCall(
+        Response<PageResult<InlongGroupBriefInfo>> pageInfoResponse = ClientUtils.executeHttpCall(
                 inlongGroupApi.listGroups(request));
         if (pageInfoResponse.isSuccess()) {
             return pageInfoResponse.getData();
@@ -131,8 +131,8 @@ public class InlongGroupClient {
      * @param pageRequest page request
      * @return Response encapsulate of inlong group list
      */
-    public PageInfo<InlongGroupBriefInfo> listGroups(InlongGroupPageRequest pageRequest) {
-        Response<PageInfo<InlongGroupBriefInfo>> response = ClientUtils.executeHttpCall(
+    public PageResult<InlongGroupBriefInfo> listGroups(InlongGroupPageRequest pageRequest) {
+        Response<PageResult<InlongGroupBriefInfo>> response = ClientUtils.executeHttpCall(
                 inlongGroupApi.listGroups(pageRequest));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java
index 924296d1d..21115a0e9 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/InlongStreamClient.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.InlongStreamApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -118,8 +118,8 @@ public class InlongStreamClient {
      * @param request query request
      * @return inlong stream brief list
      */
-    public PageInfo<InlongStreamBriefInfo> listByCondition(InlongStreamPageRequest request) {
-        Response<PageInfo<InlongStreamBriefInfo>> response = ClientUtils.executeHttpCall(
+    public PageResult<InlongStreamBriefInfo> listByCondition(InlongStreamPageRequest request) {
+        Response<PageResult<InlongStreamBriefInfo>> response = ClientUtils.executeHttpCall(
                 inlongStreamApi.listByCondition(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
@@ -132,7 +132,7 @@ public class InlongStreamClient {
         InlongStreamPageRequest pageRequest = new InlongStreamPageRequest();
         pageRequest.setInlongGroupId(inlongGroupId);
 
-        Response<PageInfo<InlongStreamInfo>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<InlongStreamInfo>> response = ClientUtils.executeHttpCall(
                 inlongStreamApi.listStream(pageRequest));
         ClientUtils.assertRespSuccess(response);
         return response.getData().getList();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java
index bd55c2a1e..c902c2e96 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSinkClient.java
@@ -17,15 +17,15 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.StreamSinkApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
-import org.apache.inlong.manager.common.util.Preconditions;
 
 import java.util.List;
 
@@ -67,7 +67,7 @@ public class StreamSinkClient {
      * List stream sinks by the specified sink type.
      */
     public List<StreamSink> listSinks(String groupId, String streamId, String sinkType) {
-        Response<PageInfo<StreamSink>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<StreamSink>> response = ClientUtils.executeHttpCall(
                 streamSinkApi.listSinks(groupId, streamId, sinkType));
         ClientUtils.assertRespSuccess(response);
         return response.getData().getList();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java
index 0bc170db4..f1eb4a87d 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/StreamSourceClient.java
@@ -17,15 +17,15 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.StreamSourceApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
+import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
-import org.apache.inlong.manager.common.util.Preconditions;
 
 import java.util.List;
 
@@ -60,7 +60,7 @@ public class StreamSourceClient {
      * List stream sources by the specified source type.
      */
     public List<StreamSource> listSources(String groupId, String streamId, String sourceType) {
-        Response<PageInfo<StreamSource>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<StreamSource>> response = ClientUtils.executeHttpCall(
                 streamSourceApi.listSources(groupId, streamId, sourceType));
         ClientUtils.assertRespSuccess(response);
         return response.getData().getList();
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java
index 4e177802c..374ccdbc2 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/UserClient.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.client.api.inner.client;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.UserApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -83,10 +83,10 @@ public class UserClient {
      * @param request request
      * @return user info list
      */
-    public PageInfo<UserInfo> list(UserRequest request) {
+    public PageResult<UserInfo> list(UserRequest request) {
         Preconditions.checkNotNull(request, "request cannot be null");
 
-        Response<PageInfo<UserInfo>> response = ClientUtils.executeHttpCall(userApi.list(request));
+        Response<PageResult<UserInfo>> response = ClientUtils.executeHttpCall(userApi.list(request));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java
index 2976f488a..7c8ac4505 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowApproverClient.java
@@ -18,13 +18,13 @@
 package org.apache.inlong.manager.client.api.inner.client;
 
 import com.fasterxml.jackson.core.type.TypeReference;
-import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
 import org.apache.inlong.manager.client.api.service.WorkflowApproverApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
@@ -90,7 +90,7 @@ public class WorkflowApproverClient {
         Map<String, Object> requestMap = JsonUtils.OBJECT_MAPPER.convertValue(request,
                 new TypeReference<Map<String, Object>>() {
                 });
-        Response<PageInfo<ApproverResponse>> response = ClientUtils.executeHttpCall(
+        Response<PageResult<ApproverResponse>> response = ClientUtils.executeHttpCall(
                 workflowApproverApi.listByCondition(requestMap));
         ClientUtils.assertRespSuccess(response);
 
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java
index fed7e97a7..aa3bfa462 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/inner/client/WorkflowClient.java
@@ -20,7 +20,6 @@ package org.apache.inlong.manager.client.api.inner.client;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.inlong.manager.client.api.ClientConfiguration;
@@ -28,6 +27,7 @@ import org.apache.inlong.manager.client.api.service.WorkflowApi;
 import org.apache.inlong.manager.client.api.util.ClientUtils;
 import org.apache.inlong.manager.common.util.JsonUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
@@ -180,13 +180,14 @@ public class WorkflowClient {
      * @param request workflow process request
      * @return process response list
      */
-    public PageInfo<ProcessResponse> listProcess(ProcessRequest request) {
+    public PageResult<ProcessResponse> listProcess(ProcessRequest request) {
         Preconditions.checkNotNull(request, "process request cannot be null");
 
         Map<String, Object> requestMap = JsonUtils.OBJECT_MAPPER.convertValue(request,
                 new TypeReference<Map<String, Object>>() {
                 });
-        Response<PageInfo<ProcessResponse>> response = ClientUtils.executeHttpCall(workflowApi.listProcess(requestMap));
+        Response<PageResult<ProcessResponse>> response = ClientUtils.executeHttpCall(
+                workflowApi.listProcess(requestMap));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
@@ -197,13 +198,13 @@ public class WorkflowClient {
      * @param request workflow task query request
      * @return task response list
      */
-    public PageInfo<TaskResponse> listTask(TaskRequest request) {
+    public PageResult<TaskResponse> listTask(TaskRequest request) {
         Preconditions.checkNotNull(request, "task request cannot be null");
 
         Map<String, Object> requestMap = JsonUtils.OBJECT_MAPPER.convertValue(request,
                 new TypeReference<Map<String, Object>>() {
                 });
-        Response<PageInfo<TaskResponse>> response = ClientUtils.executeHttpCall(workflowApi.listTask(requestMap));
+        Response<PageResult<TaskResponse>> response = ClientUtils.executeHttpCall(workflowApi.listTask(requestMap));
         ClientUtils.assertRespSuccess(response);
         return response.getData();
     }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java
index 0debf462c..69e13dead 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/DataNodeApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeResponse;
@@ -37,7 +37,7 @@ public interface DataNodeApi {
     Call<Response<DataNodeResponse>> get(@Path("id") Integer id);
 
     @POST("node/list")
-    Call<Response<PageInfo<DataNodeResponse>>> list(@Body DataNodeRequest request);
+    Call<Response<PageResult<DataNodeResponse>>> list(@Body DataNodeRequest request);
 
     @POST("node/update")
     Call<Response<Boolean>> update(@Body DataNodeRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java
index 857337405..127802cea 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongClusterApi.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import retrofit2.Call;
 import retrofit2.http.Body;
@@ -44,7 +44,7 @@ public interface InlongClusterApi {
     Call<Response<ClusterTagResponse>> getTag(@Path("id") Integer id);
 
     @POST("cluster/tag/list")
-    Call<Response<PageInfo<ClusterTagResponse>>> listTag(@Body ClusterTagPageRequest request);
+    Call<Response<PageResult<ClusterTagResponse>>> listTag(@Body ClusterTagPageRequest request);
 
     @POST("cluster/tag/update")
     Call<Response<Boolean>> updateTag(@Body ClusterTagRequest request);
@@ -77,7 +77,7 @@ public interface InlongClusterApi {
     Call<Response<ClusterNodeResponse>> getNode(@Path("id") Integer id);
 
     @POST("cluster/node/list")
-    Call<Response<PageInfo<ClusterNodeResponse>>> listNode(@Body ClusterPageRequest request);
+    Call<Response<PageResult<ClusterNodeResponse>>> listNode(@Body ClusterPageRequest request);
 
     @POST("cluster/node/update")
     Call<Response<Boolean>> updateNode(@Body ClusterNodeRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
index 39341f8fd..be83fa6e0 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongGroupApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
@@ -40,7 +40,7 @@ public interface InlongGroupApi {
     Call<Response<Object>> getGroupInfo(@Path("id") String id);
 
     @POST("group/list")
-    Call<Response<PageInfo<InlongGroupBriefInfo>>> listGroups(@Body InlongGroupPageRequest request);
+    Call<Response<PageResult<InlongGroupBriefInfo>>> listGroups(@Body InlongGroupPageRequest request);
 
     @POST("group/save")
     Call<Response<String>> createGroup(@Body InlongGroupRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
index 679dd3aae..717609591 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/InlongStreamApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -46,10 +46,10 @@ public interface InlongStreamApi {
             @Query("streamId") String streamId);
 
     @POST("stream/list")
-    Call<Response<PageInfo<InlongStreamBriefInfo>>> listByCondition(@Body InlongStreamPageRequest request);
+    Call<Response<PageResult<InlongStreamBriefInfo>>> listByCondition(@Body InlongStreamPageRequest request);
 
     @POST("stream/listAll")
-    Call<Response<PageInfo<InlongStreamInfo>>> listStream(@Body InlongStreamPageRequest request);
+    Call<Response<PageResult<InlongStreamInfo>>> listStream(@Body InlongStreamPageRequest request);
 
     @POST("stream/startProcess/{groupId}/{streamId}")
     Call<Response<Boolean>> startProcess(@Path("groupId") String groupId, @Path("streamId") String streamId);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java
index 4d66087f2..9324c85f1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSinkApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -41,7 +41,7 @@ public interface StreamSinkApi {
     Call<Response<Boolean>> deleteSink(@Path("id") Integer id);
 
     @GET("sink/list")
-    Call<Response<PageInfo<StreamSink>>> listSinks(@Query("inlongGroupId") String groupId,
+    Call<Response<PageResult<StreamSink>>> listSinks(@Query("inlongGroupId") String groupId,
             @Query("inlongStreamId") String streamId, @Query("sinkType") String sinkType);
 
     @GET("sink/get/{id}")
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java
index d43aaf67d..5c0fe8c15 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/StreamSourceApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -38,7 +38,7 @@ public interface StreamSourceApi {
     Call<Response<Boolean>> updateSource(@Body SourceRequest request);
 
     @GET("source/list")
-    Call<Response<PageInfo<StreamSource>>> listSources(@Query("inlongGroupId") String groupId,
+    Call<Response<PageResult<StreamSource>>> listSources(@Query("inlongGroupId") String groupId,
             @Query("inlongStreamId") String streamId, @Query("sourceType") String sourceType);
 
     @DELETE("source/delete/{id}")
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java
index 0f91ab3cc..3221136db 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/UserApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -41,7 +41,7 @@ public interface UserApi {
     Call<Response<UserInfo>> getById(@Path("id") Integer id);
 
     @POST("user/listAll")
-    Call<Response<PageInfo<UserInfo>>> list(@Body UserRequest request);
+    Call<Response<PageResult<UserInfo>>> list(@Body UserRequest request);
 
     @POST("user/update")
     Call<Response<Integer>> update(@Body UserRequest userInfo);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java
index d11e2144c..89c2ccc3c 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
@@ -60,9 +60,9 @@ public interface WorkflowApi {
     Call<Response<ProcessDetailResponse>> detail(@Path("processId") Integer processId, @Query("taskId") Integer taskId);
 
     @GET("workflow/listProcess")
-    Call<Response<PageInfo<ProcessResponse>>> listProcess(@Query("query") Map<String, Object> query);
+    Call<Response<PageResult<ProcessResponse>>> listProcess(@Query("query") Map<String, Object> query);
 
     @GET("workflow/listTask")
-    Call<Response<PageInfo<TaskResponse>>> listTask(@Query("query") Map<String, Object> query);
+    Call<Response<PageResult<TaskResponse>>> listTask(@Query("query") Map<String, Object> query);
 
 }
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java
index 8573b6a85..3dcfb04d1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowApproverApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
@@ -39,7 +39,7 @@ public interface WorkflowApproverApi {
     Call<Response<ApproverResponse>> get(@Path("id") Integer id);
 
     @GET("workflow/approver/list")
-    Call<Response<PageInfo<ApproverResponse>>> listByCondition(@Query("map") Map<String, Object> map);
+    Call<Response<PageResult<ApproverResponse>>> listByCondition(@Query("map") Map<String, Object> map);
 
     @POST("workflow/approver/update")
     Call<Response<Integer>> update(@Body ApproverRequest request);
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java
index abecf1ebf..209f28102 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/service/WorkflowEventApi.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.client.api.service;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import retrofit2.Call;
@@ -27,6 +27,6 @@ import retrofit2.http.Query;
 public interface WorkflowEventApi {
 
     @GET("workflow/event/list")
-    Call<Response<PageInfo<EventLogResponse>>> getInlongGroupError(@Query("inlongGroupId") String groupId,
+    Call<Response<PageResult<EventLogResponse>>> getInlongGroupError(@Query("inlongGroupId") String groupId,
             @Query("status") Integer status);
 }
diff --git a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
index 54f8158ae..1c88b943f 100644
--- a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
+++ b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/ClientFactoryTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.client.api.inner;
 
-import com.github.pagehelper.PageInfo;
 import com.github.tomakehurst.wiremock.WireMockServer;
 import com.github.tomakehurst.wiremock.client.WireMock;
 import com.google.common.collect.Lists;
@@ -54,6 +53,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
@@ -218,11 +218,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -253,11 +253,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -291,11 +291,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -331,11 +331,11 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos))))
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -402,12 +402,12 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/group/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(groupBriefInfos)))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(groupBriefInfos)))
                                 )
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertEquals(JsonUtils.toJsonString(groupBriefInfos),
                 JsonUtils.toJsonString(pageInfo.getList()));
     }
@@ -423,7 +423,7 @@ class ClientFactoryTest {
                         )
         );
 
-        PageInfo<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
+        PageResult<InlongGroupBriefInfo> pageInfo = groupClient.listGroups("keyword", 1, 1, 10);
         Assertions.assertNull(pageInfo);
     }
 
@@ -665,7 +665,7 @@ class ClientFactoryTest {
                 post(urlMatching("/inlong/manager/api/stream/listAll.*"))
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
-                                        Response.success(new PageInfo<>(Lists.newArrayList(streamInfo))))
+                                        Response.success(new PageResult<>(Lists.newArrayList(streamInfo))))
                                 )
                         )
         );
@@ -724,7 +724,7 @@ class ClientFactoryTest {
                 get(urlMatching("/inlong/manager/api/sink/list.*"))
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
-                                        Response.success(new PageInfo<>(Lists.newArrayList(sinkList))))
+                                        Response.success(new PageResult<>(Lists.newArrayList(sinkList))))
                                 )
                         )
         );
@@ -1008,13 +1008,13 @@ class ClientFactoryTest {
         stubFor(
                 post(urlMatching("/inlong/manager/api/node/list.*"))
                         .willReturn(
-                                okJson(JsonUtils.toJsonString(Response.success(new PageInfo<>(nodeResponses))))
+                                okJson(JsonUtils.toJsonString(Response.success(new PageResult<>(nodeResponses))))
                         )
         );
 
         HiveDataNodeRequest request = new HiveDataNodeRequest();
         request.setName("test_hive_node");
-        PageInfo<DataNodeResponse> nodePageInfo = dataNodeClient.list(request);
+        PageResult<DataNodeResponse> nodePageInfo = dataNodeClient.list(request);
         Assertions.assertEquals(JsonUtils.toJsonString(nodePageInfo.getList()), JsonUtils.toJsonString(nodeResponses));
     }
 
diff --git a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java
index 5cbd3ba6b..d32e22649 100644
--- a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java
+++ b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowApproverClientTest.java
@@ -17,10 +17,10 @@
 
 package org.apache.inlong.manager.client.api.inner;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.inlong.manager.client.api.inner.client.WorkflowApproverClient;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
@@ -71,7 +71,7 @@ class WorkflowApproverClientTest extends ClientFactoryTest {
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
                                         Response.success(
-                                                PageInfo.of(
+                                                new PageResult<>(
                                                         Lists.newArrayList(
                                                                 ApproverResponse.builder()
                                                                         .taskName("task1")
diff --git a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java
index ae4686a26..98fe7b40a 100644
--- a/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java
+++ b/inlong-manager/manager-client/src/test/java/org/apache/inlong/manager/client/api/inner/WorkflowClientTest.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.client.api.inner;
 
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import org.apache.inlong.manager.client.api.inner.client.WorkflowClient;
 import org.apache.inlong.manager.common.enums.ProcessName;
 import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.pulsar.InlongPulsarInfo;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
@@ -86,14 +86,14 @@ public class WorkflowClientTest extends ClientFactoryTest {
                 get(urlMatching("/inlong/manager/api/workflow/listProcess.*"))
                         .willReturn(
                                 okJson(JsonUtils.toJsonString(
-                                        Response.success(new PageInfo<>(responses)))
+                                        Response.success(new PageResult<>(responses)))
                                 )
                         )
         );
 
         ProcessRequest request = new ProcessRequest();
         request.setId(1);
-        PageInfo<ProcessResponse> pageInfo = workflowClient.listProcess(request);
+        PageResult<ProcessResponse> pageInfo = workflowClient.listProcess(request);
         Assertions.assertEquals(JsonUtils.toJsonString(pageInfo.getList()), JsonUtils.toJsonString(responses));
     }
 }
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java
new file mode 100644
index 000000000..9d7bd4c0a
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageResult.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+@ApiModel("Paginated query results")
+public final class PageResult<T> implements Serializable {
+
+    @ApiModelProperty(value = "data record", required = true)
+    private List<T> list;
+
+    @ApiModelProperty(value = "The total number of items matching the filter criteria", required = true)
+    private Long total;
+
+    @ApiModelProperty(value = "pageSize", required = true)
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "pageNum", required = true)
+    private Integer pageNum;
+
+    public PageResult() {
+    }
+
+    public PageResult(List<T> list, Long total) {
+        this.list = list;
+        this.total = total;
+    }
+
+    public PageResult(List<T> list, Long total, Integer pageNum, Integer pageSize) {
+        this.list = list;
+        this.total = total;
+        this.pageNum = pageNum;
+        this.pageSize = pageSize;
+    }
+
+    public PageResult(Long total) {
+        this.list = new ArrayList<>();
+        this.total = total;
+    }
+
+    public PageResult(List<T> list) {
+        this.list = list;
+        this.total = (long) list.size();
+    }
+
+    public static <T> PageResult<T> empty() {
+        return new PageResult<>(0L);
+    }
+
+    public static <T> PageResult<T> empty(Long total) {
+        return new PageResult<>(total);
+    }
+
+}
\ No newline at end of file
diff --git a/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java b/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java
new file mode 100644
index 000000000..0266c22cd
--- /dev/null
+++ b/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/page/PageResultTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.pojo.page;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
+import org.apache.inlong.manager.pojo.group.none.InlongNoneMqInfo;
+import org.apache.inlong.manager.pojo.group.pulsar.InlongPulsarInfo;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+/**
+ * Tests for the {@link org.apache.inlong.manager.pojo.common.PageResult}.
+ */
+
+class PageResultTest {
+
+    @Test
+    void testDeserializePageInfoFromWeb() {
+
+        String pageInfoJson = "{\"total\":30,\"list\":[{\"id\":null,\"inlongGroupId\":\"22\",\"name\":null,"
+                + "\"description\":null,\"middlewareType\":null,\"mqType\":\"NONE\",\"mqResource\":null,"
+                + "\"enableZookeeper\":0,\"enableCreateResource\":null,\"lightweight\":null,"
+                + "\"inlongClusterTag\":null,\"dailyRecords\":null,\"dailyStorage\":null,\"peakRecords\":null,"
+                + "\"maxLength\":null,\"inCharges\":null,\"followers\":null,\"status\":null,\"creator\":null,"
+                + "\"modifier\":null,\"createTime\":null,\"modifyTime\":null,\"extList\":null,\"sortConf\":null,"
+                + "\"version\":44},{\"id\":null,\"inlongGroupId\":null,\"name\":null,\"description\":null,"
+                + "\"middlewareType\":null,\"mqType\":\"PULSAR\",\"mqResource\":null,\"enableZookeeper\":0,"
+                + "\"enableCreateResource\":null,\"lightweight\":null,\"inlongClusterTag\":null,"
+                + "\"dailyRecords\":null,\"dailyStorage\":null,\"peakRecords\":null,\"maxLength\":null,"
+                + "\"inCharges\":null,\"followers\":null,\"status\":null,\"creator\":null,\"modifier\":null,"
+                + "\"createTime\":null,\"modifyTime\":null,\"extList\":null,\"sortConf\":null,\"version\":null,"
+                + "\"tenant\":null,\"adminUrl\":null,\"serviceUrl\":null,\"queueModule\":\"PARALLEL\","
+                + "\"partitionNum\":3,\"ensemble\":3,\"writeQuorum\":3,\"ackQuorum\":2,\"ttl\":24,"
+                + "\"ttlUnit\":\"hours\",\"retentionTime\":72,\"retentionTimeUnit\":\"hours\","
+                + "\"retentionSize\":-1,\"retentionSizeUnit\":\"MB\"}],\"pageNum\":1,\"pageSize\":20,\"size\":0,"
+                + "\"startRow\":0,\"endRow\":0,\"pages\":0,\"prePage\":0,\"nextPage\":0,\"isFirstPage\":false,"
+                + "\"isLastPage\":false,\"hasPreviousPage\":false,\"hasNextPage\":false,\"navigatePages\":0,"
+                + "\"navigatepageNums\":null,\"navigateFirstPage\":0,\"navigateLastPage\":0}";
+
+        PageResult<InlongGroupInfo> pageResult = JsonUtils.parseObject(pageInfoJson,
+                new TypeReference<PageResult<InlongGroupInfo>>() {
+                });
+
+        Assertions.assertEquals(1, pageResult.getPageNum());
+        Assertions.assertEquals(30, pageResult.getTotal());
+        Assertions.assertEquals(20, pageResult.getPageSize());
+
+        List<InlongGroupInfo> inlongGroupInfos = pageResult.getList();
+        Assertions.assertTrue(inlongGroupInfos.get(0) instanceof InlongNoneMqInfo);
+        Assertions.assertTrue(inlongGroupInfos.get(1) instanceof InlongPulsarInfo);
+    }
+}
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java
index e57e5500b..244ee8372 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterService.java
@@ -17,7 +17,6 @@
 
 package org.apache.inlong.manager.service.cluster;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyConfig;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyNodeResponse;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
@@ -29,6 +28,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 
 import java.util.List;
 
@@ -61,7 +61,7 @@ public interface InlongClusterService {
      * @param request page request conditions
      * @return cluster tag list
      */
-    PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request);
+    PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request);
 
     /**
      * Update cluster tag.
@@ -116,7 +116,7 @@ public interface InlongClusterService {
      * @param request page request conditions
      * @return cluster list
      */
-    PageInfo<ClusterInfo> list(ClusterPageRequest request);
+    PageResult<ClusterInfo> list(ClusterPageRequest request);
 
     /**
      * Update cluster information
@@ -170,7 +170,7 @@ public interface InlongClusterService {
      * @param currentUser current operator
      * @return cluster node list
      */
-    PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser);
+    PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser);
 
     /**
      * Query node IP list by cluster type
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
index 944e3fe22..d3a05b7ff 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.cluster;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Sets;
 import com.google.gson.Gson;
@@ -62,6 +61,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterDTO;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupPageRequest;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
@@ -153,16 +153,17 @@ public class InlongClusterServiceImpl implements InlongClusterService {
     }
 
     @Override
-    public PageInfo<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
+    public PageResult<ClusterTagResponse> listTag(ClusterTagPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<InlongClusterTagEntity> entityPage = (Page<InlongClusterTagEntity>) clusterTagMapper
                 .selectByCondition(request);
+
         List<ClusterTagResponse> tagList = CommonBeanUtils.copyListProperties(entityPage, ClusterTagResponse::new);
-        PageInfo<ClusterTagResponse> page = new PageInfo<>(tagList);
-        page.setTotal(tagList.size());
 
+        PageResult<ClusterTagResponse> pageResult = new PageResult<>(tagList,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
         LOGGER.debug("success to list cluster tag by {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
@@ -313,18 +314,23 @@ public class InlongClusterServiceImpl implements InlongClusterService {
     }
 
     @Override
-    public PageInfo<ClusterInfo> list(ClusterPageRequest request) {
+    public PageResult<ClusterInfo> list(ClusterPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<InlongClusterEntity> entityPage = (Page<InlongClusterEntity>) clusterMapper.selectByCondition(request);
         List<ClusterInfo> list = entityPage.stream()
                 .map(entity -> {
                     InlongClusterOperator instance = clusterOperatorFactory.getInstance(entity.getType());
                     return instance.getFromEntity(entity);
-                }).collect(Collectors.toList());
-        PageInfo<ClusterInfo> page = new PageInfo<>(list);
-        page.setTotal(list.size());
+                })
+                .collect(Collectors.toList());
+
+        PageResult<ClusterInfo> pageResult = new PageResult<>(
+                list, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize()
+        );
+
         LOGGER.debug("success to list inlong cluster by {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
@@ -494,12 +500,11 @@ public class InlongClusterServiceImpl implements InlongClusterService {
     }
 
     @Override
-    public PageInfo<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser) {
+    public PageResult<ClusterNodeResponse> listNode(ClusterPageRequest request, String currentUser) {
         if (StringUtils.isNotBlank(request.getClusterTag())) {
             List<ClusterNodeResponse> nodeList = listNodeByClusterTag(request);
-            PageInfo<ClusterNodeResponse> page = new PageInfo<>(nodeList);
-            page.setTotal(nodeList.size());
-            return page;
+
+            return new PageResult<>(nodeList, (long) nodeList.size());
         }
         Integer parentId = request.getParentId();
         Preconditions.checkNotNull(parentId, "Cluster id cannot be empty");
@@ -507,17 +512,19 @@ public class InlongClusterServiceImpl implements InlongClusterService {
         UserEntity userEntity = userMapper.selectByName(currentUser);
         boolean isInCharge = Preconditions.inSeparatedString(currentUser, cluster.getInCharges(),
                 InlongConstants.COMMA);
+
         Preconditions.checkTrue(isInCharge || userEntity.getAccountType().equals(UserTypeEnum.ADMIN.getCode()),
                 "Current user does not have permission to get cluster node list");
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<InlongClusterNodeEntity> entityPage = (Page<InlongClusterNodeEntity>)
                 clusterNodeMapper.selectByCondition(request);
         List<ClusterNodeResponse> nodeList = CommonBeanUtils.copyListProperties(entityPage, ClusterNodeResponse::new);
-        PageInfo<ClusterNodeResponse> page = new PageInfo<>(nodeList);
-        page.setTotal(nodeList.size());
+
+        PageResult<ClusterNodeResponse> pageResult = new PageResult<>(nodeList, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize());
 
         LOGGER.debug("success to list inlong cluster node by {}", request);
-        return page;
+        return pageResult;
     }
 
     public List<ClusterNodeResponse> listNodeByClusterTag(ClusterPageRequest request) {
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java
index e1ad392c2..489c8d1c0 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/ConsumptionService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionInfo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionListVo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionQuery;
@@ -43,7 +43,7 @@ public interface ConsumptionService {
      * @param query Consumption info
      * @return Consumption list
      */
-    PageInfo<ConsumptionListVo> list(ConsumptionQuery query);
+    PageResult<ConsumptionListVo> list(ConsumptionQuery query);
 
     /**
      * Get data consumption details
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java
index 86863c5d8..df6093ed0 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/HeartbeatService.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.heartbeat.ComponentHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.GroupHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.HeartbeatPageRequest;
-import org.apache.inlong.manager.pojo.heartbeat.HeartbeatReportRequest;
 import org.apache.inlong.manager.pojo.heartbeat.HeartbeatQueryRequest;
+import org.apache.inlong.manager.pojo.heartbeat.HeartbeatReportRequest;
 import org.apache.inlong.manager.pojo.heartbeat.StreamHeartbeatResponse;
 
 /**
@@ -68,7 +68,7 @@ public interface HeartbeatService {
      * @param request paging query request
      * @return list of component heartbeat
      */
-    PageInfo<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request);
+    PageResult<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request);
 
     /**
      * List group heartbeat by page
@@ -76,7 +76,7 @@ public interface HeartbeatService {
      * @param request paging query request
      * @return list of group heartbeat
      */
-    PageInfo<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request);
+    PageResult<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request);
 
     /**
      * List stream heartbeat by page
@@ -84,6 +84,6 @@ public interface HeartbeatService {
      * @param request paging query request
      * @return list of stream heartbeat
      */
-    PageInfo<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request);
+    PageResult<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request);
 
 }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java
index 6d4131eda..8c99be293 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowApproverService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
@@ -60,7 +60,7 @@ public interface WorkflowApproverService {
      * @param request page query request
      * @return approver list
      */
-    PageInfo<ApproverResponse> listByCondition(ApproverPageRequest request);
+    PageResult<ApproverResponse> listByCondition(ApproverPageRequest request);
 
     /**
      * Update workflow approve.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java
index a998aa710..f9020b6c7 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/WorkflowEventService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.core;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
 import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.workflow.event.process.ProcessEvent;
@@ -42,7 +42,7 @@ public interface WorkflowEventService {
      * @param query Query conditions
      * @return Log list
      */
-    PageInfo<EventLogResponse> list(EventLogRequest query);
+    PageResult<EventLogResponse> list(EventLogRequest query);
 
     /**
      * Execute the listener based on the log ID
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
index 6efafbdeb..e7a1c9e12 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/ConsumptionServiceImpl.java
@@ -19,14 +19,13 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
+import org.apache.inlong.manager.common.consts.MQType;
 import org.apache.inlong.manager.common.enums.ClusterType;
 import org.apache.inlong.manager.common.enums.ConsumptionStatus;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
-import org.apache.inlong.manager.common.consts.MQType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
@@ -38,6 +37,7 @@ import org.apache.inlong.manager.dao.mapper.ConsumptionPulsarEntityMapper;
 import org.apache.inlong.manager.dao.mapper.InlongGroupEntityMapper;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterInfo;
 import org.apache.inlong.manager.pojo.common.CountInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionInfo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionListVo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionMqExtBase;
@@ -110,14 +110,16 @@ public class ConsumptionServiceImpl implements ConsumptionService {
     }
 
     @Override
-    public PageInfo<ConsumptionListVo> list(ConsumptionQuery query) {
+    public PageResult<ConsumptionListVo> list(ConsumptionQuery query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         query.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
         Page<ConsumptionEntity> pageResult = (Page<ConsumptionEntity>) consumptionMapper.listByQuery(query);
-        PageInfo<ConsumptionListVo> pageInfo = pageResult
-                .toPageInfo(entity -> CommonBeanUtils.copyProperties(entity, ConsumptionListVo::new));
-        pageInfo.setTotal(pageResult.getTotal());
-        return pageInfo;
+        List<ConsumptionListVo> consumptionListVos = CommonBeanUtils.copyListProperties(pageResult.getResult(),
+                ConsumptionListVo::new);
+
+        return new PageResult<>(
+                consumptionListVos, pageResult.getTotal(), pageResult.getPageNum(), pageResult.getPageSize()
+        );
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java
index a0c2b5d8c..0d789a30d 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/HeartbeatServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.gson.Gson;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -37,6 +36,7 @@ import org.apache.inlong.manager.dao.entity.StreamHeartbeatEntity;
 import org.apache.inlong.manager.dao.mapper.ComponentHeartbeatEntityMapper;
 import org.apache.inlong.manager.dao.mapper.GroupHeartbeatEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamHeartbeatEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.heartbeat.ComponentHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.GroupHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.HeartbeatPageRequest;
@@ -161,7 +161,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
     }
 
     @Override
-    public PageInfo<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request) {
+    public PageResult<ComponentHeartbeatResponse> listComponentHeartbeat(HeartbeatPageRequest request) {
         Preconditions.checkNotNull(request, ErrorCodeEnum.REQUEST_IS_EMPTY.getMessage());
         String component = request.getComponent();
         Preconditions.checkNotEmpty(component, ErrorCodeEnum.REQUEST_COMPONENT_EMPTY.getMessage());
@@ -180,7 +180,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
     }
 
     @Override
-    public PageInfo<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request) {
+    public PageResult<GroupHeartbeatResponse> listGroupHeartbeat(HeartbeatPageRequest request) {
         Preconditions.checkNotNull(request, ErrorCodeEnum.REQUEST_IS_EMPTY.getMessage());
         String component = request.getComponent();
         Preconditions.checkNotEmpty(component, ErrorCodeEnum.REQUEST_COMPONENT_EMPTY.getMessage());
@@ -199,7 +199,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
     }
 
     @Override
-    public PageInfo<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request) {
+    public PageResult<StreamHeartbeatResponse> listStreamHeartbeat(HeartbeatPageRequest request) {
         Preconditions.checkNotNull(request, ErrorCodeEnum.REQUEST_IS_EMPTY.getMessage());
         String component = request.getComponent();
         Preconditions.checkNotEmpty(component, ErrorCodeEnum.REQUEST_COMPONENT_EMPTY.getMessage());
@@ -251,40 +251,35 @@ public class HeartbeatServiceImpl implements HeartbeatService {
         return true;
     }
 
-    private PageInfo<ComponentHeartbeatResponse> listComponentHeartbeatOpt(HeartbeatPageRequest request) {
+    private PageResult<ComponentHeartbeatResponse> listComponentHeartbeatOpt(HeartbeatPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<ComponentHeartbeatEntity> entityPage = (Page<ComponentHeartbeatEntity>)
                 componentHeartbeatMapper.selectByCondition(request);
         List<ComponentHeartbeatResponse> responseList = CommonBeanUtils.copyListProperties(entityPage,
                 ComponentHeartbeatResponse::new);
 
-        PageInfo<ComponentHeartbeatResponse> pageInfo = new PageInfo<>(responseList);
-        pageInfo.setTotal(responseList.size());
-        return pageInfo;
+        return new PageResult<>(responseList, entityPage.getTotal());
     }
 
-    private PageInfo<GroupHeartbeatResponse> listGroupHeartbeatOpt(HeartbeatPageRequest request) {
+    private PageResult<GroupHeartbeatResponse> listGroupHeartbeatOpt(HeartbeatPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<GroupHeartbeatEntity> entityPage = (Page<GroupHeartbeatEntity>) groupHeartbeatMapper.selectByCondition(
                 request);
         List<GroupHeartbeatResponse> responseList = CommonBeanUtils.copyListProperties(entityPage,
                 GroupHeartbeatResponse::new);
 
-        PageInfo<GroupHeartbeatResponse> pageInfo = new PageInfo<>(responseList);
-        pageInfo.setTotal(responseList.size());
-        return pageInfo;
+        return new PageResult<>(responseList,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
     }
 
-    private PageInfo<StreamHeartbeatResponse> listStreamHeartbeatOpt(HeartbeatPageRequest request) {
+    private PageResult<StreamHeartbeatResponse> listStreamHeartbeatOpt(HeartbeatPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<StreamHeartbeatEntity> entityPage = (Page<StreamHeartbeatEntity>)
                 streamHeartbeatMapper.selectByCondition(request);
         List<StreamHeartbeatResponse> responseList = CommonBeanUtils.copyListProperties(entityPage,
                 StreamHeartbeatResponse::new);
 
-        PageInfo<StreamHeartbeatResponse> pageInfo = new PageInfo<>(responseList);
-        pageInfo.setTotal(responseList.size());
-        return pageInfo;
+        return new PageResult<>(responseList, entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
     }
 
 }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java
index 60dc7cc10..bdac4978f 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowApproverServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.WorkflowApproverEntity;
 import org.apache.inlong.manager.dao.mapper.WorkflowApproverEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
@@ -111,15 +111,14 @@ public class WorkflowApproverServiceImpl implements WorkflowApproverService {
     }
 
     @Override
-    public PageInfo<ApproverResponse> listByCondition(ApproverPageRequest request) {
+    public PageResult<ApproverResponse> listByCondition(ApproverPageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
 
         Page<WorkflowApproverEntity> page = (Page<WorkflowApproverEntity>) approverMapper.selectByCondition(request);
         List<ApproverResponse> resultList = CommonBeanUtils.copyListProperties(page,
                 ApproverResponse::new);
-        PageInfo<ApproverResponse> pageInfo = new PageInfo<>(resultList);
-        pageInfo.setTotal(page.getTotal());
-        return pageInfo;
+
+        return new PageResult<>(resultList, page.getTotal(), page.getPageNum(), page.getPageSize());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java
index 6ca972c2f..21fea8664 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/WorkflowEventServiceImpl.java
@@ -19,11 +19,11 @@ package org.apache.inlong.manager.service.core.impl;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
-import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.dao.entity.WorkflowEventLogEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
+import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
 import org.apache.inlong.manager.service.core.WorkflowEventService;
 import org.apache.inlong.manager.workflow.core.EventListenerService;
 import org.apache.inlong.manager.workflow.core.WorkflowQueryService;
@@ -52,15 +52,13 @@ public class WorkflowEventServiceImpl implements WorkflowEventService {
     }
 
     @Override
-    public PageInfo<EventLogResponse> list(EventLogRequest query) {
+    public PageResult<EventLogResponse> list(EventLogRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowEventLogEntity> page = (Page<WorkflowEventLogEntity>) queryService.listEventLog(query);
 
         List<EventLogResponse> viewList = CommonBeanUtils.copyListProperties(page, EventLogResponse::new);
-        PageInfo<EventLogResponse> pageInfo = new PageInfo<>(viewList);
-        pageInfo.setTotal(page.getTotal());
 
-        return pageInfo;
+        return new PageResult<>(viewList, page.getTotal(), page.getPageNum(), page.getPageSize());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
index 9136f6cfa..48dccc0f5 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.group;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupApproveRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
@@ -59,7 +59,7 @@ public interface InlongGroupService {
      * @param request pagination query request
      * @return group list
      */
-    PageInfo<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request);
+    PageResult<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request);
 
     /**
      * Modify group information
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
index ebec5d8d5..65aecd2e3 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
@@ -20,7 +20,6 @@ package org.apache.inlong.manager.service.group;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
@@ -43,6 +42,7 @@ import org.apache.inlong.manager.dao.mapper.InlongGroupExtEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupApproveRequest;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
@@ -181,7 +181,7 @@ public class InlongGroupServiceImpl implements InlongGroupService {
     }
 
     @Override
-    public PageInfo<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request) {
+    public PageResult<InlongGroupBriefInfo> listBrief(InlongGroupPageRequest request) {
         if (request.getPageSize() > MAX_PAGE_SIZE) {
             LOGGER.warn("list group info, but page size is {}, change to {}", request.getPageSize(), MAX_PAGE_SIZE);
             request.setPageSize(MAX_PAGE_SIZE);
@@ -210,10 +210,12 @@ public class InlongGroupServiceImpl implements InlongGroupService {
                 group.setStreamSources(sources);
             });
         }
-        PageInfo<InlongGroupBriefInfo> page = new PageInfo<>(briefInfos);
-        page.setTotal(entityPage.getTotal());
+
+        PageResult<InlongGroupBriefInfo> pageResult = new PageResult<>(briefInfos,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
+
         LOGGER.debug("success to list inlong group for {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java
index 29422e81d..be5427097 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.node;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
@@ -50,7 +50,7 @@ public interface DataNodeService {
      * @param request page request conditions
      * @return node list
      */
-    PageInfo<DataNodeInfo> list(DataNodePageRequest request);
+    PageResult<DataNodeInfo> list(DataNodePageRequest request);
 
     /**
      * Update data node.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
index 893987663..aa823dae5 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/node/DataNodeServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.node;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.consts.DataNodeType;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
@@ -27,6 +26,7 @@ import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.DataNodeEntity;
 import org.apache.inlong.manager.dao.mapper.DataNodeEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
 import org.apache.inlong.manager.pojo.node.DataNodeRequest;
@@ -89,7 +89,7 @@ public class DataNodeServiceImpl implements DataNodeService {
     }
 
     @Override
-    public PageInfo<DataNodeInfo> list(DataNodePageRequest request) {
+    public PageResult<DataNodeInfo> list(DataNodePageRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<DataNodeEntity> entityPage = (Page<DataNodeEntity>) dataNodeMapper.selectByCondition(request);
         List<DataNodeInfo> list = entityPage.stream()
@@ -97,10 +97,12 @@ public class DataNodeServiceImpl implements DataNodeService {
                     DataNodeOperator dataNodeOperator = operatorFactory.getInstance(entity.getType());
                     return dataNodeOperator.getFromEntity(entity);
                 }).collect(Collectors.toList());
-        PageInfo<DataNodeInfo> page = new PageInfo<>(list);
-        page.setTotal(entityPage.getTotal());
+
+        PageResult<DataNodeInfo> pageResult = new PageResult<>(list, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize());
+
         LOGGER.debug("success to list data node by {}", request);
-        return page;
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java
index 2e790fff1..ac227ca56 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/AbstractSinkOperator.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.sink;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -32,6 +31,7 @@ import org.apache.inlong.manager.dao.entity.StreamSinkEntity;
 import org.apache.inlong.manager.dao.entity.StreamSinkFieldEntity;
 import org.apache.inlong.manager.dao.mapper.StreamSinkEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSinkFieldEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.sink.SinkField;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -42,6 +42,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * Default operation of stream sink.
@@ -95,11 +96,17 @@ public abstract class AbstractSinkOperator implements StreamSinkOperator {
     }
 
     @Override
-    public PageInfo<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage) {
+    public PageResult<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage) {
         if (CollectionUtils.isEmpty(entityPage)) {
-            return new PageInfo<>();
+            return PageResult.empty();
         }
-        return entityPage.toPageInfo(this::getFromEntity);
+
+        List<StreamSink> streamSinks = entityPage.getResult()
+                .stream()
+                .map(this::getFromEntity)
+                .collect(Collectors.toList());
+
+        return new PageResult<>(streamSinks, entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java
index e8231c419..e23b6cef2 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkOperator.java
@@ -18,8 +18,8 @@
 package org.apache.inlong.manager.service.sink;
 
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.dao.entity.StreamSinkEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.sink.SinkField;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -68,7 +68,7 @@ public interface StreamSinkOperator {
      * @param entityPage sink entity page
      * @return sink info list
      */
-    PageInfo<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage);
+    PageResult<? extends StreamSink> getPageInfo(Page<StreamSinkEntity> entityPage);
 
     /**
      * Update the sink info.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java
index 6abefbc16..6b09fd551 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.sink;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.sink.SinkApproveDTO;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
@@ -93,7 +93,7 @@ public interface StreamSinkService {
      * @param request paging request.
      * @return sink list
      */
-    PageInfo<? extends StreamSink> listByCondition(SinkPageRequest request);
+    PageResult<? extends StreamSink> listByCondition(SinkPageRequest request);
 
     /**
      * Modify data sink information.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
index f5860fb9e..2c537e848 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.sink;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
@@ -36,6 +35,7 @@ import org.apache.inlong.manager.dao.mapper.StreamSinkEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSinkFieldEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.sink.SinkApproveDTO;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
@@ -177,7 +177,7 @@ public class StreamSinkServiceImpl implements StreamSinkService {
     }
 
     @Override
-    public PageInfo<? extends StreamSink> listByCondition(SinkPageRequest request) {
+    public PageResult<? extends StreamSink> listByCondition(SinkPageRequest request) {
         Preconditions.checkNotNull(request.getInlongGroupId(), ErrorCodeEnum.GROUP_ID_IS_EMPTY.getMessage());
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
@@ -191,14 +191,14 @@ public class StreamSinkServiceImpl implements StreamSinkService {
         List<StreamSink> responseList = Lists.newArrayList();
         for (Map.Entry<String, Page<StreamSinkEntity>> entry : sinkMap.entrySet()) {
             StreamSinkOperator sinkOperator = operatorFactory.getInstance(entry.getKey());
-            PageInfo<? extends StreamSink> pageInfo = sinkOperator.getPageInfo(entry.getValue());
+            PageResult<? extends StreamSink> pageInfo = sinkOperator.getPageInfo(entry.getValue());
             responseList.addAll(pageInfo.getList());
         }
         // Encapsulate the paging query results into the PageInfo object to obtain related paging information
-        PageInfo<? extends StreamSink> pageInfo = PageInfo.of(responseList);
+        PageResult<StreamSink> pageResult = new PageResult<>(responseList);
 
-        LOGGER.debug("success to list sink page, result size {}", pageInfo.getSize());
-        return pageInfo;
+        LOGGER.debug("success to list sink page, result size {}", pageResult.getList().size());
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java
index 72d12343e..d97dff612 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/AbstractSourceOperator.java
@@ -18,7 +18,6 @@
 package org.apache.inlong.manager.service.source;
 
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -26,15 +25,16 @@ import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.GroupStatus;
 import org.apache.inlong.manager.common.enums.SourceStatus;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
-import org.apache.inlong.manager.pojo.source.SourceRequest;
-import org.apache.inlong.manager.pojo.source.StreamSource;
-import org.apache.inlong.manager.pojo.stream.StreamField;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
 import org.apache.inlong.manager.dao.entity.StreamSourceFieldEntity;
 import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSourceFieldEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.source.SourceRequest;
+import org.apache.inlong.manager.pojo.source.StreamSource;
+import org.apache.inlong.manager.pojo.stream.StreamField;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * Default operator of stream source.
@@ -98,11 +99,15 @@ public abstract class AbstractSourceOperator implements StreamSourceOperator {
     }
 
     @Override
-    public PageInfo<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage) {
+    public PageResult<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage) {
         if (CollectionUtils.isEmpty(entityPage)) {
-            return new PageInfo<>();
+            return PageResult.empty();
         }
-        return entityPage.toPageInfo(this::getFromEntity);
+
+        List<StreamSource> streamSources = entityPage.stream()
+                .map(this::getFromEntity)
+                .collect(Collectors.toList());
+        return new PageResult<>(streamSources, entityPage.getTotal(), entityPage.getPageNum(), entityPage.size());
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java
index 2a4436ce3..181102561 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceOperator.java
@@ -18,8 +18,8 @@
 package org.apache.inlong.manager.service.source;
 
 import com.github.pagehelper.Page;
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -87,7 +87,7 @@ public interface StreamSourceOperator {
      * @param entityPage given entity page
      * @return source list response
      */
-    PageInfo<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage);
+    PageResult<? extends StreamSource> getPageInfo(Page<StreamSourceEntity> entityPage);
 
     /**
      * Update the source info.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java
index b375b6bc7..f0940cecb 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.source;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.source.SourcePageRequest;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
@@ -85,7 +85,7 @@ public interface StreamSourceService {
      * @param request paging request.
      * @return source list
      */
-    PageInfo<? extends StreamSource> listByCondition(SourcePageRequest request);
+    PageResult<? extends StreamSource> listByCondition(SourcePageRequest request);
 
     /**
      * Modify data source information
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
index 972db279c..04a64e7ac 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.source;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
@@ -37,6 +36,7 @@ import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StreamSourceFieldEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.pojo.source.SourcePageRequest;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
@@ -166,7 +166,7 @@ public class StreamSourceServiceImpl implements StreamSourceService {
     }
 
     @Override
-    public PageInfo<? extends StreamSource> listByCondition(SourcePageRequest request) {
+    public PageResult<? extends StreamSource> listByCondition(SourcePageRequest request) {
         Preconditions.checkNotNull(request.getInlongGroupId(), ErrorCodeEnum.GROUP_ID_IS_EMPTY.getMessage());
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
@@ -182,15 +182,16 @@ public class StreamSourceServiceImpl implements StreamSourceService {
         List<StreamSource> responseList = Lists.newArrayList();
         for (Map.Entry<String, Page<StreamSourceEntity>> entry : sourceMap.entrySet()) {
             StreamSourceOperator sourceOperator = operatorFactory.getInstance(entry.getKey());
-            PageInfo<? extends StreamSource> pageInfo = sourceOperator.getPageInfo(entry.getValue());
+            PageResult<? extends StreamSource> pageInfo = sourceOperator.getPageInfo(entry.getValue());
             if (null != pageInfo && CollectionUtils.isNotEmpty(pageInfo.getList())) {
                 responseList.addAll(pageInfo.getList());
             }
         }
-        PageInfo<? extends StreamSource> pageInfo = PageInfo.of(responseList);
 
-        LOGGER.debug("success to list source page, result size {}", pageInfo.getSize());
-        return pageInfo;
+        PageResult<? extends StreamSource> pageResult = new PageResult<>(responseList);
+
+        LOGGER.debug("success to list source page, result size {}", pageResult.getList().size());
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java
index 1d148c2ac..bdbdef4d4 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamService.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.stream;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.stream.InlongStreamApproveRequest;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -75,7 +75,7 @@ public interface InlongStreamService {
      * @param request query request
      * @return inlong stream brief list
      */
-    PageInfo<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request);
+    PageResult<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request);
 
     /**
      * Paging query inlong stream full info list, and get all related sources and sinks
@@ -83,7 +83,7 @@ public interface InlongStreamService {
      * @param request query request
      * @return inlong stream info list
      */
-    PageInfo<InlongStreamInfo> listAll(InlongStreamPageRequest request);
+    PageResult<InlongStreamInfo> listAll(InlongStreamPageRequest request);
 
     /**
      * Get the inlong stream brief list and related sink brief list.
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
index 2d8a7e5ec..1ea31b562 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.stream;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -39,6 +38,7 @@ import org.apache.inlong.manager.dao.mapper.InlongStreamExtEntityMapper;
 import org.apache.inlong.manager.dao.mapper.InlongStreamFieldEntityMapper;
 import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
 import org.apache.inlong.manager.pojo.common.OrderTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -199,7 +199,7 @@ public class InlongStreamServiceImpl implements InlongStreamService {
     }
 
     @Override
-    public PageInfo<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request) {
+    public PageResult<InlongStreamBriefInfo> listBrief(InlongStreamPageRequest request) {
         LOGGER.debug("begin to list inlong stream page by {}", request);
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
@@ -209,15 +209,15 @@ public class InlongStreamServiceImpl implements InlongStreamService {
         List<InlongStreamBriefInfo> streamList = CommonBeanUtils.copyListProperties(entityPage,
                 InlongStreamBriefInfo::new);
 
-        PageInfo<InlongStreamBriefInfo> page = new PageInfo<>(streamList);
-        page.setTotal(streamList.size());
+        PageResult<InlongStreamBriefInfo> pageResult = new PageResult<>(streamList,
+                entityPage.getTotal(), entityPage.getPageNum(), entityPage.getPageSize());
 
         LOGGER.debug("success to list inlong stream info for groupId={}", request.getInlongGroupId());
-        return page;
+        return pageResult;
     }
 
     @Override
-    public PageInfo<InlongStreamInfo> listAll(InlongStreamPageRequest request) {
+    public PageResult<InlongStreamInfo> listAll(InlongStreamPageRequest request) {
         LOGGER.debug("begin to list full inlong stream page by {}", request);
         Preconditions.checkNotNull(request, "request is empty");
         String groupId = request.getInlongGroupId();
@@ -250,11 +250,11 @@ public class InlongStreamServiceImpl implements InlongStreamService {
             streamInfo.setSinkList(sinkList);
         }
 
-        PageInfo<InlongStreamInfo> pageInfo = new PageInfo<>(streamInfoList);
-        pageInfo.setTotal(pageInfo.getTotal());
+        PageResult<InlongStreamInfo> pageResult = new PageResult<>(streamInfoList, page.getTotal(),
+                page.getPageNum(), page.getPageSize());
 
         LOGGER.debug("success to list full inlong stream info by {}", request);
-        return pageInfo;
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
index 0932d7c30..a4baeb95e 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserService.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.service.user;
 
-import com.github.pagehelper.PageInfo;
-import org.apache.inlong.manager.pojo.user.UserRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
+import org.apache.inlong.manager.pojo.user.UserRequest;
 
 /**
  * User service interface
@@ -56,7 +56,7 @@ public interface UserService {
      * @param request request
      * @return user info list
      */
-    PageInfo<UserInfo> list(UserRequest request);
+    PageResult<UserInfo> list(UserRequest request);
 
     /**
      * Update user info
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
index 7f8198de8..83917f495 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/user/UserServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.inlong.manager.service.user;
 
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
@@ -34,6 +33,7 @@ import org.apache.inlong.manager.common.util.RSAUtils;
 import org.apache.inlong.manager.common.util.SHAUtils;
 import org.apache.inlong.manager.dao.entity.UserEntity;
 import org.apache.inlong.manager.dao.mapper.UserEntityMapper;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
 import org.slf4j.Logger;
@@ -148,18 +148,19 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public PageInfo<UserInfo> list(UserRequest request) {
+    public PageResult<UserInfo> list(UserRequest request) {
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
         Page<UserEntity> entityPage = (Page<UserEntity>) userMapper.selectByCondition(request);
         List<UserInfo> userList = CommonBeanUtils.copyListProperties(entityPage, UserInfo::new);
 
         // Check whether the user account has expired
         userList.forEach(entity -> entity.setStatus(entity.getDueDate().after(new Date()) ? "valid" : "invalid"));
-        PageInfo<UserInfo> page = new PageInfo<>(userList);
-        page.setTotal(entityPage.getTotal());
 
-        LOGGER.debug("success to list users for request={}, result size={}", request, page.getTotal());
-        return page;
+        PageResult<UserInfo> pageResult = new PageResult<>(userList, entityPage.getTotal(),
+                entityPage.getPageNum(), entityPage.getPageSize());
+
+        LOGGER.debug("success to list users for request={}, result size={}", request, pageResult.getTotal());
+        return pageResult;
     }
 
     @Override
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
index a37c5138a..cb56b72e0 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
@@ -17,18 +17,18 @@
 
 package org.apache.inlong.manager.service.workflow;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.enums.ProcessName;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
+import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
 import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessResponse;
-import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
-import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskCountRequest;
+import org.apache.inlong.manager.pojo.workflow.TaskCountResponse;
 import org.apache.inlong.manager.pojo.workflow.TaskLogRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
-import org.apache.inlong.manager.pojo.workflow.TaskCountResponse;
 import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.pojo.workflow.form.process.ProcessForm;
@@ -127,7 +127,7 @@ public interface WorkflowService {
      * @param query Query conditions.
      * @return Process list.
      */
-    PageInfo<ProcessResponse> listProcess(ProcessRequest query);
+    PageResult<ProcessResponse> listProcess(ProcessRequest query);
 
     /**
      * Get task list
@@ -135,7 +135,7 @@ public interface WorkflowService {
      * @param query Query conditions
      * @return List
      */
-    PageInfo<TaskResponse> listTask(TaskRequest query);
+    PageResult<TaskResponse> listTask(TaskRequest query);
 
     /**
      * Get process statistics
@@ -159,6 +159,6 @@ public interface WorkflowService {
      * @param query Query conditions
      * @return Execution log
      */
-    PageInfo<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query);
+    PageResult<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query);
 
 }
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
index ec20712dd..d3d6bac9a 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImpl.java
@@ -27,6 +27,7 @@ import org.apache.inlong.manager.common.enums.TaskStatus;
 import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
 import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
 import org.apache.inlong.manager.pojo.workflow.ListenerExecuteLog;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
@@ -131,7 +132,7 @@ public class WorkflowServiceImpl implements WorkflowService {
     }
 
     @Override
-    public PageInfo<ProcessResponse> listProcess(ProcessRequest query) {
+    public PageResult<ProcessResponse> listProcess(ProcessRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowProcessEntity> result = (Page<WorkflowProcessEntity>) queryService.listProcessEntity(query);
         PageInfo<ProcessResponse> pageInfo = result.toPageInfo(entity -> {
@@ -142,7 +143,8 @@ public class WorkflowServiceImpl implements WorkflowService {
             return response;
         });
 
-        pageInfo.setTotal(result.getTotal());
+        PageResult<ProcessResponse> pageResult = new PageResult<>(pageInfo.getList(),
+                pageInfo.getTotal(), pageInfo.getPageNum(), pageInfo.getPageSize());
 
         if (query.getIncludeCurrentTask()) {
             TaskRequest taskQuery = TaskRequest.builder()
@@ -150,20 +152,20 @@ public class WorkflowServiceImpl implements WorkflowService {
                     .statusSet(Collections.singleton(TaskStatus.PENDING))
                     .build();
             PageHelper.startPage(0, 100);
-            pageInfo.getList().forEach(this.addCurrentTask(taskQuery));
+            pageResult.getList().forEach(this.addCurrentTask(taskQuery));
         }
-        return pageInfo;
+        return pageResult;
     }
 
     @Override
-    public PageInfo<TaskResponse> listTask(TaskRequest query) {
+    public PageResult<TaskResponse> listTask(TaskRequest query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
         Page<WorkflowTaskEntity> result = (Page<WorkflowTaskEntity>) queryService.listTaskEntity(query);
+
         PageInfo<TaskResponse> pageInfo = result.toPageInfo(WorkflowUtils::getTaskResponse);
         addShowInListForEachTask(pageInfo.getList());
-        pageInfo.setTotal(result.getTotal());
 
-        return pageInfo;
+        return new PageResult<>(pageInfo.getList(), pageInfo.getTotal(), pageInfo.getPageNum(), pageInfo.getPageSize());
     }
 
     @Override
@@ -177,7 +179,7 @@ public class WorkflowServiceImpl implements WorkflowService {
     }
 
     @Override
-    public PageInfo<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query) {
+    public PageResult<WorkflowExecuteLog> listTaskLogs(TaskLogRequest query) {
         Preconditions.checkNotNull(query, "task execute log query params cannot be null");
 
         String groupId = query.getInlongGroupId();
@@ -229,8 +231,9 @@ public class WorkflowServiceImpl implements WorkflowService {
         }
 
         LOGGER.info("success to page list task execute logs for " + query);
-        pageInfo.setTotal(entityPage.getTotal());
-        return pageInfo;
+
+        return new PageResult<>(pageInfo.getList(), pageInfo.getTotal(), pageInfo.getPageNum(),
+                pageInfo.getPageSize());
     }
 
     private Consumer<ProcessResponse> addCurrentTask(TaskRequest query) {
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java
index 4d3e9bbdf..a7249e866 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/cluster/InlongClusterServiceTest.java
@@ -17,11 +17,10 @@
 
 package org.apache.inlong.manager.service.cluster;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyNodeInfo;
 import org.apache.inlong.common.pojo.dataproxy.DataProxyNodeResponse;
-import org.apache.inlong.manager.common.enums.ClusterType;
 import org.apache.inlong.manager.common.consts.MQType;
+import org.apache.inlong.manager.common.enums.ClusterType;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeResponse;
@@ -29,6 +28,7 @@ import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
 import org.apache.inlong.manager.pojo.cluster.dataproxy.DataProxyClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.pulsar.PulsarClusterRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
 import org.apache.inlong.manager.service.ServiceBaseTest;
 import org.junit.jupiter.api.Assertions;
@@ -75,7 +75,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
     /**
      * List clusters by page.
      */
-    public PageInfo<ClusterInfo> listCluster(String type, String clusterTag) {
+    public PageResult<ClusterInfo> listCluster(String type, String clusterTag) {
         ClusterPageRequest request = new ClusterPageRequest();
         request.setType(type);
         request.setClusterTag(clusterTag);
@@ -118,7 +118,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
     /**
      * List cluster nodes by page.
      */
-    public PageInfo<ClusterNodeResponse> listClusterNode(String type, String keyword, Integer parentId) {
+    public PageResult<ClusterNodeResponse> listClusterNode(String type, String keyword, Integer parentId) {
         ClusterPageRequest request = new ClusterPageRequest();
         request.setType(type);
         request.setKeyword(keyword);
@@ -159,7 +159,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
         Assertions.assertNotNull(id);
 
         // list cluster
-        PageInfo<ClusterInfo> listCluster = this.listCluster(ClusterType.PULSAR, clusterTag);
+        PageResult<ClusterInfo> listCluster = this.listCluster(ClusterType.PULSAR, clusterTag);
         Assertions.assertTrue(listCluster.getList().size() > 0);
         ClusterInfo clusterInfo = listCluster.getList().get(0);
         PulsarClusterInfo pulsarCluster = (PulsarClusterInfo) clusterInfo;
@@ -181,7 +181,7 @@ public class InlongClusterServiceTest extends ServiceBaseTest {
         Assertions.assertNotNull(nodeId);
 
         // list cluster node
-        PageInfo<ClusterNodeResponse> listNode = this.listClusterNode(ClusterType.PULSAR, ip, id);
+        PageResult<ClusterNodeResponse> listNode = this.listClusterNode(ClusterType.PULSAR, ip, id);
         Assertions.assertEquals(listNode.getTotal(), 1);
 
         // update cluster node
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java
index 41936336b..428dd4f63 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/DataNodeServiceTest.java
@@ -17,8 +17,8 @@
 
 package org.apache.inlong.manager.service.core.impl;
 
-import com.github.pagehelper.PageInfo;
 import org.apache.inlong.manager.common.consts.DataNodeType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
 import org.apache.inlong.manager.pojo.node.hive.HiveDataNodeRequest;
@@ -56,7 +56,7 @@ public class DataNodeServiceTest extends ServiceBaseTest {
     /**
      * Get data node list info.
      */
-    public PageInfo<DataNodeInfo> listOpt(String type, String name) {
+    public PageResult<DataNodeInfo> listOpt(String type, String name) {
         DataNodePageRequest request = new DataNodePageRequest();
         request.setType(type);
         request.setName(name);
@@ -104,7 +104,7 @@ public class DataNodeServiceTest extends ServiceBaseTest {
         Assertions.assertEquals(type, dataNodeInfo.getType());
 
         // test get data node list
-        PageInfo<DataNodeInfo> listDataNode = this.listOpt(type, nodeName);
+        PageResult<DataNodeInfo> listDataNode = this.listOpt(type, nodeName);
         Assertions.assertEquals(listDataNode.getTotal(), 1);
 
         // test update data node
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java
index 59e762f00..1bbc4cd26 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowApproverServiceImplTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.inlong.manager.service.workflow;
 
-import com.github.pagehelper.PageInfo;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverResponse;
 import org.apache.inlong.manager.service.ServiceBaseTest;
@@ -37,9 +37,9 @@ public class WorkflowApproverServiceImplTest extends ServiceBaseTest {
     @Test
     public void testListAndGet() {
         // The workflow approvers was init by SQL file.
-        PageInfo<ApproverResponse> approverList = workflowApproverService.listByCondition(
+        PageResult<ApproverResponse> approverList = workflowApproverService.listByCondition(
                 ApproverPageRequest.builder().build());
-        Assertions.assertTrue(approverList.getSize() > 0);
+        Assertions.assertTrue(approverList.getList().size() > 0);
 
         Integer id = approverList.getList().get(0).getId();
         ApproverResponse approverResponse = workflowApproverService.get(id);
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java
index 56c3660c7..7207ce726 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/ConsumptionController.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionInfo;
 import org.apache.inlong.manager.pojo.consumption.ConsumptionListVo;
@@ -64,7 +64,7 @@ public class ConsumptionController {
 
     @GetMapping("/consumption/list")
     @ApiOperation(value = "List data consumptions")
-    public Response<PageInfo<ConsumptionListVo>> list(ConsumptionQuery query) {
+    public Response<PageResult<ConsumptionListVo>> list(ConsumptionQuery query) {
         query.setUsername(LoginUserUtils.getLoginUser().getName());
         return Response.success(consumptionService.list(query));
     }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
index 802181c00..bd2d81933 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/DataNodeController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.node.DataNodeInfo;
 import org.apache.inlong.manager.pojo.node.DataNodePageRequest;
@@ -71,7 +71,7 @@ public class DataNodeController {
 
     @PostMapping(value = "/node/list")
     @ApiOperation(value = "List data node")
-    public Response<PageInfo<DataNodeInfo>> list(@RequestBody DataNodePageRequest request) {
+    public Response<PageResult<DataNodeInfo>> list(@RequestBody DataNodePageRequest request) {
         return Response.success(dataNodeService.list(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java
index cf420ebf9..e39be0181 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/HeartbeatController.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.heartbeat.ComponentHeartbeatResponse;
 import org.apache.inlong.manager.pojo.heartbeat.GroupHeartbeatResponse;
@@ -64,21 +64,21 @@ public class HeartbeatController {
 
     @RequestMapping(value = "/heartbeat/component/list", method = RequestMethod.POST)
     @ApiOperation(value = "List component heartbeats")
-    public Response<PageInfo<ComponentHeartbeatResponse>> listComponentHeartbeat(
+    public Response<PageResult<ComponentHeartbeatResponse>> listComponentHeartbeat(
             @RequestBody HeartbeatPageRequest request) {
         return Response.success(heartbeatService.listComponentHeartbeat(request));
     }
 
     @RequestMapping(value = "/heartbeat/group/list", method = RequestMethod.POST)
     @ApiOperation(value = "List group heartbeats")
-    public Response<PageInfo<GroupHeartbeatResponse>> listGroupHeartbeat(@RequestBody HeartbeatPageRequest request) {
+    public Response<PageResult<GroupHeartbeatResponse>> listGroupHeartbeat(@RequestBody HeartbeatPageRequest request) {
         return Response.success(heartbeatService.listGroupHeartbeat(request));
     }
 
     @RequestMapping(value = "/heartbeat/stream/list", method = RequestMethod.POST)
     @ApiOperation(value = "List stream heartbeats")
-    public Response<PageInfo<StreamHeartbeatResponse>> listStreamHeartbeat(@RequestBody HeartbeatPageRequest request) {
-        return Response.success(heartbeatService.listStreamHeartbeat(request));
+    public Response<PageResult<StreamHeartbeatResponse>> listStreamHeartbeat(@RequestBody HeartbeatPageRequest req) {
+        return Response.success(heartbeatService.listStreamHeartbeat(req));
     }
 
 }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
index 35d3f3313..99a529593 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
@@ -17,11 +17,11 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.common.validation.UpdateValidation;
 import org.apache.inlong.manager.pojo.cluster.BindTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterNodeRequest;
@@ -31,8 +31,8 @@ import org.apache.inlong.manager.pojo.cluster.ClusterRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagRequest;
 import org.apache.inlong.manager.pojo.cluster.ClusterTagResponse;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
-import org.apache.inlong.manager.common.validation.UpdateValidation;
 import org.apache.inlong.manager.pojo.user.UserRoleCode;
 import org.apache.inlong.manager.service.cluster.InlongClusterService;
 import org.apache.inlong.manager.service.operationlog.OperationLog;
@@ -79,7 +79,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/tag/list")
     @ApiOperation(value = "List cluster tags")
-    public Response<PageInfo<ClusterTagResponse>> listTag(@RequestBody ClusterTagPageRequest request) {
+    public Response<PageResult<ClusterTagResponse>> listTag(@RequestBody ClusterTagPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         return Response.success(clusterService.listTag(request));
     }
@@ -120,7 +120,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/list")
     @ApiOperation(value = "List clusters")
-    public Response<PageInfo<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
+    public Response<PageResult<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
         return Response.success(clusterService.list(request));
     }
 
@@ -167,7 +167,7 @@ public class InlongClusterController {
 
     @PostMapping(value = "/cluster/node/list")
     @ApiOperation(value = "List cluster nodes")
-    public Response<PageInfo<ClusterNodeResponse>> listNode(@RequestBody ClusterPageRequest request) {
+    public Response<PageResult<ClusterNodeResponse>> listNode(@RequestBody ClusterPageRequest request) {
         String currentUser = LoginUserUtils.getLoginUser().getName();
         return Response.success(clusterService.listNode(request, currentUser));
     }
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
index 078ab48ff..057dc8623 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
@@ -17,14 +17,14 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
 import org.apache.inlong.manager.common.enums.UserTypeEnum;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo;
 import org.apache.inlong.manager.pojo.group.InlongGroupCountResponse;
 import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
@@ -76,7 +76,7 @@ public class InlongGroupController {
 
     @RequestMapping(value = "/group/list", method = RequestMethod.POST)
     @ApiOperation(value = "Get inlong group list by paginating")
-    public Response<PageInfo<InlongGroupBriefInfo>> listBrief(@RequestBody InlongGroupPageRequest request) {
+    public Response<PageResult<InlongGroupBriefInfo>> listBrief(@RequestBody InlongGroupPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
         return Response.success(groupService.listBrief(request));
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
index df57e3a6c..cff3a1f46 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongStreamController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
 import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
@@ -85,7 +85,7 @@ public class InlongStreamController {
 
     @RequestMapping(value = "/stream/list", method = RequestMethod.POST)
     @ApiOperation(value = "Get inlong stream brief info by paginating")
-    public Response<PageInfo<InlongStreamBriefInfo>> listByCondition(@RequestBody InlongStreamPageRequest request) {
+    public Response<PageResult<InlongStreamBriefInfo>> listByCondition(@RequestBody InlongStreamPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
         return Response.success(streamService.listBrief(request));
@@ -93,7 +93,7 @@ public class InlongStreamController {
 
     @RequestMapping(value = "/stream/listAll", method = RequestMethod.POST)
     @ApiOperation(value = "Get inlong stream with all sources and sinks by paginating")
-    public Response<PageInfo<InlongStreamInfo>> listAllWithGroupId(@RequestBody InlongStreamPageRequest request) {
+    public Response<PageResult<InlongStreamInfo>> listAllWithGroupId(@RequestBody InlongStreamPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserRoleCode.ADMIN));
         return Response.success(streamService.listAll(request));
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java
index de2291aaa..3ed3b94ee 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSinkController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.sink.SinkPageRequest;
 import org.apache.inlong.manager.pojo.sink.SinkRequest;
 import org.apache.inlong.manager.pojo.sink.StreamSink;
@@ -65,7 +65,7 @@ public class StreamSinkController {
 
     @RequestMapping(value = "/sink/list", method = RequestMethod.GET)
     @ApiOperation(value = "Get stream sink list by paginating")
-    public Response<PageInfo<? extends StreamSink>> listByCondition(SinkPageRequest request) {
+    public Response<PageResult<? extends StreamSink>> listByCondition(SinkPageRequest request) {
         return Response.success(sinkService.listByCondition(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java
index 99bae8524..1a297fd71 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/StreamSourceController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
-import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.common.validation.UpdateValidation;
+import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.source.SourcePageRequest;
 import org.apache.inlong.manager.pojo.source.SourceRequest;
 import org.apache.inlong.manager.pojo.source.StreamSource;
@@ -65,7 +65,7 @@ public class StreamSourceController {
 
     @RequestMapping(value = "/source/list", method = RequestMethod.GET)
     @ApiOperation(value = "Get stream source list by paginating")
-    public Response<PageInfo<? extends StreamSource>> listByCondition(SourcePageRequest request) {
+    public Response<PageResult<? extends StreamSource>> listByCondition(SourcePageRequest request) {
         return Response.success(sourceService.listByCondition(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
index cc54953ae..1aacb11f5 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/UserController.java
@@ -17,9 +17,9 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.user.UserInfo;
 import org.apache.inlong.manager.pojo.user.UserRequest;
@@ -73,7 +73,7 @@ public class UserController {
 
     @PostMapping("/user/listAll")
     @ApiOperation(value = "List all users")
-    public Response<PageInfo<UserInfo>> list(@RequestBody UserRequest request) {
+    public Response<PageResult<UserInfo>> list(@RequestBody UserRequest request) {
         return Response.success(userService.list(request));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
index 05d739af8..6b0ddb3f4 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowApproverController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.common.enums.OperationType;
 import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
 import org.apache.inlong.manager.pojo.workflow.ApproverRequest;
@@ -66,7 +66,7 @@ public class WorkflowApproverController {
 
     @GetMapping("/workflow/approver/list")
     @ApiOperation(value = "List workflow approvers")
-    public Response<PageInfo<ApproverResponse>> listByCondition(ApproverPageRequest request) {
+    public Response<PageResult<ApproverResponse>> listByCondition(ApproverPageRequest request) {
         request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
         request.setIsAdminRole(LoginUserUtils.getLoginUser().getRoles().contains(UserTypeEnum.ADMIN.name()));
         return Response.success(workflowApproverService.listByCondition(request));
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
index 10648f771..38cef3733 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
 import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
@@ -36,11 +36,11 @@ import org.apache.inlong.manager.pojo.workflow.TaskLogRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskRequest;
 import org.apache.inlong.manager.pojo.workflow.TaskResponse;
 import org.apache.inlong.manager.pojo.workflow.WorkflowApprovalRequest;
+import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
+import org.apache.inlong.manager.pojo.workflow.WorkflowOperationRequest;
 import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
 import org.apache.inlong.manager.service.operationlog.OperationLog;
 import org.apache.inlong.manager.service.user.LoginUserUtils;
-import org.apache.inlong.manager.pojo.workflow.WorkflowExecuteLog;
-import org.apache.inlong.manager.pojo.workflow.WorkflowOperationRequest;
 import org.apache.inlong.manager.service.workflow.WorkflowService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -141,14 +141,14 @@ public class WorkflowController {
 
     @GetMapping("/workflow/listProcess")
     @ApiOperation(value = "Get process list by paginating")
-    public Response<PageInfo<ProcessResponse>> listProcess(ProcessRequest query) {
+    public Response<PageResult<ProcessResponse>> listProcess(ProcessRequest query) {
         query.setApplicant(LoginUserUtils.getLoginUser().getName());
         return Response.success(workflowService.listProcess(query));
     }
 
     @GetMapping("/workflow/listTask")
     @ApiOperation(value = "Get task list by paginating")
-    public Response<PageInfo<TaskResponse>> listTask(TaskRequest query) {
+    public Response<PageResult<TaskResponse>> listTask(TaskRequest query) {
         query.setApprover(LoginUserUtils.getLoginUser().getName());
         return Response.success(workflowService.listTask(query));
     }
@@ -169,7 +169,7 @@ public class WorkflowController {
 
     @GetMapping("/workflow/listTaskLogs")
     @ApiOperation(value = "Get task execution logs")
-    public Response<PageInfo<WorkflowExecuteLog>> listTaskLogs(TaskLogRequest query) {
+    public Response<PageResult<WorkflowExecuteLog>> listTaskLogs(TaskLogRequest query) {
         return Response.success(workflowService.listTaskLogs(query));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java
index 31c59e628..5d1d513d9 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/WorkflowEventController.java
@@ -17,13 +17,13 @@
 
 package org.apache.inlong.manager.web.controller;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.inlong.manager.common.enums.OperationType;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.pojo.workflow.EventLogRequest;
 import org.apache.inlong.manager.pojo.workflow.EventLogResponse;
@@ -59,7 +59,7 @@ public class WorkflowEventController {
 
     @GetMapping("/workflow/event/list")
     @ApiOperation(value = "Get event list by paginating")
-    public Response<PageInfo<EventLogResponse>> list(EventLogRequest query) {
+    public Response<PageResult<EventLogResponse>> list(EventLogRequest query) {
         return Response.success(workflowEventService.list(query));
     }
 
diff --git a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java
index 71688eef9..8bee04869 100644
--- a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java
+++ b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenClusterController.java
@@ -17,12 +17,12 @@
 
 package org.apache.inlong.manager.web.controller.openapi;
 
-import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
 import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest;
+import org.apache.inlong.manager.pojo.common.PageResult;
 import org.apache.inlong.manager.pojo.common.Response;
 import org.apache.inlong.manager.service.cluster.InlongClusterService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,7 +53,7 @@ public class OpenClusterController {
 
     @PostMapping(value = "/cluster/list")
     @ApiOperation(value = "Get clusters by paginating")
-    public Response<PageInfo<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
+    public Response<PageResult<ClusterInfo>> list(@RequestBody ClusterPageRequest request) {
         return Response.success(clusterService.list(request));
     }
 


[inlong] 01/03: [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)

Posted by zi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zirui pushed a commit to branch release-1.3.0
in repository https://gitbox.apache.org/repos/asf/inlong.git

commit 34cbdfab0db0894a0b53ebed0183ef4f3c526bfc
Author: Xin Gong <ge...@gmail.com>
AuthorDate: Thu Aug 25 15:06:46 2022 +0800

    [INLONG-5680][Manager][Sort] Fix field relation object generate error (#5693)
---
 .../manager/pojo/sort/util/FieldRelationUtils.java | 24 ++++++++++------------
 .../manager/pojo/sort/util/LoadNodeUtils.java      | 11 +++++-----
 .../inlong/sort/parser/impl/FlinkSqlParser.java    |  8 +++-----
 3 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java
index 870ad42ee..4f8df5f14 100644
--- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/FieldRelationUtils.java
@@ -20,9 +20,9 @@ package org.apache.inlong.manager.pojo.sort.util;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import java.util.Objects;
 import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.enums.TransformType;
+import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.manager.pojo.stream.StreamField;
 import org.apache.inlong.manager.pojo.transform.TransformDefinition;
 import org.apache.inlong.manager.pojo.transform.TransformResponse;
@@ -33,7 +33,6 @@ import org.apache.inlong.manager.pojo.transform.replacer.StringReplacerDefinitio
 import org.apache.inlong.manager.pojo.transform.replacer.StringReplacerDefinition.ReplaceRule;
 import org.apache.inlong.manager.pojo.transform.splitter.SplitterDefinition;
 import org.apache.inlong.manager.pojo.transform.splitter.SplitterDefinition.SplitRule;
-import org.apache.inlong.manager.common.util.Preconditions;
 import org.apache.inlong.sort.formats.common.FormatInfo;
 import org.apache.inlong.sort.formats.common.StringTypeInfo;
 import org.apache.inlong.sort.protocol.FieldInfo;
@@ -50,6 +49,7 @@ import org.apache.inlong.sort.protocol.transformation.function.SplitIndexFunctio
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -84,9 +84,9 @@ public class FieldRelationUtils {
                         preNodes, constantFieldMap);
             case DE_DUPLICATION:
             case FILTER:
-                return createFieldRelations(fieldList, transformName, constantFieldMap);
+                return createFieldRelations(fieldList, constantFieldMap);
             case JOINER:
-                return createJoinerFieldRelations(fieldList, transformName, constantFieldMap);
+                return createJoinerFieldRelations(fieldList, constantFieldMap);
             default:
                 throw new UnsupportedOperationException(
                         String.format("Unsupported transformType=%s", transformType));
@@ -96,7 +96,7 @@ public class FieldRelationUtils {
     /**
      * Create relation of fields.
      */
-    private static List<FieldRelation> createFieldRelations(List<StreamField> fieldList, String transformName,
+    private static List<FieldRelation> createFieldRelations(List<StreamField> fieldList,
             Map<String, StreamField> constantFieldMap) {
         return fieldList.stream()
                 .map(FieldInfoUtils::parseStreamField)
@@ -115,8 +115,7 @@ public class FieldRelationUtils {
                         inputField = new FieldInfo(fieldInfo.getName(), fieldInfo.getNodeId(),
                                 fieldInfo.getFormatInfo());
                     }
-                    FieldInfo outputField = new FieldInfo(fieldInfo.getName(), transformName,
-                            fieldInfo.getFormatInfo());
+                    FieldInfo outputField = new FieldInfo(fieldInfo.getName(), fieldInfo.getFormatInfo());
                     return new FieldRelation(inputField, outputField);
                 }).collect(Collectors.toList());
     }
@@ -124,7 +123,7 @@ public class FieldRelationUtils {
     /**
      * Create relation of fields in join function.
      */
-    private static List<FieldRelation> createJoinerFieldRelations(List<StreamField> fieldList, String transformName,
+    private static List<FieldRelation> createJoinerFieldRelations(List<StreamField> fieldList,
             Map<String, StreamField> constantFieldMap) {
         return fieldList.stream()
                 .map(streamField -> {
@@ -144,8 +143,7 @@ public class FieldRelationUtils {
                         inputField = new FieldInfo(streamField.getOriginFieldName(),
                                 streamField.getOriginNodeName(), formatInfo);
                     }
-                    FieldInfo outputField = new FieldInfo(streamField.getFieldName(),
-                            transformName, formatInfo);
+                    FieldInfo outputField = new FieldInfo(streamField.getFieldName(), formatInfo);
                     return new FieldRelation(inputField, outputField);
                 }).collect(Collectors.toList());
     }
@@ -170,7 +168,7 @@ public class FieldRelationUtils {
         List<StreamField> filteredFieldList = fieldList.stream()
                 .filter(streamFieldInfo -> !splitFields.contains(streamFieldInfo.getFieldName()))
                 .collect(Collectors.toList());
-        fieldRelations.addAll(createFieldRelations(filteredFieldList, transformName, constantFieldMap));
+        fieldRelations.addAll(createFieldRelations(filteredFieldList, constantFieldMap));
         return fieldRelations;
     }
 
@@ -190,7 +188,7 @@ public class FieldRelationUtils {
         List<StreamField> filteredFieldList = fieldList.stream()
                 .filter(streamFieldInfo -> !replaceFields.contains(streamFieldInfo.getFieldName()))
                 .collect(Collectors.toList());
-        fieldRelations.addAll(createFieldRelations(filteredFieldList, transformName, constantFieldMap));
+        fieldRelations.addAll(createFieldRelations(filteredFieldList, constantFieldMap));
         return fieldRelations;
     }
 
@@ -209,7 +207,7 @@ public class FieldRelationUtils {
         List<StreamField> filteredFieldList = fieldList.stream()
                 .filter(streamFieldInfo -> !encryptFields.contains(streamFieldInfo.getFieldName()))
                 .collect(Collectors.toList());
-        fieldRelations.addAll(createFieldRelations(filteredFieldList, transformName, constantFieldMap));
+        fieldRelations.addAll(createFieldRelations(filteredFieldList, constantFieldMap));
         return fieldRelations;
     }
 
diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java
index 6e96d7bfd..bd1b83bfb 100644
--- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java
+++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/util/LoadNodeUtils.java
@@ -21,8 +21,8 @@ import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.common.enums.DataTypeEnum;
-import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.consts.SinkType;
+import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.pojo.sink.SinkField;
@@ -71,12 +71,12 @@ import org.apache.inlong.sort.protocol.transformation.ConstantParam;
 import org.apache.inlong.sort.protocol.transformation.FieldRelation;
 import org.apache.inlong.sort.protocol.transformation.FunctionParam;
 import org.apache.inlong.sort.protocol.transformation.StringConstantParam;
+import org.apache.inlong.sort.protocol.transformation.function.CustomFunction;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-import org.apache.inlong.sort.protocol.transformation.function.CustomFunction;
 
 /**
  * Util for load node info.
@@ -102,8 +102,7 @@ public class LoadNodeUtils {
         List<FieldInfo> fieldInfos = streamSink.getSinkFieldList().stream()
                 .map(field -> FieldInfoUtils.parseSinkFieldInfo(field, streamSink.getSinkName()))
                 .collect(Collectors.toList());
-        List<FieldRelation> fieldRelations = parseSinkFields(streamSink.getSinkFieldList(),
-                streamSink.getSinkName(), constantFieldMap);
+        List<FieldRelation> fieldRelations = parseSinkFields(streamSink.getSinkFieldList(), constantFieldMap);
         Map<String, String> properties = streamSink.getProperties().entrySet().stream()
                 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toString()));
         String sinkType = streamSink.getSinkType();
@@ -497,7 +496,7 @@ public class LoadNodeUtils {
     /**
      * Parse information field of data sink.
      */
-    public static List<FieldRelation> parseSinkFields(List<SinkField> fieldList, String sinkName,
+    public static List<FieldRelation> parseSinkFields(List<SinkField> fieldList,
             Map<String, StreamField> constantFieldMap) {
         if (CollectionUtils.isEmpty(fieldList)) {
             return Lists.newArrayList();
@@ -505,7 +504,7 @@ public class LoadNodeUtils {
         return fieldList.stream()
                 .filter(sinkField -> StringUtils.isNotEmpty(sinkField.getSourceFieldName()))
                 .map(field -> {
-                    FieldInfo outputField = new FieldInfo(field.getFieldName(), sinkName,
+                    FieldInfo outputField = new FieldInfo(field.getFieldName(),
                             FieldInfoUtils.convertFieldFormat(field.getFieldType(), field.getFieldFormat()));
                     FunctionParam inputField;
                     String fieldKey = String.format("%s-%s", field.getOriginNodeName(), field.getSourceFieldName());
diff --git a/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java b/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java
index 02722a9c5..3cc166601 100644
--- a/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java
+++ b/inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java
@@ -338,17 +338,15 @@ public class FlinkSqlParser implements Parser {
         // Generate mapping for output field to FieldRelation
         fieldRelations.forEach(s -> {
             // All field relations of input nodes will be the same if the node id of output field is blank.
-            // Currently, the node id in the output file is used to distinguish which field of the node in the upstream
-            // of the union the field comes from. A better way is through the upstream input field,
+            // Currently, the node id in the output field is used to distinguish which field of the node in the
+            // upstream of the union the field comes from. A better way is through the upstream input field,
             // but this abstraction does not yet have the ability to set node ids for all upstream input fields.
             // todo optimize the implementation of this block in the future
             String nodeId = s.getOutputField().getNodeId();
             if (StringUtils.isBlank(nodeId)) {
                 nodeId = unionRelation.getInputs().get(0);
             }
-            Map<String, FieldRelation> subRelationMap = fieldRelationMap
-                    .computeIfAbsent(nodeId, k -> new HashMap<>());
-            subRelationMap.put(s.getOutputField().getName(), s);
+            fieldRelationMap.computeIfAbsent(nodeId, k -> new HashMap<>()).put(s.getOutputField().getName(), s);
         });
         StringBuilder sb = new StringBuilder();
         sb.append(genUnionSingleSelectSql(unionRelation.getInputs().get(0),