| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 | 
							- package com.iamberry.app.ulitity;
 
- import static com.iamberry.app.config.ImberryConfig.SMS_PASSWORD;
 
- import static com.iamberry.app.config.ImberryConfig.SMS_TEXT;
 
- import static com.iamberry.app.config.ImberryConfig.SMS_URL;
 
- import static com.iamberry.app.config.ImberryConfig.SMS_USERNAME;
 
- import java.io.BufferedReader;
 
- import java.io.IOException;
 
- import java.io.InputStream;
 
- import java.io.InputStreamReader;
 
- import java.text.MessageFormat;
 
- import java.text.ParseException;
 
- import java.text.SimpleDateFormat;
 
- import java.util.ArrayList;
 
- import java.util.Calendar;
 
- import java.util.Date;
 
- import java.util.HashMap;
 
- import java.util.List;
 
- import java.util.Map;
 
- import java.util.Random;
 
- import javax.servlet.http.HttpServletRequest;
 
- import org.apache.http.HttpEntity;
 
- import org.apache.http.NameValuePair;
 
- import org.apache.http.client.entity.UrlEncodedFormEntity;
 
- import org.apache.http.client.methods.CloseableHttpResponse;
 
- import org.apache.http.client.methods.HttpPost;
 
- import org.apache.http.entity.ContentType;
 
- import org.apache.http.entity.mime.MultipartEntityBuilder;
 
- import org.apache.http.entity.mime.content.StringBody;
 
- import org.apache.http.impl.client.CloseableHttpClient;
 
- import org.apache.http.impl.client.HttpClients;
 
- import org.apache.http.message.BasicNameValuePair;
 
- import org.apache.http.util.EntityUtils;
 
- import org.json.JSONObject;
 
- import com.iamberry.app.config.Constants;
 
- import com.iamberry.app.core.dto.RecordDTO;
 
- import com.iamberry.app.tool.dto.AddressDTO;
 
- import com.iamberry.app.tool.util.HttpUtility;
 
- import com.iamberry.app.tool.util.JsonParseUtil;
 
- import com.iamberry.app.tool.util.Result;
 
- import com.thoughtworks.xstream.XStream;
 
- import com.thoughtworks.xstream.io.xml.StaxDriver;
 
- public class Utility {
 
- 	public static String DATA_STORE = "";
 
- 	private static final String AB = "123456789abcdefghijklmnpqrstuvwxyz";
 
- 	private static Random rnd = new Random();
 
- 	public static String getDateByDay() {
 
- 		Calendar cal = Calendar.getInstance();
 
- 		StringBuffer buffer = new StringBuffer();
 
- 		buffer.append(cal.get(Calendar.YEAR));
 
- 		buffer.append(cal.get(Calendar.MONTH) + 1);
 
- 		buffer.append(cal.get(Calendar.DAY_OF_MONTH));
 
- 		return buffer.toString();
 
- 	}
 
- 	public static boolean contains(String[] array, String item) {
 
- 		try {
 
- 			for (int i = 0; i < array.length; i++) {
 
- 				if (array[i].equals(item)) {
 
- 					return true;
 
- 				}
 
- 			}
 
- 		} catch (Exception ex) {
 
- 		}
 
- 		return false;
 
- 	}
 
- 	public static String normalizePath(String path) {
 
- 		return path.replace("\\\\", "\\").replace("\\", "/").replace("//", "/").replace("..", ".");
 
- 	}
 
- 	public static String getRandomString(int len) {
 
- 		StringBuilder sb = new StringBuilder(len);
 
- 		for (int i = 0; i < len; i++)
 
- 			sb.append(AB.charAt(rnd.nextInt(AB.length())));
 
- 		return sb.toString();
 
- 	}
 
- 	public static int CalculateAge(Long date) {
 
- 		Date birthDate = new Date(0);
 
- 		if (date != null)
 
- 			birthDate = new Date(date);
 
- 		SimpleDateFormat format = new SimpleDateFormat("yyyy");
 
- 		int birthYear = Integer.parseInt(format.format(birthDate));
 
- 		int currentYear = Integer.parseInt(format.format(new Date(System.currentTimeMillis())));
 
- 		int age = currentYear - birthYear;
 
- 		return age;
 
- 	}
 
- 	public static List<RecordDTO> convertMap(List<Map<String, Object>> list, String dateType) {
 
- 		List<RecordDTO> maps = new ArrayList<RecordDTO>();
 
- 		try {
 
- 			SimpleDateFormat sdf = null;
 
- 			for (Map<String, Object> map : list) {
 
- 				switch (dateType) {
 
- 				case "days":
 
- 					sdf = new SimpleDateFormat("yyyyMMddHH");
 
- 					break;
 
- 				case "weeks":
 
- 					sdf = new SimpleDateFormat("yyyyMMdd");
 
- 					break;
 
- 				case "years":
 
- 					sdf = new SimpleDateFormat("yyyyMM");
 
- 					break;
 
- 				}
 
- 				Date key = sdf.parse(map.get(dateType).toString());
 
- 				Double value = Double.parseDouble(map.get("volume").toString());
 
- 				maps.add(new RecordDTO(key.getTime(), value));
 
- 			}
 
- 		} catch (Exception e) {
 
- 		}
 
- 		return maps;
 
- 	}
 
- 	public static Map<String, List<RecordDTO>> synAppMachineRecord(Map<String, List<RecordDTO>> oldMap) {
 
- 		Map<String, List<RecordDTO>> synMap = oldMap;
 
- 		int appSize = synMap.get("app").size();
 
- 		int machineSize = synMap.get("machine").size();
 
- 		int signer = 0;
 
- 		long appDate = 0l, machineDate = 0l;
 
- 		RecordDTO appRecord, machineRecord;
 
- 		for (int i = 0; i < appSize && i < machineSize; i++) {
 
- 			appRecord = synMap.get("app").get(i);
 
- 			machineRecord = synMap.get("machine").get(signer);
 
- 			appDate = appRecord.getRecordDate();
 
- 			machineDate = machineRecord.getRecordDate();
 
- 			if (appDate == machineDate) {
 
- 				signer++;
 
- 			} else if (appDate < machineDate) {
 
- 				synMap.get("machine").add(i, new RecordDTO(appDate, 0));
 
- 				machineSize++;
 
- 				signer++;
 
- 			} else {
 
- 				synMap.get("app").add(signer, new RecordDTO(machineDate, 0));
 
- 				appSize++;
 
- 				signer++;
 
- 			}
 
- 		}
 
- 		while (signer < machineSize) {
 
- 			synMap.get("app").add(new RecordDTO(synMap.get("machine").get(signer).getRecordDate(), 0));
 
- 			signer++;
 
- 		}
 
- 		while (signer < appSize) {
 
- 			synMap.get("machine").add(new RecordDTO(synMap.get("app").get(signer).getRecordDate(), 0));
 
- 			signer++;
 
- 		}
 
- 		return synMap;
 
- 	}
 
- 	public static Map<String, List<RecordDTO>> fillAppMachineRecordWithZero(Map<String, List<RecordDTO>> synedMap, String dataType,
 
- 			String chosenDate) {
 
- 		Map<String, List<RecordDTO>> fillMap = synedMap;
 
- 		Calendar calendar = Calendar.getInstance();
 
- 		List<Integer> existTimePoint = new ArrayList<Integer>();
 
- 		long timePoint = 0l;
 
- 		switch (dataType) {
 
- 		case "days":
 
- 			if (fillMap.get("app").isEmpty()) {
 
- 				calendar.setTime(Utility.formatStringToDate("yyyy-MM-dd HH:mm:ss", chosenDate));
 
- 			}
 
- 			fillMap.get("app").forEach(record -> {
 
- 				calendar.setTime(new Date(record.getRecordDate()));
 
- 				existTimePoint.add(calendar.get(Calendar.HOUR_OF_DAY));
 
- 			});
 
- 			for (int i = 0; i < 24; i++) {
 
- 				if (!existTimePoint.remove(new Integer(i))) {
 
- 					calendar.set(Calendar.HOUR_OF_DAY, i);
 
- 					timePoint = calendar.getTimeInMillis();
 
- 					fillMap.get("app").add(i, new RecordDTO(timePoint, 0));
 
- 					fillMap.get("machine").add(i, new RecordDTO(timePoint, 0));
 
- 				}
 
- 			}
 
- 			break;
 
- 		case "weeks":
 
- 			if (fillMap.get("app").isEmpty()) {
 
- 				calendar.setTime(Utility.formatStringToDate("yyyy-MM-dd HH:mm:ss", chosenDate));
 
- 			}
 
- 			fillMap.get("app").forEach(record -> {
 
- 				calendar.setTime(new Date(record.getRecordDate()));
 
- 				existTimePoint.add(calendar.get(Calendar.DAY_OF_WEEK));
 
- 			});
 
- 			if (existTimePoint.contains(new Integer(1))) {
 
- 				calendar.add(Calendar.DATE, -7);
 
- 			}
 
- 			for (int i = 2; i <= 7; i++) {
 
- 				if (!existTimePoint.remove(new Integer(i))) {
 
- 					calendar.set(Calendar.DAY_OF_WEEK, i);
 
- 					timePoint = calendar.getTimeInMillis();
 
- 					fillMap.get("app").add(i - 2, new RecordDTO(timePoint, 0));
 
- 					fillMap.get("machine").add(i - 2, new RecordDTO(timePoint, 0));
 
- 				}
 
- 			}
 
- 			if (!existTimePoint.contains(new Integer(1))) {
 
- 				calendar.add(Calendar.DATE, 7);
 
- 				calendar.set(Calendar.DAY_OF_WEEK, 1);
 
- 				timePoint = calendar.getTimeInMillis();
 
- 				fillMap.get("app").add(new RecordDTO(timePoint, 0));
 
- 				fillMap.get("machine").add(new RecordDTO(timePoint, 0));
 
- 			}
 
- 			break;
 
- 		case "years":
 
- 			if (fillMap.get("app").isEmpty()) {
 
- 				calendar.setTime(Utility.formatStringToDate("yyyy-MM-dd HH:mm:ss", chosenDate));
 
- 			}
 
- 			fillMap.get("app").forEach(record -> {
 
- 				calendar.setTime(new Date(record.getRecordDate()));
 
- 				existTimePoint.add(calendar.get(Calendar.MONTH));
 
- 			});
 
- 			for (int i = 0; i <= 11; i++) {
 
- 				if (!existTimePoint.remove(new Integer(i))) {
 
- 					calendar.set(Calendar.MONTH, i);
 
- 					timePoint = calendar.getTimeInMillis();
 
- 					fillMap.get("app").add(i, new RecordDTO(timePoint, 0));
 
- 					fillMap.get("machine").add(i, new RecordDTO(timePoint, 0));
 
- 				}
 
- 			}
 
- 			break;
 
- 		}
 
- 		return fillMap;
 
- 	}
 
- 	public static String getRandomCode(int len) {
 
- 		StringBuilder sb = new StringBuilder(len);
 
- 		for (int i = 0; i < len; i++)
 
- 			sb.append("0123456789".charAt(rnd.nextInt("0123456789".length())));
 
- 		return sb.toString();
 
- 	}
 
- 	public static String getIp(HttpServletRequest request) {
 
- 		String ip = request.getHeader("x-forwarded-for");
 
- 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 
- 			ip = request.getHeader("Proxy-Client-IP");
 
- 		}
 
- 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 
- 			ip = request.getHeader("WL-Proxy-Client-IP");
 
- 		}
 
- 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 
- 			ip = request.getRemoteAddr();
 
- 		}
 
- 		return ip;
 
- 	}
 
- 	public static String CDN_WRITE_BASE_64_URL = "http://cms.iamberry.com/open-cdn/ssl/data/write/base64";
 
- 	public static String uploadBase64File(String base64Data, String path) {
 
- 		try {
 
- 			if (base64Data != null) {
 
- 				StringBody pic = new StringBody(base64Data, ContentType.DEFAULT_TEXT);
 
- 				StringBody type = new StringBody("jpg", ContentType.TEXT_PLAIN);
 
- 				HttpEntity entity = MultipartEntityBuilder.create().addPart("type", type).addPart("base64data", pic)
 
- 						.build();
 
- 				String result = HttpUtility.httpsPost(CDN_WRITE_BASE_64_URL, entity);
 
- 				JSONObject json = new JSONObject(result);
 
- 				int requestSatus = json.getJSONObject("header").getInt("status");
 
- 				if (1000 == requestSatus) {
 
- 					path = json.getJSONObject("data").get("url").toString();
 
- 				}
 
- 				return path;
 
- 			}
 
- 		} catch (Exception e) {
 
- 			return null;
 
- 		}
 
- 		return "";
 
- 	}
 
- 	public static String readFile(InputStream in) {
 
- 		BufferedReader reader = null;
 
- 		String result = "";
 
- 		try {
 
- 			InputStreamReader inputStreamReader = new InputStreamReader(in, "UTF-8");
 
- 			reader = new BufferedReader(inputStreamReader);
 
- 			String tempString = null;
 
- 			while ((tempString = reader.readLine()) != null) {
 
- 				result += tempString;
 
- 			}
 
- 			reader.close();
 
- 		} catch (IOException e) {
 
- 			e.printStackTrace();
 
- 		} finally {
 
- 			if (reader != null) {
 
- 				try {
 
- 					reader.close();
 
- 				} catch (IOException e) {
 
- 					e.printStackTrace();
 
- 				}
 
- 			}
 
- 		}
 
- 		return result;
 
- 	}
 
- 	public static String sendCodeAsSMS(String phoneNum, Map<String, Integer> status) throws Exception {
 
- 		String code = getRandomCode(4);
 
- 		CloseableHttpClient client = HttpClients.createDefault();
 
- 		Map<String, String> params = new HashMap<String, String>();
 
- 		CloseableHttpResponse response = null;
 
- 		params.put("username", SMS_USERNAME);
 
- 		params.put("password", SMS_PASSWORD);
 
- 		params.put("mobile", phoneNum);
 
- 		params.put("content", MessageFormat.format(SMS_TEXT, code));
 
- 		HttpPost method = new HttpPost(SMS_URL);
 
- 		if (params != null) {
 
- 			List<NameValuePair> paramList = new ArrayList<NameValuePair>();
 
- 			for (Map.Entry<String, String> param : params.entrySet()) {
 
- 				NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue());
 
- 				paramList.add(pair);
 
- 			}
 
- 			method.setEntity(new UrlEncodedFormEntity(paramList, "UTF-8"));
 
- 		}
 
- 		response = client.execute(method);
 
- 		HttpEntity entity = response.getEntity();
 
- 		if (entity != null) {
 
- 			String result = EntityUtils.toString(entity);
 
- 			XStream xs = new XStream(new StaxDriver());
 
- 			xs.alias("result", Result.class);
 
- 			Result object = (Result)xs.fromXML(result);
 
- 			response.close();
 
- 			status.put(Constants.SMS_RETURNCODE, object.getResultcode());
 
- 			if (0 == object.getResultcode()) {
 
- 				return code;
 
- 			}
 
- 		}
 
- 		return null;
 
- 	}
 
- 	public static AddressDTO getDefaultAddress(String jsonList) {
 
- 		List<AddressDTO> addressDTOs = JsonParseUtil.parseAddressList(jsonList);
 
- 		for (AddressDTO addressDTO : addressDTOs) {
 
- 			if (addressDTO.getDefaultAddress() == 1) {
 
- 				return addressDTO;
 
- 			}
 
- 		}
 
- 		return null;
 
- 	}
 
- 	public static String getOrderSn(Long id) {
 
- 		if (id == null)
 
- 			throw new NullPointerException("id can not be null");
 
- 		SimpleDateFormat format = new SimpleDateFormat("yyMMdd");
 
- 		String date = format.format(new Date());
 
- 		String sn = String.format("%0" + 5 + "d", id);
 
- 		return "LTR" + date + sn;
 
- 	}
 
- 	public static String formatDateToString(String format, Date date) {
 
- 		SimpleDateFormat sdf = new SimpleDateFormat(format);
 
- 		return sdf.format(date);
 
- 	}
 
- 	public static Date formatStringToDate(String format, String dateStr) {
 
- 		SimpleDateFormat sdf = new SimpleDateFormat(format);
 
- 		Date date = null;
 
- 		try {
 
- 			date = sdf.parse(dateStr);
 
- 		} catch (ParseException e) {
 
- 			e.printStackTrace();
 
- 			date = new Date();
 
- 		}
 
- 		return date;
 
- 	}
 
- }
 
 
  |