From ac3e7f30cb409cfe85bcec14b05ad36b8b281e1b Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Thu, 16 Nov 2023 14:30:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E5=B9=B2=E5=9C=B0=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/peanut/common/utils/MyCalendar.java | 71 +++++++++++- src/main/java/com/peanut/config/TGDZ.java | 4 + .../book/controller/PointController.java | 2 +- .../modules/book/service/PointService.java | 2 +- .../book/service/impl/PointServiceImpl.java | 102 ++++++++++++------ src/main/resources/weChatConfig.properties | 12 +-- 6 files changed, 150 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/peanut/common/utils/MyCalendar.java b/src/main/java/com/peanut/common/utils/MyCalendar.java index 830dcc81..db897ff9 100644 --- a/src/main/java/com/peanut/common/utils/MyCalendar.java +++ b/src/main/java/com/peanut/common/utils/MyCalendar.java @@ -5,6 +5,8 @@ public class MyCalendar { private int year = 0; private int month = 0; + private int day =0; + public void setyear(int year) { this.year = year; } @@ -21,6 +23,14 @@ public class MyCalendar { return month; } + public int getDay() { + return day; + } + + public void setDay(int day) { + this.day = day; + } + private int chineseyear;// 农历年份 private int chinesemonth;// 农历月份 private int chineseday;// 农历日 @@ -58,6 +68,18 @@ public class MyCalendar { this.setyear(year); this.setmonth(month); this.getfirstday(day); + + setTgchineseyear(checkLC()?year:year-1); + //设置月份 + if(month==1){ + setTgchinesemonth(checkMonthJQ()?12:11); + } else if (month==2) { + setTgchinesemonth(checkMonthJQ()?1:12); + }else { + setTgchinesemonth(checkMonthJQ()?month-1:month-2); + } + + } public Map getCT(){ @@ -65,9 +87,14 @@ public class MyCalendar { Integer c_month = Integer.valueOf(this.getChinesemonth()); Integer c_day = (Integer.valueOf(this.getChineseday()))+1; Map stringIntegerMap = new HashMap<>(); - stringIntegerMap.put("year",c_year); - stringIntegerMap.put("month",c_month); - stringIntegerMap.put("day",c_day); + stringIntegerMap.put("c_year",c_year); + stringIntegerMap.put("c_month",c_month); + stringIntegerMap.put("c_day",c_day); + stringIntegerMap.put("tg_year",getTgchineseyear()); + stringIntegerMap.put("tg_month",getTgchinesemonth()); + + + return stringIntegerMap; } @@ -189,6 +216,7 @@ public class MyCalendar { // 计算当年当月day日所对应的农历:chineseyear,chinesemonth,chineseday public void getfirstday(int day) { + setDay(day); Calendar cal = Calendar.getInstance(); cal.set(year, month - 1, day); int leapMonth = 0; @@ -455,7 +483,42 @@ public class MyCalendar { } } int num1 = (int) ((Y * D + C1) - L); - if(month= 1901 && year <= 2000) {// 20世纪 + SolarTerms_C = SolarTerms_C_20thcentury; + } else if (year >= 2001 && year <= 2100) {// 21世纪 + SolarTerms_C = SolarTerms_C_21stcentury; + } + double C1 = SolarTerms_C[(month) * 2 - 1 - 1]; + int Y = year % 100; + int L = (Y) / 4; + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + // 注意:凡闰年3月1日前闰年数要减一,即:L=[(Y-1)/4],因为小寒、大寒、立春、雨水这两个节气都小于3月1日 + if (C1 == 5.4055 || C1 == 3.87) { + L = (Y - 1) / 4; + } + } + int num1 = (int) ((Y * D + C1) - L); + if(day stringStringMap = pointService.TGDZForYear(parse); + Map stringStringMap = pointService.TGDZForDate(parse); return R.ok().put("tgdz",stringStringMap); } diff --git a/src/main/java/com/peanut/modules/book/service/PointService.java b/src/main/java/com/peanut/modules/book/service/PointService.java index d7334519..ecb38841 100644 --- a/src/main/java/com/peanut/modules/book/service/PointService.java +++ b/src/main/java/com/peanut/modules/book/service/PointService.java @@ -17,5 +17,5 @@ public interface PointService extends IService { List searchPoint(String keywords); - Map TGDZForYear(Date year); + Map TGDZForDate(Date date); } diff --git a/src/main/java/com/peanut/modules/book/service/impl/PointServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/PointServiceImpl.java index c3a591d1..bb399cd3 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/PointServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/PointServiceImpl.java @@ -66,56 +66,75 @@ public class PointServiceImpl extends ServiceImpl impleme } @Override - public Map TGDZForYear(Date date) { + public Map TGDZForDate(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + Integer year = calendar.get(Calendar.YEAR); + int kkk = calendar.get(Calendar.MONTH); + Integer month = kkk + 1; + Integer day = calendar.get(Calendar.DAY_OF_MONTH); + Integer hour = calendar.get(Calendar.HOUR_OF_DAY); + + System.out.println(hour); MyCalendar myCalendar = new MyCalendar(); myCalendar.setDate(date); Map ct = myCalendar.getCT(); System.out.println(ct); - System.out.println(Arrays.toString(myCalendar.getchineseCalendar_festival_solarterms())); - Integer year = ct.get("year"); - Integer month = ct.get("month"); - Integer day = ct.get("day"); - + Integer tg_year = ct.get("tg_year"); + Integer tg_month = ct.get("tg_month"); +// Integer day = ct.get("c_day"); String[] tg = TGDZ.tg; String[] dz = TGDZ.dz; + String[] dzz = TGDZ.dzz; //年份天干地支 - String c_year = myCalendar.getChinaYearString(); + Integer ty_c = tg_year%10; + Integer ty = ty_c<=3?ty_c+10-3:ty_c-3; + String c_year_t = tg[ty-1]; + Integer d = (tg_year+7)%12; + if(d==0){ + d=12; + } + String c_year_d = dz[d - 1]; + String c_year = c_year_t+c_year_d; //月份天干地支 - Integer ty_c = year%10; - Integer ty = ty_c<=3?ty_c+10-3:ty_c-3; - Integer tm = ((ty*2 +month)%10)==0?10:((ty*2 +month)%10); - String c_month = tg[tm-1]+dz[month-1]; + Integer tm = ((ty*2 +tg_month)%10)==0?10:((ty*2 +tg_month)%10); + String c_month = tg[tm-1]+dz[tg_month-1]; HashMap flagMap = new HashMap<>(); flagMap.put("year",c_year); flagMap.put("month",c_month); + //获取日干支 + String dayGZ = getDayGZ(year, month, day); + flagMap.put("day",dayGZ); - + //获取时干支,时天干=日天干×2+时地支-2(因为天干有十个,所以计算出来的数字如果大于10,就要减去10) + String substring = dayGZ.substring(0, 1); + List list = Arrays.asList(tg); + int i = list.indexOf(substring); + int s_d; + if(hour==23){ + s_d = 1; + }else{ + if(hour%2==0){ + s_d = (hour+2)/2; + }else { + s_d = (hour+3)/2; + } + } + int dd = ((i+1)*2+s_d-2)%10; + int dcc; + if(dd==0){ + dcc=9; + }else{ + dcc = dd-1; + } + flagMap.put("hour",tg[dcc]+dzz[s_d-1]); return flagMap; - -// Integer y = year % 10; -// if(y<=3){ -// y += 10; -// } -// String s = tg[y-3-1]; -// Integer d = (year+7)%12; -// if(d==0){ -// d=12; -// } -// String s1 = dz[d - 1]; -// //月干 -// String y_s = tg[(((y - 3) * 2 + month)%10) - 1]; -// String y_d = dz[month-1]; -// -// return s+s1+"年 "+y_s+y_d+"月 "; - - -// return null; } private void createIds(Integer id, List list){ @@ -128,4 +147,25 @@ public class PointServiceImpl extends ServiceImpl impleme } list.add(id); } + + private String getDayGZ(int year,int month,int day){ + if(year==2024&&month==1&&day==1){ + return "甲子"; + } + String[] dzr = TGDZ.dzr; + Calendar basedate = Calendar.getInstance(); + basedate.set(2024, 1 - 1, 1); + Calendar now = Calendar.getInstance(); + now.set(year,month-1,day); + if(year<2024){ + int offset = (int) ((basedate.getTimeInMillis() - now.getTimeInMillis()) / (1000 * 60 * 60 * 24)); + int c = offset%60; + int cc = c==0?0:60-c; + return dzr[cc]; + }else{ + int offset = (int) ((now.getTimeInMillis() - basedate.getTimeInMillis()) / (1000 * 60 * 60 * 24)); + int c = offset%60; + return dzr[c]; + } + } } diff --git a/src/main/resources/weChatConfig.properties b/src/main/resources/weChatConfig.properties index 4b45ba81..c95caf68 100644 --- a/src/main/resources/weChatConfig.properties +++ b/src/main/resources/weChatConfig.properties @@ -9,18 +9,18 @@ wxpay.notifyUrl:https://testapi.nuttyreading.com/pay/payNotify # ?? url wxpay.refundNotifyUrl:http://pjm6m9.natappfree.cc/pay/refundNotify # key pem -wxpay.keyPemPath:/usr/local/hs/peanut_book/target/classes/cent/apiclient_key.pem +#wxpay.keyPemPath:/usr/local/hs/peanut_book/target/classes/cent/apiclient_key.pem #wxpay.keyPemPath:C:/Users/Cauchy/IdeaProjects/nuttyreading-java/src/main/resources/cent/apiclient_key.pem -#wxpay.keyPemPath:D:/hs/nuttyreading-java/src/main/resources/cent/apiclient_key.pem +wxpay.keyPemPath:D:/hs/nuttyreading-java/src/main/resources/cent/apiclient_key.pem # ??? wxpay.serialNo:679AECB2F7AC4183033F713828892BA640E4EEE3 # API v3 key wxpay.apiV3Key:4aYFklzaULeGlr7oJPZ6rHWKcxjihZUF # ???? -wxpay.wechatPayCertificateUrl:/usr/local/hs/peanut_book/target/classes/cent/wechatpay_7B5676E3CDF56680D0414A009CE501C844DBE2D6.pem +#wxpay.wechatPayCertificateUrl:/usr/local/hs/peanut_book/target/classes/cent/wechatpay_7B5676E3CDF56680D0414A009CE501C844DBE2D6.pem #wxpay.wechatPayCertificateUrl:C:/Users/Cauchy/IdeaProjects/nuttyreading-java/src/main/resources/cent/wechatpay_7B5676E3CDF56680D0414A009CE501C844DBE2D6.pem -# wxpay.wechatPayCertificateUrl:D:/hs/nuttyreading-java/src/main/resources/cent/wechatpay_7B5676E3CDF56680D0414A009CE501C844DBE2D6.pem + wxpay.wechatPayCertificateUrl:D:/hs/nuttyreading-java/src/main/resources/cent/wechatpay_7B5676E3CDF56680D0414A009CE501C844DBE2D6.pem # ?? url -wxpay.privateKeyUrl:/usr/local/hs/peanut_book/target/classes/cent/apiclient_key.pem +#wxpay.privateKeyUrl:/usr/local/hs/peanut_book/target/classes/cent/apiclient_key.pem #wxpay.privateKeyUrl:C:/Users/Cauchy/IdeaProjects/nuttyreading-java/src/main/resources/cent/apiclient_key.pem -#wxpay.privateKeyUrl:D:/hs/nuttyreading-java/src/main/resources/cent/apiclient_key.pem \ No newline at end of file +wxpay.privateKeyUrl:D:/hs/nuttyreading-java/src/main/resources/cent/apiclient_key.pem \ No newline at end of file