feat: 集成腾讯混元AI模型,为所有玄学模块添加AI分析功能

- 新增HunYuanAiService服务类,实现腾讯混元API调用
- 新增PromptTemplates提示词模板类,为各模块设计专业提示词
- 修改所有Controller集成AI服务(八字、紫微、六爻、梅花、奇门、大六壬、塔罗、占星)
- 修改前端所有结果页面显示AI分析结果
- 添加OkHttp依赖用于HTTP请求
This commit is contained in:
xuan-bot committed 2026-03-07 07:43:02 +08:00
1 parent db9a63d309
commit 01283f1db7
19 files changed
+1030 -1391

No files matched your search

@@ -4,6 +4,8 @@ import org.springframework.web.bind.annotation.*;
import xuan.core.liuyao.LiuYao;
import xuan.core.liuyao.settings.LiuYaoJiChuSetting;
import xuan.core.liuyao.settings.LiuYaoShenShaSetting;
import xuan.service.HunYuanAiService;
import xuan.service.PromptTemplates;
import java.util.HashMap;
import java.util.Map;
@@ -12,6 +14,8 @@ import java.util.Map;
@RequestMapping("/api/liuyao")
public class LiuYaoController {
private final HunYuanAiService aiService = new HunYuanAiService();
@PostMapping("/paipan")
public Map<String, Object> paiPan(@RequestBody LiuYaoRequest request) {
Map<String, Object> result = new HashMap<>();
@@ -44,8 +48,16 @@ public class LiuYaoController {
LiuYao liuYao = new LiuYao(setting);
liuYao.liuYaoShenShaSetting(new LiuYaoShenShaSetting());
Map<String, Object> data = buildLiuYaoData(liuYao);
String aiAnalysis = aiService.chat(
PromptTemplates.getLiuYaoSystemPrompt(),
PromptTemplates.getLiuYaoUserPrompt(data)
);
data.put("aiAnalysis", aiAnalysis);
result.put("success", true);
result.put("data", buildLiuYaoData(liuYao));
result.put("data", data);
} catch (Exception e) {
result.put("success", false);
result.put("error", e.getMessage());
@@ -57,6 +69,7 @@ public class LiuYaoController {
Map<String, Object> data = new HashMap<>();
data.put("name", liuYao.getName());
data.put("occupy", liuYao.getOccupy());
data.put("sex", liuYao.getSex());
data.put("age", liuYao.getAge());
data.put("solar", liuYao.getSolarStr2());
@@ -84,101 +97,13 @@ public class LiuYaoController {
data.put("zongGuaName", liuYao.getZongGuaName());
data.put("fuGuaName", liuYao.getFuGuaName());
data.put("shangGuaAs", liuYao.getShangGuaAs());
data.put("xiaGuaAs", liuYao.getXiaGuaAs());
data.put("benGuaAs", liuYao.getBenGuaAs());
data.put("bianGuaAs", liuYao.getBianGuaAs());
data.put("huGuaAs", liuYao.getHuGuaAs());
data.put("cuoGuaAs", liuYao.getCuoGuaAs());
data.put("zongGuaAs", liuYao.getZongGuaAs());
data.put("fuGuaAs", liuYao.getFuGuaAs());
data.put("benGuaType", liuYao.getBenGuaType());
data.put("bianGuaType", liuYao.getBianGuaType());
data.put("huGuaType", liuYao.getHuGuaType());
data.put("cuoGuaType", liuYao.getCuoGuaType());
data.put("zongGuaType", liuYao.getZongGuaType());
data.put("fuGuaType", liuYao.getFuGuaType());
data.put("benGuaGuaShen", liuYao.getBenGuaGuaShen());
data.put("bianGuaGuaShen", liuYao.getBianGuaGuaShen());
data.put("huGuaGuaShen", liuYao.getHuGuaGuaShen());
data.put("cuoGuaGuaShen", liuYao.getCuoGuaGuaShen());
data.put("zongGuaGuaShen", liuYao.getZongGuaGuaShen());
data.put("fuGuaGuaShen", liuYao.getFuGuaGuaShen());
data.put("benGuaGuaCi", liuYao.getBenGuaGuaCi());
data.put("bianGuaGuaCi", liuYao.getBianGuaGuaCi());
data.put("huGuaGuaCi", liuYao.getHuGuaGuaCi());
data.put("cuoGuaGuaCi", liuYao.getCuoGuaGuaCi());
data.put("zongGuaGuaCi", liuYao.getZongGuaGuaCi());
data.put("fuGuaGuaCi", liuYao.getFuGuaGuaCi());
data.put("benGuaLiuYaoName", liuYao.getBenGuaLiuYaoName());
data.put("bianGuaLiuYaoName", liuYao.getBianGuaLiuYaoName());
data.put("huGuaLiuYaoName", liuYao.getHuGuaLiuYaoName());
data.put("cuoGuaLiuYaoName", liuYao.getCuoGuaLiuYaoName());
data.put("zongGuaLiuYaoName", liuYao.getZongGuaLiuYaoName());
data.put("fuGuaLiuYaoName", liuYao.getFuGuaLiuYaoName());
data.put("benGuaLiuYaoAs", liuYao.getBenGuaLiuYaoAs());
data.put("bianGuaLiuYaoAs", liuYao.getBianGuaLiuYaoAs());
data.put("huGuaLiuYaoAs", liuYao.getHuGuaLiuYaoAs());
data.put("cuoGuaLiuYaoAs", liuYao.getCuoGuaLiuYaoAs());
data.put("zongGuaLiuYaoAs", liuYao.getZongGuaLiuYaoAs());
data.put("fuGuaLiuYaoAs", liuYao.getFuGuaLiuYaoAs());
data.put("benGuaLiuYaoShiYing", liuYao.getBenGuaLiuYaoShiYing());
data.put("bianGuaLiuYaoShiYing", liuYao.getBianGuaLiuYaoShiYing());
data.put("huGuaLiuYaoShiYing", liuYao.getHuGuaLiuYaoShiYing());
data.put("cuoGuaLiuYaoShiYing", liuYao.getCuoGuaLiuYaoShiYing());
data.put("zongGuaLiuYaoShiYing", liuYao.getZongGuaLiuYaoShiYing());
data.put("fuGuaLiuYaoShiYing", liuYao.getFuGuaLiuYaoShiYing());
data.put("benGuaLiuYaoLiuQin", liuYao.getBenGuaLiuYaoLiuQin());
data.put("bianGuaLiuYaoLiuQin", liuYao.getBianGuaLiuYaoLiuQin());
data.put("huGuaLiuYaoLiuQin", liuYao.getHuGuaLiuYaoLiuQin());
data.put("cuoGuaLiuYaoLiuQin", liuYao.getCuoGuaLiuYaoLiuQin());
data.put("zongGuaLiuYaoLiuQin", liuYao.getZongGuaLiuYaoLiuQin());
data.put("fuGuaLiuYaoLiuQin", liuYao.getFuGuaLiuYaoLiuQin());
data.put("benGuaLiuYaoGanZhi", liuYao.getBenGuaLiuYaoGanZhi());
data.put("bianGuaLiuYaoGanZhi", liuYao.getBianGuaLiuYaoGanZhi());
data.put("huGuaLiuYaoGanZhi", liuYao.getHuGuaLiuYaoGanZhi());
data.put("cuoGuaLiuYaoGanZhi", liuYao.getCuoGuaLiuYaoGanZhi());
data.put("zongGuaLiuYaoGanZhi", liuYao.getZongGuaLiuYaoGanZhi());
data.put("fuGuaLiuYaoGanZhi", liuYao.getFuGuaLiuYaoGanZhi());
data.put("benGuaLiuYaoWuXing", liuYao.getBenGuaLiuYaoWuXing());
data.put("bianGuaLiuYaoWuXing", liuYao.getBianGuaLiuYaoWuXing());
data.put("huGuaLiuYaoWuXing", liuYao.getHuGuaLiuYaoWuXing());
data.put("cuoGuaLiuYaoWuXing", liuYao.getCuoGuaLiuYaoWuXing());
data.put("zongGuaLiuYaoWuXing", liuYao.getZongGuaLiuYaoWuXing());
data.put("fuGuaLiuYaoWuXing", liuYao.getFuGuaLiuYaoWuXing());
data.put("benGuaLiuYaoLiuShen", liuYao.getBenGuaLiuYaoLiuShen());
data.put("bianGuaLiuYaoLiuShen", liuYao.getBianGuaLiuYaoLiuShen());
data.put("huGuaLiuYaoLiuShen", liuYao.getHuGuaLiuYaoLiuShen());
data.put("cuoGuaLiuYaoLiuShen", liuYao.getCuoGuaLiuYaoLiuShen());
data.put("zongGuaLiuYaoLiuShen", liuYao.getZongGuaLiuYaoLiuShen());
data.put("fuGuaLiuYaoLiuShen", liuYao.getFuGuaLiuYaoLiuShen());
data.put("benGuaLiuYaoYaoCi", liuYao.getBenGuaLiuYaoYaoCi());
data.put("bianGuaLiuYaoYaoCi", liuYao.getBianGuaLiuYaoYaoCi());
data.put("huGuaLiuYaoYaoCi", liuYao.getHuGuaLiuYaoYaoCi());
data.put("cuoGuaLiuYaoYaoCi", liuYao.getCuoGuaLiuYaoYaoCi());
data.put("zongGuaLiuYaoYaoCi", liuYao.getZongGuaLiuYaoYaoCi());
data.put("fuGuaLiuYaoYaoCi", liuYao.getFuGuaLiuYaoYaoCi());
data.put("benGuaLiuYaoNaYin", liuYao.getBenGuaLiuYaoNaYin());
data.put("bianGuaLiuYaoNaYin", liuYao.getBianGuaLiuYaoNaYin());
data.put("huGuaLiuYaoNaYin", liuYao.getHuGuaLiuYaoNaYin());
data.put("cuoGuaLiuYaoNaYin", liuYao.getCuoGuaLiuYaoNaYin());
data.put("zongGuaLiuYaoNaYin", liuYao.getZongGuaLiuYaoNaYin());
data.put("fuGuaLiuYaoNaYin", liuYao.getFuGuaLiuYaoNaYin());
data.put("fuGuaLiuYaoFuShen", liuYao.getFuGuaLiuYaoFuShen());
data.put("shenSha", liuYao.getShenSha());
return data;
}
@@ -225,5 +150,4 @@ public class LiuYaoController {
public String getLiuYaoYaoXiang() { return liuYaoYaoXiang; }
public void setLiuYaoYaoXiang(String liuYaoYaoXiang) { this.liuYaoYaoXiang = liuYaoYaoXiang; }
}
}