From 5ea0ad3edc6b9a705cceac609e57786fb7afe74c Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Fri, 16 May 2025 17:27:08 +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=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=92=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增工作流数据的详情、分页查询和删除接口 - 实现工作流数据的存储和解析- 优化聊天控制器中的异常处理 - 更新工作流控制器,支持新的数据操作接口 - 修改工作流实体类,增加运行数据和自定义数据字段 --- .../dify/controller/V1ChatController.java | 7 ++-- .../dify/controller/V1WorkflowController.java | 37 +++++++++++++++++++ .../modules/dify/entity/WorkflowData.java | 11 +++++- .../dify/service/DifyWorkflowService.java | 7 ++++ .../service/Impl/DifyWorkflowServiceImpl.java | 26 +++++++++++++ .../edu/dify/DifyBackendApplicationTests.java | 5 +-- 6 files changed, 86 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java index c33ce6f..f3b3dd9 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/V1ChatController.java @@ -54,7 +54,7 @@ public class V1ChatController { ) { sendRequest.setApiKey(appEntityService.getApikey(appId)); sendRequest.setUserId(SecurityUtil.getUserInfo().id.toString()); - return ExceptionUtil.difyException(()->difyChat.send(sendRequest)); + return difyChat.send(sendRequest); } @@ -100,11 +100,12 @@ public class V1ChatController { */ @PostMapping("/messages/{appid}") @PreAuthorize("hasAuthority('dify:chat:query')") - public DifyPageResult conversations( + public DifyPageResult messages( @RequestBody MessagesRequest request, @PathVariable String appid ) { String apiKey = appEntityService.getApikey(appid); + request.setUserId(SecurityUtil.getUserInfo().id.toString()); request.setApiKey(apiKey); return ExceptionUtil.difyException(()->difyChat.messages(request)); } @@ -136,7 +137,7 @@ public class V1ChatController { try{ difyChat.deleteConversation(conversationId, apiKey,userId); }catch (RuntimeException e){ - throw new RuntimeException("删除会话失败"+e.getMessage()); + throw new ApiException("删除会话失败"+e.getMessage()); } } 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 6835c7f..2ab9b0d 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,7 @@ package com.zsc.edu.dify.modules.dify.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zsc.edu.dify.exception.ExceptionUtil; import com.zsc.edu.dify.framework.mybatisplus.DataPermission; import com.zsc.edu.dify.framework.security.SecurityUtil; @@ -101,6 +102,7 @@ public class V1WorkflowController { /** * 日志列表 + * * @param appId * @return */ @@ -111,4 +113,39 @@ public class V1WorkflowController { return difyWorkflowService.list(new QueryWrapper().eq("app_id",appId)); } + /** + * 详情 + * + * @param id + * @return + */ + @GetMapping("/detail/{id}") + @PreAuthorize("hasAuthority('dify:workflow:query')") + public WorkflowData detail(@PathVariable Long id){ + return difyWorkflowService.detail(id); + } + + /** + * 删除 + * + * @param id + * @return + */ + @DeleteMapping("/delete/{id}") + @PreAuthorize("hasAuthority('dify:workflow:delete')") + public boolean delete(@PathVariable Long id){ + return difyWorkflowService.delete(id); + } + + /** + * 分页查询 + * + * @param page + * @return + */ + @GetMapping("/query") + @PreAuthorize("hasAuthority('dify:workflow:query')") + public Page query(Page page){ + return difyWorkflowService.query(page); + } } 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 index 373d1e5..9b063a8 100644 --- 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 @@ -1,9 +1,12 @@ package com.zsc.edu.dify.modules.dify.entity; +import com.alibaba.fastjson2.JSON; 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 io.github.guoshiqiufeng.dify.workflow.dto.response.WorkflowRunResponse; import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -13,7 +16,7 @@ import lombok.Setter; @Setter @Data @TableName("workflow_data") -public class WorkflowData { +public class WorkflowData{ @TableId private Long id; @@ -31,4 +34,10 @@ public class WorkflowData { @TableField(value = "dept_id", fill = FieldFill.INSERT) private Long deptId; + + @TableField(exist = false) + private WorkflowRunResponse.WorkflowRunData runData; + + @TableField(typeHandler = JsonbTypeHandler.class) + private String data; } 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 index af33588..7a7bc02 100644 --- 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 @@ -1,5 +1,6 @@ package com.zsc.edu.dify.modules.dify.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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; @@ -8,4 +9,10 @@ import io.github.guoshiqiufeng.dify.workflow.dto.response.WorkflowRunResponse; public interface DifyWorkflowService extends IService { WorkflowRunResponse run(WorkflowRunRequest request, String appId); + + WorkflowData detail(Long id); + + Page query(Page page); + + boolean delete(Long id); } 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 index 7732402..9e903cf 100644 --- 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 @@ -1,5 +1,8 @@ package com.zsc.edu.dify.modules.dify.service.Impl; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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; @@ -36,7 +39,30 @@ public class DifyWorkflowServiceImpl extends ServiceImpl query(Page page){ + return baseMapper.selectPage(page,new QueryWrapper<>()); + } + + @Override + public boolean delete(Long id){ + return baseMapper.deleteById(id) > 0; + } } diff --git a/src/test/java/com/zsc/edu/dify/DifyBackendApplicationTests.java b/src/test/java/com/zsc/edu/dify/DifyBackendApplicationTests.java index 3b88e1d..f465e39 100644 --- a/src/test/java/com/zsc/edu/dify/DifyBackendApplicationTests.java +++ b/src/test/java/com/zsc/edu/dify/DifyBackendApplicationTests.java @@ -1,5 +1,7 @@ package com.zsc.edu.dify; +import com.zsc.edu.dify.modules.dify.repo.AppEntityRepository; +import com.zsc.edu.dify.modules.dify.service.AppEntityService; import com.zsc.edu.dify.modules.message.repo.BulletinRepository; import com.zsc.edu.dify.modules.system.repo.UserRepository; import jakarta.annotation.Resource; @@ -17,7 +19,4 @@ class DifyBackendApplicationTests { void contextLoads() { // bulletinRepository.selectAll(); } - - - }