feat(dify): 添加工作流数据持久化功能

- 新增 WorkflowData 实体类用于存储工作流数据
- 创建 DifyWorkflowService 接口和实现类,用于处理工作流运行和数据保存- 添加 WorkflowMapper 和 WorkflowRepository接口,用于工作流数据的映射和持久化
- 在 V1WorkflowController 中集成新的工作流服务
- 更新 MyMetaObjectHandler 以自动填充用户 ID
This commit is contained in:
zhuangtianxiang 2025-05-06 11:40:31 +08:00
parent f488856412
commit 4cd46e7b77
7 changed files with 97 additions and 5 deletions

View File

@ -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

View File

@ -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);
}
/**

View File

@ -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;
}

View File

@ -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<WorkflowRunResponse,WorkflowData> {
}

View File

@ -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<WorkflowData> {
}

View File

@ -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> {
WorkflowData run(WorkflowRunRequest request, String appId);
}

View File

@ -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<WorkflowRepository, WorkflowData> 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;
}
}