diff --git a/src/main/java/xuan/controller/MeiHuaController.java b/src/main/java/xuan/controller/MeiHuaController.java new file mode 100644 index 0000000..df6d1cb --- /dev/null +++ b/src/main/java/xuan/controller/MeiHuaController.java @@ -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 paiPan(@RequestBody MeiHuaRequest request) { + Map 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 buildMeiHuaData(MeiHua meiHua) { + Map 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; } + } + +} diff --git a/xuan-deduct-uniapp/src/pages/meihua/meihua.vue b/xuan-deduct-uniapp/src/pages/meihua/meihua.vue index 19473e0..3be1e3e 100644 --- a/xuan-deduct-uniapp/src/pages/meihua/meihua.vue +++ b/xuan-deduct-uniapp/src/pages/meihua/meihua.vue @@ -1,17 +1,200 @@ @@ -21,32 +204,269 @@ export default { padding: 20rpx; background-color: #f5f5f5; min-height: 100vh; +} + +.header-card { + background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); + border-radius: 20rpx; + padding: 40rpx; + margin-bottom: 20rpx; + text-align: center; + box-shadow: 0 4rpx 20rpx rgba(240, 147, 251, 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: #f093fb; + 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: #f093fb; +} + +.gender-text { + font-size: 28rpx; + color: #666; +} + +.gender-item.active .gender-text { + color: #fff; +} + +.method-group { + display: flex; + gap: 15rpx; + flex-wrap: wrap; +} + +.method-item { + flex: 1; + min-width: 200rpx; + height: 80rpx; + background: #f8f8f8; + border-radius: 10rpx; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s; +} + +.method-item.active { + background: #f093fb; +} + +.method-text { + font-size: 26rpx; + color: #666; +} + +.method-item.active .method-text { + color: #fff; +} + +.number-input-section { + margin-top: 20rpx; + padding: 20rpx; + background: #f8f8f8; + border-radius: 10rpx; +} + +.number-input-title { + font-size: 26rpx; + color: #333; + font-weight: bold; + display: block; + margin-bottom: 15rpx; +} + +.number-input { + width: 100%; + height: 80rpx; + background: #fff; + border-radius: 10rpx; + padding: 0 20rpx; + font-size: 28rpx; + color: #333; + box-sizing: border-box; +} + +.number-input.half { + width: 48%; +} + +.double-number-input { + display: flex; + justify-content: space-between; + gap: 20rpx; +} + +.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, #f093fb 0%, #f5576c 100%); + border-radius: 45rpx; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 4rpx 15rpx rgba(240, 147, 251, 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/meihua/result.vue b/xuan-deduct-uniapp/src/pages/meihua/result.vue new file mode 100644 index 0000000..4ad4996 --- /dev/null +++ b/xuan-deduct-uniapp/src/pages/meihua/result.vue @@ -0,0 +1,546 @@ + + + + +