diff --git a/pom.xml b/pom.xml
index f5eea49..9cd5176 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,7 @@
spring-boot-service-template-common
+ spring-boot-service-template-eq
spring-boot-service-template-jpa
spring-boot-service-template-xbatis
diff --git a/spring-boot-service-template-eq/pom.xml b/spring-boot-service-template-eq/pom.xml
new file mode 100644
index 0000000..5a80493
--- /dev/null
+++ b/spring-boot-service-template-eq/pom.xml
@@ -0,0 +1,80 @@
+
+
+ 4.0.0
+
+ com.lanyuanxiaoyao
+ spring-boot-service-template
+ 1.1.0-SNAPSHOT
+
+
+ spring-boot-service-template-eq
+
+
+
+ com.lanyuanxiaoyao
+ spring-boot-service-template-common
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ com.easy-query
+ sql-springboot4-starter
+ 3.1.68
+
+
+
+ com.github.gavlyukovskiy
+ p6spy-spring-boot-starter
+
+
+
+ org.jspecify
+ jspecify
+
+
+
+ com.h2database
+ h2
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ package
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+ com.easy-query
+ sql-processor
+ 3.1.68
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java b/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
new file mode 100644
index 0000000..c7ed64b
--- /dev/null
+++ b/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
@@ -0,0 +1,209 @@
+package com.lanyuanxiaoyao.service.template.eq.controller;
+
+import com.easy.query.core.proxy.AbstractProxyEntity;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import com.lanyuanxiaoyao.service.template.common.controller.SimpleController;
+import com.lanyuanxiaoyao.service.template.common.entity.GlobalResponse;
+import com.lanyuanxiaoyao.service.template.common.entity.Query;
+import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
+import com.lanyuanxiaoyao.service.template.eq.entity.SimpleEntity;
+import com.lanyuanxiaoyao.service.template.eq.service.SimpleServiceSupport;
+import java.util.function.Function;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * 简单控制器支持类,提供基础的CRUD操作实现
+ *
+ * 该类实现了基本的增删改查功能,通过泛型支持不同类型的数据转换。
+ * 子类需要实现对应的Mapper函数来完成实体类与传输对象之间的转换。
+ *
+ *
+ * 设计特点
+ *
+ * - 泛型设计,支持任意实体类型和数据转换
+ * - 统一的异常处理和事务管理
+ * - 支持条件查询、分页查询和详情查询
+ * - 提供抽象的Mapper方法,便于子类实现数据转换逻辑
+ *
+ *
+ * 使用说明
+ * 子类需要实现以下抽象方法:
+ *
+ * - saveItemMapper(): 保存项到实体的转换函数
+ * - listItemMapper(): 实体到列表项的转换函数
+ * - detailItemMapper(): 实体到详情项的转换函数
+ *
+ *
+ * @param 实体类型,必须继承SimpleEntity
+ * @param 保存项类型
+ * @param 列表项类型
+ * @param 详情项类型
+ */
+@Slf4j
+@RequiredArgsConstructor
+public abstract class SimpleControllerSupport, PROXY extends AbstractProxyEntity, SAVE_ITEM, LIST_ITEM, DETAIL_ITEM> implements SimpleController {
+ protected final SimpleServiceSupport service;
+
+ /**
+ * 保存实体对象
+ *
+ * 将保存项转换为实体对象后保存,返回保存后的实体ID。
+ * 支持新增和更新操作,通过事务保证数据一致性。
+ *
+ *
+ * @param item 需要保存的项
+ * @return 返回保存后的实体ID响应对象,格式:{status: 0, message: "OK", data: 实体ID}
+ * @throws Exception 保存过程中可能抛出的异常
+ */
+ @Transactional(rollbackFor = Throwable.class)
+ @PostMapping(SAVE)
+ @Override
+ public GlobalResponse save(@RequestBody SAVE_ITEM item) throws Exception {
+ var mapper = saveItemMapper();
+ return GlobalResponse.responseSuccess(service.save(mapper.apply(item)));
+ }
+
+ /**
+ * 获取所有实体列表
+ *
+ * 查询所有记录,不带任何过滤条件,返回分页格式的数据。
+ * 将实体对象转换为列表项对象后返回。
+ *
+ *
+ * @return 返回实体列表响应对象,格式:{status: 0, message: "OK", data: {items: [...], total: total}}
+ * @throws Exception 查询过程中可能抛出的异常
+ */
+ @Transactional(readOnly = true)
+ @GetMapping(LIST)
+ @Override
+ public GlobalResponse> list() throws Exception {
+ var mapper = listItemMapper();
+ var result = service.list();
+ return GlobalResponse.responseListData(
+ result
+ .stream()
+ .map(entity -> {
+ try {
+ return mapper.apply(entity);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .toList(),
+ result.size()
+ );
+ }
+
+ /**
+ * 根据查询条件获取实体列表
+ *
+ * 支持复杂的查询条件、排序和分页,返回符合条件的数据。
+ * 将实体对象转换为列表项对象后返回。
+ *
+ *
+ * @param query 查询条件对象,包含过滤条件、排序规则和分页信息
+ * @return 返回符合条件的实体列表响应对象,格式:{status: 0, message: "OK", data: {items: [...], total: total}}
+ * @throws Exception 查询过程中可能抛出的异常
+ */
+ @Transactional(readOnly = true)
+ @PostMapping(LIST)
+ @Override
+ public GlobalResponse> list(@RequestBody Query query) throws Exception {
+ if (ObjectHelper.isNull(query)) {
+ return GlobalResponse.responseListData();
+ }
+ var mapper = listItemMapper();
+ var result = service.list(query);
+ return GlobalResponse.responseListData(
+ result.items()
+ .stream()
+ .map(entity -> {
+ try {
+ return mapper.apply(entity);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .toList(),
+ result.total()
+ );
+ }
+
+ /**
+ * 根据ID获取实体详情
+ *
+ * 根据主键ID查询单条记录的详细信息,转换为详情项对象后返回。
+ * 如果记录不存在则抛出异常。
+ *
+ *
+ * @param id 实体主键ID
+ * @return 返回实体详情响应对象,格式:{status: 0, message: "OK", data: 详情数据}
+ * @throws Exception 查询过程中可能抛出的异常
+ */
+ @Transactional(readOnly = true)
+ @GetMapping(DETAIL)
+ @Override
+ public GlobalResponse detail(@PathVariable("id") Long id) throws Exception {
+ var mapper = detailItemMapper();
+ return GlobalResponse.responseSuccess(mapper.apply(service.detailOrThrow(id)));
+ }
+
+ /**
+ * 根据ID删除实体对象
+ *
+ * 根据主键ID删除指定的记录,执行成功后返回成功响应。
+ * 通过事务保证删除操作的一致性。
+ *
+ *
+ * @param id 需要删除的实体主键ID
+ * @return 返回删除结果响应对象,格式:{status: 0, message: "OK", data: null}
+ * @throws Exception 删除过程中可能抛出的异常
+ */
+ @Transactional(rollbackFor = Throwable.class)
+ @GetMapping(REMOVE)
+ @Override
+ public GlobalResponse