DifyApiConfigController.java
6.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package com.aigeo.ai.controller;
import com.aigeo.ai.entity.DifyApiConfig;
import com.aigeo.ai.service.DifyApiConfigService;
import com.aigeo.common.result.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import java.util.List;
import java.util.Optional;
/**
* AI配置管理控制器
*
* @author AIGEO Team
* @since 1.0.0
*/
@Tag(name = "AI配置管理", description = "Dify API配置管理接口")
@Slf4j
@RestController
@RequestMapping("/api/ai-configs")
@RequiredArgsConstructor
public class DifyApiConfigController {
private final DifyApiConfigService difyApiConfigService;
@Operation(summary = "获取所有配置", description = "获取所有AI配置列表")
@GetMapping
public Result<List<DifyApiConfig>> getAllConfigs() {
log.debug("获取所有AI配置");
List<DifyApiConfig> configs = difyApiConfigService.getAllConfigs();
return Result.success(configs);
}
@Operation(summary = "分页查询配置", description = "分页查询AI配置列表")
@GetMapping("/list")
public Result<Page<DifyApiConfig>> listConfigs(
@Parameter(description = "页码") @RequestParam(defaultValue = "0") int page,
@Parameter(description = "页大小") @RequestParam(defaultValue = "10") int size) {
log.debug("分页查询AI配置,page: {}, size: {}", page, size);
Pageable pageable = PageRequest.of(page, size);
Page<DifyApiConfig> configs = difyApiConfigService.findAll(pageable);
return Result.success(configs);
}
@Operation(summary = "根据ID获取配置", description = "根据配置ID获取单个AI配置")
@GetMapping("/{id}")
public Result<DifyApiConfig> getConfigById(
@Parameter(description = "配置ID") @PathVariable @NotNull Integer id) {
log.debug("获取AI配置,id: {}", id);
Optional<DifyApiConfig> config = difyApiConfigService.getConfigById(id);
if (config.isPresent()) {
return Result.success(config.get());
} else {
return Result.error(404, "配置不存在");
}
}
@Operation(summary = "根据公司ID获取配置", description = "获取指定公司的AI配置列表")
@GetMapping("/company/{companyId}")
public Result<List<DifyApiConfig>> getConfigsByCompanyId(
@Parameter(description = "公司ID") @PathVariable @NotNull Integer companyId) {
log.debug("获取公司AI配置,companyId: {}", companyId);
List<DifyApiConfig> configs = difyApiConfigService.getConfigsByCompanyId(companyId);
return Result.success(configs);
}
@Operation(summary = "获取共享配置", description = "获取所有共享的AI配置")
@GetMapping("/shared")
public Result<List<DifyApiConfig>> getSharedConfigs() {
log.debug("获取共享AI配置");
List<DifyApiConfig> configs = difyApiConfigService.getSharedConfigs();
return Result.success(configs);
}
@Operation(summary = "获取启用的配置", description = "获取所有启用状态的AI配置")
@GetMapping("/active")
public Result<List<DifyApiConfig>> getActiveConfigs() {
log.debug("获取启用的AI配置");
List<DifyApiConfig> configs = difyApiConfigService.getActiveConfigs();
return Result.success(configs);
}
@Operation(summary = "创建配置", description = "创建新的AI配置")
@PostMapping
public Result<DifyApiConfig> createConfig(
@Parameter(description = "配置信息") @Valid @RequestBody DifyApiConfig config) {
log.info("创建AI配置,name: {}", config.getName());
DifyApiConfig createdConfig = difyApiConfigService.saveConfig(config);
return Result.success(createdConfig);
}
@Operation(summary = "更新配置", description = "更新指定的AI配置")
@PutMapping("/{id}")
public Result<DifyApiConfig> updateConfig(
@Parameter(description = "配置ID") @PathVariable @NotNull Integer id,
@Parameter(description = "配置信息") @Valid @RequestBody DifyApiConfig configDetails) {
log.info("更新AI配置,id: {}, name: {}", id, configDetails.getName());
DifyApiConfig updatedConfig = difyApiConfigService.updateConfig(id, configDetails);
return Result.success(updatedConfig);
}
@Operation(summary = "删除配置", description = "删除指定的AI配置")
@DeleteMapping("/{id}")
public Result<Void> deleteConfig(
@Parameter(description = "配置ID") @PathVariable @NotNull Integer id) {
log.info("删除AI配置,id: {}", id);
difyApiConfigService.deleteConfig(id);
return Result.success();
}
@Operation(summary = "测试配置", description = "测试AI配置的连接性")
@PostMapping("/{id}/test")
public Result<Boolean> testConfig(
@Parameter(description = "配置ID") @PathVariable @NotNull Integer id) {
log.info("测试AI配置连接,id: {}", id);
boolean testResult = difyApiConfigService.testConnection(id);
return Result.success(testResult);
}
@Operation(summary = "启用/禁用配置", description = "启用或禁用指定的AI配置")
@PutMapping("/{id}/toggle")
public Result<DifyApiConfig> toggleConfig(
@Parameter(description = "配置ID") @PathVariable @NotNull Integer id,
@Parameter(description = "是否启用") @RequestParam boolean active) {
log.info("切换AI配置状态,id: {}, active: {}", id, active);
DifyApiConfig config = difyApiConfigService.toggleActive(id, active);
return Result.success(config);
}
}