package xuan.controller; import org.springframework.web.bind.annotation.*; import xuan.core.qimen.zhuan.QiMenZhuanPan; import xuan.core.qimen.zhuan.settings.QiMenZhuanPanJiChuSetting; import xuan.service.HunYuanAiService; import xuan.service.PromptTemplates; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/qimen") public class QiMenController { private final HunYuanAiService aiService = new HunYuanAiService(); @PostMapping("/paipan") public Map paiPan(@RequestBody QiMenRequest request) { Map result = new HashMap<>(); try { QiMenZhuanPanJiChuSetting setting = new QiMenZhuanPanJiChuSetting(); 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.setPaiPanType(request.getPaiPanType() != null ? request.getPaiPanType() : 3); setting.setZhiShiType(request.getZhiShiType() != null ? request.getZhiShiType() : 0); setting.setYueJiaQiJuType(request.getYueJiaQiJuType() != null ? request.getYueJiaQiJuType() : 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); QiMenZhuanPan qiMen = new QiMenZhuanPan(setting); Map data = buildQiMenData(qiMen); String aiAnalysis = aiService.chat( PromptTemplates.getQiMenSystemPrompt(), PromptTemplates.getQiMenUserPrompt(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 buildQiMenData(QiMenZhuanPan qiMen) { Map data = new HashMap<>(); data.put("name", qiMen.getName()); data.put("occupy", qiMen.getOccupy()); data.put("sex", qiMen.getSex()); data.put("age", qiMen.getAge()); data.put("solar", qiMen.getSolarStr2()); data.put("lunar", qiMen.getLunarStr2()); data.put("xingQi", qiMen.getXingQi()); data.put("jiJie", qiMen.getJiJie()); data.put("shengXiao", qiMen.getShengXiao()); data.put("xingZuo", qiMen.getXingZuo()); data.put("yueXiang", qiMen.getYueXiang()); data.put("yueJiang", qiMen.getYueJiang()); data.put("yueJiangShen", qiMen.getYueJiangShen()); data.put("wuBuYuShi", qiMen.getWuBuYuShi()); data.put("yearGan", qiMen.getYearGan()); data.put("monthGan", qiMen.getMonthGan()); data.put("dayGan", qiMen.getDayGan()); data.put("hourGan", qiMen.getHourGan()); data.put("yearZhi", qiMen.getYearZhi()); data.put("monthZhi", qiMen.getMonthZhi()); data.put("dayZhi", qiMen.getDayZhi()); data.put("hourZhi", qiMen.getHourZhi()); data.put("yearGanZhi", qiMen.getYearGanZhi()); data.put("monthGanZhi", qiMen.getMonthGanZhi()); data.put("dayGanZhi", qiMen.getDayGanZhi()); data.put("hourGanZhi", qiMen.getHourGanZhi()); data.put("yearGanWuXing", qiMen.getYearGanWuXing()); data.put("monthGanWuXing", qiMen.getMonthGanWuXing()); data.put("dayGanWuXing", qiMen.getDayGanWuXing()); data.put("hourGanWuXing", qiMen.getHourGanWuXing()); data.put("yearZhiWuXing", qiMen.getYearZhiWuXing()); data.put("monthZhiWuXing", qiMen.getMonthZhiWuXing()); data.put("dayZhiWuXing", qiMen.getDayZhiWuXing()); data.put("hourZhiWuXing", qiMen.getHourZhiWuXing()); data.put("yearGanZhiWuXing", qiMen.getYearGanZhiWuXing()); data.put("monthGanZhiWuXing", qiMen.getMonthGanZhiWuXing()); data.put("dayGanZhiWuXing", qiMen.getDayGanZhiWuXing()); data.put("hourGanZhiWuXing", qiMen.getHourGanZhiWuXing()); data.put("yearGanZhiNaYin", qiMen.getYearGanZhiNaYin()); data.put("monthGanZhiNaYin", qiMen.getMonthGanZhiNaYin()); data.put("dayGanZhiNaYin", qiMen.getDayGanZhiNaYin()); data.put("hourGanZhiNaYin", qiMen.getHourGanZhiNaYin()); data.put("yearGanZhiKongWang", qiMen.getYearGanZhiKongWang()); data.put("monthGanZhiKongWang", qiMen.getMonthGanZhiKongWang()); data.put("dayGanZhiKongWang", qiMen.getDayGanZhiKongWang()); data.put("hourGanZhiKongWang", qiMen.getHourGanZhiKongWang()); data.put("prevJie", qiMen.getPrevJie()); data.put("prevJieDateStr", qiMen.getPrevJieDateStr()); data.put("prevJieDay", qiMen.getPrevJieDay()); data.put("nextJie", qiMen.getNextJie()); data.put("nextJieDateStr", qiMen.getNextJieDateStr()); data.put("nextJieDay", qiMen.getNextJieDay()); data.put("chuShengJie", qiMen.getChuShengJie()); data.put("prevQi", qiMen.getPrevQi()); data.put("prevQiDateStr", qiMen.getPrevQiDateStr()); data.put("prevQiDay", qiMen.getPrevQiDay()); data.put("nextQi", qiMen.getNextQi()); data.put("nextQiDateStr", qiMen.getNextQiDateStr()); data.put("nextQiDay", qiMen.getNextQiDay()); data.put("chuShengQi", qiMen.getChuShengQi()); data.put("fuTou", qiMen.getFuTou()); data.put("jieQi", qiMen.getJieQi()); data.put("sanYuan", qiMen.getSanYuan()); data.put("juShu", qiMen.getJuShu()); data.put("yinYangDun", qiMen.getYinYangDun()); data.put("xunShou", qiMen.getXunShou()); data.put("xunShouYiZhang", qiMen.getXunShouYiZhang()); data.put("zhiFu", qiMen.getZhiFu()); data.put("zhiShi", qiMen.getZhiShi()); data.put("liuJiaXunKong", qiMen.getLiuJiaXunKong()); data.put("liuJiaXunKongGongWei", qiMen.getLiuJiaXunKongGongWei()); data.put("liuJiaXunKongGongWeiMark", qiMen.getLiuJiaXunKongGongWeiMark()); data.put("yiMa", qiMen.getYiMa()); data.put("yiMaGongWei", qiMen.getYiMaGongWei()); data.put("yiMaGongWeiMark", qiMen.getYiMaGongWeiMark()); data.put("diPan", qiMen.getDiPan()); data.put("tianPan", qiMen.getTianPan()); data.put("renPan", qiMen.getRenPan()); data.put("shenPan", qiMen.getShenPan()); data.put("tianPanQiYiTianQinNo", qiMen.getTianPanQiYiTianQinNo()); data.put("tianPanQiYiTianQinYes", qiMen.getTianPanQiYiTianQinYes()); data.put("tianYi", qiMen.getTianYi()); data.put("diYi", qiMen.getDiYi()); data.put("taiYi", qiMen.getTaiYi()); data.put("jiuDun", qiMen.getJiuDun()); data.put("neiWaiGongWeiMark", qiMen.getNeiWaiGongWeiMark()); data.put("neiWaiGongWeiInfo", qiMen.getNeiWaiGongWeiInfo()); data.put("tianMen", qiMen.getTianMen()); data.put("diHu", qiMen.getDiHu()); data.put("fuYin", qiMen.getFuYin()); data.put("fanYin", qiMen.getFanYin()); data.put("liuYiJiXing", qiMen.getLiuYiJiXing()); data.put("qiYiRuMu", qiMen.getQiYiRuMu()); data.put("liuYiJiXingRuMuTianQinNoStatus", qiMen.getLiuYiJiXingRuMuTianQinNoStatus()); data.put("liuYiJiXingRuMuTianQinYesStatus", qiMen.getLiuYiJiXingRuMuTianQinYesStatus()); data.put("menPoStatus", qiMen.getMenPoStatus()); data.put("shiGanKeYing", qiMen.getShiGanKeYing()); data.put("baMenKeYing", qiMen.getBaMenKeYing()); data.put("baMenJingYing", qiMen.getBaMenJingYing()); data.put("baMenDongYing", qiMen.getBaMenDongYing()); data.put("xingMenKeYing", qiMen.getXingMenKeYing()); data.put("jiuXingShiYing", qiMen.getJiuXingShiYing()); data.put("baGuaWangShuai", qiMen.getBaGuaWangShuai()); data.put("baMenWangShuai", qiMen.getBaMenWangShuai()); data.put("jiuXingWangShuai", qiMen.getJiuXingWangShuai()); data.put("baShenLuoGongStatus", qiMen.getBaShenLuoGongStatus()); data.put("baMenLuoGongStatus", qiMen.getBaMenLuoGongStatus()); data.put("jiuXingLuoGongStatus", qiMen.getJiuXingLuoGongStatus()); data.put("diPanQiYiLuoGongLink", qiMen.getDiPanQiYiLuoGongLink()); data.put("tianPanQiYiLuoGongTianQinNoLink", qiMen.getTianPanQiYiLuoGongTianQinNoLink()); data.put("tianPanQiYiLuoGongTianQinYesLink", qiMen.getTianPanQiYiLuoGongTianQinYesLink()); return data; } public static class QiMenRequest { 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 paiPanType; private Integer zhiShiType; private Integer yueJiaQiJuType; private Integer yearGanZhiType; private Integer monthGanZhiType; private Integer dayGanZhiType; 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 getPaiPanType() { return paiPanType; } public void setPaiPanType(Integer paiPanType) { this.paiPanType = paiPanType; } public Integer getZhiShiType() { return zhiShiType; } public void setZhiShiType(Integer zhiShiType) { this.zhiShiType = zhiShiType; } public Integer getYueJiaQiJuType() { return yueJiaQiJuType; } public void setYueJiaQiJuType(Integer yueJiaQiJuType) { this.yueJiaQiJuType = yueJiaQiJuType; } 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; } } }