package com.sf.QLAHP.util;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
public class FuntionUtils {
private final static Logger logger = LoggerFactory.getLogger(FuntionUtils.class);
@ApiOperation("验证多个邮箱")
@ApiImplicitParams({
@ApiImplicitParam(name = "split", value = "字符串分隔符")
})
public static boolean checkEmails(String emails, String split) {
emails += split;
String[] emailArray = emails.split(split);
boolean flag = false;
try {
for (int i = 0; i < emailArray.length; i++) {
if (null != emailArray[i] && !"".equals(emailArray[i].trim())) {
flag = checkEmail(emailArray[i]);
if (!flag) {
break;
}
}
}
} catch (Exception e) {
flag = false;
logger.error(e.getMessage(), e);
}
return flag;
}
@ApiOperation("验证单个邮箱")
public static boolean checkEmail(String email) {
boolean flag = false;
try {
String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
Pattern regex = Pattern.compile(check);
Matcher matcher = regex.matcher(email);
flag = matcher.matches();
} catch (Exception e) {
flag = false;
logger.error(e.getMessage(), e);
}
return flag;
}
@ApiOperation("验证手机号码,11位数字,1开通,第二位数必须是3456789这些数字之一 *")
public static boolean checkMobileNumber(String mobileNumber) {
boolean flag = false;
try {
Pattern regex = Pattern.compile("^1[345789]\\d{9}$");
Matcher matcher = regex.matcher(mobileNumber);
flag = matcher.matches();
} catch (Exception e) {
e.printStackTrace();
flag = false;
}
return flag;
}
@ApiOperation("Date 转 String,格式:yyyy-MM-dd HH:mm:ss")
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
@ApiOperation("Date 转 String,格式:yyyy-MM-dd HH:mm")
public static String formatHmDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return sdf.format(date);
}
@ApiOperation("Date 转 String,格式:yyyy-MM-dd")
public static String formatSimpleDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
@ApiOperation("Date 转 String,并去掉中间的,- 格式:yyyyMMdd")
public static String formatSimpleDateReplace(Date date,String replace ) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(date);
format = format.replace("-", "");
return format;
}
/**
* 获得当天零时零分零秒
* @return
*/
@ApiOperation("获得当天零时零分零秒,格式:Thu Aug 23 12:00:00 CST 2018")
public static Date initDateByDay(){
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
@ApiOperation("Date 转 String,格式:yyyy-MM")
public static String formatYearMonthDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
return sdf.format(date);
}
@ApiOperation("String 转 Date,格式:yyyy-MM-dd HH:mm:ss")
public static Date parse(String strDate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(strDate);
}
@ApiOperation("将单条字符串转换为JSON格式")
public static String SingleString2JSON(String message) {
StringBuffer json = new StringBuffer();
json.append("{\"message\":\"");
json.append(message);
json.append("\"}");
return json.toString();
}
@ApiOperation("返回有成功与否结果的JSON格式信息")
public static String RebackString2JSON(String message, String success) {
StringBuffer json = new StringBuffer();
json.append("{\"message\":\"");
json.append(message);
json.append("\", \"success\":\"");
json.append(success);
json.append("\"}");
return json.toString();
}
@ApiOperation("将单个数组转换为JSON格式")
public static String SingleArray2JSON(Object singleString) {
StringBuffer json = new StringBuffer();
json.append("{\"message\":");
json.append(singleString);
json.append("}");
return json.toString();
}
@ApiOperation("将字符串转换为附件所需的JSON格式")
public static String String2AttachmentJSON(String attachmentString) {
StringBuffer attachmentJSON = new StringBuffer();
attachmentJSON.append("[{\"fileName\":\"");
attachmentJSON.append(attachmentString);
attachmentJSON.append("\",\"url\":\"\"}]");
return attachmentJSON.toString();
}
@ApiOperation("将list转换为微信小程序的JSON数组格式")
public static String getWCMPJSONStringByList(List<String> list) throws ParseException {
StringBuilder sb = new StringBuilder();
if (null != list && 0 < list.size()) {
for (int i = 0; i < list.size(); i++) {
if(0 == i) {
sb.append("[");
}
sb.append("{");
sb.append("\"name\": \"" + list.get(i) + "\"");
sb.append("}");
if(i == list.size() - 1) {
sb.append("]");
} else {
sb.append(", ");
}
}
}
return sb.toString();
}
@ApiOperation("生成带有数字和字母的随机数,长度可控")
@ApiImplicitParams({
@ApiImplicitParam(name = "length", value = "随机数长度")
})
public static String getStringRandom(int length) {
StringBuffer sb = new StringBuffer();
Random random = new Random();
// 参数length,表示生成几位随机数
for (int i = 0; i < length; i++) {
// random.nextInt(2):去 0 <= n < 2 之间的int型随机数,即 0 或者 1
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
// 输出字母还是数字
if ("char".equalsIgnoreCase(charOrNum)) {
// 输出是大写字母还是小写字母
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
sb.append((char)(random.nextInt(26) + temp));
} else if ( "num".equalsIgnoreCase(charOrNum)) {
sb.append(String.valueOf(random.nextInt(10)));
}
}
return sb.toString();
}
@ApiOperation("为JSONArray中的JSONObject对象排序")
@ApiImplicitParams({
@ApiImplicitParam(name = "keyName", value = "所需排序的字段名"),
@ApiImplicitParam(name = "sortDesc", value = "排序顺序:true-降序,false-升序")
})
public static JSONArray sortJsonArray(JSONArray array, String keyName, boolean sortDesc){
JSONArray sortedJsonArray = new JSONArray();
List<JSONObject> jsonValues = new ArrayList<JSONObject>();
for (int i = 0; i < array.size(); i++) {
jsonValues.add(array.getJSONObject(i));
}
Collections.sort(jsonValues, new Comparator<JSONObject>() {
private String KEY_NAME = keyName;
@Override
public int compare(JSONObject a, JSONObject b) {
String valA = new String();
String valB = new String();
try {
// 这里是a、b需要处理的业务,需要根据你的规则进行修改。
String aStr = a.getString(KEY_NAME);
valA = aStr.replaceAll("-", "");
String bStr = b.getString(KEY_NAME);
valB = bStr.replaceAll("-", "");
} catch (JSONException e) {
logger.error(e.getMessage(), e);
}
if (sortDesc) {
return -valA.compareTo(valB);
} else {
return valA.compareTo(valB);
}
}
});
for (int i = 0; i < array.size(); i++) {
sortedJsonArray.add(jsonValues.get(i));
}
return sortedJsonArray;
}
@ApiOperation("根据后缀名判断文件类型")
public static boolean isFileType(String filePath, String fileType) {
return filePath.matches("^.+\\.(?i)(" + fileType + ")$");
}
}