package com.sgcc.utils; import com.alibaba.fastjson.JSON; import java.io.IOException; import java.io.InputStream; import java.math.RoundingMode; import java.security.SecureRandom; import java.text.DecimalFormat; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.stream.Collectors; import com.sgcc.constant.Constants; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.io.IOUtils; /** * 共通方法工具类 * * @author zhaoyuanyuan * @version 1.0.0 * @date 2024/06/24 17:18 */ @Slf4j public class CommonUtils { public static final String JSON_PATH = "classpath:json/"; /** * ip和掩码分隔符 */ public static final String IP_MASK_CODE_SEPARATOR = "\\/"; /** * 解析JSON值 * * @param fileName 文件名 * @param clazz 实体类 * @param 泛型 * @return */ public static T parseJson(String fileName, Class clazz) throws IOException { return JSON.parseObject(readJsonFile(fileName), clazz); } /** * 读取json格式文件 * * @param fileName 文件名 * @return */ public static String readJsonFile(String fileName) throws IOException { return read(JSON_PATH + fileName); } /** * 读取json格式文件 * * @param path 文件路径 * @return */ public static String read(String path) throws IOException { String content = ""; InputStream stream = null; try { stream = CommonUtils.class.getClassLoader() .getResourceAsStream(path.replace("classpath:", "")); content = IOUtils.toString(stream, "UTF-8"); } catch (IOException e) { log.error("read file[{}] catch IOException. {}", path, e.getMessage()); } finally { stream.close(); } return content; } /** * 布尔值判断 true-0 false-1 * * @param param * @return {@code Integer } * @author zhaoyuanyuan * @date 2024/06/24 17:21 */ public static Integer booleanValueJudge(Boolean param) { if (param == null) { return null; } if (param) { return Constants.IS_TRUE; } else { return Constants.IS_FALSE; } } /** * 获取IP地址 * * @param ipAndMaskOffCode ip和屏蔽代码 * @return {@code String} */ public static String getIp(String ipAndMaskOffCode) { String ip = ""; if(StringUtils.isEmpty(ipAndMaskOffCode)){ return ip; } String[] ipAndMaskOffCodes = ipAndMaskOffCode.split(IP_MASK_CODE_SEPARATOR); if (ipAndMaskOffCodes.length > 1) { ip = ipAndMaskOffCodes[0]; }else { ip =ipAndMaskOffCode; } return ip; } /** * 获取掩码 * * @param ipAndMaskOffCode ip和屏蔽代码 * @return {@code String} */ public static String getMaskOffCode(String ipAndMaskOffCode) { String maskOffCode = ""; if (StringUtils.isEmpty(ipAndMaskOffCode)){ return maskOffCode; } String[] ipAndMaskOffCodes = ipAndMaskOffCode.split(IP_MASK_CODE_SEPARATOR); if (ipAndMaskOffCodes.length >= 2) { maskOffCode = ipAndMaskOffCodes[1]; } return maskOffCode; } /** * 字符串形式的数组转换为List * * @param integerArrStr 数组字符串 * @return {@code List } * @author zhaoyuanyuan * @date 2024/07/11 09:43 */ public static List string2IntegerList(String integerArrStr) { List tempList = Arrays.asList(integerArrStr.split(",")); List resultList = tempList.stream().map(Integer::valueOf).collect(Collectors.toList()); return resultList; } /** * 随机获取列表中的某一个元素 * * @param list 列表 * @return {@code T } * @author zhaoyuanyuan * @date 2024/07/18 16:16 */ public static T getRandomElement(List list) { if (list == null || list.isEmpty()) { throw new IllegalArgumentException("List cannot be null or empty"); } SecureRandom random = new SecureRandom(); int index = random.nextInt(list.size()); return list.get(index); } /** * Double类型数据保留两位小数 * * @param value 值 * @return {@code Double } * @author zhaoyuanyuan * @date 2024/09/18 14:01 */ public static Double formatDouble(Double value) { //格式化字符串,表示两位小数 DecimalFormat df = new DecimalFormat("#.00"); //设置格式化器 df.setRoundingMode(RoundingMode.HALF_UP); //转换并输出 String formattedValue = df.format(value); return Double.valueOf(formattedValue); } /** * 身份证号脱敏处理 * * @param idCard 身份证号 * @return {@code String } * @author zhaoyuanyuan * @date 2024/11/21 13:14 */ public static String desensitizedIdCard(String idCard) { if (idCard == null || (idCard.length() != 18 && idCard.length() != 15)) { return null; } return idCard.replaceAll("^(\\d{6})(\\d+)(\\d{4})$", "$1****$3"); } }