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