feat: 完善紫微斗数模块,添加命理解读功能
- 后端新增十四主星解读字典和十二宫位解读字典 - 添加命盘总览、人生建议、命宫主星解读功能 - 添加主要宫位分析(命宫、财帛宫、官禄宫、夫妻宫、迁移宫、福德宫) - 添加四化飞星详细解读 - 前端结果页面重新设计,优先显示日期和命理解读 - 优化页面布局,提升用户体验
This commit is contained in:
1 parent
43609321a6
commit
a695b36d2b
4 files changed
+507
-373
No files matched your search
@@ -4,14 +4,45 @@ import org.springframework.web.bind.annotation.*;
|
||||
import xuan.core.ziwei.ZiWei;
|
||||
import xuan.core.ziwei.settings.ZiWeiJiChuSetting;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/ziwei")
|
||||
public class ZiWeiController {
|
||||
|
||||
private static final Map<String, String> ZHU_XING_JIE_DU = new HashMap<>();
|
||||
private static final Map<String, String> 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<String, Object> paiPan(@RequestBody ZiWeiRequest request) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
@@ -117,7 +148,8 @@ public class ZiWeiController {
|
||||
data.put("liuNianSuiQianZhuXing", ziWei.getLiuNianSuiQianZhuXing());
|
||||
data.put("liuNianJiangQianZhuXing", ziWei.getLiuNianJiangQianZhuXing());
|
||||
|
||||
data.put("shiErGongZhuXing", ziWei.getShiErGongZhuXing(false));
|
||||
List<List<String>> shiErGongZhuXing = ziWei.getShiErGongZhuXing(false);
|
||||
data.put("shiErGongZhuXing", shiErGongZhuXing);
|
||||
data.put("shiErGongZhuXingGuanXi", ziWei.getShiErGongZhuXingGuanXi());
|
||||
|
||||
data.put("huaLuXingGongWei", ziWei.getHuaLuXingGongWei());
|
||||
@@ -145,8 +177,145 @@ public class ZiWeiController {
|
||||
data.put("nextQi", ziWei.getNextQi());
|
||||
data.put("chuShengQi", ziWei.getChuShengQi());
|
||||
|
||||
List<String> shiErMingGong = ziWei.getShiErMingGong();
|
||||
int mingGongIndex = ziWei.getMingGongGongWei() - 1;
|
||||
List<String> mingGongStars = shiErGongZhuXing.get(mingGongIndex);
|
||||
|
||||
data.put("jieDu", buildJieDu(ziWei, shiErMingGong, shiErGongZhuXing));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
private Map<String, Object> buildJieDu(ZiWei ziWei, List<String> shiErMingGong, List<List<String>> shiErGongZhuXing) {
|
||||
Map<String, Object> jieDu = new HashMap<>();
|
||||
|
||||
int mingGongIndex = ziWei.getMingGongGongWei() - 1;
|
||||
List<String> mingGongStars = shiErGongZhuXing.get(mingGongIndex);
|
||||
|
||||
List<String> 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<Map<String, String>> mingGongJieDu = new ArrayList<>();
|
||||
for (String star : mingGongStars) {
|
||||
if (ZHU_XING_JIE_DU.containsKey(star)) {
|
||||
Map<String, String> starJieDu = new HashMap<>();
|
||||
starJieDu.put("star", star);
|
||||
starJieDu.put("meaning", ZHU_XING_JIE_DU.get(star));
|
||||
mingGongJieDu.add(starJieDu);
|
||||
}
|
||||
}
|
||||
jieDu.put("mingGongStars", mingGongJieDu);
|
||||
|
||||
List<Map<String, Object>> 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<String, Object> gongJieDu = new HashMap<>();
|
||||
gongJieDu.put("gongWei", gongWei);
|
||||
gongJieDu.put("diZhi", ziWei.getShiErGongDiZhi().get(gongIndex));
|
||||
gongJieDu.put("meaning", GONG_WEI_JIE_DU.get(gongWei));
|
||||
|
||||
List<String> gongStars = shiErGongZhuXing.get(gongIndex);
|
||||
List<String> 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<Map<String, String>> siHuaJieDu = new ArrayList<>();
|
||||
|
||||
Map<String, String> huaLu = new HashMap<>();
|
||||
huaLu.put("type", "化禄");
|
||||
huaLu.put("gongWei", ziWei.getHuaLuXingGongWeiJieDu());
|
||||
huaLu.put("meaning", "主财运亨通,机遇顺遂,利于求财发展");
|
||||
siHuaJieDu.add(huaLu);
|
||||
|
||||
Map<String, String> huaQuan = new HashMap<>();
|
||||
huaQuan.put("type", "化权");
|
||||
huaQuan.put("gongWei", ziWei.getHuaQuanXingGongWeiJieDu());
|
||||
huaQuan.put("meaning", "主权势掌控,竞争有力,利于事业掌权");
|
||||
siHuaJieDu.add(huaQuan);
|
||||
|
||||
Map<String, String> huaKe = new HashMap<>();
|
||||
huaKe.put("type", "化科");
|
||||
huaKe.put("gongWei", ziWei.getHuaKeXingGongWeiJieDu());
|
||||
huaKe.put("meaning", "主名声学历,贵人相助,利于学业考试");
|
||||
siHuaJieDu.add(huaKe);
|
||||
|
||||
Map<String, String> 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);
|
||||
|
||||
return jieDu;
|
||||
}
|
||||
|
||||
private String generateAdvice(ZiWei ziWei, List<String> mainStars) {
|
||||
StringBuilder advice = 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("命格独特,各有千秋,宜发挥自身优势,扬长避短。");
|
||||
}
|
||||
|
||||
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());
|
||||
|
||||
return advice.toString();
|
||||
}
|
||||
|
||||
public static class ZiWeiRequest {
|
||||
private String name;
|
||||
|
||||
Reference in new issue
Block a user