package xuan.controller; 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; @RestController @RequestMapping("/api/liuyao") public class LiuYaoController { private final HunYuanAiService aiService = new HunYuanAiService(); @PostMapping("/paipan") public Map paiPan(@RequestBody LiuYaoRequest request) { Map result = new HashMap<>(); try { LiuYaoJiChuSetting setting = new LiuYaoJiChuSetting(); setting.setName(request.getName() != null ? request.getName() : "某人"); setting.setOccupy(request.getOccupy() != null ? request.getOccupy() : "某事"); setting.setSex(request.getSex() != null ? request.getSex() : 1); setting.setDate(request.getDate() != null ? request.getDate() : "2024-01-01 00:00:00"); setting.setDateType(request.getDateType() != null ? request.getDateType() : 0); setting.setLeapMonthType(request.getLeapMonthType() != null ? request.getLeapMonthType() : 0); setting.setXuShiSuiType(request.getXuShiSuiType() != null ? request.getXuShiSuiType() : 0); setting.setJieQiType(request.getJieQiType() != null ? request.getJieQiType() : 1); setting.setYearGanZhiType(request.getYearGanZhiType() != null ? request.getYearGanZhiType() : 2); setting.setMonthGanZhiType(request.getMonthGanZhiType() != null ? request.getMonthGanZhiType() : 1); setting.setDayGanZhiType(request.getDayGanZhiType() != null ? request.getDayGanZhiType() : 0); setting.setPaiPanType(request.getPaiPanType() != null ? request.getPaiPanType() : 0); if (request.getLiuYaoYaoXiang() != null) { String[] yaoXiang = request.getLiuYaoYaoXiang().split(","); if (yaoXiang.length >= 6) { setting.setLiuYao(yaoXiang[0].equals("—") || yaoXiang[0].equals("阳") ? 1 : 0); setting.setWuYao(yaoXiang[1].equals("—") || yaoXiang[1].equals("阳") ? 1 : 0); setting.setSiYao(yaoXiang[2].equals("—") || yaoXiang[2].equals("阳") ? 1 : 0); setting.setSanYao(yaoXiang[3].equals("—") || yaoXiang[3].equals("阳") ? 1 : 0); setting.setErYao(yaoXiang[4].equals("—") || yaoXiang[4].equals("阳") ? 1 : 0); setting.setYiYao(yaoXiang[5].equals("—") || yaoXiang[5].equals("阳") ? 1 : 0); } } LiuYao liuYao = new LiuYao(setting); liuYao.liuYaoShenShaSetting(new LiuYaoShenShaSetting()); Map data = buildLiuYaoData(liuYao); String aiAnalysis = aiService.chat( PromptTemplates.getLiuYaoSystemPrompt(), PromptTemplates.getLiuYaoUserPrompt(data) ); data.put("aiAnalysis", aiAnalysis); result.put("success", true); result.put("data", data); } catch (Exception e) { result.put("success", false); result.put("error", e.getMessage()); } return result; } private Map buildLiuYaoData(LiuYao liuYao) { Map 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()); data.put("lunar", liuYao.getLunarStr2()); data.put("xingQi", liuYao.getXingQi()); data.put("jiJie", liuYao.getJiJie()); data.put("shengXiao", liuYao.getShengXiao()); data.put("xingZuo", liuYao.getXingZuo()); data.put("yueXiang", liuYao.getYueXiang()); data.put("yueJiang", liuYao.getYueJiang()); data.put("yueJiangShen", liuYao.getYueJiangShen()); data.put("wuBuYuShi", liuYao.getWuBuYuShi()); data.put("yearGanZhi", liuYao.getYearGanZhi()); data.put("monthGanZhi", liuYao.getMonthGanZhi()); data.put("dayGanZhi", liuYao.getDayGanZhi()); data.put("hourGanZhi", liuYao.getHourGanZhi()); data.put("shangGuaName", liuYao.getShangGuaName()); data.put("shangGuaAs", liuYao.getShangGuaAs()); data.put("xiaGuaName", liuYao.getXiaGuaName()); data.put("xiaGuaAs", liuYao.getXiaGuaAs()); data.put("benGuaName", liuYao.getBenGuaName()); data.put("benGuaType", liuYao.getBenGuaType()); data.put("bianGuaName", liuYao.getBianGuaName()); data.put("huGuaName", liuYao.getHuGuaName()); data.put("cuoGuaName", liuYao.getCuoGuaName()); data.put("zongGuaName", liuYao.getZongGuaName()); data.put("fuGuaName", liuYao.getFuGuaName()); data.put("benGuaGuaCi", liuYao.getBenGuaGuaCi()); data.put("bianGuaGuaCi", liuYao.getBianGuaGuaCi()); data.put("benGuaLiuYaoName", liuYao.getBenGuaLiuYaoName()); data.put("benGuaLiuYaoShiYing", liuYao.getBenGuaLiuYaoShiYing()); data.put("benGuaLiuYaoLiuQin", liuYao.getBenGuaLiuYaoLiuQin()); data.put("benGuaLiuYaoLiuShen", liuYao.getBenGuaLiuYaoLiuShen()); 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("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("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("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("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("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("benGuaGuaShen", liuYao.getBenGuaGuaShen()); data.put("bianGuaGuaShen", liuYao.getBianGuaGuaShen()); return data; } public static class LiuYaoRequest { private String name; private String occupy; private Integer sex; private String date; private Integer dateType; private Integer leapMonthType; private Integer xuShiSuiType; private Integer jieQiType; private Integer yearGanZhiType; private Integer monthGanZhiType; private Integer dayGanZhiType; private Integer paiPanType; private String liuYaoYaoXiang; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getOccupy() { return occupy; } public void setOccupy(String occupy) { this.occupy = occupy; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public Integer getDateType() { return dateType; } public void setDateType(Integer dateType) { this.dateType = dateType; } public Integer getLeapMonthType() { return leapMonthType; } public void setLeapMonthType(Integer leapMonthType) { this.leapMonthType = leapMonthType; } public Integer getXuShiSuiType() { return xuShiSuiType; } public void setXuShiSuiType(Integer xuShiSuiType) { this.xuShiSuiType = xuShiSuiType; } public Integer getJieQiType() { return jieQiType; } public void setJieQiType(Integer jieQiType) { this.jieQiType = jieQiType; } public Integer getYearGanZhiType() { return yearGanZhiType; } public void setYearGanZhiType(Integer yearGanZhiType) { this.yearGanZhiType = yearGanZhiType; } public Integer getMonthGanZhiType() { return monthGanZhiType; } public void setMonthGanZhiType(Integer monthGanZhiType) { this.monthGanZhiType = monthGanZhiType; } public Integer getDayGanZhiType() { return dayGanZhiType; } public void setDayGanZhiType(Integer dayGanZhiType) { this.dayGanZhiType = dayGanZhiType; } public Integer getPaiPanType() { return paiPanType; } public void setPaiPanType(Integer paiPanType) { this.paiPanType = paiPanType; } public String getLiuYaoYaoXiang() { return liuYaoYaoXiang; } public void setLiuYaoYaoXiang(String liuYaoYaoXiang) { this.liuYaoYaoXiang = liuYaoYaoXiang; } } }