feat(dify模块与system模块): 添加了日志监控操作
This commit is contained in:
parent
c1f8f896d6
commit
4549317bb2
@ -64,5 +64,5 @@ public class ApiExceptionHandler {
|
||||
log.error("ApiException: {}", objectMapper.writeValueAsString(Map.of("msg", ex.getMessage())));
|
||||
return new ResponseEntity<>(objectMapper.writeValueAsString(Map.of("msg", ex.getMessage())), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
//TODo 403报错修改
|
||||
}
|
||||
|
@ -44,4 +44,6 @@ public class CustomAccessDeniedHandler implements AccessDeniedHandler {
|
||||
response.getWriter().print(objectMapper.writeValueAsString(result));
|
||||
response.flushBuffer();
|
||||
}
|
||||
|
||||
//TODO 403错误修改
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.zsc.edu.dify.modules.dify.controller;
|
||||
|
||||
import com.zsc.edu.dify.modules.dify.repo.AppEntityRepository;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
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;
|
||||
@ -38,6 +39,7 @@ public class V1ChatController {
|
||||
*/
|
||||
@PostMapping("/completions/{appid}")
|
||||
@PreAuthorize("hasAuthority('dify:chat:query')")
|
||||
@OperationLogAnnotation(content = "'dify对话'", operationType = "发送")
|
||||
public ChatMessageSendResponse sendChatMessage(
|
||||
@RequestBody ChatMessageSendRequest sendRequest,
|
||||
@PathVariable String appid
|
||||
@ -103,6 +105,7 @@ public class V1ChatController {
|
||||
*/
|
||||
@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 = appEntityRepository.selectApiKey(appid);
|
||||
difyChat.deleteConversation(conversationId, apiKey, userId);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.zsc.edu.dify.modules.dify.controller;
|
||||
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult;
|
||||
import io.github.guoshiqiufeng.dify.dataset.DifyDataset;
|
||||
import io.github.guoshiqiufeng.dify.dataset.dto.request.*;
|
||||
@ -8,7 +9,7 @@ import jakarta.annotation.Resource;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
//TODO 操作日志
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/dataset")
|
||||
public class V1DatasetController {
|
||||
@ -31,6 +32,7 @@ public class V1DatasetController {
|
||||
return difyDataset.page(request);
|
||||
}
|
||||
|
||||
//TODO 接口报错
|
||||
/**
|
||||
* 通过文件创建文档
|
||||
*
|
||||
@ -39,6 +41,7 @@ public class V1DatasetController {
|
||||
*/
|
||||
@PostMapping("/createDocumentByFile")
|
||||
@PreAuthorize("hasAuthority('dify:dataset:create')")
|
||||
@OperationLogAnnotation(content = "'dify知识库文档'", operationType = "新建")
|
||||
public DocumentCreateResponse createDocumentByFile(DocumentCreateByFileRequest request){
|
||||
return difyDataset.createDocumentByFile(request);
|
||||
}
|
||||
@ -78,6 +81,7 @@ public class V1DatasetController {
|
||||
*/
|
||||
@DeleteMapping("/deleteDocument")
|
||||
@PreAuthorize("hasAuthority('dify:dataset:delete')")
|
||||
@OperationLogAnnotation(content = "'dify知识库文档'", operationType = "删除")
|
||||
public void deleteDocument(String datasetId, String documentId){
|
||||
difyDataset.deleteDocument(datasetId, documentId, apiKey);
|
||||
}
|
||||
@ -90,6 +94,7 @@ public class V1DatasetController {
|
||||
*/
|
||||
@PostMapping("/createSegment")
|
||||
@PreAuthorize("hasAuthority('dify:dataset:create')")
|
||||
@OperationLogAnnotation(content = "'dify知识库文档分段'", operationType = "新建")
|
||||
public SegmentResponse createSegment(@RequestBody SegmentCreateRequest request){
|
||||
return difyDataset.createSegment(request);
|
||||
}
|
||||
@ -102,6 +107,7 @@ public class V1DatasetController {
|
||||
*/
|
||||
@PostMapping("/createSegmentChildChunk")
|
||||
@PreAuthorize("hasAuthority('dify:dataset:create')")
|
||||
@OperationLogAnnotation(content = "'dify知识库文档子分段'", operationType = "新建")
|
||||
public SegmentChildChunkCreateResponse createSegmentChildChunk(@RequestBody SegmentChildChunkCreateRequest request){
|
||||
return difyDataset.createSegmentChildChunk(request);
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.zsc.edu.dify.modules.dify.entity.AppEntity;
|
||||
import com.zsc.edu.dify.modules.dify.service.DifyServerService;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
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;
|
||||
@ -97,6 +98,7 @@ public class V1ServerController {
|
||||
*/
|
||||
@PostMapping("/app/{id}/toggle")
|
||||
@PreAuthorize("hasAuthority('dify:server:update')")
|
||||
@OperationLogAnnotation(content = "'dify服务启用状态'", operationType = "更新")
|
||||
public boolean enabledApp(@PathVariable String id) {
|
||||
return difyServerService.enabledApp(id);
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
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 com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
import io.github.guoshiqiufeng.dify.core.pojo.DifyPageResult;
|
||||
import io.github.guoshiqiufeng.dify.workflow.DifyWorkflow;
|
||||
import io.github.guoshiqiufeng.dify.workflow.dto.request.WorkflowLogsRequest;
|
||||
@ -37,6 +38,7 @@ public class V1WorkflowController {
|
||||
*/
|
||||
@PostMapping("/run/{appId}")
|
||||
@PreAuthorize("hasAuthority('dify:workflow:run')")
|
||||
@OperationLogAnnotation(content = "'dify工作流'", operationType = "运行")
|
||||
public WorkflowRunResponse runWorkflow(@RequestBody WorkflowRunRequest request, @PathVariable String appId) {
|
||||
return difyWorkflowService.run(request, appId);
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ public enum FunctionTypeEnum implements IEnum<String>, IState<FunctionTypeEnum>
|
||||
create("create", "create"),
|
||||
update("update", "update"),
|
||||
delete("delete", "delete"),
|
||||
run("run", "run"),
|
||||
other("other", "other");
|
||||
|
||||
private final String code;
|
||||
|
@ -26,6 +26,10 @@ public enum ModuleTypeEnum implements IEnum<String>, IState<ModuleTypeEnum> {
|
||||
notice("notice", "notice"),
|
||||
bulletin("bulletin", "bulletin"),
|
||||
attachment("attachment", "attachment"),
|
||||
v1chat("v1chat","v1chat"),
|
||||
v1dataset("v1dataset","v1dataset"),
|
||||
v1server("v1server","v1server"),
|
||||
v1workflow("v1workflow","v1workflow"),
|
||||
other("other", "other");
|
||||
|
||||
private final String code;
|
||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.dify.exception.ConstraintException;
|
||||
import com.zsc.edu.dify.framework.mybatisplus.DataPermission;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
import com.zsc.edu.dify.modules.system.dto.DeptDto;
|
||||
import com.zsc.edu.dify.modules.system.entity.Dept;
|
||||
import com.zsc.edu.dify.modules.system.entity.User;
|
||||
@ -62,6 +63,7 @@ public class DeptController {
|
||||
*/
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('system:dept:create')")
|
||||
@OperationLogAnnotation(content = "'部门'", operationType = "新建")
|
||||
public Dept create(@RequestBody DeptDto dto) {
|
||||
return service.create(dto);
|
||||
}
|
||||
@ -75,6 +77,7 @@ public class DeptController {
|
||||
*/
|
||||
@PatchMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('system:dept:update')")
|
||||
@OperationLogAnnotation(content = "'部门'", operationType = "更新")
|
||||
public Boolean update(@RequestBody DeptDto dto, @PathVariable("id") Long id) {
|
||||
return service.edit(dto, id);
|
||||
}
|
||||
@ -86,6 +89,7 @@ public class DeptController {
|
||||
*/
|
||||
@DeleteMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('system:dept:delete')")
|
||||
@OperationLogAnnotation(content = "'部门'", operationType = "删除")
|
||||
public Boolean delete(@PathVariable("id") Long id) {
|
||||
// 是否存在用户绑定此部门
|
||||
boolean hasUser = userService.count(new LambdaQueryWrapper<User>().eq(User::getDeptId, id)) > 0;
|
||||
@ -100,6 +104,7 @@ public class DeptController {
|
||||
* */
|
||||
@PatchMapping("/toggle/{id}")
|
||||
@PreAuthorize("hasAuthority('system:dept:update')")
|
||||
@OperationLogAnnotation(content = "'部门'", operationType = "更新启用")
|
||||
public Boolean toggle(@PathVariable("id") Long id) {
|
||||
return service.toggle(id);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.zsc.edu.dify.modules.system.controller;
|
||||
|
||||
import com.zsc.edu.dify.framework.mybatisplus.DataPermission;
|
||||
import com.zsc.edu.dify.framework.security.UserDetailsImpl;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
import com.zsc.edu.dify.modules.system.dto.MenuDto;
|
||||
import com.zsc.edu.dify.modules.system.entity.Menu;
|
||||
import com.zsc.edu.dify.modules.system.service.MenuService;
|
||||
@ -28,6 +29,7 @@ public class MenuController {
|
||||
*/
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('system:menu:create')")
|
||||
@OperationLogAnnotation(content = "'菜单'", operationType = "新建")
|
||||
public Menu create(@RequestBody MenuDto dto) {
|
||||
return service.create(dto);
|
||||
}
|
||||
@ -37,6 +39,7 @@ public class MenuController {
|
||||
*/
|
||||
@PatchMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('system:menu:update')")
|
||||
@OperationLogAnnotation(content = "'菜单'", operationType = "更新")
|
||||
public Menu update(@RequestBody MenuDto dto, @PathVariable("id") Long id) {
|
||||
return service.update(dto, id);
|
||||
}
|
||||
@ -46,6 +49,7 @@ public class MenuController {
|
||||
*/
|
||||
@DeleteMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('system:menu:delete')")
|
||||
@OperationLogAnnotation(content = "'菜单'", operationType = "删除")
|
||||
public Boolean delete(@PathVariable("id") Long id) {
|
||||
return service.delete(id);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.zsc.edu.dify.modules.system.controller;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.dify.framework.mybatisplus.DataPermission;
|
||||
//import com.zsc.edu.dify.modules.system.dto.RoleAuthCreateDto;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
import com.zsc.edu.dify.modules.system.dto.RoleDto;
|
||||
import com.zsc.edu.dify.modules.system.entity.Role;
|
||||
import com.zsc.edu.dify.modules.system.query.RoleQuery;
|
||||
@ -45,6 +46,7 @@ public class RoleController {
|
||||
*/
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('system:role:create')")
|
||||
@OperationLogAnnotation(content = "'角色'", operationType = "新建")
|
||||
public Role create(@RequestBody RoleDto dto) {
|
||||
return service.create(dto);
|
||||
}
|
||||
@ -58,6 +60,7 @@ public class RoleController {
|
||||
*/
|
||||
@PatchMapping("{id}")
|
||||
@PreAuthorize("hasAuthority('system:role:update')")
|
||||
@OperationLogAnnotation(content = "'角色'", operationType = "更新")
|
||||
public Role update(@RequestBody RoleDto dto, @PathVariable("id") Long id) {
|
||||
return service.edit(dto, id);
|
||||
}
|
||||
@ -70,6 +73,7 @@ public class RoleController {
|
||||
*/
|
||||
@PatchMapping("{id}/toggle")
|
||||
@PreAuthorize("hasAuthority('system:role:update')")
|
||||
@OperationLogAnnotation(content = "'角色'", operationType = "更新启用")
|
||||
public Boolean toggle(@PathVariable("id") Long id) {
|
||||
return service.toggle(id);
|
||||
}
|
||||
@ -94,6 +98,7 @@ public class RoleController {
|
||||
*/
|
||||
@DeleteMapping("{id}")
|
||||
@PreAuthorize("hasAuthority('system:role:delete')")
|
||||
@OperationLogAnnotation(content = "'角色'", operationType = "删除")
|
||||
public Boolean delete(@PathVariable Long id) {
|
||||
return service.delete(id);
|
||||
}
|
||||
|
30
src/main/resources/sql.sql
Normal file
30
src/main/resources/sql.sql
Normal file
@ -0,0 +1,30 @@
|
||||
create table operation_log
|
||||
(
|
||||
id bigint generated by default as identity
|
||||
constraint operation_log_pk
|
||||
primary key,
|
||||
module_type varchar not null,
|
||||
function_type varchar not null,
|
||||
content varchar,
|
||||
make_time timestamp,
|
||||
create_id bigint,
|
||||
dept_id bigint
|
||||
);
|
||||
|
||||
comment on column operation_log.id is '主键';
|
||||
|
||||
comment on column operation_log.module_type is '模块类型';
|
||||
|
||||
comment on column operation_log.function_type is '操作类型';
|
||||
|
||||
comment on column operation_log.content is '操作内容';
|
||||
|
||||
comment on column operation_log.make_time is '操作时间';
|
||||
|
||||
comment on column operation_log.create_id is '创建人ID';
|
||||
|
||||
comment on column operation_log.dept_id is '所属部门';
|
||||
|
||||
alter table operation_log
|
||||
owner to gitea;
|
||||
|
Loading…
Reference in New Issue
Block a user