package cc.mrbird.febs.common.utils; import cc.mrbird.febs.common.entity.FebsConstant; import cc.mrbird.febs.system.entity.User; import com.baomidou.mybatisplus.core.toolkit.StringPool; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import javax.servlet.http.HttpServletRequest; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.IntStream; /** * FEBS工具类 * * @author MrBird */ @Slf4j public class FebsUtil { private static final Pattern CHINESE_PATTERN = Pattern.compile("[\u4e00-\u9fa5]"); /** * 驼峰转下划线 * * @param value 待转换值 * @return 结果 */ public static String camelToUnderscore(String value) { if (StringUtils.isBlank(value)) { return value; } String[] arr = StringUtils.splitByCharacterTypeCamelCase(value); if (arr.length == 0) { return value; } StringBuilder result = new StringBuilder(); IntStream.range(0, arr.length).forEach(i -> { if (i != arr.length - 1) { result.append(arr[i]).append(StringPool.UNDERSCORE); } else { result.append(arr[i]); } }); return StringUtils.lowerCase(result.toString()); } /** * 下划线转驼峰 * * @param value 待转换值 * @return 结果 */ public static String underscoreToCamel(String value) { StringBuilder result = new StringBuilder(); String[] arr = value.split("_"); for (String s : arr) { result.append((String.valueOf(s.charAt(0))).toUpperCase()).append(s.substring(1)); } return result.toString(); } /** * 判断是否为 ajax请求 * * @param request HttpServletRequest * @return boolean */ public static boolean isAjaxRequest(HttpServletRequest request) { return (request.getHeader("X-Requested-With") != null && "XMLHttpRequest".equals(request.getHeader("X-Requested-With"))); } /** * 正则校验 * * @param regex 正则表达式字符串 * @param value 要匹配的字符串 * @return 正则校验结果 */ public static boolean match(String regex, String value) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(value); return matcher.matches(); } /** * 获取当前登录用户 * * @return User */ public static User getCurrentUser() { return (User) SecurityUtils.getSubject().getPrincipal(); } /** * 判断是否包含中文 * * @param value 内容 * @return 结果 */ public static boolean containChinese(String value) { if (StringUtils.isBlank(value)) { return false; } Matcher matcher = CHINESE_PATTERN.matcher(value); return matcher.find(); } public static String view(String viewName) { return FebsConstant.VIEW_PREFIX + viewName; } }