refactor(dify): 重构实体类和接口名称

- 将 AppsResponse 重命名为 AppEntity- 将 AppsResponseMapper 重命名为 AppEntityMapper
- 将 AppsResponseRepository 重命名为 AppEntityRepository
- 更新了相关服务和控制器中的类和方法名称
- 调整了部分代码结构以适应新的命名
This commit is contained in:
zhuangtianxiang 2025-04-25 19:34:56 +08:00
parent b482197819
commit b4d5584f9b
11 changed files with 93 additions and 49 deletions

View File

@ -1,14 +1,12 @@
package com.zsc.edu.dify.modules.dify.controller; package com.zsc.edu.dify.modules.dify.controller;
import com.zsc.edu.dify.modules.dify.service.DifyServerService; import com.zsc.edu.dify.modules.dify.repo.AppEntityRepository;
import io.github.guoshiqiufeng.dify.chat.DifyChat; import io.github.guoshiqiufeng.dify.chat.DifyChat;
import io.github.guoshiqiufeng.dify.chat.dto.request.ChatMessageSendRequest; import io.github.guoshiqiufeng.dify.chat.dto.request.ChatMessageSendRequest;
import io.github.guoshiqiufeng.dify.chat.dto.request.MessageConversationsRequest; import io.github.guoshiqiufeng.dify.chat.dto.request.MessageConversationsRequest;
import io.github.guoshiqiufeng.dify.chat.dto.request.MessagesRequest;
import io.github.guoshiqiufeng.dify.chat.dto.response.ChatMessageSendCompletionResponse; import io.github.guoshiqiufeng.dify.chat.dto.response.ChatMessageSendCompletionResponse;
import io.github.guoshiqiufeng.dify.chat.dto.response.MessageConversationsResponse; import io.github.guoshiqiufeng.dify.chat.dto.response.MessageConversationsResponse;
import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult; import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult;
import io.github.guoshiqiufeng.dify.core.pojo.response.MessagesResponseVO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -25,6 +23,8 @@ public class V1ChatController {
@Resource @Resource
private DifyChat difyChat; private DifyChat difyChat;
@Resource
private AppEntityRepository appEntityRepository;
/** /**
* 发送消息流式 * 发送消息流式
@ -33,8 +33,9 @@ public class V1ChatController {
* 用户 id可以改为从上下文token获取 * 用户 id可以改为从上下文token获取
* apikey 建议在数据库进行存储前端调用时传智能体 id从数据库查询 * apikey 建议在数据库进行存储前端调用时传智能体 id从数据库查询
*/ */
@PostMapping(value = "/completions", produces = MediaType.TEXT_EVENT_STREAM_VALUE) @PostMapping(value = "/completions/{appId}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatMessageSendCompletionResponse> sendChatMessageStream(@RequestBody ChatMessageSendRequest sendRequest) { public Flux<ChatMessageSendCompletionResponse> sendChatMessageStream(@RequestBody ChatMessageSendRequest sendRequest,@PathVariable String appId) {
sendRequest.setApiKey(appEntityRepository.selectApiKey(appId));
return difyChat.sendChatMessageStream(sendRequest); return difyChat.sendChatMessageStream(sendRequest);
} }
@ -44,7 +45,7 @@ public class V1ChatController {
* @param request 请求参数 * @param request 请求参数
* @return 会话列表 * @return 会话列表
*/ */
@GetMapping("/conversations") @PostMapping("/conversations")
public DifyPageResult<MessageConversationsResponse> conversations(@RequestBody MessageConversationsRequest request) { public DifyPageResult<MessageConversationsResponse> conversations(@RequestBody MessageConversationsRequest request) {
request.setApiKey("app-mM2UGTE5QVPLCwGvwifnV0g7"); request.setApiKey("app-mM2UGTE5QVPLCwGvwifnV0g7");
return difyChat.conversations(request); return difyChat.conversations(request);
@ -56,23 +57,11 @@ public class V1ChatController {
* @param taskId 任务id * @param taskId 任务id
* @param userId 用户id * @param userId 用户id
*/ */
@GetMapping("/stopMessagesStream") @PatchMapping("/stopMessagesStream")
public void stopMessagesStream( String taskId, String userId) { public void stopMessagesStream( String taskId, String userId) {
difyChat.stopMessagesStream("app-mM2UGTE5QVPLCwGvwifnV0g7", taskId, userId); difyChat.stopMessagesStream("app-mM2UGTE5QVPLCwGvwifnV0g7", taskId, userId);
} }
/**
* 获取消息列表
*
* @param request 请求参数
* @return 消息列表
*/
@GetMapping("/messages")
public DifyPageResult<MessagesResponseVO> messages(@RequestBody MessagesRequest request) {
request.setApiKey("app-mM2UGTE5QVPLCwGvwifnV0g7");
return difyChat.messages(request);
}
/** /**
* 删除会话 * 删除会话
* *

View File

@ -19,8 +19,9 @@ public class V1DatasetController {
* @param request * @param request
* @return * @return
*/ */
@GetMapping("/page") @PostMapping("/page")
public DifyPageResult<DatasetResponse> page(@RequestBody DatasetPageRequest request){ public DifyPageResult<DatasetResponse> page(@RequestBody DatasetPageRequest request){
request.setApiKey("dataset-kN5WTJ8jR877YfN1A34JceVg");
return difyDataset.page(request); return difyDataset.page(request);
} }
@ -30,8 +31,8 @@ public class V1DatasetController {
* @param request * @param request
* @return * @return
*/ */
@GetMapping("/createDocumentByFile") @PostMapping("/createDocumentByFile")
public DocumentCreateResponse createDocumentByFile(@RequestBody DocumentCreateByFileRequest request){ public DocumentCreateResponse createDocumentByFile(DocumentCreateByFileRequest request){
return difyDataset.createDocumentByFile(request); return difyDataset.createDocumentByFile(request);
} }
@ -43,6 +44,7 @@ public class V1DatasetController {
*/ */
@GetMapping("/pageDocument") @GetMapping("/pageDocument")
public DifyPageResult<DocumentInfo> pageDocument(@RequestBody DatasetPageDocumentRequest request){ public DifyPageResult<DocumentInfo> pageDocument(@RequestBody DatasetPageDocumentRequest request){
request.setApiKey("dataset-kN5WTJ8jR877YfN1A34JceVg");
return difyDataset.pageDocument(request); return difyDataset.pageDocument(request);
} }
@ -55,7 +57,7 @@ public class V1DatasetController {
*/ */
@PostMapping("/uploadFileInfo") @PostMapping("/uploadFileInfo")
public UploadFileInfoResponse uploadFileInfo(String datasetId, String documentId){ public UploadFileInfoResponse uploadFileInfo(String datasetId, String documentId){
return difyDataset.uploadFileInfo(datasetId, documentId,"app-mM2UGTE5QVPLCwGvwifnV0g7"); return difyDataset.uploadFileInfo(datasetId, documentId,"dataset-kN5WTJ8jR877YfN1A34JceVg");
} }
/** /**

View File

@ -1,5 +1,7 @@
package com.zsc.edu.dify.modules.dify.controller; package com.zsc.edu.dify.modules.dify.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zsc.edu.dify.modules.dify.entity.AppEntity;
import com.zsc.edu.dify.modules.dify.service.DifyServerService; import com.zsc.edu.dify.modules.dify.service.DifyServerService;
import io.github.guoshiqiufeng.dify.server.DifyServer; import io.github.guoshiqiufeng.dify.server.DifyServer;
import io.github.guoshiqiufeng.dify.server.dto.response.ApiKeyResponseVO; import io.github.guoshiqiufeng.dify.server.dto.response.ApiKeyResponseVO;
@ -78,4 +80,13 @@ public class V1ServerController {
public List<DatasetApiKeyResponseVO> initDatasetApiKey() { public List<DatasetApiKeyResponseVO> initDatasetApiKey() {
return difyServer.initDatasetApiKey(); return difyServer.initDatasetApiKey();
} }
/**
*
*/
@PostMapping("/app/{id}")
public boolean enabledApp(@PathVariable("id") String id) {
return true;
}
} }

View File

@ -24,6 +24,7 @@ public class V1WorkflowController {
*/ */
@PostMapping("/run") @PostMapping("/run")
public WorkflowRunResponse runWorkflow(@RequestBody WorkflowRunRequest request) { public WorkflowRunResponse runWorkflow(@RequestBody WorkflowRunRequest request) {
request.setApiKey("app-ZpkQM6yy767oUTfNSBYq65nB");
return difyWorkflow.runWorkflow(request); return difyWorkflow.runWorkflow(request);
} }
@ -35,6 +36,7 @@ public class V1WorkflowController {
*/ */
@PostMapping("/run/stream") @PostMapping("/run/stream")
public Flux<WorkflowRunStreamResponse> runWorkflowStream(@RequestBody WorkflowRunRequest request) { public Flux<WorkflowRunStreamResponse> runWorkflowStream(@RequestBody WorkflowRunRequest request) {
request.setApiKey("app-ZpkQM6yy767oUTfNSBYq65nB");
return difyWorkflow.runWorkflowStream(request); return difyWorkflow.runWorkflowStream(request);
} }
@ -58,7 +60,7 @@ public class V1WorkflowController {
*/ */
@GetMapping("/info") @GetMapping("/info")
public WorkflowInfoResponse info(String workflowRunId) { public WorkflowInfoResponse info(String workflowRunId) {
return difyWorkflow.info(workflowRunId, "app-mM2UGTE5QVPLCwGvwifnV0g7"); return difyWorkflow.info(workflowRunId, "app-ZpkQM6yy767oUTfNSBYq65nB");
} }
/** /**
@ -67,8 +69,9 @@ public class V1WorkflowController {
* @param request * @param request
* @return * @return
*/ */
@GetMapping("/logs") @PostMapping("/logs")
public DifyPageResult<WorkflowLogs> logs(@RequestBody WorkflowLogsRequest request) { public DifyPageResult<WorkflowLogs> logs(@RequestBody WorkflowLogsRequest request) {
request.setApiKey("app-ZpkQM6yy767oUTfNSBYq65nB");
return difyWorkflow.logs(request); return difyWorkflow.logs(request);
} }
} }

View File

@ -3,6 +3,7 @@ package com.zsc.edu.dify.modules.dify.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.zsc.edu.dify.framework.json.JsonbTypeHandler; import com.zsc.edu.dify.framework.json.JsonbTypeHandler;
import com.zsc.edu.dify.modules.system.vo.MenuVo;
import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO; import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO;
import lombok.*; import lombok.*;
@ -11,11 +12,15 @@ import java.util.Map;
/** /**
* @author zhuang * @author zhuang
*
*
*/ */
@EqualsAndHashCode(callSuper = true)
@Getter @Getter
@Setter @Setter
@TableName("apps_response") @Data
public class AppsResponse extends AppsResponseVO { @TableName("apps_entity")
public class AppEntity extends AppsResponseVO {
@TableField(typeHandler = JsonbTypeHandler.class) @TableField(typeHandler = JsonbTypeHandler.class)
private Map<String, Object> modelConfig; private Map<String, Object> modelConfig;
@ -26,4 +31,19 @@ public class AppsResponse extends AppsResponseVO {
@TableField(typeHandler = JsonbTypeHandler.class) @TableField(typeHandler = JsonbTypeHandler.class)
private List<String> tags; private List<String> tags;
@TableField(typeHandler = JsonbTypeHandler.class)
private Map<String, Object> site;
@TableField(typeHandler = JsonbTypeHandler.class)
private List<String> deletedTools;
private boolean enabled;
private String apiKey;
/**
* 子菜单
*/
@TableField(exist = false)
private List<AppEntity> children = null;
} }

View File

@ -1,11 +1,11 @@
package com.zsc.edu.dify.modules.dify.mapper; package com.zsc.edu.dify.modules.dify.mapper;
import com.zsc.edu.dify.common.mapstruct.BaseMapper; import com.zsc.edu.dify.common.mapstruct.BaseMapper;
import com.zsc.edu.dify.modules.dify.entity.AppsResponse; import com.zsc.edu.dify.modules.dify.entity.AppEntity;
import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO; import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface AppsResponseMapper extends BaseMapper<AppsResponseVO, AppsResponse> { public interface AppEntityMapper extends BaseMapper<AppsResponseVO, AppEntity> {
} }

View File

@ -0,0 +1,11 @@
package com.zsc.edu.dify.modules.dify.repo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsc.edu.dify.modules.dify.entity.AppEntity;
import org.apache.ibatis.annotations.Select;
public interface AppEntityRepository extends BaseMapper<AppEntity> {
@Select("select api_key from apps_entity where id = #{appId}")
String selectApiKey(String appId);
}

View File

@ -1,7 +0,0 @@
package com.zsc.edu.dify.modules.dify.repo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsc.edu.dify.modules.dify.entity.AppsResponse;
public interface AppsResponseRepository extends BaseMapper<AppsResponse> {
}

View File

@ -1,11 +1,12 @@
package com.zsc.edu.dify.modules.dify.service; package com.zsc.edu.dify.modules.dify.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zsc.edu.dify.modules.dify.entity.AppsResponse; import com.zsc.edu.dify.modules.dify.entity.AppEntity;
import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO; import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO;
import java.util.List; import java.util.List;
public interface DifyServerService extends IService<AppsResponse> { public interface DifyServerService extends IService<AppEntity> {
List<AppsResponseVO> getApps(String mode, String name); List<AppsResponseVO> getApps(String mode, String name);
} }

View File

@ -3,26 +3,29 @@ package com.zsc.edu.dify.modules.dify.service.Impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zsc.edu.dify.modules.dify.entity.AppsResponse; import com.zsc.edu.dify.common.util.TreeUtil;
import com.zsc.edu.dify.modules.dify.mapper.AppsResponseMapper; import com.zsc.edu.dify.exception.ConstraintException;
import com.zsc.edu.dify.modules.dify.repo.AppsResponseRepository; import com.zsc.edu.dify.modules.dify.entity.AppEntity;
import com.zsc.edu.dify.modules.dify.mapper.AppEntityMapper;
import com.zsc.edu.dify.modules.dify.repo.AppEntityRepository;
import com.zsc.edu.dify.modules.dify.service.DifyServerService; import com.zsc.edu.dify.modules.dify.service.DifyServerService;
import io.github.guoshiqiufeng.dify.server.DifyServer; import io.github.guoshiqiufeng.dify.server.DifyServer;
import io.github.guoshiqiufeng.dify.server.dto.response.ApiKeyResponseVO;
import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO; import io.github.guoshiqiufeng.dify.server.dto.response.AppsResponseVO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.*;
/** /**
* @author zhuang * @author zhuang
*/ */
@AllArgsConstructor @AllArgsConstructor
@Service @Service
public class DifyServerServiceImpl extends ServiceImpl<AppsResponseRepository, AppsResponse> implements DifyServerService { public class DifyServerServiceImpl extends ServiceImpl<AppEntityRepository, AppEntity> implements DifyServerService {
@Resource @Resource
private AppsResponseMapper appsResponseMapper; private AppEntityMapper appEntityMapper;
@Resource @Resource
private DifyServer difyServer; private DifyServer difyServer;
@ -33,14 +36,25 @@ public class DifyServerServiceImpl extends ServiceImpl<AppsResponseRepository, A
public List<AppsResponseVO> addApps(List<AppsResponseVO> appsResponseList) { public List<AppsResponseVO> addApps(List<AppsResponseVO> appsResponseList) {
for(AppsResponseVO appsResponse : appsResponseList){ for(AppsResponseVO appsResponse : appsResponseList){
boolean isHave = baseMapper.exists(new QueryWrapper<AppsResponse>().eq("id", appsResponse.getId())); boolean isHave = baseMapper.exists(new QueryWrapper<AppEntity>().eq("id", appsResponse.getId()));
if(!isHave){ if(!isHave){
baseMapper.insert(appsResponseMapper.toEntity(appsResponse)); AppEntity appEntity = appEntityMapper.toEntity(appsResponse);
baseMapper.insert(appEntity);
List<ApiKeyResponseVO> apiKeyList =difyServer.getAppApiKey(appsResponse.getId());
if (apiKeyList != null) {
difyServer.initAppApiKey(appsResponse.getId());
Optional<ApiKeyResponseVO> apiKeyResponseVO = apiKeyList.stream()
.filter(apiKey -> apiKey.getToken() != null)
.findFirst();
apiKeyResponseVO.ifPresent(apiKey -> appEntity.setApiKey(apiKey.getToken()));
}
baseMapper.updateById(appEntity);
}else{ }else{
baseMapper.updateById(appsResponseMapper.toEntity(appsResponse)); baseMapper.updateById(appEntityMapper.toEntity(appsResponse));
} }
} }
return appsResponseList; return appsResponseList;
} }
} }

View File

@ -63,5 +63,5 @@ dify:
server: server:
email: 2913129173@qq.com # 请替换为实际的 Dify 服务邮箱,若不需要调用 server相关接口可不填 email: 2913129173@qq.com # 请替换为实际的 Dify 服务邮箱,若不需要调用 server相关接口可不填
password: tian14384, # 请替换为实际的 Dify 服务密码,若不需要调用 server相关接口可不填 password: tian14384, # 请替换为实际的 Dify 服务密码,若不需要调用 server相关接口可不填
# dataset: dataset:
# api-key: dataset-kN5WTJ8jR877YfN1A34JceVg # 请替换为实际的知识库api-key, 若不需要调用知识库可不填 api-key: dataset-kN5WTJ8jR877YfN1A34JceVg # 请替换为实际的知识库api-key, 若不需要调用知识库可不填