feat(dify): 添加工作流数据持久化功能
- 新增 WorkflowData 实体类用于存储工作流数据 - 创建 DifyWorkflowService 接口和实现类,用于处理工作流运行和数据保存- 添加 WorkflowMapper 和 WorkflowRepository接口,用于工作流数据的映射和持久化 - 在 V1WorkflowController 中集成新的工作流服务 - 更新 MyMetaObjectHandler 以自动填充用户 ID
This commit is contained in:
parent
f488856412
commit
4cd46e7b77
@ -33,7 +33,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
|
|||||||
this.strictInsertFill(metaObject, "createBy", String.class, userInfo.getUsername());
|
this.strictInsertFill(metaObject, "createBy", String.class, userInfo.getUsername());
|
||||||
this.strictInsertFill(metaObject, "deptId", Long.class, userInfo.getDeptId());
|
this.strictInsertFill(metaObject, "deptId", Long.class, userInfo.getDeptId());
|
||||||
this.strictInsertFill(metaObject, "createId", Long.class, userInfo.getCreateId());
|
this.strictInsertFill(metaObject, "createId", Long.class, userInfo.getCreateId());
|
||||||
|
this.strictInsertFill(metaObject,"userId",Long.class,userInfo.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.zsc.edu.dify.modules.dify.controller;
|
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.repo.AppEntityRepository;
|
||||||
|
import com.zsc.edu.dify.modules.dify.service.DifyWorkflowService;
|
||||||
import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult;
|
import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult;
|
||||||
import io.github.guoshiqiufeng.dify.workflow.DifyWorkflow;
|
import io.github.guoshiqiufeng.dify.workflow.DifyWorkflow;
|
||||||
import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowLogsRequest;
|
import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowLogsRequest;
|
||||||
@ -22,6 +24,9 @@ public class V1WorkflowController {
|
|||||||
@Resource
|
@Resource
|
||||||
private AppEntityRepository appEntityRepository;
|
private AppEntityRepository appEntityRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DifyWorkflowService difyWorkflowService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运行工作流
|
* 运行工作流
|
||||||
*
|
*
|
||||||
@ -30,10 +35,8 @@ public class V1WorkflowController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/run/{appId}")
|
@PostMapping("/run/{appId}")
|
||||||
@PreAuthorize("hasAuthority('dify:workflow:run')")
|
@PreAuthorize("hasAuthority('dify:workflow:run')")
|
||||||
public WorkflowRunResponse runWorkflow(@RequestBody WorkflowRunRequest request,@PathVariable String appId) {
|
public WorkflowData runWorkflow(@RequestBody WorkflowRunRequest request, @PathVariable String appId) {
|
||||||
String apiKey = appEntityRepository.selectApiKey(appId);
|
return difyWorkflowService.run(request, appId);
|
||||||
request.setApiKey(apiKey);
|
|
||||||
return difyWorkflow.runWorkflow(request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -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> {
|
||||||
|
}
|
@ -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> {
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user