diff --git a/src/main/java/com/zsc/edu/dify/DifyBackendApplication.java b/src/main/java/com/zsc/edu/dify/DifyBackendApplication.java index 112c8f3..6ed773c 100644 --- a/src/main/java/com/zsc/edu/dify/DifyBackendApplication.java +++ b/src/main/java/com/zsc/edu/dify/DifyBackendApplication.java @@ -2,10 +2,12 @@ package com.zsc.edu.dify; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAspectJAutoProxy +@EnableCaching public class DifyBackendApplication { public static void main(String[] args) { 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 d571350..bde45fc 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 @@ -1,7 +1,10 @@ package com.zsc.edu.dify.modules.dify.controller; +import com.zsc.edu.dify.exception.ExceptionUtil; +import com.zsc.edu.dify.framework.security.SecurityUtil; import com.zsc.edu.dify.modules.dify.service.AppEntityService; import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation; +import com.zsc.edu.dify.modules.system.service.UserService; import io.github.guoshiqiufeng.dify.chat.DifyChat; import io.github.guoshiqiufeng.dify.chat.dto.request.ChatMessageSendRequest; import io.github.guoshiqiufeng.dify.chat.dto.request.MessageConversationsRequest; @@ -43,8 +46,9 @@ public class V1ChatController { @RequestBody ChatMessageSendRequest sendRequest, @PathVariable String appId ) { - sendRequest.setApiKey(appEntityService.getApikeyByRedis(appId)); - return difyChat.send(sendRequest); + sendRequest.setApiKey(appEntityService.getApikey(appId)); + sendRequest.setUserId(SecurityUtil.getUserInfo().id.toString()); + return ExceptionUtil.difyException(()->difyChat.send(sendRequest)); } @@ -61,7 +65,7 @@ public class V1ChatController { @RequestBody ChatMessageSendRequest sendRequest, @PathVariable String appid ) { - sendRequest.setApiKey(appEntityService.getApikeyByRedis(appid)); + sendRequest.setApiKey(appEntityService.getApikey(appid)); return difyChat.sendChatMessageStream(sendRequest); } @@ -77,7 +81,8 @@ public class V1ChatController { @RequestBody MessageConversationsRequest request, @PathVariable String appId ) { - request.setApiKey(appEntityService.getApikeyByRedis(appId)); + request.setApiKey(appEntityService.getApikey(appId)); + request.setUserId(SecurityUtil.getUserInfo().id.toString()); return difyChat.conversations(request); } @@ -85,26 +90,26 @@ public class V1ChatController { * 停止流式消息 * * @param taskId 任务id - * @param userId 用户id */ @PatchMapping("/stream/stop") - public void stopMessagesStream(@RequestParam String taskId, @RequestParam String userId, @RequestParam String appId) { - String apiKey = appEntityService.getApikeyByRedis(appId); - difyChat.stopMessagesStream(apiKey, taskId, userId); + public void stopMessagesStream(@RequestParam String taskId, @RequestParam String appId) { + String apiKey = appEntityService.getApikey(appId); + String userId = SecurityUtil.getUserInfo().id.toString(); + difyChat.stopMessagesStream(apiKey, taskId,userId); } /** * 删除会话 * * @param conversationId 会话id - * @param userId 用户id */ @DeleteMapping("/conversation") @PreAuthorize("hasAuthority('dify:chat:delete')") @OperationLogAnnotation(content = "'dify对话", operationType = "删除") - public void deleteConversation(@RequestParam String conversationId, @RequestParam String userId, @RequestParam String appId) { - String apiKey = appEntityService.getApikeyByRedis(appId); - difyChat.deleteConversation(conversationId, apiKey, userId); + public void deleteConversation(@RequestParam String conversationId, @RequestParam String appId) { + String apiKey = appEntityService.getApikey(appId); + String userId = SecurityUtil.getUserInfo().id.toString(); + difyChat.deleteConversation(conversationId, apiKey,userId); } 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 9f14a27..2f0a4d6 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,8 +1,8 @@ package com.zsc.edu.dify.modules.dify.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zsc.edu.dify.framework.security.SecurityUtil; 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.AppEntityService; import com.zsc.edu.dify.modules.dify.service.DifyWorkflowService; import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation; @@ -41,6 +41,7 @@ public class V1WorkflowController { @PreAuthorize("hasAuthority('dify:workflow:run')") @OperationLogAnnotation(content = "'dify工作流'", operationType = "运行") public WorkflowRunResponse runWorkflow(@RequestBody WorkflowRunRequest request, @PathVariable String appId) { + request.setUserId(SecurityUtil.getUserInfo().id.toString()); return difyWorkflowService.run(request, appId); } @@ -59,13 +60,13 @@ public class V1WorkflowController { * 停止工作流(流式) * * @param taskId - * @param userId * @return */ @PatchMapping("/stop/{appId}") - public WorkflowStopResponse stopWorkflowStream(String taskId, String userId, @PathVariable String appId) { - String apiKey =appEntityService.getApikeyByRedis(appId); - return difyWorkflow.stopWorkflowStream(apiKey, taskId, userId); + public WorkflowStopResponse stopWorkflowStream(String taskId, @PathVariable String appId) { + String apiKey =appEntityService.getApikey(appId); + String userId = SecurityUtil.getUserInfo().id.toString(); + return difyWorkflow.stopWorkflowStream(apiKey, taskId,userId); } /** @@ -77,7 +78,7 @@ public class V1WorkflowController { @GetMapping("/info/{appId}") @PreAuthorize("hasAuthority('dify:workflow:info')") public WorkflowInfoResponse info(String workflowRunId, @PathVariable String appId) { - String apiKey =appEntityService.getApikeyByRedis(appId); + String apiKey =appEntityService.getApikey(appId); return difyWorkflow.info(workflowRunId, apiKey); } @@ -90,7 +91,7 @@ public class V1WorkflowController { @PostMapping("/logs/{appId}") @PreAuthorize("hasAuthority('dify:workflow:log')") public DifyPageResult logs(@RequestBody WorkflowLogsRequest request, @PathVariable String appId) { - String apiKey = appEntityService.getApikeyByRedis(appId); + String apiKey = appEntityService.getApikey(appId); request.setApiKey(apiKey); final DifyPageResult logs = difyWorkflow.logs(request); return logs; diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/service/AppEntityService.java b/src/main/java/com/zsc/edu/dify/modules/dify/service/AppEntityService.java index 5a8a97c..b0cb47d 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/service/AppEntityService.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/service/AppEntityService.java @@ -11,5 +11,5 @@ public interface AppEntityService extends IService { boolean enabledApp(String id); - String getApikeyByRedis(String appId); + String getApikey(String appId); } diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java b/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java index d4da030..77e1623 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/service/Impl/AppEntityServiceImpl.java @@ -35,6 +35,11 @@ public class AppEntityServiceImpl extends ServiceImpl addApps(List appsResponseList) { for(AppsResponseVO appsResponse : appsResponseList){ boolean isHave = baseMapper.exists(new QueryWrapper().eq("id", appsResponse.getId())); @@ -58,6 +63,11 @@ public class AppEntityServiceImpl extends ServiceImpl implements DifyWorkflowService { @Resource - AppEntityRepository appEntityRepository; + AppEntityService appEntityService; @Resource DifyWorkflow difyWorkflow; @Resource WorkflowMapper mapper; + /** + * 运行保存信息 + * @param request + * @param appId + * @return + */ @Override public WorkflowRunResponse run(WorkflowRunRequest request, String appId){ - String apiKey = appEntityRepository.selectApiKey(appId); + String apiKey = appEntityService.getApikey(appId); request.setApiKey(apiKey); WorkflowRunResponse response = difyWorkflow.runWorkflow(request); - WorkflowData workflowData =mapper.toEntity(response); + WorkflowData workflowData =mapper.toEntity(response); workflowData.setAppId(appId); baseMapper.insert(workflowData); return response; diff --git a/src/main/java/com/zsc/edu/dify/modules/system/service/UserService.java b/src/main/java/com/zsc/edu/dify/modules/system/service/UserService.java index 516f190..dfb12de 100644 --- a/src/main/java/com/zsc/edu/dify/modules/system/service/UserService.java +++ b/src/main/java/com/zsc/edu/dify/modules/system/service/UserService.java @@ -4,6 +4,7 @@ import com.zsc.edu.dify.framework.security.UserDetailsImpl; import com.zsc.edu.dify.modules.system.dto.*; import com.zsc.edu.dify.modules.system.entity.User; import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.cache.annotation.Cacheable; /** *

diff --git a/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java b/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java index 030bcd7..55e3c4e 100644 --- a/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/zsc/edu/dify/modules/system/service/impl/UserServiceImpl.java @@ -14,8 +14,11 @@ import com.zsc.edu.dify.modules.system.mapper.UserMapper; import com.zsc.edu.dify.modules.system.repo.*; import com.zsc.edu.dify.modules.system.service.UserService; import com.zsc.edu.dify.modules.system.utils.sendMail; +import com.zsc.edu.dify.modules.system.vo.UserDetail; +import jakarta.annotation.Resource; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; +import org.springframework.cache.annotation.Cacheable; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -169,4 +172,5 @@ public class UserServiceImpl extends ServiceImpl implement userRolesRepository.insert(userRoles); return true; } + }