diff --git a/src/main/java/xuan/controller/LiuYaoController.java b/src/main/java/xuan/controller/LiuYaoController.java new file mode 100644 index 0000000..df64ad9 --- /dev/null +++ b/src/main/java/xuan/controller/LiuYaoController.java @@ -0,0 +1,219 @@ +package xuan.controller; + +import org.springframework.web.bind.annotation.*; +import xuan.core.liuyao.LiuYao; +import xuan.core.liuyao.settings.LiuYaoJiChuSetting; +import xuan.core.liuyao.settings.LiuYaoShenShaSetting; + +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/api/liuyao") +public class LiuYaoController { + + @PostMapping("/paipan") + public Map paiPan(@RequestBody LiuYaoRequest request) { + Map result = new HashMap<>(); + try { + LiuYaoJiChuSetting setting = new LiuYaoJiChuSetting(); + 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.setLiuYaoYaoXiang(request.getLiuYaoYaoXiang() != null ? request.getLiuYaoYaoXiang() : "——,——,——,——,——,——"); + + LiuYao liuYao = new LiuYao(setting); + liuYao.liuYaoShenShaSetting(new LiuYaoShenShaSetting()); + + result.put("success", true); + result.put("data", buildLiuYaoData(liuYao)); + } catch (Exception e) { + result.put("success", false); + result.put("error", e.getMessage()); + } + return result; + } + + private Map buildLiuYaoData(LiuYao liuYao) { + Map data = new HashMap<>(); + + data.put("name", liuYao.getName()); + data.put("sex", liuYao.getSex()); + data.put("age", liuYao.getAge()); + data.put("solar", liuYao.getSolarStr2()); + data.put("lunar", liuYao.getLunarStr2()); + data.put("xingQi", liuYao.getXingQi()); + data.put("jiJie", liuYao.getJiJie()); + data.put("shengXiao", liuYao.getShengXiao()); + data.put("xingZuo", liuYao.getXingZuo()); + data.put("yueXiang", liuYao.getYueXiang()); + data.put("yueJiang", liuYao.getYueJiang()); + data.put("yueJiangShen", liuYao.getYueJiangShen()); + data.put("wuBuYuShi", liuYao.getWuBuYuShi()); + + data.put("yearGanZhi", liuYao.getYearGanZhi()); + data.put("monthGanZhi", liuYao.getMonthGanZhi()); + data.put("dayGanZhi", liuYao.getDayGanZhi()); + data.put("hourGanZhi", liuYao.getHourGanZhi()); + + data.put("shangGuaName", liuYao.getShangGuaName()); + data.put("xiaGuaName", liuYao.getXiaGuaName()); + data.put("benGuaName", liuYao.getBenGuaName()); + data.put("bianGuaName", liuYao.getBianGuaName()); + data.put("huGuaName", liuYao.getHuGuaName()); + data.put("cuoGuaName", liuYao.getCuoGuaName()); + data.put("zongGuaName", liuYao.getZongGuaName()); + data.put("fuGuaName", liuYao.getFuGuaName()); + + data.put("shangGuaAs", liuYao.getShangGuaAs()); + data.put("xiaGuaAs", liuYao.getXiaGuaAs()); + data.put("benGuaAs", liuYao.getBenGuaAs()); + data.put("bianGuaAs", liuYao.getBianGuaAs()); + data.put("huGuaAs", liuYao.getHuGuaAs()); + data.put("cuoGuaAs", liuYao.getCuoGuaAs()); + data.put("zongGuaAs", liuYao.getZongGuaAs()); + data.put("fuGuaAs", liuYao.getFuGuaAs()); + + data.put("benGuaType", liuYao.getBenGuaType()); + data.put("bianGuaType", liuYao.getBianGuaType()); + data.put("huGuaType", liuYao.getHuGuaType()); + data.put("cuoGuaType", liuYao.getCuoGuaType()); + data.put("zongGuaType", liuYao.getZongGuaType()); + data.put("fuGuaType", liuYao.getFuGuaType()); + + data.put("benGuaGuaShen", liuYao.getBenGuaGuaShen()); + data.put("bianGuaGuaShen", liuYao.getBianGuaGuaShen()); + data.put("huGuaGuaShen", liuYao.getHuGuaGuaShen()); + data.put("cuoGuaGuaShen", liuYao.getCuoGuaGuaShen()); + data.put("zongGuaGuaShen", liuYao.getZongGuaGuaShen()); + data.put("fuGuaGuaShen", liuYao.getFuGuaGuaShen()); + + data.put("benGuaGuaCi", liuYao.getBenGuaGuaCi()); + data.put("bianGuaGuaCi", liuYao.getBianGuaGuaCi()); + data.put("huGuaGuaCi", liuYao.getHuGuaGuaCi()); + data.put("cuoGuaGuaCi", liuYao.getCuoGuaGuaCi()); + data.put("zongGuaGuaCi", liuYao.getZongGuaGuaCi()); + data.put("fuGuaGuaCi", liuYao.getFuGuaGuaCi()); + + data.put("benGuaLiuYaoName", liuYao.getBenGuaLiuYaoName()); + data.put("bianGuaLiuYaoName", liuYao.getBianGuaLiuYaoName()); + data.put("huGuaLiuYaoName", liuYao.getHuGuaLiuYaoName()); + data.put("cuoGuaLiuYaoName", liuYao.getCuoGuaLiuYaoName()); + data.put("zongGuaLiuYaoName", liuYao.getZongGuaLiuYaoName()); + data.put("fuGuaLiuYaoName", liuYao.getFuGuaLiuYaoName()); + + data.put("benGuaLiuYaoAs", liuYao.getBenGuaLiuYaoAs()); + data.put("bianGuaLiuYaoAs", liuYao.getBianGuaLiuYaoAs()); + data.put("huGuaLiuYaoAs", liuYao.getHuGuaLiuYaoAs()); + data.put("cuoGuaLiuYaoAs", liuYao.getCuoGuaLiuYaoAs()); + data.put("zongGuaLiuYaoAs", liuYao.getZongGuaLiuYaoAs()); + data.put("fuGuaLiuYaoAs", liuYao.getFuGuaLiuYaoAs()); + + data.put("benGuaLiuYaoShiYing", liuYao.getBenGuaLiuYaoShiYing()); + data.put("bianGuaLiuYaoShiYing", liuYao.getBianGuaLiuYaoShiYing()); + data.put("huGuaLiuYaoShiYing", liuYao.getHuGuaLiuYaoShiYing()); + data.put("cuoGuaLiuYaoShiYing", liuYao.getCuoGuaLiuYaoShiYing()); + data.put("zongGuaLiuYaoShiYing", liuYao.getZongGuaLiuYaoShiYing()); + data.put("fuGuaLiuYaoShiYing", liuYao.getFuGuaLiuYaoShiYing()); + + data.put("benGuaLiuYaoLiuQin", liuYao.getBenGuaLiuYaoLiuQin()); + data.put("bianGuaLiuYaoLiuQin", liuYao.getBianGuaLiuYaoLiuQin()); + data.put("huGuaLiuYaoLiuQin", liuYao.getHuGuaLiuYaoLiuQin()); + data.put("cuoGuaLiuYaoLiuQin", liuYao.getCuoGuaLiuYaoLiuQin()); + data.put("zongGuaLiuYaoLiuQin", liuYao.getZongGuaLiuYaoLiuQin()); + data.put("fuGuaLiuYaoLiuQin", liuYao.getFuGuaLiuYaoLiuQin()); + + data.put("benGuaLiuYaoGanZhi", liuYao.getBenGuaLiuYaoGanZhi()); + data.put("bianGuaLiuYaoGanZhi", liuYao.getBianGuaLiuYaoGanZhi()); + data.put("huGuaLiuYaoGanZhi", liuYao.getHuGuaLiuYaoGanZhi()); + data.put("cuoGuaLiuYaoGanZhi", liuYao.getCuoGuaLiuYaoGanZhi()); + data.put("zongGuaLiuYaoGanZhi", liuYao.getZongGuaLiuYaoGanZhi()); + data.put("fuGuaLiuYaoGanZhi", liuYao.getFuGuaLiuYaoGanZhi()); + + data.put("benGuaLiuYaoWuXing", liuYao.getBenGuaLiuYaoWuXing()); + data.put("bianGuaLiuYaoWuXing", liuYao.getBianGuaLiuYaoWuXing()); + data.put("huGuaLiuYaoWuXing", liuYao.getHuGuaLiuYaoWuXing()); + data.put("cuoGuaLiuYaoWuXing", liuYao.getCuoGuaLiuYaoWuXing()); + data.put("zongGuaLiuYaoWuXing", liuYao.getZongGuaLiuYaoWuXing()); + data.put("fuGuaLiuYaoWuXing", liuYao.getFuGuaLiuYaoWuXing()); + + data.put("benGuaLiuYaoLiuShen", liuYao.getBenGuaLiuYaoLiuShen()); + data.put("bianGuaLiuYaoLiuShen", liuYao.getBianGuaLiuYaoLiuShen()); + data.put("huGuaLiuYaoLiuShen", liuYao.getHuGuaLiuYaoLiuShen()); + data.put("cuoGuaLiuYaoLiuShen", liuYao.getCuoGuaLiuYaoLiuShen()); + data.put("zongGuaLiuYaoLiuShen", liuYao.getZongGuaLiuYaoLiuShen()); + data.put("fuGuaLiuYaoLiuShen", liuYao.getFuGuaLiuYaoLiuShen()); + + data.put("benGuaLiuYaoYaoCi", liuYao.getBenGuaLiuYaoYaoCi()); + data.put("bianGuaLiuYaoYaoCi", liuYao.getBianGuaLiuYaoYaoCi()); + data.put("huGuaLiuYaoYaoCi", liuYao.getHuGuaLiuYaoYaoCi()); + data.put("cuoGuaLiuYaoYaoCi", liuYao.getCuoGuaLiuYaoYaoCi()); + data.put("zongGuaLiuYaoYaoCi", liuYao.getZongGuaLiuYaoYaoCi()); + data.put("fuGuaLiuYaoYaoCi", liuYao.getFuGuaLiuYaoYaoCi()); + + data.put("benGuaLiuYaoNaYin", liuYao.getBenGuaLiuYaoNaYin()); + data.put("bianGuaLiuYaoNaYin", liuYao.getBianGuaLiuYaoNaYin()); + data.put("huGuaLiuYaoNaYin", liuYao.getHuGuaLiuYaoNaYin()); + data.put("cuoGuaLiuYaoNaYin", liuYao.getCuoGuaLiuYaoNaYin()); + data.put("zongGuaLiuYaoNaYin", liuYao.getZongGuaLiuYaoNaYin()); + data.put("fuGuaLiuYaoNaYin", liuYao.getFuGuaLiuYaoNaYin()); + + data.put("fuGuaLiuYaoFuShen", liuYao.getFuGuaLiuYaoFuShen()); + data.put("shenSha", liuYao.getShenSha()); + + return data; + } + + public static class LiuYaoRequest { + 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 String liuYaoYaoXiang; + + 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 String getLiuYaoYaoXiang() { return liuYaoYaoXiang; } + public void setLiuYaoYaoXiang(String liuYaoYaoXiang) { this.liuYaoYaoXiang = liuYaoYaoXiang; } + } + +} diff --git a/xuan-deduct-uniapp/src/pages/liuyao/liuyao.vue b/xuan-deduct-uniapp/src/pages/liuyao/liuyao.vue index 587710d..487c580 100644 --- a/xuan-deduct-uniapp/src/pages/liuyao/liuyao.vue +++ b/xuan-deduct-uniapp/src/pages/liuyao/liuyao.vue @@ -1,17 +1,179 @@ @@ -21,32 +183,235 @@ export default { padding: 20rpx; background-color: #f5f5f5; min-height: 100vh; +} + +.header-card { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + border-radius: 20rpx; + padding: 40rpx; + margin-bottom: 20rpx; + text-align: center; + box-shadow: 0 4rpx 20rpx rgba(102, 126, 234, 0.3); +} + +.header-icon { + width: 80rpx; + height: 80rpx; + background: rgba(255, 255, 255, 0.2); + border-radius: 50%; display: flex; align-items: center; justify-content: center; + margin: 0 auto 20rpx; } -.developing { - text-align: center; - padding: 60rpx; -} - -.developing-icon { - font-size: 120rpx; - display: block; - margin-bottom: 40rpx; -} - -.developing-title { +.icon-text { font-size: 40rpx; + color: #fff; font-weight: bold; - color: #333; +} + +.header-title { + font-size: 36rpx; + font-weight: bold; + color: #fff; display: block; + margin-bottom: 10rpx; +} + +.header-subtitle { + font-size: 24rpx; + color: rgba(255, 255, 255, 0.8); +} + +.form-card { + background: #fff; + border-radius: 20rpx; + padding: 30rpx; + margin-bottom: 20rpx; + box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05); +} + +.form-section { margin-bottom: 20rpx; } -.developing-desc { +.section-header { + display: flex; + align-items: center; + margin-bottom: 20rpx; +} + +.section-dot { + width: 8rpx; + height: 8rpx; + background: #667eea; + border-radius: 50%; + margin-right: 10rpx; +} + +.section-title { font-size: 28rpx; + font-weight: bold; + color: #333; +} + +.form-item { + margin-bottom: 25rpx; +} + +.form-label-wrapper { + margin-bottom: 10rpx; +} + +.form-label { + font-size: 26rpx; + color: #666; +} + +.form-input { + width: 100%; + height: 80rpx; + background: #f8f8f8; + border-radius: 10rpx; + padding: 0 20rpx; + font-size: 28rpx; + color: #333; + box-sizing: border-box; +} + +.form-picker { + width: 100%; +} + +.picker-content { + width: 100%; + height: 80rpx; + background: #f8f8f8; + border-radius: 10rpx; + padding: 0 20rpx; + display: flex; + align-items: center; + justify-content: space-between; + box-sizing: border-box; +} + +.picker-value { + font-size: 28rpx; + color: #333; +} + +.picker-arrow { + font-size: 32rpx; color: #999; } + +.gender-group { + display: flex; + gap: 20rpx; +} + +.gender-item { + flex: 1; + height: 80rpx; + background: #f8f8f8; + border-radius: 10rpx; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s; +} + +.gender-item.active { + background: #667eea; +} + +.gender-text { + font-size: 28rpx; + color: #666; +} + +.gender-item.active .gender-text { + color: #fff; +} + +.yao-input-section { + margin-top: 20rpx; + padding: 20rpx; + background: #f8f8f8; + border-radius: 10rpx; +} + +.yao-input-title { + font-size: 26rpx; + color: #333; + font-weight: bold; + display: block; + margin-bottom: 10rpx; +} + +.yao-input-desc { + font-size: 22rpx; + color: #999; + display: block; + margin-bottom: 15rpx; +} + +.yao-input { + width: 100%; + height: 80rpx; + background: #fff; + border-radius: 10rpx; + padding: 0 20rpx; + font-size: 28rpx; + color: #333; + box-sizing: border-box; +} + +.tips-card { + background: #fff5e6; + border-radius: 20rpx; + padding: 30rpx; + margin-bottom: 20rpx; + border-left: 6rpx solid #ffa500; +} + +.tips-title { + font-size: 28rpx; + font-weight: bold; + color: #ff8c00; + display: block; + margin-bottom: 10rpx; +} + +.tips-content { + font-size: 24rpx; + color: #666; + line-height: 1.6; +} + +.btn-wrapper { + padding: 20rpx 0; +} + +.submit-btn { + width: 100%; + height: 90rpx; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + border-radius: 45rpx; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 4rpx 15rpx rgba(102, 126, 234, 0.4); +} + +.submit-btn[disabled] { + opacity: 0.6; +} + +.btn-text { + font-size: 32rpx; + color: #fff; + font-weight: bold; +} diff --git a/xuan-deduct-uniapp/src/pages/liuyao/result.vue b/xuan-deduct-uniapp/src/pages/liuyao/result.vue new file mode 100644 index 0000000..daff536 --- /dev/null +++ b/xuan-deduct-uniapp/src/pages/liuyao/result.vue @@ -0,0 +1,496 @@ + + + + + diff --git a/xuan-deduct-uniapp/src/utils/api.js b/xuan-deduct-uniapp/src/utils/api.js index ce0f78a..bf9e1b1 100644 --- a/xuan-deduct-uniapp/src/utils/api.js +++ b/xuan-deduct-uniapp/src/utils/api.js @@ -53,7 +53,32 @@ const baziApi = { } } +const liuyaoApi = { + paiPan: (data) => { + return request({ + url: '/liuyao/paipan', + method: 'POST', + data: { + name: data.name || '某人', + occupy: data.occupy || '某事', + sex: data.sex || 1, + date: data.date, + dateType: data.dateType || 0, + leapMonthType: data.leapMonthType || 0, + xuShiSuiType: data.xuShiSuiType || 0, + jieQiType: data.jieQiType || 1, + yearGanZhiType: data.yearGanZhiType || 2, + monthGanZhiType: data.monthGanZhiType || 1, + dayGanZhiType: data.dayGanZhiType || 0, + paiPanType: data.paiPanType || 0, + liuYaoYaoXiang: data.liuYaoYaoXiang || '—,—,--,--,--,—' + } + }) + } +} + export default { baziApi, + liuyaoApi, request }