From 4cd46e7b77ffe2236dd93441554f286b6d0d173c Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Tue, 6 May 2025 11:40:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(dify):=20=E6=B7=BB=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E6=95=B0=E6=8D=AE=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 WorkflowData 实体类用于存储工作流数据 - 创建 DifyWorkflowService 接口和实现类,用于处理工作流运行和数据保存- 添加 WorkflowMapper 和 WorkflowRepository接口,用于工作流数据的映射和持久化 - 在 V1WorkflowController 中集成新的工作流服务 - 更新 MyMetaObjectHandler 以自动填充用户 ID --- .../mybatisplus/MyMetaObjectHandler.java | 2 +- .../dify/controller/V1WorkflowController.java | 11 ++++--- .../modules/dify/entity/WorkflowData.java | 29 ++++++++++++++++ .../modules/dify/mapper/WorkflowMapper.java | 11 +++++++ .../modules/dify/repo/WorkflowRepository.java | 7 ++++ .../dify/service/DifyWorkflowService.java | 9 +++++ .../service/Impl/DifyWorkflowServiceImpl.java | 33 +++++++++++++++++++ 7 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/zsc/edu/dify/modules/dify/entity/WorkflowData.java create mode 100644 src/main/java/com/zsc/edu/dify/modules/dify/mapper/WorkflowMapper.java create mode 100644 src/main/java/com/zsc/edu/dify/modules/dify/repo/WorkflowRepository.java create mode 100644 src/main/java/com/zsc/edu/dify/modules/dify/service/DifyWorkflowService.java create mode 100644 src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/DifyWorkflowServiceImpl.java diff --git a/src/main/java/com/zsc/edu/dify/framework/mybatisplus/MyMetaObjectHandler.java b/src/main/java/com/zsc/edu/dify/framework/mybatisplus/MyMetaObjectHandler.java index adc0706..edac839 100644 --- a/src/main/java/com/zsc/edu/dify/framework/mybatisplus/MyMetaObjectHandler.java +++ b/src/main/java/com/zsc/edu/dify/framework/mybatisplus/MyMetaObjectHandler.java @@ -33,7 +33,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler { this.strictInsertFill(metaObject, "createBy", String.class, userInfo.getUsername()); this.strictInsertFill(metaObject, "deptId", Long.class, userInfo.getDeptId()); this.strictInsertFill(metaObject, "createId", Long.class, userInfo.getCreateId()); - + this.strictInsertFill(metaObject,"userId",Long.class,userInfo.getId()); } @Override diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1WorkflowController.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1WorkflowController.java index 4a54002..76b43c4 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1WorkflowController.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1WorkflowController.java @@ -1,6 +1,8 @@ package com.zsc.edu.dify.modules.dify.controller; +import com.zsc.edu.dify.modules.dify.entity.WorkflowData; import com.zsc.edu.dify.modules.dify.repo.AppEntityRepository; +import com.zsc.edu.dify.modules.dify.service.DifyWorkflowService; import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult; import io.github.guoshiqiufeng.dify.workflow.DifyWorkflow; import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowLogsRequest; @@ -22,6 +24,9 @@ public class V1WorkflowController { @Resource private AppEntityRepository appEntityRepository; + @Resource + private DifyWorkflowService difyWorkflowService; + /** * 运行工作流 * @@ -30,10 +35,8 @@ public class V1WorkflowController { */ @PostMapping("/run/{appId}") @PreAuthorize("hasAuthority('dify:workflow:run')") - public WorkflowRunResponse runWorkflow(@RequestBody WorkflowRunRequest request,@PathVariable String appId) { - String apiKey = appEntityRepository.selectApiKey(appId); - request.setApiKey(apiKey); - return difyWorkflow.runWorkflow(request); + public WorkflowData runWorkflow(@RequestBody WorkflowRunRequest request, @PathVariable String appId) { + return difyWorkflowService.run(request, appId); } /** diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/entity/WorkflowData.java b/src/main/java/com/zsc/edu/dify/modules/dify/entity/WorkflowData.java new file mode 100644 index 0000000..7cb76cd --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/entity/WorkflowData.java @@ -0,0 +1,29 @@ +package com.zsc.edu.dify.modules.dify.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zsc.edu.dify.framework.json.JsonbTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.Map; + +@Getter +@Setter +@Data +@TableName("workflow_data") +public class WorkflowData { + @TableId + private Long id; + + private String workflowRunId; + + private String taskId; + + @TableField(value = "user_id", fill = FieldFill.INSERT) + private Long userId; +} diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/mapper/WorkflowMapper.java b/src/main/java/com/zsc/edu/dify/modules/dify/mapper/WorkflowMapper.java new file mode 100644 index 0000000..9174ef7 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/mapper/WorkflowMapper.java @@ -0,0 +1,11 @@ +package com.zsc.edu.dify.modules.dify.mapper; + +import com.zsc.edu.dify.common.mapstruct.BaseMapper; +import com.zsc.edu.dify.modules.dify.entity.WorkflowData; +import io.github.guoshiqiufeng.dify.workflow.dto.response.WorkflowRunResponse; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface WorkflowMapper extends BaseMapper { +} diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/repo/WorkflowRepository.java b/src/main/java/com/zsc/edu/dify/modules/dify/repo/WorkflowRepository.java new file mode 100644 index 0000000..7c4e7a7 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/repo/WorkflowRepository.java @@ -0,0 +1,7 @@ +package com.zsc.edu.dify.modules.dify.repo; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zsc.edu.dify.modules.dify.entity.WorkflowData; + +public interface WorkflowRepository extends BaseMapper { +} diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/service/DifyWorkflowService.java b/src/main/java/com/zsc/edu/dify/modules/dify/service/DifyWorkflowService.java new file mode 100644 index 0000000..118e99c --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/service/DifyWorkflowService.java @@ -0,0 +1,9 @@ +package com.zsc.edu.dify.modules.dify.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zsc.edu.dify.modules.dify.entity.WorkflowData; +import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowRunRequest; + +public interface DifyWorkflowService extends IService { + WorkflowData run(WorkflowRunRequest request, String appId); +} diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/DifyWorkflowServiceImpl.java b/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/DifyWorkflowServiceImpl.java new file mode 100644 index 0000000..1e371f2 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/DifyWorkflowServiceImpl.java @@ -0,0 +1,33 @@ +package com.zsc.edu.dify.modules.dify.service.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zsc.edu.dify.modules.dify.entity.WorkflowData; +import com.zsc.edu.dify.modules.dify.mapper.WorkflowMapper; +import com.zsc.edu.dify.modules.dify.repo.AppEntityRepository; +import com.zsc.edu.dify.modules.dify.repo.WorkflowRepository; +import com.zsc.edu.dify.modules.dify.service.DifyWorkflowService; +import io.github.guoshiqiufeng.dify.workflow.DifyWorkflow; +import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowRunRequest; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class DifyWorkflowServiceImpl extends ServiceImpl implements DifyWorkflowService { + @Resource + AppEntityRepository appEntityRepository; + @Resource + DifyWorkflow difyWorkflow; + @Resource + WorkflowMapper mapper; + + @Override + public WorkflowData run(WorkflowRunRequest request, String appId){ + String apiKey = appEntityRepository.selectApiKey(appId); + request.setApiKey(apiKey); + WorkflowData workflowData =mapper.toEntity(difyWorkflow.runWorkflow(request)); + baseMapper.insert(workflowData); + return workflowData; + } +}