Skip to content

Commit 8544cd7

Browse files
committed
添加AIController控制器
1 parent 24ce4f4 commit 8544cd7

File tree

1 file changed

+189
-0
lines changed

1 file changed

+189
-0
lines changed
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
package com.intellidev.ai.controller;
2+
3+
import com.intellidev.ai.service.AIService;
4+
import lombok.RequiredArgsConstructor;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.http.ResponseEntity;
7+
import org.springframework.web.bind.annotation.*;
8+
9+
import java.util.HashMap;
10+
import java.util.Map;
11+
12+
@RestController
13+
@RequestMapping("/api/ai")
14+
@RequiredArgsConstructor
15+
@Slf4j
16+
public class AIController {
17+
18+
private final AIService aiService;
19+
20+
/**
21+
* AI对话接口
22+
*/
23+
@PostMapping("/chat")
24+
public ResponseEntity<Map<String, Object>> chat(@RequestBody ChatRequest request) {
25+
log.info("收到AI对话请求: {}", request.getMessage());
26+
27+
Map<String, Object> response = new HashMap<>();
28+
29+
if (!aiService.isAvailable()) {
30+
response.put("success", false);
31+
response.put("error", "AI服务未配置,请设置OPENAI_API_KEY");
32+
return ResponseEntity.badRequest().body(response);
33+
}
34+
35+
try {
36+
String answer = aiService.chat(request.getMessage());
37+
38+
response.put("success", true);
39+
response.put("message", request.getMessage());
40+
response.put("answer", answer);
41+
response.put("model", aiService.getModel());
42+
43+
return ResponseEntity.ok(response);
44+
45+
} catch (Exception e) {
46+
log.error("AI对话失败", e);
47+
response.put("success", false);
48+
response.put("error", e.getMessage());
49+
return ResponseEntity.internalServerError().body(response);
50+
}
51+
}
52+
53+
/**
54+
* 代码审查接口
55+
*/
56+
@PostMapping("/review-code")
57+
public ResponseEntity<Map<String, Object>> reviewCode(@RequestBody CodeReviewRequest request) {
58+
log.info("收到代码审查请求,语言: {}", request.getLanguage());
59+
60+
Map<String, Object> response = new HashMap<>();
61+
62+
if (!aiService.isAvailable()) {
63+
response.put("success", false);
64+
response.put("error", "AI服务未配置");
65+
return ResponseEntity.badRequest().body(response);
66+
}
67+
68+
try {
69+
String review = aiService.reviewCode(request.getCode(), request.getLanguage());
70+
71+
response.put("success", true);
72+
response.put("language", request.getLanguage());
73+
response.put("code", request.getCode());
74+
response.put("review", review);
75+
response.put("model", aiService.getModel());
76+
77+
return ResponseEntity.ok(response);
78+
79+
} catch (Exception e) {
80+
log.error("代码审查失败", e);
81+
response.put("success", false);
82+
response.put("error", e.getMessage());
83+
return ResponseEntity.internalServerError().body(response);
84+
}
85+
}
86+
87+
/**
88+
* 生成代码文档接口
89+
*/
90+
@PostMapping("/generate-docs")
91+
public ResponseEntity<Map<String, Object>> generateDocumentation(@RequestBody CodeDocRequest request) {
92+
log.info("收到生成文档请求,语言: {}", request.getLanguage());
93+
94+
Map<String, Object> response = new HashMap<>();
95+
96+
if (!aiService.isAvailable()) {
97+
response.put("success", false);
98+
response.put("error", "AI服务未配置");
99+
return ResponseEntity.badRequest().body(response);
100+
}
101+
102+
try {
103+
String documentation = aiService.generateDocumentation(request.getCode(), request.getLanguage());
104+
105+
response.put("success", true);
106+
response.put("language", request.getLanguage());
107+
response.put("code", request.getCode());
108+
response.put("documentation", documentation);
109+
response.put("model", aiService.getModel());
110+
111+
return ResponseEntity.ok(response);
112+
113+
} catch (Exception e) {
114+
log.error("生成文档失败", e);
115+
response.put("success", false);
116+
response.put("error", e.getMessage());
117+
return ResponseEntity.internalServerError().body(response);
118+
}
119+
}
120+
121+
/**
122+
* 检查AI服务状态
123+
*/
124+
@GetMapping("/status")
125+
public ResponseEntity<Map<String, Object>> getStatus() {
126+
Map<String, Object> response = new HashMap<>();
127+
response.put("service", "Java AI Starter");
128+
response.put("version", "0.0.1");
129+
response.put("ai_available", aiService.isAvailable());
130+
response.put("ai_model", aiService.isAvailable() ? aiService.getModel() : "未配置");
131+
response.put("timestamp", System.currentTimeMillis());
132+
return ResponseEntity.ok(response);
133+
}
134+
135+
// 请求DTO类
136+
public static class ChatRequest {
137+
private String message;
138+
139+
public String getMessage() {
140+
return message;
141+
}
142+
143+
public void setMessage(String message) {
144+
this.message = message;
145+
}
146+
}
147+
148+
public static class CodeReviewRequest {
149+
private String code;
150+
private String language;
151+
152+
public String getCode() {
153+
return code;
154+
}
155+
156+
public void setCode(String code) {
157+
this.code = code;
158+
}
159+
160+
public String getLanguage() {
161+
return language;
162+
}
163+
164+
public void setLanguage(String language) {
165+
this.language = language;
166+
}
167+
}
168+
169+
public static class CodeDocRequest {
170+
private String code;
171+
private String language;
172+
173+
public String getCode() {
174+
return code;
175+
}
176+
177+
public void setCode(String code) {
178+
this.code = code;
179+
}
180+
181+
public String getLanguage() {
182+
return language;
183+
}
184+
185+
public void setLanguage(String language) {
186+
this.language = language;
187+
}
188+
}
189+
}

0 commit comments

Comments
 (0)