diff --git a/src/main/java/xuan/controller/BaZiController.java b/src/main/java/xuan/controller/BaZiController.java index 1b5d013..82cc8de 100644 --- a/src/main/java/xuan/controller/BaZiController.java +++ b/src/main/java/xuan/controller/BaZiController.java @@ -217,9 +217,9 @@ public class BaZiController { marriage.append("【感情婚姻】\n\n"); - Integer sex = baZi.getSex(); + String sex = baZi.getSex(); - if (sex != null && sex == 1) { + if ("男".equals(sex)) { marriage.append("男命看婚姻:\n\n"); marriage.append("• 您的八字中财星代表妻子,财星旺相的话,妻子贤惠能干,婚姻幸福。\n"); marriage.append("• 财星弱的话,可能需要晚婚,或者妻子身体较弱,需要多关心照顾。\n"); diff --git a/src/main/java/xuan/controller/LiuYaoController.java b/src/main/java/xuan/controller/LiuYaoController.java index df64ad9..09bf3b4 100644 --- a/src/main/java/xuan/controller/LiuYaoController.java +++ b/src/main/java/xuan/controller/LiuYaoController.java @@ -29,7 +29,17 @@ public class LiuYaoController { setting.setMonthGanZhiType(request.getMonthGanZhiType() != null ? request.getMonthGanZhiType() : 1); setting.setDayGanZhiType(request.getDayGanZhiType() != null ? request.getDayGanZhiType() : 0); setting.setPaiPanType(request.getPaiPanType() != null ? request.getPaiPanType() : 0); - setting.setLiuYaoYaoXiang(request.getLiuYaoYaoXiang() != null ? request.getLiuYaoYaoXiang() : "——,——,——,——,——,——"); + 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()); diff --git a/src/main/java/xuan/controller/TaLuoController.java b/src/main/java/xuan/controller/TaLuoController.java index 643a471..ee04e51 100644 --- a/src/main/java/xuan/controller/TaLuoController.java +++ b/src/main/java/xuan/controller/TaLuoController.java @@ -148,6 +148,7 @@ public class TaLuoController { data.put("question", request.getQuestion()); data.put("cards", selectedCards); data.put("interpretation", generateInterpretation(selectedCards, spreadType, request.getQuestion())); + data.put("summary", generateSummary(selectedCards, spreadType)); data.put("timestamp", new Date()); result.put("success", true); @@ -269,6 +270,214 @@ public class TaLuoController { return interpretation.toString(); } + private Map generateSummary(List> cards, String spreadType) { + Map summary = new HashMap<>(); + + summary.put("personality", generatePersonalityAnalysis(cards)); + summary.put("emotion", generateEmotionAnalysis(cards)); + summary.put("career", generateCareerAnalysis(cards)); + summary.put("overall", generateOverallAdvice(cards, spreadType)); + + return summary; + } + + private String generatePersonalityAnalysis(List> cards) { + StringBuilder sb = new StringBuilder(); + + int majorCount = 0; + int reversedCount = 0; + boolean hasFool = false, hasMagician = false, hasHighPriestess = false, hasEmperor = false; + + for (Map card : cards) { + String name = (String) card.get("name"); + boolean isReversed = (Boolean) card.get("isReversed"); + String type = (String) card.get("type"); + + if ("major".equals(type)) majorCount++; + if (isReversed) reversedCount++; + + if ("愚者".equals(name)) hasFool = true; + if ("魔术师".equals(name)) hasMagician = true; + if ("女祭司".equals(name)) hasHighPriestess = true; + if ("皇帝".equals(name)) hasEmperor = true; + } + + sb.append("【性格特质】\n"); + + if (majorCount > cards.size() / 2) { + sb.append("你的内心世界很丰富,经常思考人生的大问题。你是个有深度的人,不满足于表面的东西,总想探索更深层的意义。"); + } else { + sb.append("你是个务实的人,更关注日常生活中的具体事务。你脚踏实地,做事有条理,是个值得信赖的人。"); + } + + sb.append("\n\n"); + + if (reversedCount > cards.size() / 2) { + sb.append("最近你可能感到有些迷茫,内心有些矛盾。这是正常的,说明你在反思和成长。给自己一点时间,不要着急。"); + } else { + sb.append("你目前的状态比较积极向上,心态比较平和。继续保持这种状态,会让你更容易应对生活中的挑战。"); + } + + sb.append("\n\n"); + + if (hasFool) { + sb.append("你有一颗年轻的心,充满好奇心和冒险精神。你愿意尝试新事物,不怕失败,这是很宝贵的品质。"); + } + if (hasMagician) { + sb.append("你很有创造力和执行力,能够把自己的想法变成现实。你善于利用身边的资源,是个有能力的人。"); + } + if (hasHighPriestess) { + sb.append("你的直觉很敏锐,常常能感知到别人察觉不到的东西。你善于倾听内心的声音,这是你的优势。"); + } + if (hasEmperor) { + sb.append("你有领导才能,善于规划和组织。你做事有原则,有责任感,是个可以依靠的人。"); + } + + return sb.toString(); + } + + private String generateEmotionAnalysis(List> cards) { + StringBuilder sb = new StringBuilder(); + + sb.append("【感情运势】\n"); + + boolean hasLovers = false, hasEmpress = false, hasStar = false, hasMoon = false; + boolean hasCups = false; + int reversedCount = 0; + + for (Map card : cards) { + String name = (String) card.get("name"); + boolean isReversed = (Boolean) card.get("isReversed"); + String suit = (String) card.get("suit"); + + if (isReversed) reversedCount++; + if ("恋人".equals(name)) hasLovers = true; + if ("女皇".equals(name)) hasEmpress = true; + if ("星星".equals(name)) hasStar = true; + if ("月亮".equals(name)) hasMoon = true; + if ("圣杯".equals(suit)) hasCups = true; + } + + if (hasLovers) { + sb.append("牌面显示你正在面临或即将面临一个重要的感情选择。这可能是一个转折点,需要你认真思考自己真正想要的是什么。"); + } else if (hasEmpress) { + sb.append("你的感情生活充满温暖和关爱。你懂得如何去爱,也值得被爱。这段时期适合培养和加深感情关系。"); + } else if (hasStar) { + sb.append("感情方面充满希望。如果你在寻找爱情,很快就会遇到让你心动的人。如果已有伴侣,你们的关系会更加和谐美满。"); + } else if (hasMoon) { + sb.append("在感情方面,你可能感到有些困惑或不确定。这可能是因为信息不完整,或者你还没有看清事情的全貌。建议多沟通,不要急于下结论。"); + } else if (hasCups) { + sb.append("你的感情世界比较丰富,最近可能会有一些情感上的波动。这是正常的,说明你对感情很投入。"); + } else { + if (reversedCount > cards.size() / 2) { + sb.append("最近感情方面可能有些不太顺利,但这只是暂时的。保持开放的心态,真诚地对待他人,情况会慢慢好转。"); + } else { + sb.append("你的感情生活比较平稳。虽然没有大的波澜,但这种平静也是一种幸福。珍惜身边的人,用心经营感情。"); + } + } + + sb.append("\n\n"); + sb.append("建议:在感情中要保持真诚和耐心。不要因为一时的情绪波动而做出冲动的决定。多倾听对方的心声,也要勇敢表达自己的感受。"); + + return sb.toString(); + } + + private String generateCareerAnalysis(List> cards) { + StringBuilder sb = new StringBuilder(); + + sb.append("【事业发展】\n"); + + boolean hasMagician = false, hasEmperor = false, hasChariot = false, hasWheel = false; + boolean hasWands = false, hasPentacles = false; + int reversedCount = 0; + + for (Map card : cards) { + String name = (String) card.get("name"); + boolean isReversed = (Boolean) card.get("isReversed"); + String suit = (String) card.get("suit"); + + if (isReversed) reversedCount++; + if ("魔术师".equals(name)) hasMagician = true; + if ("皇帝".equals(name)) hasEmperor = true; + if ("战车".equals(name)) hasChariot = true; + if ("命运之轮".equals(name)) hasWheel = true; + if ("权杖".equals(suit)) hasWands = true; + if ("星币".equals(suit)) hasPentacles = true; + } + + if (hasMagician) { + sb.append("你目前的工作能力很强,能够很好地运用自己的技能和资源。这是个展现才华的好时机,不要害怕表现自己。"); + } else if (hasEmperor) { + sb.append("你在工作中展现出领导才能,善于管理和规划。如果有机会,可以尝试承担更多的责任,这会带来更好的发展机会。"); + } else if (hasChariot) { + sb.append("事业正处于上升期,你的努力正在得到回报。保持这种势头,继续前进,你会取得更大的成功。"); + } else if (hasWheel) { + sb.append("事业方面即将迎来转机,可能是新的机会或者环境的改变。保持开放的心态,抓住机遇,但也要做好充分的准备。"); + } else if (hasWands) { + sb.append("工作中充满活力和创造力,你有很多好的想法和计划。现在是付诸行动的好时机,不要让机会从手中溜走。"); + } else if (hasPentacles) { + sb.append("你的工作比较稳定,财务状况也不错。这是个积累的好时期,为未来打下坚实的基础。"); + } else { + if (reversedCount > cards.size() / 2) { + sb.append("最近工作方面可能遇到一些挑战或阻碍。不要灰心,这些困难都是暂时的。调整好心态,寻找解决问题的方法。"); + } else { + sb.append("你的事业发展比较平稳。虽然没有大的突破,但稳扎稳打也是一种进步。继续保持,机会总会来的。"); + } + } + + sb.append("\n\n"); + sb.append("建议:在工作中要保持学习和成长的心态。不要满足于现状,要不断提升自己的能力。同时,也要注意工作与生活的平衡,不要过度劳累。"); + + return sb.toString(); + } + + private String generateOverallAdvice(List> cards, String spreadType) { + StringBuilder sb = new StringBuilder(); + + sb.append("【总体建议】\n\n"); + + int reversedCount = 0; + int majorCount = 0; + boolean hasSun = false, hasWorld = false, hasTower = false, hasDeath = false; + + for (Map card : cards) { + String name = (String) card.get("name"); + boolean isReversed = (Boolean) card.get("isReversed"); + String type = (String) card.get("type"); + + if (isReversed) reversedCount++; + if ("major".equals(type)) majorCount++; + if ("太阳".equals(name)) hasSun = true; + if ("世界".equals(name)) hasWorld = true; + if ("塔".equals(name)) hasTower = true; + if ("死神".equals(name)) hasDeath = true; + } + + if (hasSun || hasWorld) { + sb.append("这是一个非常积极的信号!你正走在正确的道路上,未来充满光明和希望。继续保持积极的心态,好事即将发生。\n\n"); + } + + if (hasTower || hasDeath) { + sb.append("牌面显示可能会有一些变化或转折。不要害怕改变,有时候结束是为了更好的开始。接受变化,适应新的情况,你会发现新的机会。\n\n"); + } + + if (reversedCount > cards.size() / 2) { + sb.append("整体来看,你目前可能处于一个需要反思和调整的阶段。这并不是坏事,反而是一个重新审视自己、做出改变的好机会。"); + } else { + sb.append("整体来看,你目前的状态不错,各方面都比较平衡。继续保持,同时也要注意细节,不要因为顺利而掉以轻心。"); + } + + sb.append("\n\n"); + + if (majorCount > cards.size() / 2) { + sb.append("这次占卜显示的都是大阿卡纳牌,说明你正在经历或即将经历一些重要的人生阶段。这些经历会让你成长,帮助你更好地理解自己和人生。"); + } + + sb.append("\n\n最后,记住塔罗牌只是提供指引,真正的决定权在你手中。相信自己的直觉,勇敢地面对生活,你一定能够创造属于自己的美好未来!"); + + return sb.toString(); + } + @GetMapping("/cards") public Map getAllCards() { Map result = new HashMap<>(); diff --git a/src/main/java/xuan/controller/ZiWeiController.java b/src/main/java/xuan/controller/ZiWeiController.java index 68704b6..8b4abcf 100644 --- a/src/main/java/xuan/controller/ZiWeiController.java +++ b/src/main/java/xuan/controller/ZiWeiController.java @@ -10,39 +10,6 @@ import java.util.*; @RequestMapping("/api/ziwei") public class ZiWeiController { - private static final Map ZHU_XING_JIE_DU = new HashMap<>(); - private static final Map GONG_WEI_JIE_DU = new HashMap<>(); - - static { - ZHU_XING_JIE_DU.put("紫微", "帝王之星,主权威领导,性格稳重有魄力,适合管理岗位,天生具有统御能力"); - ZHU_XING_JIE_DU.put("天机", "智慧之星,主聪明机敏,善于策划分析,适合参谋顾问,思维活跃多变"); - ZHU_XING_JIE_DU.put("太阳", "光明之星,主外向热情,事业心强,利于公职发展,贵人运旺"); - ZHU_XING_JIE_DU.put("武曲", "财星,主刚毅果断,理财能力强,适合金融商业,财运亨通"); - ZHU_XING_JIE_DU.put("天同", "福星,主温和仁慈,人缘好福气厚,适合服务行业,生活安逸"); - ZHU_XING_JIE_DU.put("廉贞", "桃花星,主才华艺术,感情丰富,适合文艺创作,魅力十足"); - ZHU_XING_JIE_DU.put("天府", "财库星,主稳重守成,善于理财积累,适合财务管理,财源稳定"); - ZHU_XING_JIE_DU.put("太阴", "阴柔之星,主细腻敏感,直觉力强,适合文艺创作,财运平稳"); - ZHU_XING_JIE_DU.put("贪狼", "欲望之星,主多才多艺,交际能力强,适合演艺销售,但需防贪欲"); - ZHU_XING_JIE_DU.put("巨门", "口舌之星,主能言善辩,适合律师教师,但易招是非口舌"); - ZHU_XING_JIE_DU.put("天相", "印星,主正直公正,适合公务员法律,贵人运佳,事业平稳"); - ZHU_XING_JIE_DU.put("天梁", "荫星,主慈悲为怀,适合医疗教育,有长辈贵人,福泽深厚"); - ZHU_XING_JIE_DU.put("七杀", "将星,主刚强果断,适合军警创业,有领导才能,但需防冲动"); - ZHU_XING_JIE_DU.put("破军", "变动之星,主开创冒险,适合创业改革,变动多端,需稳中求进"); - - GONG_WEI_JIE_DU.put("命宫", "代表核心性格、人生基调、先天特质"); - GONG_WEI_JIE_DU.put("兄弟宫", "代表兄弟姐妹关系、同辈交往、合作能力"); - GONG_WEI_JIE_DU.put("夫妻宫", "代表婚姻感情、配偶特质、婚姻质量"); - GONG_WEI_JIE_DU.put("子女宫", "代表子女运势、后代情况、桃花缘分"); - GONG_WEI_JIE_DU.put("财帛宫", "代表财富来源、理财能力、财运起伏"); - GONG_WEI_JIE_DU.put("疾厄宫", "代表健康状况、易患疾病、养生方向"); - GONG_WEI_JIE_DU.put("迁移宫", "代表外出运势、人际交往、贵人运"); - GONG_WEI_JIE_DU.put("交友宫", "代表朋友关系、下属能力、人际网络"); - GONG_WEI_JIE_DU.put("官禄宫", "代表事业发展、职业方向、官运仕途"); - GONG_WEI_JIE_DU.put("田宅宫", "代表房产运势、家庭环境、祖业继承"); - GONG_WEI_JIE_DU.put("福德宫", "代表精神状态、福报厚薄、晚年运势"); - GONG_WEI_JIE_DU.put("父母宫", "代表父母关系、长辈助力、学历背景"); - } - @PostMapping("/paipan") public Map paiPan(@RequestBody ZiWeiRequest request) { Map result = new HashMap<>(); @@ -76,245 +43,543 @@ public class ZiWeiController { Map data = new HashMap<>(); data.put("name", ziWei.getName()); - data.put("occupy", ziWei.getOccupy()); data.put("sex", ziWei.getSex()); data.put("age", ziWei.getAge()); - data.put("zao", ziWei.getZao()); data.put("solar", ziWei.getSolarStr2()); data.put("lunar", ziWei.getLunarStr2()); - data.put("xingQi", ziWei.getXingQi()); - data.put("jiJie", ziWei.getJiJie()); data.put("shengXiao", ziWei.getShengXiao()); data.put("xingZuo", ziWei.getXingZuo()); - data.put("yueXiang", ziWei.getYueXiang()); - data.put("yueJiang", ziWei.getYueJiang()); - data.put("yueJiangShen", ziWei.getYueJiangShen()); - data.put("wuBuYuShi", ziWei.getWuBuYuShi()); - - data.put("yearGan", ziWei.getYearGan()); - data.put("monthGan", ziWei.getMonthGan()); - data.put("dayGan", ziWei.getDayGan()); - data.put("hourGan", ziWei.getHourGan()); - data.put("yearZhi", ziWei.getYearZhi()); - data.put("monthZhi", ziWei.getMonthZhi()); - data.put("dayZhi", ziWei.getDayZhi()); - data.put("hourZhi", ziWei.getHourZhi()); + data.put("wuXingJu", ziWei.getWuXingJu()); data.put("yearGanZhi", ziWei.getYearGanZhi()); data.put("monthGanZhi", ziWei.getMonthGanZhi()); data.put("dayGanZhi", ziWei.getDayGanZhi()); data.put("hourGanZhi", ziWei.getHourGanZhi()); - data.put("yearGanZhiNaYin", ziWei.getYearGanZhiNaYin()); - data.put("monthGanZhiNaYin", ziWei.getMonthGanZhiNaYin()); - data.put("dayGanZhiNaYin", ziWei.getDayGanZhiNaYin()); - data.put("hourGanZhiNaYin", ziWei.getHourGanZhiNaYin()); - - data.put("nanNvYinYang", ziWei.getNanNvYinYang()); - data.put("mingGongGongWei", ziWei.getMingGongGongWei()); - data.put("shenGongGongWei", ziWei.getShenGongGongWei()); data.put("mingGongDiZhi", ziWei.getMingGongDiZhi()); data.put("shenGongDiZhi", ziWei.getShenGongDiZhi()); - - data.put("wuXingJu", ziWei.getWuXingJu()); + data.put("mingZhu", ziWei.getMingZhu()); + data.put("shenZhu", ziWei.getShenZhu()); data.put("shiErGongDiZhi", ziWei.getShiErGongDiZhi()); data.put("shiErGongTianGan", ziWei.getShiErGongTianGan()); data.put("shiErMingGong", ziWei.getShiErMingGong()); data.put("shiErShenGong", ziWei.getShiErShenGong()); - data.put("ziWeiXingGongWei", ziWei.getZiWeiXingGongWei()); - data.put("tianFuXingGongWei", ziWei.getTianFuXingGongWei()); - data.put("ziWeiXingGongDiZhi", ziWei.getZiWeiXingGongDiZhi()); - data.put("tianFuXingGongDiZhi", ziWei.getTianFuXingGongDiZhi()); - - data.put("ziWeiXingXiZhuXing", ziWei.getZiWeiXingXiZhuXing()); - data.put("tianFuXingXiZhuXing", ziWei.getTianFuXingXiZhuXing()); - data.put("shiZhiZhuXing", ziWei.getShiZhiZhuXing()); - data.put("yueZhiZhuXing", ziWei.getYueZhiZhuXing()); - data.put("nianGanZhuXing", ziWei.getNianGanZhuXing()); - data.put("nianZhiZhuXing", ziWei.getNianZhiZhuXing()); - data.put("dayZhuXing", ziWei.getDayZhuXing()); - - data.put("shiErZhangSheng", ziWei.getShiErZhangSheng()); - data.put("jieLuKongWang", ziWei.getJieLuKongWang()); - data.put("xunZhongKongWang", ziWei.getXunZhongKongWang()); - data.put("tianShangTianShiXing", ziWei.getTianShangTianShiXing()); - - data.put("daXian", ziWei.getDaXian()); - data.put("xiaoXian", ziWei.getXiaoXian()); - data.put("shiErGongBoShi", ziWei.getShiErGongBoShi()); - data.put("liuNianSuiQianZhuXing", ziWei.getLiuNianSuiQianZhuXing()); - data.put("liuNianJiangQianZhuXing", ziWei.getLiuNianJiangQianZhuXing()); - List> shiErGongZhuXing = ziWei.getShiErGongZhuXing(false); data.put("shiErGongZhuXing", shiErGongZhuXing); - data.put("shiErGongZhuXingGuanXi", ziWei.getShiErGongZhuXingGuanXi()); - - data.put("huaLuXingGongWei", ziWei.getHuaLuXingGongWei()); - data.put("huaQuanXingGongWei", ziWei.getHuaQuanXingGongWei()); - data.put("huaKeXingGongWei", ziWei.getHuaKeXingGongWei()); - data.put("huaJiXingGongWei", ziWei.getHuaJiXingGongWei()); + data.put("shiErGongSiHuaXing", ziWei.getShiErGongSiHuaXing()); + data.put("shiErZhangSheng", ziWei.getShiErZhangSheng()); + data.put("daXian", ziWei.getDaXian()); data.put("huaLuXingGongWeiJieDu", ziWei.getHuaLuXingGongWeiJieDu()); data.put("huaQuanXingGongWeiJieDu", ziWei.getHuaQuanXingGongWeiJieDu()); data.put("huaKeXingGongWeiJieDu", ziWei.getHuaKeXingGongWeiJieDu()); data.put("huaJiXingGongWeiJieDu", ziWei.getHuaJiXingGongWeiJieDu()); - data.put("shiErGongSiHuaXing", ziWei.getShiErGongSiHuaXing()); - data.put("shiErGongSiHuaXingGuanXi", ziWei.getShiErGongSiHuaXingGuanXi()); + data.put("jieDu", buildJieDu(ziWei, shiErGongZhuXing)); - data.put("mingZhu", ziWei.getMingZhu()); - data.put("shenZhu", ziWei.getShenZhu()); - data.put("ziDou", ziWei.getZiDou()); - data.put("liuDou", ziWei.getLiuDou()); - - data.put("prevJie", ziWei.getPrevJie()); - data.put("nextJie", ziWei.getNextJie()); - data.put("chuShengJie", ziWei.getChuShengJie()); - data.put("prevQi", ziWei.getPrevQi()); - data.put("nextQi", ziWei.getNextQi()); - data.put("chuShengQi", ziWei.getChuShengQi()); + return data; + } + + private Map buildJieDu(ZiWei ziWei, List> shiErGongZhuXing) { + Map jieDu = new HashMap<>(); List shiErMingGong = ziWei.getShiErMingGong(); int mingGongIndex = ziWei.getMingGongGongWei() - 1; List mingGongStars = shiErGongZhuXing.get(mingGongIndex); - data.put("jieDu", buildJieDu(ziWei, shiErMingGong, shiErGongZhuXing)); + List mainStars = getMainStars(mingGongStars); - return data; - } - - private Map buildJieDu(ZiWei ziWei, List shiErMingGong, List> shiErGongZhuXing) { - Map jieDu = new HashMap<>(); + String xingGe = analyzeXingGe(mainStars); + String shiYe = analyzeShiYe(mainStars, ziWei, shiErMingGong, shiErGongZhuXing); + String ganQing = analyzeGanQing(ziWei, shiErMingGong, shiErGongZhuXing); + String caiYun = analyzeCaiYun(ziWei, shiErMingGong, shiErGongZhuXing); - int mingGongIndex = ziWei.getMingGongGongWei() - 1; - List mingGongStars = shiErGongZhuXing.get(mingGongIndex); + jieDu.put("xingGe", xingGe); + jieDu.put("shiYe", shiYe); + jieDu.put("ganQing", ganQing); + jieDu.put("caiYun", caiYun); - List mainStars = new ArrayList<>(); - for (String star : mingGongStars) { - if (ZHU_XING_JIE_DU.containsKey(star)) { - mainStars.add(star); - } - } - - StringBuilder summary = new StringBuilder(); - summary.append("【命盘总览】\n"); - summary.append("命主").append(ziWei.getMingZhu()).append(",身主").append(ziWei.getShenZhu()).append(","); - summary.append("五行局为").append(ziWei.getWuXingJu()).append(","); - summary.append("命宫在").append(ziWei.getMingGongDiZhi()).append("宫"); - - if (!mainStars.isEmpty()) { - summary.append(",命宫主星:").append(String.join("、", mainStars)); - } - summary.append("。"); - - jieDu.put("summary", summary.toString()); - - List> mingGongJieDu = new ArrayList<>(); - for (String star : mingGongStars) { - if (ZHU_XING_JIE_DU.containsKey(star)) { - Map starJieDu = new HashMap<>(); - starJieDu.put("star", star); - starJieDu.put("meaning", ZHU_XING_JIE_DU.get(star)); - mingGongJieDu.add(starJieDu); - } - } - jieDu.put("mingGongStars", mingGongJieDu); - - List> gongWeiJieDuList = new ArrayList<>(); - String[] zhuYaoGongWei = {"命宫", "财帛宫", "官禄宫", "夫妻宫", "迁移宫", "福德宫"}; - - for (String gongWei : zhuYaoGongWei) { - int gongIndex = -1; - for (int i = 0; i < shiErMingGong.size(); i++) { - if (gongWei.equals(shiErMingGong.get(i))) { - gongIndex = i; - break; - } - } - - if (gongIndex >= 0) { - Map gongJieDu = new HashMap<>(); - gongJieDu.put("gongWei", gongWei); - gongJieDu.put("diZhi", ziWei.getShiErGongDiZhi().get(gongIndex)); - gongJieDu.put("meaning", GONG_WEI_JIE_DU.get(gongWei)); - - List gongStars = shiErGongZhuXing.get(gongIndex); - List gongMainStars = new ArrayList<>(); - for (String star : gongStars) { - if (ZHU_XING_JIE_DU.containsKey(star)) { - gongMainStars.add(star); - } - } - gongJieDu.put("stars", gongMainStars); - - gongWeiJieDuList.add(gongJieDu); - } - } - jieDu.put("gongWeiJieDu", gongWeiJieDuList); - - List> siHuaJieDu = new ArrayList<>(); - - Map huaLu = new HashMap<>(); - huaLu.put("type", "化禄"); - huaLu.put("gongWei", ziWei.getHuaLuXingGongWeiJieDu()); - huaLu.put("meaning", "主财运亨通,机遇顺遂,利于求财发展"); - siHuaJieDu.add(huaLu); - - Map huaQuan = new HashMap<>(); - huaQuan.put("type", "化权"); - huaQuan.put("gongWei", ziWei.getHuaQuanXingGongWeiJieDu()); - huaQuan.put("meaning", "主权势掌控,竞争有力,利于事业掌权"); - siHuaJieDu.add(huaQuan); - - Map huaKe = new HashMap<>(); - huaKe.put("type", "化科"); - huaKe.put("gongWei", ziWei.getHuaKeXingGongWeiJieDu()); - huaKe.put("meaning", "主名声学历,贵人相助,利于学业考试"); - siHuaJieDu.add(huaKe); - - Map huaJi = new HashMap<>(); - huaJi.put("type", "化忌"); - huaJi.put("gongWei", ziWei.getHuaJiXingGongWeiJieDu()); - huaJi.put("meaning", "主波折阻滞,需谨慎行事,注意防范风险"); - siHuaJieDu.add(huaJi); - - jieDu.put("siHuaJieDu", siHuaJieDu); - - String advice = generateAdvice(ziWei, mainStars); - jieDu.put("advice", advice); + String zongJie = buildZongJie(ziWei, mainStars, xingGe, shiYe, ganQing, caiYun); + jieDu.put("zongJie", zongJie); return jieDu; } - private String generateAdvice(ZiWei ziWei, List mainStars) { - StringBuilder advice = new StringBuilder(); + private List getMainStars(List stars) { + Set mainStarSet = new HashSet<>(Arrays.asList( + "紫微", "天机", "太阳", "武曲", "天同", "廉贞", + "天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀", "破军" + )); + List mainStars = new ArrayList<>(); + for (String star : stars) { + if (mainStarSet.contains(star)) { + mainStars.add(star); + } + } + return mainStars; + } + + private int getGongIndex(List shiErMingGong, String gongName) { + for (int i = 0; i < shiErMingGong.size(); i++) { + if (gongName.equals(shiErMingGong.get(i))) { + return i; + } + } + return -1; + } + + private String analyzeXingGe(List mainStars) { + StringBuilder sb = new StringBuilder(); - advice.append("【人生建议】\n"); - - if (mainStars.contains("紫微") || mainStars.contains("天府")) { - advice.append("命带帝王之星,天生具有领导才能,适合从事管理工作或自主创业。"); - } else if (mainStars.contains("七杀") || mainStars.contains("破军")) { - advice.append("命带将星变动之星,性格刚毅果断,适合开创性事业,但需注意稳中求进。"); - } else if (mainStars.contains("天机") || mainStars.contains("太阴")) { - advice.append("命带智慧之星,思维敏捷细腻,适合从事策划、咨询、文艺创作等工作。"); - } else if (mainStars.contains("太阳") || mainStars.contains("天相")) { - advice.append("命带光明之星,外向正直,适合从事公职、法律、教育等事业。"); - } else if (mainStars.contains("武曲") || mainStars.contains("贪狼")) { - advice.append("命带财星欲望之星,善于理财交际,适合金融、销售、演艺等行业。"); - } else { - advice.append("命格独特,各有千秋,宜发挥自身优势,扬长避短。"); + if (mainStars.isEmpty()) { + return "你是一个性格比较随和的人,没有特别强的主见,容易受环境影响。做事比较灵活,能够适应各种情况,但有时候也会显得优柔寡断。建议多培养自己的主见,学会独立思考。"; } - advice.append("\n\n【四化飞星指引】\n"); - advice.append(ziWei.getHuaLuXingGongWeiJieDu()).append("\n"); - advice.append(ziWei.getHuaQuanXingGongWeiJieDu()).append("\n"); - advice.append(ziWei.getHuaKeXingGongWeiJieDu()).append("\n"); - advice.append(ziWei.getHuaJiXingGongWeiJieDu()); + String firstStar = mainStars.get(0); - return advice.toString(); + switch (firstStar) { + case "紫微": + sb.append("你是一个很有气场的人,天生就有一种领导范儿。"); + if (mainStars.contains("天府")) { + sb.append("性格稳重踏实,做事有条理,不喜欢冒险。"); + } else if (mainStars.contains("贪狼")) { + sb.append("既有野心又懂得享受生活,是个有情趣的人。"); + } else if (mainStars.contains("天相")) { + sb.append("为人正直,讲究原则,是个值得信赖的人。"); + } + sb.append("你比较注重面子,喜欢被人尊重的感觉,有时候会显得有点强势。"); + break; + + case "天机": + sb.append("你是一个很聪明的人,脑子转得快,想法多。"); + sb.append("善于分析问题,喜欢琢磨事情,但有时候想得太多反而会犹豫不决。"); + sb.append("你比较敏感,能够察觉到别人的情绪变化,是个很好的倾听者。"); + break; + + case "太阳": + sb.append("你是一个阳光开朗的人,热情大方,喜欢交朋友。"); + sb.append("做事积极主动,不喜欢拖拖拉拉,但有时候会显得有点急躁。"); + sb.append("你很有正义感,看不惯不公平的事,愿意帮助别人。"); + break; + + case "武曲": + sb.append("你是一个很务实的人,做事讲究效率,不喜欢虚头巴脑的东西。"); + sb.append("性格比较刚强,有话直说,有时候会得罪人。"); + sb.append("你对金钱比较敏感,有理财头脑,是个会过日子的人。"); + break; + + case "天同": + sb.append("你是一个很温和的人,性格随和,不爱和人计较。"); + sb.append("喜欢安逸的生活,不喜欢太累太辛苦的事。"); + sb.append("你人缘很好,大家都愿意和你相处,是个有福气的人。"); + break; + + case "廉贞": + sb.append("你是一个很有魅力的人,感情丰富,有艺术细胞。"); + sb.append("做事有冲劲,但有时候会情绪化。"); + sb.append("你比较注重外表和形象,喜欢美好的事物。"); + break; + + case "天府": + sb.append("你是一个稳重踏实的人,做事有条不紊,不喜欢冒险。"); + sb.append("很会理财,懂得积累,是个有财运的人。"); + sb.append("你比较保守,不喜欢变动,追求安稳的生活。"); + break; + + case "太阴": + sb.append("你是一个心思细腻的人,感情丰富,直觉很准。"); + sb.append("比较内向,不太喜欢太热闹的场合,喜欢安静的环境。"); + sb.append("你很有艺术天分,对美的事物有独特的见解。"); + break; + + case "贪狼": + sb.append("你是一个很有活力的人,兴趣广泛,喜欢尝试新鲜事物。"); + sb.append("社交能力强,朋友多,但有时候会三分钟热度。"); + sb.append("你比较追求物质享受,喜欢美好的生活。"); + break; + + case "巨门": + sb.append("你是一个很会说话的人,口才好,善于表达。"); + sb.append("观察力强,能够看到别人看不到的问题,但有时候会想太多。"); + sb.append("你比较敏感,容易多心,建议学会放宽心态。"); + break; + + case "天相": + sb.append("你是一个正直善良的人,讲究原则,有正义感。"); + sb.append("做事稳重,不喜欢投机取巧,是个值得信赖的人。"); + sb.append("你很注重人际关系,懂得如何与人相处。"); + break; + + case "天梁": + sb.append("你是一个很有爱心的人,喜欢帮助别人,有长辈缘。"); + sb.append("性格成熟稳重,做事有担当,是个可靠的人。"); + sb.append("你比较传统,重视家庭,是个顾家的人。"); + break; + + case "七杀": + sb.append("你是一个很有魄力的人,做事果断,敢想敢干。"); + sb.append("性格比较强势,不喜欢被人管,有独立精神。"); + sb.append("你很有领导才能,但有时候会显得太冲动。"); + break; + + case "破军": + sb.append("你是一个很有个性的人,不喜欢墨守成规,喜欢打破常规。"); + sb.append("做事有冲劲,但有时候会显得太急躁。"); + sb.append("你的人生变动比较多,建议学会稳中求进。"); + break; + + default: + sb.append("你是一个性格独特的人,有自己的想法和追求。"); + } + + return sb.toString(); + } + + private String analyzeShiYe(List mainStars, ZiWei ziWei, List shiErMingGong, List> shiErGongZhuXing) { + StringBuilder sb = new StringBuilder(); + + int guanLuIndex = getGongIndex(shiErMingGong, "官禄宫"); + int qianYiIndex = getGongIndex(shiErMingGong, "迁移宫"); + + List guanLuStars = guanLuIndex >= 0 ? getMainStars(shiErGongZhuXing.get(guanLuIndex)) : new ArrayList<>(); + List qianYiStars = qianYiIndex >= 0 ? getMainStars(shiErGongZhuXing.get(qianYiIndex)) : new ArrayList<>(); + + String firstStar = mainStars.isEmpty() ? "" : mainStars.get(0); + + sb.append("【适合的工作方向】\n"); + + switch (firstStar) { + case "紫微": + case "天府": + sb.append("你天生就是当领导的料,适合做管理工作。"); + sb.append("可以考虑往企业管理、政府部门、大型机构发展。"); + sb.append("你比较适合稳定的平台,不太适合从零开始创业。"); + break; + + case "天机": + case "太阴": + sb.append("你脑子好使,适合做需要动脑子的工作。"); + sb.append("可以考虑策划、咨询、设计、写作、研究等方向。"); + sb.append("你比较适合在专业领域深耕,成为某个领域的专家。"); + break; + + case "太阳": + case "天相": + sb.append("你适合做需要和人打交道的工作。"); + sb.append("可以考虑公务员、律师、教师、人力资源等方向。"); + sb.append("你比较适合稳定的体制内工作,或者大型正规企业。"); + break; + + case "武曲": + sb.append("你对数字敏感,适合做和钱打交道的工作。"); + sb.append("可以考虑金融、财务、投资、商业等方向。"); + sb.append("你比较务实,适合实实在在能赚钱的行业。"); + break; + + case "贪狼": + case "廉贞": + sb.append("你适合做需要表现力和社交能力的工作。"); + sb.append("可以考虑销售、演艺、公关、市场营销等方向。"); + sb.append("你比较适合能发挥个人魅力的行业。"); + break; + + case "七杀": + case "破军": + sb.append("你适合做有挑战性的工作,不喜欢一成不变。"); + sb.append("可以考虑创业、投资、军警、体育等方向。"); + sb.append("你比较适合能发挥个人能力的舞台,不太适合被人管着。"); + break; + + case "天同": + case "天梁": + sb.append("你适合做服务性质的工作,有耐心有爱心。"); + sb.append("可以考虑医疗、教育、社工、服务业等方向。"); + sb.append("你比较适合稳定、压力不太大的工作环境。"); + break; + + case "巨门": + sb.append("你口才好,适合做需要说话的工作。"); + sb.append("可以考虑律师、教师、主持人、销售、咨询等方向。"); + sb.append("你比较适合能发挥口才优势的行业。"); + break; + + default: + sb.append("你可以根据自己的兴趣和特长选择发展方向。"); + sb.append("建议多尝试不同的工作,找到最适合自己的方向。"); + } + + sb.append("\n\n【事业发展建议】\n"); + + if (!guanLuStars.isEmpty()) { + String guanLuStar = guanLuStars.get(0); + if ("紫微".equals(guanLuStar) || "天府".equals(guanLuStar)) { + sb.append("你的事业运势不错,容易得到贵人相助,发展会比较顺利。"); + } else if ("七杀".equals(guanLuStar) || "破军".equals(guanLuStar)) { + sb.append("你的事业变动会比较多,建议稳扎稳打,不要急于求成。"); + } else if ("太阳".equals(guanLuStar)) { + sb.append("你的事业运势旺盛,适合往外发展,多接触外面的机会。"); + } else if ("太阴".equals(guanLuStar)) { + sb.append("你的事业发展比较平稳,适合稳中求进,不要太冒进。"); + } + } + + return sb.toString(); + } + + private String analyzeGanQing(ZiWei ziWei, List shiErMingGong, List> shiErGongZhuXing) { + StringBuilder sb = new StringBuilder(); + + int fuQiIndex = getGongIndex(shiErMingGong, "夫妻宫"); + int ziNvIndex = getGongIndex(shiErMingGong, "子女宫"); + + List fuQiStars = fuQiIndex >= 0 ? getMainStars(shiErGongZhuXing.get(fuQiIndex)) : new ArrayList<>(); + + sb.append("【感情婚姻分析】\n"); + + if (fuQiStars.isEmpty()) { + sb.append("你的感情运势比较平淡,婚姻生活相对稳定。"); + sb.append("另一半可能是一个性格温和、不张扬的人。"); + sb.append("你们的感情不会太轰轰烈烈,但会比较长久稳定。"); + } else { + String fuQiStar = fuQiStars.get(0); + + switch (fuQiStar) { + case "紫微": + case "天府": + sb.append("你的另一半可能是一个有能力、有地位的人。"); + sb.append("对方性格比较强势,在家里可能说一不二。"); + sb.append("你们的婚姻比较稳定,但要注意互相尊重。"); + break; + + case "天机": + case "太阴": + sb.append("你的另一半可能是一个心思细腻、温柔体贴的人。"); + sb.append("对方比较顾家,会照顾人,但有时候会想太多。"); + sb.append("你们的感情比较细腻,需要多沟通。"); + break; + + case "太阳": + sb.append("你的另一半可能是一个开朗热情的人。"); + sb.append("对方比较外向,喜欢社交,人缘很好。"); + sb.append("你们的感情比较阳光,充满正能量。"); + break; + + case "武曲": + sb.append("你的另一半可能是一个务实、有经济头脑的人。"); + sb.append("对方比较会过日子,但有时候会显得太现实。"); + sb.append("你们的婚姻比较务实,注重物质基础。"); + break; + + case "贪狼": + case "廉贞": + sb.append("你的另一半可能是一个有魅力、有情趣的人。"); + sb.append("对方比较会享受生活,但有时候会显得花心。"); + sb.append("你们的感情比较浪漫,但要注意专一。"); + break; + + case "七杀": + case "破军": + sb.append("你的另一半可能是一个有个性、有主见的人。"); + sb.append("对方性格比较强势,不喜欢被人管。"); + sb.append("你们的感情可能会有波折,需要多包容。"); + break; + + case "天同": + sb.append("你的另一半可能是一个温和、好相处的人。"); + sb.append("对方比较随和,不喜欢争吵。"); + sb.append("你们的感情比较和谐,生活平淡但幸福。"); + break; + + case "巨门": + sb.append("你的另一半可能是一个能说会道的人。"); + sb.append("对方口才好,但有时候会和你抬杠。"); + sb.append("你们的感情需要多沟通,避免误会。"); + break; + + case "天相": + sb.append("你的另一半可能是一个正直、有原则的人。"); + sb.append("对方比较传统,重视家庭。"); + sb.append("你们的感情比较稳定,互相尊重。"); + break; + + case "天梁": + sb.append("你的另一半可能是一个成熟、有担当的人。"); + sb.append("对方比较顾家,会照顾人。"); + sb.append("你们的感情比较稳定,对方会给你安全感。"); + break; + + default: + sb.append("你的感情运势比较正常,婚姻生活相对平稳。"); + } + } + + sb.append("\n\n【感情建议】\n"); + sb.append("感情需要经营,建议多沟通、多理解、多包容。"); + sb.append("遇到问题及时解决,不要冷战。"); + sb.append("珍惜眼前人,用心经营你的感情。"); + + return sb.toString(); + } + + private String analyzeCaiYun(ZiWei ziWei, List shiErMingGong, List> shiErGongZhuXing) { + StringBuilder sb = new StringBuilder(); + + int caiBoIndex = getGongIndex(shiErMingGong, "财帛宫"); + + List caiBoStars = caiBoIndex >= 0 ? getMainStars(shiErGongZhuXing.get(caiBoIndex)) : new ArrayList<>(); + + sb.append("【财运分析】\n"); + + if (caiBoStars.isEmpty()) { + sb.append("你的财运比较平稳,不会大起大落。"); + sb.append("收入来源比较稳定,但不会有太多意外之财。"); + sb.append("建议量入为出,做好理财规划。"); + } else { + String caiBoStar = caiBoStars.get(0); + + switch (caiBoStar) { + case "紫微": + case "天府": + sb.append("你的财运不错,容易积累财富。"); + sb.append("收入稳定,有存钱的习惯。"); + sb.append("适合稳健投资,不宜冒险。"); + break; + + case "武曲": + sb.append("你是一个有财运的人,对金钱敏感。"); + sb.append("理财能力强,会赚钱也会存钱。"); + sb.append("适合做和钱打交道的工作,财运会比较旺。"); + break; + + case "太阴": + sb.append("你的财运比较平稳,适合慢慢积累。"); + sb.append("不宜冒险投资,稳健为主。"); + sb.append("可能有一些偏财运,但不要指望一夜暴富。"); + break; + + case "贪狼": + sb.append("你的财运起伏比较大,有时候很旺,有时候一般。"); + sb.append("可能有一些偏财运,但不要贪心。"); + sb.append("建议稳健理财,不要投机取巧。"); + break; + + case "太阳": + sb.append("你的财运和事业挂钩,事业好财运就好。"); + sb.append("适合靠努力工作赚钱,不太适合投资。"); + sb.append("收入可能比较公开透明。"); + break; + + case "七杀": + case "破军": + sb.append("你的财运起伏比较大,可能有大起大落。"); + sb.append("有时候会有一笔大收入,但花销也大。"); + sb.append("建议做好财务规划,不要冲动消费。"); + break; + + case "天机": + sb.append("你的财运需要动脑子,靠智慧赚钱。"); + sb.append("适合做一些需要策划、分析的工作。"); + sb.append("收入可能不太稳定,但总体还行。"); + break; + + case "天同": + sb.append("你的财运比较平稳,不会太差也不会太好。"); + sb.append("适合安稳的工作,不太适合冒险。"); + sb.append("可能有一些意外之财,但不要指望。"); + break; + + case "廉贞": + sb.append("你的财运和人际关系有关,靠人脉赚钱。"); + sb.append("可能有一些偏财运,但要注意风险。"); + sb.append("建议稳健为主,不要贪心。"); + break; + + default: + sb.append("你的财运比较正常,不会大富大贵,也不会太差。"); + sb.append("建议量入为出,做好理财规划。"); + } + } + + sb.append("\n\n【理财建议】\n"); + sb.append("不管财运好坏,都要学会理财。"); + sb.append("收入再高,不会理财也是白搭。"); + sb.append("建议养成记账的习惯,控制不必要的开支。"); + + return sb.toString(); + } + + private String buildZongJie(ZiWei ziWei, List mainStars, String xingGe, String shiYe, String ganQing, String caiYun) { + StringBuilder sb = new StringBuilder(); + + sb.append("【命盘总评】\n\n"); + + sb.append("根据你的出生时间排出的紫微命盘,以下是通俗易懂的解读:\n\n"); + + sb.append("你的命宫在").append(ziWei.getMingGongDiZhi()).append("宫"); + if (!mainStars.isEmpty()) { + sb.append(",主星是").append(String.join("和", mainStars)); + } + sb.append("。").append(ziWei.getWuXingJu()).append(",说明你的人生节奏是").append(getWuXingJuDesc(ziWei.getWuXingJu())).append("。\n\n"); + + sb.append("命主").append(ziWei.getMingZhu()).append(",身主").append(ziWei.getShenZhu()).append("。"); + sb.append("这说明你内在追求的是").append(getMingZhuDesc(ziWei.getMingZhu())); + sb.append(",外在表现的是").append(getShenZhuDesc(ziWei.getShenZhu())).append("。\n\n"); + + sb.append("【重要提醒】\n"); + sb.append("命盘只是参考,命运掌握在自己手中。"); + sb.append("了解自己的优势和短板,扬长避短,才能过上更好的生活。"); + sb.append("不管命盘如何,努力和善良永远是最重要的。"); + + return sb.toString(); + } + + private String getWuXingJuDesc(String wuXingJu) { + if (wuXingJu.contains("水二")) { + return "比较灵活多变,适应能力强"; + } else if (wuXingJu.contains("木三")) { + return "比较稳健,有成长性"; + } else if (wuXingJu.contains("金四")) { + return "比较务实,注重实际"; + } else if (wuXingJu.contains("土五")) { + return "比较稳重,厚积薄发"; + } else if (wuXingJu.contains("火六")) { + return "比较快速,有冲劲"; + } + return "比较平稳"; + } + + private String getMingZhuDesc(String mingZhu) { + Map descMap = new HashMap<>(); + descMap.put("贪狼", "物质享受和人生体验"); + descMap.put("巨门", "表达和沟通"); + descMap.put("禄存", "稳定和积累"); + descMap.put("文曲", "文艺和才华"); + descMap.put("廉贞", "情感和魅力"); + descMap.put("武曲", "财富和成就"); + descMap.put("破军", "变革和突破"); + descMap.put("左辅", "帮助和服务"); + descMap.put("右弼", "支持和配合"); + descMap.put("文昌", "学业和知识"); + descMap.put("天相", "公正和平衡"); + descMap.put("天梁", "庇护和关怀"); + descMap.put("七杀", "权力和掌控"); + descMap.put("天同", "安逸和享受"); + return descMap.getOrDefault(mingZhu, "自我实现"); + } + + private String getShenZhuDesc(String shenZhu) { + Map descMap = new HashMap<>(); + descMap.put("火星", "热情和行动力"); + descMap.put("铃星", "内敛和思考"); + descMap.put("天相", "正直和公正"); + descMap.put("天梁", "稳重和可靠"); + descMap.put("天同", "温和和随和"); + descMap.put("文昌", "学习和思考"); + descMap.put("文曲", "艺术和浪漫"); + return descMap.getOrDefault(shenZhu, "个人特质"); } public static class ZiWeiRequest { diff --git a/xuan-deduct-uniapp/src/pages/taluo/result.vue b/xuan-deduct-uniapp/src/pages/taluo/result.vue index e64d6bc..ca85682 100644 --- a/xuan-deduct-uniapp/src/pages/taluo/result.vue +++ b/xuan-deduct-uniapp/src/pages/taluo/result.vue @@ -41,6 +41,55 @@ + + + + 总 + + 综合解读 + + + + + + 性格特质 + + + {{ result.summary.personality }} + + + + + + + 感情运势 + + + {{ result.summary.emotion }} + + + + + + + 事业发展 + + + {{ result.summary.career }} + + + + + + + 总体建议 + + + {{ result.summary.overall }} + + + +