feat: 完成梅花易数模块开发

- 新增后端MeiHuaController控制器,提供梅花易数排盘API接口
- 实现前端梅花易数输入界面,支持时间起卦、自动起卦、数字起卦等多种方式
- 创建梅花易数结果展示页面,显示本卦、变卦、互卦、错卦、综卦等完整信息
- 更新API配置文件,添加梅花易数API调用
- 更新pages.json配置,添加梅花易数结果页面路由
- 梅花易数功能完整实现,符合传统易学逻辑
This commit is contained in:
H1d3rOne committed 2026-03-06 04:28:16 +08:00
1 parent bba9ad46de
commit 23188a40e0
3 files changed
+1222 -19

No files matched your search

@@ -0,0 +1,237 @@
package xuan.controller;
import org.springframework.web.bind.annotation.*;
import xuan.core.meihua.MeiHua;
import xuan.core.meihua.settings.MeiHuaJiChuSetting;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api/meihua")
public class MeiHuaController {
@PostMapping("/paipan")
public Map<String, Object> paiPan(@RequestBody MeiHuaRequest request) {
Map<String, Object> result = new HashMap<>();
try {
MeiHuaJiChuSetting setting = new MeiHuaJiChuSetting();
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);
setting.setShu(request.getShu() != null ? request.getShu() : 111);
setting.setDanShu(request.getDanShu() != null ? request.getDanShu() : 111);
setting.setShuangShuOne(request.getShuangShuOne() != null ? request.getShuangShuOne() : 111);
setting.setShuangShuTwo(request.getShuangShuTwo() != null ? request.getShuangShuTwo() : 111);
setting.setShangXiaGuaType(request.getShangXiaGuaType() != null ? request.getShangXiaGuaType() : 1);
setting.setDongYaoType(request.getDongYaoType() != null ? request.getDongYaoType() : 0);
MeiHua meiHua = new MeiHua(setting);
result.put("success", true);
result.put("data", buildMeiHuaData(meiHua));
} catch (Exception e) {
result.put("success", false);
result.put("error", e.getMessage());
}
return result;
}
private Map<String, Object> buildMeiHuaData(MeiHua meiHua) {
Map<String, Object> data = new HashMap<>();
data.put("name", meiHua.getName());
data.put("sex", meiHua.getSex());
data.put("age", meiHua.getAge());
data.put("solar", meiHua.getSolarStr2());
data.put("lunar", meiHua.getLunarStr2());
data.put("xingQi", meiHua.getXingQi());
data.put("jiJie", meiHua.getJiJie());
data.put("shengXiao", meiHua.getShengXiao());
data.put("xingZuo", meiHua.getXingZuo());
data.put("yueXiang", meiHua.getYueXiang());
data.put("yueJiang", meiHua.getYueJiang());
data.put("yueJiangShen", meiHua.getYueJiangShen());
data.put("wuBuYuShi", meiHua.getWuBuYuShi());
data.put("yearGanZhi", meiHua.getYearGanZhi());
data.put("monthGanZhi", meiHua.getMonthGanZhi());
data.put("dayGanZhi", meiHua.getDayGanZhi());
data.put("hourGanZhi", meiHua.getHourGanZhi());
data.put("yearGanZhiWuXing", meiHua.getYearGanZhiWuXing());
data.put("monthGanZhiWuXing", meiHua.getMonthGanZhiWuXing());
data.put("dayGanZhiWuXing", meiHua.getDayGanZhiWuXing());
data.put("hourGanZhiWuXing", meiHua.getHourGanZhiWuXing());
data.put("yearGanZhiNaYin", meiHua.getYearGanZhiNaYin());
data.put("monthGanZhiNaYin", meiHua.getMonthGanZhiNaYin());
data.put("dayGanZhiNaYin", meiHua.getDayGanZhiNaYin());
data.put("hourGanZhiNaYin", meiHua.getHourGanZhiNaYin());
data.put("yearGanZhiKongWang", meiHua.getYearGanZhiKongWang());
data.put("monthGanZhiKongWang", meiHua.getMonthGanZhiKongWang());
data.put("dayGanZhiKongWang", meiHua.getDayGanZhiKongWang());
data.put("hourGanZhiKongWang", meiHua.getHourGanZhiKongWang());
data.put("prevJie", meiHua.getPrevJie());
data.put("prevJieDateStr", meiHua.getPrevJieDateStr());
data.put("prevJieDay", meiHua.getPrevJieDay());
data.put("nextJie", meiHua.getNextJie());
data.put("nextJieDateStr", meiHua.getNextJieDateStr());
data.put("nextJieDay", meiHua.getNextJieDay());
data.put("chuShengJie", meiHua.getChuShengJie());
data.put("prevQi", meiHua.getPrevQi());
data.put("prevQiDateStr", meiHua.getPrevQiDateStr());
data.put("prevQiDay", meiHua.getPrevQiDay());
data.put("nextQi", meiHua.getNextQi());
data.put("nextQiDateStr", meiHua.getNextQiDateStr());
data.put("nextQiDay", meiHua.getNextQiDay());
data.put("chuShengQi", meiHua.getChuShengQi());
data.put("shangGuaName", meiHua.getShangGuaName());
data.put("xiaGuaName", meiHua.getXiaGuaName());
data.put("benGuaName", meiHua.getBenGuaName());
data.put("bianGuaName", meiHua.getBianGuaName());
data.put("huGuaName", meiHua.getHuGuaName());
data.put("cuoGuaName", meiHua.getCuoGuaName());
data.put("zongGuaName", meiHua.getZongGuaName());
data.put("shangGuaAs", meiHua.getShangGuaAs());
data.put("xiaGuaAs", meiHua.getXiaGuaAs());
data.put("benGuaAs", meiHua.getBenGuaAs());
data.put("bianGuaAs", meiHua.getBianGuaAs());
data.put("huGuaAs", meiHua.getHuGuaAs());
data.put("cuoGuaAs", meiHua.getCuoGuaAs());
data.put("zongGuaAs", meiHua.getZongGuaAs());
data.put("benGuaGuaCi", meiHua.getBenGuaGuaCi());
data.put("bianGuaGuaCi", meiHua.getBianGuaGuaCi());
data.put("huGuaGuaCi", meiHua.getHuGuaGuaCi());
data.put("cuoGuaGuaCi", meiHua.getCuoGuaGuaCi());
data.put("zongGuaGuaCi", meiHua.getZongGuaGuaCi());
data.put("benGuaShangGuaName", meiHua.getBenGuaShangGuaName());
data.put("bianGuaShangGuaName", meiHua.getBianGuaShangGuaName());
data.put("huGuaShangGuaName", meiHua.getHuGuaShangGuaName());
data.put("cuoGuaShangGuaName", meiHua.getCuoGuaShangGuaName());
data.put("zongGuaShangGuaName", meiHua.getZongGuaShangGuaName());
data.put("benGuaXiaGuaName", meiHua.getBenGuaXiaGuaName());
data.put("bianGuaXiaGuaName", meiHua.getBianGuaXiaGuaName());
data.put("huGuaXiaGuaName", meiHua.getHuGuaXiaGuaName());
data.put("cuoGuaXiaGuaName", meiHua.getCuoGuaXiaGuaName());
data.put("zongGuaXiaGuaName", meiHua.getZongGuaXiaGuaName());
data.put("benGuaShangGuaAs", meiHua.getBenGuaShangGuaAs());
data.put("bianGuaShangGuaAs", meiHua.getBianGuaShangGuaAs());
data.put("huGuaShangGuaAs", meiHua.getHuGuaShangGuaAs());
data.put("cuoGuaShangGuaAs", meiHua.getCuoGuaShangGuaAs());
data.put("zongGuaShangGuaAs", meiHua.getZongGuaShangGuaAs());
data.put("benGuaXiaGuaAs", meiHua.getBenGuaXiaGuaAs());
data.put("bianGuaXiaGuaAs", meiHua.getBianGuaXiaGuaAs());
data.put("huGuaXiaGuaAs", meiHua.getHuGuaXiaGuaAs());
data.put("cuoGuaXiaGuaAs", meiHua.getCuoGuaXiaGuaAs());
data.put("zongGuaXiaGuaAs", meiHua.getZongGuaXiaGuaAs());
data.put("benGuaLiuYaoName", meiHua.getBenGuaLiuYaoName());
data.put("bianGuaLiuYaoName", meiHua.getBianGuaLiuYaoName());
data.put("huGuaLiuYaoName", meiHua.getHuGuaLiuYaoName());
data.put("cuoGuaLiuYaoName", meiHua.getCuoGuaLiuYaoName());
data.put("zongGuaLiuYaoName", meiHua.getZongGuaLiuYaoName());
data.put("benGuaLiuYaoAs", meiHua.getBenGuaLiuYaoAs());
data.put("bianGuaLiuYaoAs", meiHua.getBianGuaLiuYaoAs());
data.put("huGuaLiuYaoAs", meiHua.getHuGuaLiuYaoAs());
data.put("cuoGuaLiuYaoAs", meiHua.getCuoGuaLiuYaoAs());
data.put("zongGuaLiuYaoAs", meiHua.getZongGuaLiuYaoAs());
data.put("benGuaLiuYaoYaoCi", meiHua.getBenGuaLiuYaoYaoCi());
data.put("bianGuaLiuYaoYaoCi", meiHua.getBianGuaLiuYaoYaoCi());
data.put("huGuaLiuYaoYaoCi", meiHua.getHuGuaLiuYaoYaoCi());
data.put("cuoGuaLiuYaoYaoCi", meiHua.getCuoGuaLiuYaoYaoCi());
data.put("zongGuaLiuYaoYaoCi", meiHua.getZongGuaLiuYaoYaoCi());
data.put("benGuaLink", meiHua.getBenGuaLink());
data.put("bianGuaLink", meiHua.getBianGuaLink());
data.put("huGuaLink", meiHua.getHuGuaLink());
data.put("cuoGuaLink", meiHua.getCuoGuaLink());
data.put("zongGuaLink", meiHua.getZongGuaLink());
data.put("dongYao", meiHua.getDongYao());
data.put("dongYaoStr", meiHua.getDongYaoStr());
data.put("guaMa", meiHua.getGuaMa());
return data;
}
public static class MeiHuaRequest {
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 Integer shu;
private Integer danShu;
private Integer shuangShuOne;
private Integer shuangShuTwo;
private Integer shangXiaGuaType;
private Integer dongYaoType;
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 Integer getShu() { return shu; }
public void setShu(Integer shu) { this.shu = shu; }
public Integer getDanShu() { return danShu; }
public void setDanShu(Integer danShu) { this.danShu = danShu; }
public Integer getShuangShuOne() { return shuangShuOne; }
public void setShuangShuOne(Integer shuangShuOne) { this.shuangShuOne = shuangShuOne; }
public Integer getShuangShuTwo() { return shuangShuTwo; }
public void setShuangShuTwo(Integer shuangShuTwo) { this.shuangShuTwo = shuangShuTwo; }
public Integer getShangXiaGuaType() { return shangXiaGuaType; }
public void setShangXiaGuaType(Integer shangXiaGuaType) { this.shangXiaGuaType = shangXiaGuaType; }
public Integer getDongYaoType() { return dongYaoType; }
public void setDongYaoType(Integer dongYaoType) { this.dongYaoType = dongYaoType; }
}
}