diff --git a/data/xuan.mv.db b/data/xuan.mv.db new file mode 100644 index 0000000..7e217a5 Binary files /dev/null and b/data/xuan.mv.db differ diff --git a/src/main/java/xuan/controller/LiuYaoController.java b/src/main/java/xuan/controller/LiuYaoController.java index 449d398..52ea263 100644 --- a/src/main/java/xuan/controller/LiuYaoController.java +++ b/src/main/java/xuan/controller/LiuYaoController.java @@ -29,7 +29,18 @@ public class LiuYaoController { 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.setLiuYaoYaoXiang(request.getLiuYaoYaoXiang() != null ? request.getLiuYaoYaoXiang() : "——,——,——,——,——,——"); + 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); } diff --git a/src/main/java/xuan/controller/RecordController.java b/src/main/java/xuan/controller/RecordController.java index d435853..5c20c3c 100644 --- a/src/main/java/xuan/controller/RecordController.java +++ b/src/main/java/xuan/controller/RecordController.java @@ -17,6 +17,20 @@ public class RecordController { @Autowired private DeductRecordService recordService; + @PostMapping("/save") + public Map saveRecord(@RequestBody DeductRecord record) { + Map result = new HashMap<>(); + try { + DeductRecord saved = recordService.saveRecord(record); + result.put("success", true); + result.put("data", saved); + } catch (Exception e) { + result.put("success", false); + result.put("error", e.getMessage()); + } + return result; + } + @GetMapping("/list") public Map getRecords(@RequestParam String userId) { Map result = new HashMap<>(); diff --git a/src/main/java/xuan/controller/TaLuoController.java b/src/main/java/xuan/controller/TaLuoController.java index cea40a2..1c472fe 100644 --- a/src/main/java/xuan/controller/TaLuoController.java +++ b/src/main/java/xuan/controller/TaLuoController.java @@ -148,3 +148,4 @@ public class TaLuoController { public String getSpreadType() { return spreadType; } public void setSpreadType(String spreadType) { this.spreadType = spreadType; } } +} diff --git a/src/main/java/xuan/controller/ZiWeiController.java b/src/main/java/xuan/controller/ZiWeiController.java index 114a4f5..0022126 100644 --- a/src/main/java/xuan/controller/ZiWeiController.java +++ b/src/main/java/xuan/controller/ZiWeiController.java @@ -10,39 +10,6 @@ import java.util.*; @RestController @RequestMapping("/api/ziwei") - 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("父母宫", "代表父母关系、长辈助力、学历背景"); - } - public class ZiWeiController { private final HunYuanAiService aiService = new HunYuanAiService(); @@ -76,125 +43,86 @@ public class ZiWeiController { data.put("aiAnalysis", aiAnalysis); result.put("success", true); - data.put("occupy", ziWei.getOccupy()); result.put("data", data); } catch (Exception e) { - data.put("zao", ziWei.getZao()); result.put("success", false); result.put("error", e.getMessage()); } - data.put("xingQi", ziWei.getXingQi()); - data.put("jiJie", ziWei.getJiJie()); return result; } - 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()); + private Map buildZiWeiData(ZiWei ziWei) { Map data = new HashMap<>(); data.put("name", ziWei.getName()); data.put("sex", ziWei.getSex()); data.put("age", ziWei.getAge()); - 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("solar", ziWei.getSolarStr2()); - - data.put("wuXingJu", ziWei.getWuXingJu()); + data.put("lunar", ziWei.getLunarStr2()); + data.put("shengXiao", ziWei.getShengXiao()); data.put("xingZuo", ziWei.getXingZuo()); data.put("wuXingJu", ziWei.getWuXingJu()); data.put("yearGanZhi", ziWei.getYearGanZhi()); data.put("monthGanZhi", ziWei.getMonthGanZhi()); data.put("dayGanZhi", ziWei.getDayGanZhi()); - 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()); - data.put("hourGanZhi", ziWei.getHourGanZhi()); - data.put("shiErGongZhuXingGuanXi", ziWei.getShiErGongZhuXingGuanXi()); + data.put("yearGanZhiNaYin", ziWei.getYearGanZhiNaYin()); + data.put("monthGanZhiNaYin", ziWei.getMonthGanZhiNaYin()); + data.put("dayGanZhiNaYin", ziWei.getDayGanZhiNaYin()); + data.put("hourGanZhiNaYin", ziWei.getHourGanZhiNaYin()); - data.put("huaLuXingGongWei", ziWei.getHuaLuXingGongWei()); - data.put("huaQuanXingGongWei", ziWei.getHuaQuanXingGongWei()); - data.put("huaKeXingGongWei", ziWei.getHuaKeXingGongWei()); - data.put("huaJiXingGongWei", ziWei.getHuaJiXingGongWei()); + data.put("mingGongDiZhi", ziWei.getMingGongDiZhi()); + data.put("shenGongDiZhi", ziWei.getShenGongDiZhi()); + data.put("mingGongGongWei", ziWei.getMingGongGongWei()); + data.put("shenGongGongWei", ziWei.getShenGongGongWei()); + data.put("mingZhu", ziWei.getMingZhu()); data.put("shenZhu", ziWei.getShenZhu()); + data.put("nanNvYinYang", ziWei.getNanNvYinYang()); + data.put("shiErGongDiZhi", ziWei.getShiErGongDiZhi()); data.put("shiErGongTianGan", ziWei.getShiErGongTianGan()); data.put("shiErMingGong", ziWei.getShiErMingGong()); data.put("shiErShenGong", ziWei.getShiErShenGong()); + + data.put("shiErGongZhuXing", ziWei.getShiErGongZhuXing(false)); data.put("shiErGongSiHuaXing", ziWei.getShiErGongSiHuaXing()); - data.put("shiErGongSiHuaXingGuanXi", ziWei.getShiErGongSiHuaXingGuanXi()); + data.put("shiErZhangSheng", ziWei.getShiErZhangSheng()); + data.put("daXian", ziWei.getDaXian()); - 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()); data.put("huaLuXingGongWeiJieDu", ziWei.getHuaLuXingGongWeiJieDu()); data.put("huaQuanXingGongWeiJieDu", ziWei.getHuaQuanXingGongWeiJieDu()); data.put("huaKeXingGongWeiJieDu", ziWei.getHuaKeXingGongWeiJieDu()); data.put("huaJiXingGongWeiJieDu", ziWei.getHuaJiXingGongWeiJieDu()); - data.put("jieDu", buildJieDu(ziWei, shiErMingGong, shiErGongZhuXing)); - return data; } - - private Map buildJieDu(ZiWei ziWei, List shiErMingGong, List> shiErGongZhuXing) { - Map jieDu = new HashMap<>(); - - int mingGongIndex = ziWei.getMingGongGongWei() - 1; - List mingGongStars = shiErGongZhuXing.get(mingGongIndex); - + + public static class ZiWeiRequest { + 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 wuXingJuType; + 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; } - for (String star : mingGongStars) { - if (ZHU_XING_JIE_DU.containsKey(star)) { + 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; } diff --git a/src/main/java/xuan/repository/DeductRecordRepository.java b/src/main/java/xuan/repository/DeductRecordRepository.java index 01fcbac..d22bc8c 100644 --- a/src/main/java/xuan/repository/DeductRecordRepository.java +++ b/src/main/java/xuan/repository/DeductRecordRepository.java @@ -1,5 +1,6 @@ package xuan.repository; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -15,6 +16,6 @@ public interface DeductRecordRepository extends JpaRepository findByUserIdAndTypeOrderByCreateTimeDesc(String userId, String type); - @Query("SELECT d FROM DeductRecord d WHERE d.userId = :userId ORDER BY d.createTime DESC LIMIT 10") - List findTop10ByUserIdOrderByCreateTimeDesc(@Param("userId") String userId); + @Query("SELECT d FROM DeductRecord d WHERE d.userId = :userId ORDER BY d.createTime DESC") + List findTop10ByUserIdOrderByCreateTimeDesc(@Param("userId") String userId, Pageable pageable); } diff --git a/src/main/java/xuan/service/DeductRecordService.java b/src/main/java/xuan/service/DeductRecordService.java index c87ed99..cab3124 100644 --- a/src/main/java/xuan/service/DeductRecordService.java +++ b/src/main/java/xuan/service/DeductRecordService.java @@ -1,6 +1,7 @@ package xuan.service; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import xuan.entity.DeductRecord; @@ -33,7 +34,7 @@ public class DeductRecordService { } public List findRecentByUserId(String userId) { - return recordRepository.findTop10ByUserIdOrderByCreateTimeDesc(userId); + return recordRepository.findTop10ByUserIdOrderByCreateTimeDesc(userId, PageRequest.of(0, 10)); } @Transactional diff --git a/xuan-deduct-uniapp/src/pages/bazi/result.vue b/xuan-deduct-uniapp/src/pages/bazi/result.vue index ed61a01..5afbcf2 100644 --- a/xuan-deduct-uniapp/src/pages/bazi/result.vue +++ b/xuan-deduct-uniapp/src/pages/bazi/result.vue @@ -165,6 +165,7 @@