You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

419 lines
13 KiB

11 months ago
package com.dsideal.base.Util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SuppressWarnings("unchecked")
public class CommonUtil {
//在独立的main函数中使用下面的方式进行声明logback对象
11 months ago
private static final Logger log = LoggerFactory.getLogger(CommonUtil.class);
11 months ago
/**
*
*
* 2019-01-03
*
* @param tempPath
*/
public static void clearFile(String tempPath) {
File file = new File(tempPath);
File[] tempList = file.listFiles();
if (tempList != null) {
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
tempList[i].delete();
}
}
}
}
/**
*
*
* 2018-12-20
*
* @param str
* @return
*/
public static boolean isValidDate(String str) {
boolean convertSuccess = true;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
format.setLenient(false);
format.parse(str);
} catch (ParseException e) {
convertSuccess = false;
}
return convertSuccess;
}
/**
*
*
* 2018-12-12
*
* @return
*/
public static Page<?> ConvertLoginRs(Page<?> page) {
List<Record> list = new ArrayList<>();
for (int i = 0; i < page.getList().size(); i++) {
Record record = (Record) page.getList().get(i);
String original_pwd = record.get("original_pwd");
String database_pwd = record.get("pwd");
//将明文密码加密
String pwd = CommonUtil.getLdapPassword(original_pwd);
if (!pwd.equals(database_pwd)) {
record.set("original_pwd", "用户已修改");
}
record.remove("pwd");
list.add(record);
}
Page<Record> pageRecords = new Page(list, page.getPageNumber(), page.getPageSize(), page.getTotalPage(), page.getTotalRow());
return pageRecords;
}
/**
* JSONArray
*
* :2018-12-12
*
* @param content
* @return
*/
public static boolean isJsonArray(String content) {
try {
JSONArray.parseArray(content);
return true;
} catch (Exception e) {
return false;
}
}
/**
* +
*
* 2018-11-30
*
* @return
*/
public static String GetCurrentTimeString() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
String nowTime = sdf.format(date);
return nowTime;
}
/**
*
*
* @param map
* @return
*/
public static String Sign(Map<String, Object> map, String signKey) {
if (map == null) {
return null;
}
List<String> keyList = new ArrayList<>(map.keySet());
Collections.sort(keyList);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < keyList.size(); i++) {
String key = keyList.get(i);
Object value = map.get(key);
sb.append(key + "=" + value + "&");
}
String signStr = sb.substring(0, sb.length() - 1) + signKey;
String md5Str = DigestUtils.md5Hex(signStr);
return md5Str;
}
/**
* layUI
*/
public static Map<String, Object> renderJsonForLayUI(List<Record> list, int count) {
Map<String, Object> result = new HashMap<>();
result.put("code", 0);
result.put("msg", "");
result.put("count", count);
result.put("data", list);
return result;
}
public static Map<String, Object> renderJsonForLayUI(List<Record> list) {
Map<String, Object> result = new HashMap<>();
result.put("code", 0);
result.put("msg", "");
result.put("count", list.size());
result.put("data", list);
return result;
}
/**
* layUI
*
* @param dataPage
* @return
*/
public static Map<String, Object> renderJsonForLayUI(Page<?> dataPage) {
Map<String, Object> result = new HashMap<>();
result.put("code", 0);
result.put("msg", "");
result.put("count", dataPage.getTotalRow());
result.put("data", dataPage.getList());
return result;
}
/**
*
*
* 2018-11-19
*
* @param str
* @return
*/
public static boolean isNumeric(String str) {
try {
for (int i = str.length(); --i >= 0; ) {
if (str.charAt(0) == '-') {
continue;
} else {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
}
return true;
} catch (Exception err) {
return false;
}
}
/**
* json
*
* 2018-11-06
*
* @param result
* @param message
*/
public static Map returnMessageJson(boolean result, String message) {
Map map = new HashMap();
map.put("success", result);
map.put("message", message);
return map;
}
public static Map returnMessageJson(boolean result, JSONObject jo) {
Map map = new HashMap();
map.put("success", result);
map.put("result", jo);
return map;
}
public static Map returnMessageJson(boolean result, List<Record> list) {
Map map = new HashMap();
map.put("success", result);
map.put("result", list);
return map;
}
/**
* md5
*
* 2018-11-06
*
* @param target
* @return
*/
public static String md5(String target) {
return DigestUtils.md5Hex(target);
}
//算法:将密码经过 MD5 运算,得到 32 字节的字符串然后每2个字节压缩成一个十六进制字符
// 这样得到16字节的字符串最后经过Base64编码。
public static String getLdapPassword(String password) {
try {
String md5pass = md5(password);
byte[] baKeyword = new byte[md5pass.length() / 2];
for (int i = 0; i < baKeyword.length; i++) {
try {
baKeyword[i] = (byte) (0xff & Integer.parseInt(md5pass.substring(i * 2, i * 2 + 2), 16));
} catch (Exception e) {
log.error("======================错误密码:" + md5pass);
e.printStackTrace();
}
}
String newstr = Base64.encodeBase64String(baKeyword);
return newstr;
} catch (Exception err) {
log.error("出错的密码:" + password);
return null;
}
}
/**
* 6
*
* 2018-11-27
*
* @return
*/
public static String getSixRandom() {
String sources = "0123456789";
Random rand = new Random();
StringBuffer flag = new StringBuffer();
for (int j = 0; j < 6; j++) {
flag.append(sources.charAt(rand.nextInt(9)) + "");
}
return flag.toString();
}
11 months ago
11 months ago
/**
*
*
* 2018-11-27
* 13+
* 15+4
* 18+14
* 17+9
* 147
*
* @param phoneNum
* @return
*/
public static boolean getIsPhoneLegal(String phoneNum) {
try {
String regExp = "^((13[0-9])|(19[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(phoneNum);
return m.matches();
} catch (Exception e) {
return false;
}
}
/**
*
*
* 2018-11-27
*
* @param eMail
* @return
*/
public static boolean getIsEmailLegal(String eMail) {
try {
String regExp = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(eMail);
return m.matches();
} catch (Exception e) {
return false;
}
}
/**
*
*
* 2018-12-07
*
* @param date
* @return
*/
public static boolean getIsDateLegal(String date) {
if (date == null || StrKit.isBlank(date)) return false;
try {
String regExp = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(date);
return m.matches();
} catch (Exception e) {
return false;
}
}
/**
*
*
* 2018-12-07
*
* @param xb
* @return
*/
public static boolean getXbCorrectRange(String xb) {
String[] stageArr = new String[]{"1", "2"};
for (String s : stageArr) {
if (s.equals(xb)) {
return true;
}
}
return false;
}
/**
*
*
* 2018-12-07
*
* @param mz
* @return
*/
public static boolean getMzCorrectRange(String mz) {
String[] stageArr = new String[]{"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "97", "98"};
for (String s : stageArr) {
if (s.equals(mz)) {
return true;
}
}
return false;
}
/**
*
*
* 2019-01-05
*
* @param zzmm
* @return
*/
public static boolean getZzmmCorrectRange(String zzmm) {
String[] stageArr = new String[]{"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13"};
for (String s : stageArr) {
if (s.equals(zzmm)) {
return true;
}
}
return false;
}
public static boolean checkPass(String pass) {
//注释掉必须要有符号这个要求:&& pass.matches(".*[~!@#$%^&*\\.?]{1,}.*")
// if (pass.matches(".*[a-z]{1,}.*") && pass.matches(".*[A-Z]{1,}.*") && pass.matches(".*\\d{1,}.*") && pass.length()>=7 ) {
// return true;
// }
// return false;
return true;
}
public static boolean isBase64(String str) {
String base64Rule = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
return Pattern.matches(base64Rule, str);
}
}