diff --git a/pom.xml b/pom.xml
index 081331a..1ec48d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,24 @@
ruoyi-common-swagger
+
+
+ com.ruoyi
+ tuoheng-api-approval
+
+
+
+
+ org.flywaydb
+ flyway-core
+
+
+
+
+ org.flywaydb
+ flyway-mysql
+
+
diff --git a/src/main/java/com/ruoyi/approval/controller/ApprovalTempController.java b/src/main/java/com/ruoyi/approval/controller/ApprovalTempController.java
new file mode 100644
index 0000000..1dc1b1e
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/controller/ApprovalTempController.java
@@ -0,0 +1,70 @@
+package com.ruoyi.approval.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.security.annotation.InnerAuth;
+import com.ruoyi.approval.api.domain.ApprovalTempVO;
+import com.ruoyi.approval.controller.convert.ApprovalTempControllerConvert;
+import com.ruoyi.approval.service.api.IApprovalTempService;
+import com.ruoyi.approval.service.dto.ApprovalTempDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 审批临时表Controller
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+@RestController
+@RequestMapping("/approval/temp")
+public class ApprovalTempController extends BaseController
+{
+ @Autowired
+ private IApprovalTempService approvalTempService;
+
+ /**
+ * 查询审批临时表列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(ApprovalTempVO approvalTemp)
+ {
+ startPage();
+ // API Domain → Service DTO
+ ApprovalTempDTO dto = ApprovalTempControllerConvert.toDTO(approvalTemp);
+ List dtoList = approvalTempService.selectApprovalTempList(dto);
+ // Service DTO → API Domain
+ List list = ApprovalTempControllerConvert.toApiDomainList(dtoList);
+ return getDataTable(list);
+ }
+
+ /**
+ * 获取审批临时表详细信息(内部调用)
+ */
+ @InnerAuth
+ @GetMapping(value = "/{id}")
+ public R getApprovalById(@PathVariable("id") String id)
+ {
+ ApprovalTempDTO dto = approvalTempService.selectApprovalTempById(id);
+ ApprovalTempVO approvalTemp = ApprovalTempControllerConvert.toVO(dto);
+ return R.ok(approvalTemp);
+ }
+
+ /**
+ * 获取审批临时表详细信息(外部调用)
+ */
+ @GetMapping(value = "/info/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id)
+ {
+ ApprovalTempDTO dto = approvalTempService.selectApprovalTempById(id);
+ ApprovalTempVO approvalTemp = ApprovalTempControllerConvert.toVO(dto);
+ return success(approvalTemp);
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/controller/convert/ApprovalTempControllerConvert.java b/src/main/java/com/ruoyi/approval/controller/convert/ApprovalTempControllerConvert.java
new file mode 100644
index 0000000..ee7412c
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/controller/convert/ApprovalTempControllerConvert.java
@@ -0,0 +1,58 @@
+package com.ruoyi.approval.controller.convert;
+
+import com.ruoyi.approval.api.domain.ApprovalTempVO;
+import com.ruoyi.approval.service.dto.ApprovalTempDTO;
+import org.springframework.beans.BeanUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 审批临时表Controller层转换器
+ * API Domain ↔ Service DTO
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public class ApprovalTempControllerConvert
+{
+ /**
+ * DTO 转 API Domain
+ */
+ public static ApprovalTempVO toVO(ApprovalTempDTO dto)
+ {
+ if (dto == null)
+ {
+ return null;
+ }
+ ApprovalTempVO apiDomain = new ApprovalTempVO();
+ BeanUtils.copyProperties(dto, apiDomain);
+ return apiDomain;
+ }
+
+ /**
+ * API Domain 转 DTO
+ */
+ public static ApprovalTempDTO toDTO(ApprovalTempVO apiDomain)
+ {
+ if (apiDomain == null)
+ {
+ return null;
+ }
+ ApprovalTempDTO dto = new ApprovalTempDTO();
+ BeanUtils.copyProperties(apiDomain, dto);
+ return dto;
+ }
+
+ /**
+ * DTO List 转 API Domain List
+ */
+ public static List toApiDomainList(List dtoList)
+ {
+ if (dtoList == null)
+ {
+ return null;
+ }
+ return dtoList.stream().map(ApprovalTempControllerConvert::toVO).collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/domain/api/IApprovalTempDomain.java b/src/main/java/com/ruoyi/approval/domain/api/IApprovalTempDomain.java
new file mode 100644
index 0000000..a38768e
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/domain/api/IApprovalTempDomain.java
@@ -0,0 +1,29 @@
+package com.ruoyi.approval.domain.api;
+
+import com.ruoyi.approval.domain.model.ApprovalTemp;
+import java.util.List;
+
+/**
+ * 审批临时表Domain接口
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public interface IApprovalTempDomain
+{
+ /**
+ * 查询审批临时表列表
+ *
+ * @param approvalTemp 审批临时表
+ * @return 审批临时表集合
+ */
+ List selectApprovalTempList(ApprovalTemp approvalTemp);
+
+ /**
+ * 根据ID查询审批临时表
+ *
+ * @param id 主键ID
+ * @return 审批临时表
+ */
+ ApprovalTemp selectApprovalTempById(String id);
+}
diff --git a/src/main/java/com/ruoyi/approval/domain/convert/ApprovalTempDomainConvert.java b/src/main/java/com/ruoyi/approval/domain/convert/ApprovalTempDomainConvert.java
new file mode 100644
index 0000000..c2d104f
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/domain/convert/ApprovalTempDomainConvert.java
@@ -0,0 +1,58 @@
+package com.ruoyi.approval.domain.convert;
+
+import com.ruoyi.approval.domain.model.ApprovalTemp;
+import com.ruoyi.approval.mapper.entity.ApprovalTempEntity;
+import org.springframework.beans.BeanUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 审批临时表Domain层转换器
+ * Domain Model ↔ Mapper Entity
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public class ApprovalTempDomainConvert
+{
+ /**
+ * Entity 转 Model
+ */
+ public static ApprovalTemp toModel(ApprovalTempEntity entity)
+ {
+ if (entity == null)
+ {
+ return null;
+ }
+ ApprovalTemp model = new ApprovalTemp();
+ BeanUtils.copyProperties(entity, model);
+ return model;
+ }
+
+ /**
+ * Model 转 Entity
+ */
+ public static ApprovalTempEntity toEntity(ApprovalTemp model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ ApprovalTempEntity entity = new ApprovalTempEntity();
+ BeanUtils.copyProperties(model, entity);
+ return entity;
+ }
+
+ /**
+ * Entity List 转 Model List
+ */
+ public static List toModelList(List entityList)
+ {
+ if (entityList == null)
+ {
+ return null;
+ }
+ return entityList.stream().map(ApprovalTempDomainConvert::toModel).collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/domain/impl/ApprovalTempDomainImpl.java b/src/main/java/com/ruoyi/approval/domain/impl/ApprovalTempDomainImpl.java
new file mode 100644
index 0000000..ee77871
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/domain/impl/ApprovalTempDomainImpl.java
@@ -0,0 +1,39 @@
+package com.ruoyi.approval.domain.impl;
+
+import com.ruoyi.approval.domain.api.IApprovalTempDomain;
+import com.ruoyi.approval.domain.convert.ApprovalTempDomainConvert;
+import com.ruoyi.approval.domain.model.ApprovalTemp;
+import com.ruoyi.approval.mapper.ApprovalTempMapper;
+import com.ruoyi.approval.mapper.entity.ApprovalTempEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 审批临时表Domain实现
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+@Component
+public class ApprovalTempDomainImpl implements IApprovalTempDomain
+{
+ @Autowired
+ private ApprovalTempMapper approvalTempMapper;
+
+ @Override
+ public List selectApprovalTempList(ApprovalTemp approvalTempModel)
+ {
+ ApprovalTempEntity entity = ApprovalTempDomainConvert.toEntity(approvalTempModel);
+ List entityList = approvalTempMapper.selectApprovalTempList(entity);
+ return ApprovalTempDomainConvert.toModelList(entityList);
+ }
+
+ @Override
+ public ApprovalTemp selectApprovalTempById(String id)
+ {
+ ApprovalTempEntity entity = approvalTempMapper.selectApprovalTempById(id);
+ return ApprovalTempDomainConvert.toModel(entity);
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/domain/model/ApprovalTemp.java b/src/main/java/com/ruoyi/approval/domain/model/ApprovalTemp.java
new file mode 100644
index 0000000..a005dec
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/domain/model/ApprovalTemp.java
@@ -0,0 +1,55 @@
+package com.ruoyi.approval.domain.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 审批临时表领域模型
+ * Domain 层对外暴露的对象
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public class ApprovalTemp implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private String id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public Date getCreateTime()
+ {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime)
+ {
+ this.createTime = createTime;
+ }
+
+ public Date getUpdateTime()
+ {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime)
+ {
+ this.updateTime = updateTime;
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/mapper/ApprovalTempMapper.java b/src/main/java/com/ruoyi/approval/mapper/ApprovalTempMapper.java
new file mode 100644
index 0000000..b86cbd3
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/mapper/ApprovalTempMapper.java
@@ -0,0 +1,29 @@
+package com.ruoyi.approval.mapper;
+
+import com.ruoyi.approval.mapper.entity.ApprovalTempEntity;
+import java.util.List;
+
+/**
+ * 审批临时表Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public interface ApprovalTempMapper
+{
+ /**
+ * 查询审批临时表列表
+ *
+ * @param approvalTempEntity 审批临时表
+ * @return 审批临时表集合
+ */
+ public List selectApprovalTempList(ApprovalTempEntity approvalTempEntity);
+
+ /**
+ * 根据ID查询审批临时表
+ *
+ * @param id 主键ID
+ * @return 审批临时表
+ */
+ public ApprovalTempEntity selectApprovalTempById(String id);
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/approval/mapper/entity/ApprovalTempEntity.java b/src/main/java/com/ruoyi/approval/mapper/entity/ApprovalTempEntity.java
new file mode 100644
index 0000000..2d02b0b
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/mapper/entity/ApprovalTempEntity.java
@@ -0,0 +1,36 @@
+package com.ruoyi.approval.mapper.entity;
+
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 审批临时表实体对象 tuoheng_approval_temp
+ * Mapper 层实体,对应数据库表
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public class ApprovalTempEntity extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private String id;
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "ApprovalTempEntity{" +
+ "id='" + id + '\'' +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/approval/service/api/IApprovalTempService.java b/src/main/java/com/ruoyi/approval/service/api/IApprovalTempService.java
new file mode 100644
index 0000000..dcfd4f8
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/service/api/IApprovalTempService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.approval.service.api;
+
+import com.ruoyi.approval.service.dto.ApprovalTempDTO;
+import java.util.List;
+
+/**
+ * 审批临时表Service接口
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public interface IApprovalTempService
+{
+ /**
+ * 查询审批临时表列表
+ *
+ * @param approvalTempDTO 审批临时表
+ * @return 审批临时表集合
+ */
+ List selectApprovalTempList(ApprovalTempDTO approvalTempDTO);
+
+ /**
+ * 根据ID查询审批临时表
+ *
+ * @param id 主键ID
+ * @return 审批临时表
+ */
+ ApprovalTempDTO selectApprovalTempById(String id);
+}
diff --git a/src/main/java/com/ruoyi/approval/service/convert/ApprovalTempServiceConvert.java b/src/main/java/com/ruoyi/approval/service/convert/ApprovalTempServiceConvert.java
new file mode 100644
index 0000000..a7e1f08
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/service/convert/ApprovalTempServiceConvert.java
@@ -0,0 +1,58 @@
+package com.ruoyi.approval.service.convert;
+
+import com.ruoyi.approval.domain.model.ApprovalTemp;
+import com.ruoyi.approval.service.dto.ApprovalTempDTO;
+import org.springframework.beans.BeanUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 审批临时表Service层转换器
+ * Service DTO ↔ Domain Model
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public class ApprovalTempServiceConvert
+{
+ /**
+ * Model 转 DTO
+ */
+ public static ApprovalTempDTO toDTO(ApprovalTemp model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ ApprovalTempDTO dto = new ApprovalTempDTO();
+ BeanUtils.copyProperties(model, dto);
+ return dto;
+ }
+
+ /**
+ * DTO 转 Model
+ */
+ public static ApprovalTemp toModel(ApprovalTempDTO dto)
+ {
+ if (dto == null)
+ {
+ return null;
+ }
+ ApprovalTemp model = new ApprovalTemp();
+ BeanUtils.copyProperties(dto, model);
+ return model;
+ }
+
+ /**
+ * Model List 转 DTO List
+ */
+ public static List toDTOList(List modelList)
+ {
+ if (modelList == null)
+ {
+ return null;
+ }
+ return modelList.stream().map(ApprovalTempServiceConvert::toDTO).collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/service/dto/ApprovalTempDTO.java b/src/main/java/com/ruoyi/approval/service/dto/ApprovalTempDTO.java
new file mode 100644
index 0000000..8add0a7
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/service/dto/ApprovalTempDTO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.approval.service.dto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 审批临时表服务层DTO
+ * Service 层对外暴露的对象
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+public class ApprovalTempDTO implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private String id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public Date getCreateTime()
+ {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime)
+ {
+ this.createTime = createTime;
+ }
+
+ public Date getUpdateTime()
+ {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime)
+ {
+ this.updateTime = updateTime;
+ }
+}
diff --git a/src/main/java/com/ruoyi/approval/service/impl/ApprovalTempServiceImpl.java b/src/main/java/com/ruoyi/approval/service/impl/ApprovalTempServiceImpl.java
new file mode 100644
index 0000000..34bc106
--- /dev/null
+++ b/src/main/java/com/ruoyi/approval/service/impl/ApprovalTempServiceImpl.java
@@ -0,0 +1,51 @@
+package com.ruoyi.approval.service.impl;
+
+import com.ruoyi.approval.domain.api.IApprovalTempDomain;
+import com.ruoyi.approval.domain.model.ApprovalTemp;
+import com.ruoyi.approval.service.api.IApprovalTempService;
+import com.ruoyi.approval.service.convert.ApprovalTempServiceConvert;
+import com.ruoyi.approval.service.dto.ApprovalTempDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 审批临时表Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-01-17
+ */
+@Service
+public class ApprovalTempServiceImpl implements IApprovalTempService
+{
+ @Autowired
+ private IApprovalTempDomain approvalTempDomain;
+
+ /**
+ * 查询审批临时表列表
+ *
+ * @param approvalTempDTO 审批临时表
+ * @return 审批临时表集合
+ */
+ @Override
+ public List selectApprovalTempList(ApprovalTempDTO approvalTempDTO)
+ {
+ ApprovalTemp model = ApprovalTempServiceConvert.toModel(approvalTempDTO);
+ List modelList = approvalTempDomain.selectApprovalTempList(model);
+ return ApprovalTempServiceConvert.toDTOList(modelList);
+ }
+
+ /**
+ * 根据ID查询审批临时表
+ *
+ * @param id 主键ID
+ * @return 审批临时表
+ */
+ @Override
+ public ApprovalTempDTO selectApprovalTempById(String id)
+ {
+ ApprovalTemp model = approvalTempDomain.selectApprovalTempById(id);
+ return ApprovalTempServiceConvert.toDTO(model);
+ }
+}
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
index a9063b4..5c45071 100644
--- a/src/main/resources/bootstrap.yml
+++ b/src/main/resources/bootstrap.yml
@@ -1,15 +1,19 @@
# Tomcat
server:
- port: 9201
+ port: 9203
# Spring
-spring:
+spring:
application:
# 应用名称
name: tuoheng-approval
profiles:
# 环境配置
active: prod
+ flyway:
+ table: flyway_approval_schema_history # 自定义历史表名
+ baseline-on-migrate: true # 在nocos中也有配置
+ baseline-version: 0 # 在nocos中也有配置
cloud:
nacos:
discovery:
diff --git a/src/main/resources/db/migration/V1__Create_approval_temp_table.sql b/src/main/resources/db/migration/V1__Create_approval_temp_table.sql
new file mode 100644
index 0000000..bccebea
--- /dev/null
+++ b/src/main/resources/db/migration/V1__Create_approval_temp_table.sql
@@ -0,0 +1,14 @@
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V1
+-- Description: Create tuoheng_approval_temp table
+-- Author: ruoyi
+-- Date: 2026-01-17
+-- ============================================================
+
+-- 创建审批临时表
+CREATE TABLE IF NOT EXISTS tuoheng_approval_temp (
+ id VARCHAR(64) NOT NULL COMMENT '主键ID',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审批临时表';
diff --git a/src/main/resources/mapper/approval/ApprovalTempMapper.xml b/src/main/resources/mapper/approval/ApprovalTempMapper.xml
new file mode 100644
index 0000000..e1d642b
--- /dev/null
+++ b/src/main/resources/mapper/approval/ApprovalTempMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+ select id from tuoheng_approval_temp
+
+
+
+
+
+
+
\ No newline at end of file