initial commit: lottery 项目集(三工程统一管理)

- apps/lotteryServer, lotteryCapture, lotteryOpen 三个业务工程
- 忽略 archive/, tools/, infra/data/ 大目录与敏感配置文件
- 移除 lotteryServer 原嵌套 git,并入顶层统一管理
This commit is contained in:
feng0207
2026-09-17 19:03:32 +08:00
commit 3fc4dcc777
2251 changed files with 459578 additions and 0 deletions
@@ -0,0 +1,328 @@
package javautils;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import javautils.date.Moment;
import javautils.math.MathUtil;
import javautils.regex.RegexUtil;
public class StringUtil {
/**
* 判断字符串是否为空
* @param s
* @return
*/
public static boolean isNotNull(String s) {
if(s == null) return false;
if(s.trim().length() == 0) return false;
return true;
}
/**
* 判断字符串能否转成int
* @param s
* @return
*/
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 判断字符串能否转成double
* @param s
* @return
*/
public static boolean isDouble(String s) {
try {
Double.parseDouble(s);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 判断字符串能否转成float
* @param s
* @return
*/
public static boolean isFloat(String s) {
try {
Float.parseFloat(s);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 判断字符串能否转成boolean
* @param s
* @return
*/
public static boolean isBoolean(String s) {
try {
Boolean.parseBoolean(s);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 判断能否转成short
* @param s
* @return
*/
public static boolean isShort(String s) {
try {
Short.parseShort(s);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 判断能否转成long
* @param s
* @return
*/
public static boolean isLong(String s) {
try {
Long.parseLong(s);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 自动转类型
* @param s
* @param clazz
* @return
*/
public static Object transObject(String s, Class<?> clazz) {
if(clazz != null) {
if(clazz == Integer.class) {
if(isInteger(s)) {
return Integer.parseInt(s);
}
return 0;
}
if(clazz == Double.class) {
if(isDouble(s)) {
return Double.parseDouble(s);
}
return 0;
}
if(clazz == Float.class) {
if(isFloat(s)) {
return Float.parseFloat(s);
}
return 0;
}
if(clazz == Boolean.class) {
if(isBoolean(s)) {
return Boolean.parseBoolean(s);
}
return true;
}
if(clazz == Short.class) {
if(isShort(s)) {
return Short.parseShort(s);
}
return 0;
}
if(clazz == Long.class) {
if(isLong(s)) {
return Long.parseLong(s);
}
return 0;
}
}
return s;
}
public static String transArrayToString(Object[] array) {
StringBuffer sb = new StringBuffer();
for (int i = 0, j = array.length; i < j; i++) {
sb.append(array[i].toString());
if(i < j - 1) {
sb.append(",");
}
}
return sb.toString();
}
public static String transArrayToString(Object[] array, String p) {
String tempStr = new String();
for (Object value : array) {
tempStr += p + value.toString() + p + ",";
}
tempStr = tempStr.substring(0, tempStr.length() - 2);
return tempStr;
}
public static int[] transStringToIntArray(String string, String regex) {
if (isNotNull(string)) {
String[] sArray = string.split(regex);
int[] intArray = new int[sArray.length];
for (int i = 0; i < sArray.length; i++) {
if(isIntegerString(sArray[i])) {
intArray[i] = Integer.parseInt(sArray[i]);
}
}
return intArray;
}
return null;
}
/**
* 转换文件大小
* @param bytes
* @return
*/
public static String transDataLong(long b) {
StringBuffer sb = new StringBuffer();
long KB = 1024;
long MB = KB * 1024;
long GB = MB * 1024;
long TB = GB * 1024;
if(b >= TB) {
sb.append(MathUtil.doubleFormat((double)b/TB, 2) + "TB");
} else if(b >= GB) {
sb.append(MathUtil.doubleFormat((double)b/GB, 2) + "GB");
} else if(b >= MB) {
sb.append(MathUtil.doubleFormat((double)b/MB, 2) + "MB");
} else if(b >= KB) {
sb.append(MathUtil.doubleFormat((double)b/KB, 2) + "KB");
} else {
sb.append(b + "B");
}
return sb.toString();
}
/**
* 判断是否是int类型字符串
* @param str
* @return
*/
public static boolean isIntegerString(String str) {
boolean flag = false;
if(RegexUtil.isMatcher(str, RegexUtil.integer_regex)) {
flag = true;
}
return flag;
}
public static boolean isDoubleString(String str) {
boolean flag = false;
if(RegexUtil.isMatcher(str, RegexUtil.rational_numbers_regex)) {
flag = true;
}
return flag;
}
public static boolean isFloatString(String str) {
boolean flag = false;
if(RegexUtil.isMatcher(str, RegexUtil.rational_numbers_regex)) {
flag = true;
}
return flag;
}
/**
* 判断字符串是否是日期yyyy-MM-dd格式
* @param s
* @return
*/
public static boolean isDateString(String str) {
try {
if(str.length() != 10) {
return false;
}
new SimpleDateFormat("yyyy-MM-dd").parse(str);
} catch (Exception e) {
return false;
}
return true;
}
public static String markWithSymbol(Object obj, String symbol) {
return symbol + obj.toString() + symbol;
}
//123456789
public static Object[] split(String s) {
char[] carr = s.toCharArray();
Object[] arr = new Object[carr.length];
for (int i = 0; i < carr.length; i++) {
arr[i] = carr[i];
}
return arr;
}
public static String substring(String s, String start, String end, boolean isInSub) {
int idx = s.indexOf(start);
int edx = s.indexOf(end);
idx = idx == -1 ? 0 : idx + (isInSub ? 0 : start.length());
edx = edx == -1 ? s.length() : edx + (isInSub ? end.length() : 0);
return s.substring(idx, edx);
}
public static String doubleFormat(double d) {
DecimalFormat decimalformat = new DecimalFormat("#0.00");
return decimalformat.format(d);
}
public static String fromInputStream(InputStream inputStream) {
try {
StringBuffer sb = new StringBuffer();
byte[] bytes = new byte[1024];
int len;
while ((len = inputStream.read(bytes)) != -1) {
sb.append(new String(bytes, 0, len));
}
inputStream.close();
return sb.toString();
} catch (Exception e) {}
return null;
}
/**
* 验证是否是服务时间
* @param moment
* @param times 格式为12:00~2:00
* @return
*/
public static boolean isServiceTime(Moment moment, String times) {
int thisMins = moment.hour() * 60 + moment.minute();
String[] timeArr = times.split("~");
int startMins = Integer.parseInt(timeArr[0].split(":")[0]) * 60 + Integer.parseInt(timeArr[0].split(":")[1]);
int endMins = Integer.parseInt(timeArr[1].split(":")[0]) * 60 + Integer.parseInt(timeArr[1].split(":")[1]);
if(startMins < endMins) {
// 不在服务内的时间是 0 - start 和 end - 24
if((thisMins > 0 && thisMins < startMins) || (thisMins > endMins && thisMins < 24 * 60)) {
return false;
}
} else {
// 不在服务内的时间是 end - start
if(thisMins > endMins && thisMins < startMins) {
return false;
}
}
return true;
}
}