Browse Source

0608

master
zy_Java 5 years ago
parent
commit
8f2cfb65a9
  1. 4
      cloudutil/src/main/resources/application-util-test.yml
  2. 2
      game/src/main/resources/druid-test.yml
  3. 4
      tall/src/main/resources/application.yml
  4. 8
      util/src/main/java/com/ccsens/util/StringUtil.java
  5. 45
      util/src/main/java/com/ccsens/util/cron/CronConstant.java
  6. 4
      util/src/main/java/com/ccsens/util/cron/NatureConstant.java
  7. 21
      util/src/main/java/com/ccsens/util/cron/NatureToDate.java
  8. 73
      util/src/test/java/com/ccsens/util/Base64Test.java

4
cloudutil/src/main/resources/application-util-test.yml

@ -20,8 +20,8 @@ eureka:
service-url:
# 指定eureka server通信地址,注意/eureka/小尾巴不能少
#defaultZone: http://admin:admin@peer1:8761/eureka/,http://admin:admin@peer2:8762/eureka/
defaultZone: http://admin:admin@192.168.0.99:7010/eureka/
# defaultZone: http://admin:admin@test.tall.wiki:7010/eureka/
# defaultZone: http://admin:admin@192.168.0.99:7010/eureka/
defaultZone: http://admin:admin@test.tall.wiki:7010/eureka/
instance:
# 是否注册IP到eureka server,如不指定或设为false,那就回注册主机名到eureka server
prefer-ip-address: true

2
game/src/main/resources/druid-test.yml

@ -28,6 +28,6 @@ spring:
testWhileIdle: true
timeBetweenEvictionRunsMillis: 60000
url: jdbc:mysql://127.0.0.1/game?useUnicode=true&characterEncoding=UTF-8
rname: root
username: root
validationQuery: SELECT 1 FROM DUAL
env: CCSENS_GAME

4
tall/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: test
include: util-test,common
active: dev
include: util-dev,common

8
util/src/main/java/com/ccsens/util/StringUtil.java

@ -12,13 +12,17 @@ import java.util.regex.Pattern;
public class StringUtil {
public final static String SPLIT_RANGE = "[到\\-至]";
public final static String SPLIT = "-";
public final static String WEEK_DAY = "(每?隔\\d周)|(每?隔\\d星期)|(每?周[0-7]+)|(每?星期[0-7]+)|(每?周一)|(每?周二)|(每?周三)|(每?周四)|(每?周五)|(每?周六)|(每?周日)|(每?周天)";
public final static String WEEK_DAY_CIRCLE = WEEK_DAY+SPLIT_RANGE+WEEK_DAY;
public final static String DAY = "(每\\d+天)|(每\\d+日)|(每?隔\\d+天)|(每?隔\\d+日)|(\\d+号)|(\\d+日)|(\\d+\\-\\d+号)|(\\d+\\-\\d+日)|(\\d+到\\d+号)|(\\d+到\\d+日)";
public final static String CONTINUE_RANGE = ".*(到|\\-|至).*";
public final static String EVERY = "每(天|日|小时|时|分钟|分|秒)";
public final static String EVERY_WEEK = "每(周|星期)";
public final static String EVERY_MONTH = "每月";
public final static String EVERY_NUM = "\\D*(\\d+)\\D*";
public final static String CHINESE_NUM = "([零一二三四五六七八九十百千万亿]+)";
@ -29,13 +33,13 @@ public class StringUtil {
public final static String DAY_REGEXP = "(每天)|(每日)|" + DAY;
public final static String MONTH_REGEXP = EVERY_MONTH +"|(每隔\\d+月)|(\\d+月)|(每隔[零一二三四五六七八九十百千万亿]+月)|([零一二三四五六七八九十百千万亿]+月)";
public final static String WEEK_REGEXP = WEEK_DAY + "|(每周)|(每星期)";
public final static String WEEK_REGEXP = "(每?周[0-7]"+SPLIT_RANGE+"每?周[0-7])|" + WEEK_DAY + "|(每周)|(每星期)";
public final static String WEEK_FLAG_REGEXP = "(每?周)|(每?星期)";
public final static String NO_REPEAT = "不重复";
public final static String SPLIT_RANGE = "[到\\-至]";
public final static String NUMBER = "\\d+";

45
util/src/main/java/com/ccsens/util/cron/CronConstant.java

@ -39,7 +39,7 @@ public class CronConstant {
// System.out.println("每月:" + month);
// System.out.println("每月:" + getDate(month, start, end));
// TaskCron day = getCronDay("八月8号-15号");
TaskCron day = getCronDay("八月8号-15号");
// System.out.println("每月8号-15号:" + day);
// System.out.println("每月8号-15号:" + getDate(day, start, end));
//
@ -154,6 +154,7 @@ public class CronConstant {
}
/**
* 根据自然语言转换成开始cron和结束cron
* */
@ -178,19 +179,21 @@ public class CronConstant {
split = natureDate.split(StringUtil.SPLIT_RANGE);
String start = startCron.generateCron(split[0]);
taskCron.setStartCron(start);
//结束
String endStr = null;
if (split.length == 1) {
String start = startCron.generateCron(split[0]);
taskCron.setStartCron(start);
List<String> months = StringUtil.match(natureDate, StringUtil.MONTH_REGEXP);
List<String> weeks = StringUtil.match(natureDate, StringUtil.WEEK_REGEXP);
if (CollectionUtils.isEmpty(months) && months.contains("每月")) {
if (!CollectionUtils.isEmpty(months) && months.contains("每月")) {
endStr = "每月1号0时0分";
taskCron.setFirstFlag(true);
} else if (CollectionUtils.isEmpty(weeks) &&(weeks.contains("每周") ||
CollectionUtils.isEmpty(weeks) && weeks.contains("每星期"))) {
} else if (!CollectionUtils.isEmpty(weeks) &&(weeks.contains("每周") ||
!CollectionUtils.isEmpty(weeks) && weeks.contains("每星期"))) {
endStr = "每周1 ";
taskCron.setFirstFlag(true);
} else {
@ -198,7 +201,23 @@ public class CronConstant {
endStr = reg.replaceAll(StringUtil.MINUTE_REGEXP,"");
endStr += " 23时59分";
}
} else if (natureDate.contains(NatureConstant.SPACE_STR) && natureDate.split(NatureConstant.SPACE).length >= 2) {
// 多个分段且包含空格
//空格分隔 认为最后一个是最小单位,前面都是xx-xx 例如:周一-周5 8点:周一-周五8点和周一到周五23:59:59 周一-周5 8点-9点:周一-周五8点和周一到周五9点
String[] manyTypes = natureDate.split(NatureConstant.SPACE);
String last = manyTypes[manyTypes.length-1];
String startStr = natureDate.substring(0, natureDate.indexOf(last));
StringBuilder start = new StringBuilder(startStr);
StringBuilder end = new StringBuilder(startStr);
String[] mins = last.split(StringUtil.SPLIT_RANGE);
start.append(mins[0]);
taskCron.setStartCron(startCron.generateCron(start.toString()));
// TODO 根据时间单位,确认是时分秒日月周
end.append(mins.length > 1 ? mins[1] : "23:59:59");
endStr = end.toString();
} else {
String start = startCron.generateCron(split[0]);
taskCron.setStartCron(start);
String reg = split[1].replaceAll("\\d+","\\\\d+");
endStr = split[0].replaceAll(reg, "") + split[1];
}
@ -258,6 +277,8 @@ public class CronConstant {
private String month = "";
private String week = "";
/**
* 将自然时间转化成cron
* @param natureDate
@ -335,6 +356,12 @@ public class CronConstant {
} else if (StringUtil.isMatch(nature, StringUtil.EVERY_WEEK)) {
//每周默认是从每周一
set("1", type);
}else if (nature.split(StringUtil.SPLIT_RANGE).length > 1){
//例如:每周一-周五 --> 1-5
String[] arr = nature.split(StringUtil.SPLIT_RANGE);
int start = getNum(arr[0]);
int end = getNum(arr[1]);
set(start + "-" + end, type);
} else if (StringUtil.isMatch(nature, StringUtil.WEEK_DAY)){
//每周几
int num = getNum(nature);
@ -360,6 +387,12 @@ public class CronConstant {
// for (; start <= end; start++) {
// set(String.valueOf(start), type);
// }
} else if (nature.split(StringUtil.SPLIT_RANGE).length > 1){
//例如:每周一-周五 --> 1-5
String[] arr = nature.split(StringUtil.SPLIT_RANGE);
int start = getNum(arr[0]);
int end = getNum(arr[1]);
set(start + "-" + end, type);
} else {
//普通
int num = getNum(nature);

4
util/src/main/java/com/ccsens/util/cron/NatureConstant.java

@ -15,6 +15,8 @@ public class NatureConstant {
public static final String WORK_DAY = "工作日";
/**每周几*/
public static final String WEEK_ZHOU = "每?周[一二三四五六七日天0-7]";
/**每周一到周五 */
public static final String WEEK_EVERY = "每周[一二三四五六七日天0-7][到\\-至]周[一二三四五六七日天0-7]";
public static final String WEEK_XINGQI = "每?星期[一二三四五六七日天0-7]";
/**每月几号*/
public static final String EVERY_MONTH_DAY = "每月" + NUM + "号?日?";
@ -42,6 +44,8 @@ public class NatureConstant {
/**第几天*/
public static final String WHAT_DAY= "第" + NUM + "天?日?";
public static final String SPACE = "\\s";
public static final String SPACE_STR = " ";

21
util/src/main/java/com/ccsens/util/cron/NatureToDate.java

@ -40,8 +40,9 @@ public class NatureToDate {
// System.out.println("入职第一月:" + generateDates("入职第一月", start, end));
// System.out.println("入职第一年:" + generateDates("入职第一年", start, end));
// System.out.println("第八天:" + generateDates("第八天", start, end));
System.out.println("每月15号下午5点:" + generateDates("每月15号下午5点", start, end));
// System.out.println("每月15号下午5点:" + generateDates("每月15号下午5点", start, end));
System.out.println("周一-周五 8点-9点: " + generateDates("周一-周五 8点-9点", start, end));
}
@ -93,7 +94,10 @@ public class NatureToDate {
*/
private static List<CronConstant.TaskDate> dealSpecialKnow(String nature, Date startDate, Date endDate) {
List<CronConstant.TaskDate> taskDates = new ArrayList<>();
if (StringUtil.isMatch(nature, NatureConstant.EVERY_MONTH_ZHOU) || StringUtil.isMatch(nature, NatureConstant.EVERY_MONTH_XINGQI) ) {
if(nature.contains(NatureConstant.SPACE_STR)){
String[] natureArr = nature.split(NatureConstant.SPACE);
} else if (StringUtil.isMatch(nature, NatureConstant.EVERY_MONTH_ZHOU) || StringUtil.isMatch(nature, NatureConstant.EVERY_MONTH_XINGQI) ) {
//获取第几周
int endIndex = getWeekEndIndex(nature);
String numStr = nature.substring(nature.indexOf("第") + 1, endIndex);
@ -247,6 +251,9 @@ public class NatureToDate {
if (CronConstant.CronExpression.map.containsKey(nature)){
split[0] = nature;
split[1] = nature;
} else if (StringUtil.isMatch(nature, NatureConstant.WEEK_EVERY)){
String[] natureArr = nature.split(NatureConstant.SPACE);
} else if (nature.contains(NatureConstant.WORK_DAY)) {
//工作日
split[0] = nature.replaceAll("工作日","周1");
@ -286,8 +293,14 @@ public class NatureToDate {
private static String dealSpecialTime(String nature){
nature = nature.replace("周日", "周0").replace("周天", "周0")
.replace("星期日", "周0").replace("星期天", "周0")
.replace("周七", "周0").replace("周七", "周0")
.replace("星期七", "周0").replace("星期七", "周0") ;
.replace("周七", "周0").replace("星期七", "周0")
.replace("星期一", "周1").replace("周一", "周1")
.replace("星期二", "周2").replace("周二", "周2")
.replace("星期三", "周3").replace("周三", "周3")
.replace("星期四", "周4").replace("周四", "周4")
.replace("星期五", "周5").replace("周五", "周5")
.replace("星期六", "周6").replace("周六", "周6")
;
if (nature.contains(NatureConstant.PM)) {
int start = nature.indexOf("下午");
int end = nature.indexOf("点", start) > 0 ? nature.indexOf("点", start) : nature.indexOf("时", start);

73
util/src/test/java/com/ccsens/util/Base64Test.java

@ -36,78 +36,5 @@ public class Base64Test {
}
@Test
public void test02() throws Exception {
String[] strings = new String[]{"1590997352223",
"1591545600000",
"1592150400000",
"1592755200000",
"1593360000000",
"1593964800000",
"1594569600000",
"1595174400000",
"1595779200000",
"1596384000000",
"1596988800000",
"1597593600000",
"1598198400000",
"1598803200000",
"1599408000000",
"1600012800000",
"1600617600000",
"1601222400000",
"1601827200000",
"1602432000000",
"1603036800000",
"1603641600000",
"1604246400000",
"1604851200000",
"1605456000000",
"1606060800000",
"1606665600000",
"1607270400000",
"1607875200000",
"1608480000000",
"1609084800000"
};
String[] strings1 = new String[]{
"1591315200000",
"1591574400000",
"1592179200000",
"1592784000000",
"1593388800000",
"1593993600000",
"1594598400000",
"1595203200000",
"1595808000000",
"1596412800000",
"1597017600000",
"1597622400000",
"1598227200000",
"1598832000000",
"1599436800000",
"1600041600000",
"1600646400000",
"1601251200000",
"1601856000000",
"1602460800000",
"1603065600000",
"1603670400000",
"1604275200000",
"1604880000000",
"1605484800000",
"1606089600000",
"1606694400000",
"1607299200000",
"1607904000000",
"1608508800000",
"1609113600000"
};
for(int i = 0 ;i<strings.length;i++){
System.out.println( DateUtil.date(Long.valueOf(strings[i])) + "===" + DateUtil.date(Long.valueOf(strings1[i])));
}
}
}

Loading…
Cancel
Save