diff --git a/pom.xml b/pom.xml
index d19b5e3..72053fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,6 +101,14 @@
1.18.20
provided
+
+
+
+ com.google.code.gson
+ gson
+ 2.8.8
+
+
diff --git a/src/main/java/com/xuxd/kafka/console/beans/dos/MinOffsetAlignmentDO.java b/src/main/java/com/xuxd/kafka/console/beans/dos/MinOffsetAlignmentDO.java
new file mode 100644
index 0000000..6f43999
--- /dev/null
+++ b/src/main/java/com/xuxd/kafka/console/beans/dos/MinOffsetAlignmentDO.java
@@ -0,0 +1,30 @@
+package com.xuxd.kafka.console.beans.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * kafka-console-ui.
+ *
+ * @author xuxd
+ * @date 2021-10-26 10:32:05
+ **/
+@Data
+@TableName("t_min_offset_alignment")
+public class MinOffsetAlignmentDO {
+
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ private String groupId;
+
+ private String topic;
+
+ private String thatOffset;
+
+ private String thisOffset;
+
+ private String updateTime;
+}
diff --git a/src/main/java/com/xuxd/kafka/console/controller/OperationController.java b/src/main/java/com/xuxd/kafka/console/controller/OperationController.java
index 3dec9ee..2f2503e 100644
--- a/src/main/java/com/xuxd/kafka/console/controller/OperationController.java
+++ b/src/main/java/com/xuxd/kafka/console/controller/OperationController.java
@@ -27,4 +27,10 @@ public class OperationController {
dto.getProperties().put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, dto.getAddress());
return operationService.syncConsumerOffset(dto.getGroupId(), dto.getTopic(), dto.getProperties());
}
+
+ @PostMapping("/sync/min/offset/alignment")
+ public Object minOffsetAlignment(@RequestBody SyncDataDTO dto) {
+ dto.getProperties().put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, dto.getAddress());
+ return operationService.minOffsetAlignment(dto.getGroupId(), dto.getTopic(), dto.getProperties());
+ }
}
diff --git a/src/main/java/com/xuxd/kafka/console/dao/MinOffsetAlignmentMapper.java b/src/main/java/com/xuxd/kafka/console/dao/MinOffsetAlignmentMapper.java
new file mode 100644
index 0000000..07173f8
--- /dev/null
+++ b/src/main/java/com/xuxd/kafka/console/dao/MinOffsetAlignmentMapper.java
@@ -0,0 +1,13 @@
+package com.xuxd.kafka.console.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xuxd.kafka.console.beans.dos.MinOffsetAlignmentDO;
+
+/**
+ * kafka-console-ui.
+ *
+ * @author xuxd
+ * @date 2021-10-26 10:33:55
+ **/
+public interface MinOffsetAlignmentMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/xuxd/kafka/console/service/OperationService.java b/src/main/java/com/xuxd/kafka/console/service/OperationService.java
index 1f5364b..8361af8 100644
--- a/src/main/java/com/xuxd/kafka/console/service/OperationService.java
+++ b/src/main/java/com/xuxd/kafka/console/service/OperationService.java
@@ -12,4 +12,6 @@ import java.util.Properties;
public interface OperationService {
ResponseData syncConsumerOffset(String groupId, String topic, Properties thatProps);
+
+ ResponseData minOffsetAlignment(String groupId, String topic, Properties thatProps);
}
diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/OperationServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/OperationServiceImpl.java
index 4955e96..b238880 100644
--- a/src/main/java/com/xuxd/kafka/console/service/impl/OperationServiceImpl.java
+++ b/src/main/java/com/xuxd/kafka/console/service/impl/OperationServiceImpl.java
@@ -1,9 +1,17 @@
package com.xuxd.kafka.console.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import com.xuxd.kafka.console.beans.ResponseData;
+import com.xuxd.kafka.console.beans.dos.MinOffsetAlignmentDO;
+import com.xuxd.kafka.console.dao.MinOffsetAlignmentMapper;
import com.xuxd.kafka.console.service.OperationService;
+import java.util.Map;
import java.util.Properties;
import kafka.console.OperationConsole;
+import org.apache.kafka.common.TopicPartition;
+import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import scala.Tuple2;
@@ -17,13 +25,52 @@ import scala.Tuple2;
@Service
public class OperationServiceImpl implements OperationService {
+ private Gson gson = new Gson();
+
@Autowired
private OperationConsole operationConsole;
+ private MinOffsetAlignmentMapper minOffsetAlignmentMapper;
+
+ public OperationServiceImpl(ObjectProvider minOffsetAlignmentMapper) {
+ this.minOffsetAlignmentMapper = minOffsetAlignmentMapper.getIfAvailable();
+ }
+
@Override public ResponseData syncConsumerOffset(String groupId, String topic, Properties thatProps) {
Tuple2