赞
踩
-
- /**
- * 权限相关通用常量
- *
- * @author ws
- */
- public class SecurityConstants {
- /**
- * 令牌自定义标识
- */
- public static final String TOKEN_AUTHENTICATION = "Authorization";
-
- /**
- * 令牌前缀
- */
- public static final String TOKEN_PREFIX = "Bearer ";
-
- /**
- * 用户ID字段
- */
- public static final String USER_ID = "user_id";
-
- /**
- * 用户NO字段
- */
- public static final String USER_NO = "user_no";
-
- /**
- * 用户ID字段
- */
- public static final String USER_TYPE = "user_type";
-
- /**
- * 用户名字段
- */
- public static final String LOGIN_NAME = "login_name";
-
- /**
- * 用户名称
- */
- public static final String USER_NAME = "user_name";
-
- /**
- * 昵称
- */
- public static final String NICK_NAME = "nick_name";
-
- /**
- * 授权信息字段
- */
- public static final String AUTHORIZATION_HEADER = "authorization";
-
-
- /**
- * open id
- */
- public static final String OPEN_ID = "open_id";
-
- /**
- * company name
- */
- public static final String COMPANY_NAME = "company_name";
-
- /**
- * customer no
- */
- public static final String CUSTOMER_NO = "customer_no";
-
- }
- import com.destination.destinationquery.util.StringUtils;
- import org.springframework.web.context.request.RequestAttributes;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.IOException;
-
- /**
- * @author ws
- * @title: Result
- * @description: 客户端工具类
- * @date 2021/2/5
- */
- public class ServletUtils {
- /**
- * 获取String参数
- */
- public static String getParameter(String name) {
- return getRequest().getParameter(name);
- }
-
- /**
- * 获取String参数
- */
- public static String getParameter(String name, String defaultValue) {
- return ConvertUtils.toStr(getRequest().getParameter(name), defaultValue);
- }
-
- /**
- * 获取Integer参数
- */
- public static Integer getParameterToInt(String name) {
- return ConvertUtils.toInt(getRequest().getParameter(name));
- }
-
- /**
- * 获取Integer参数
- */
- public static Integer getParameterToInt(String name, Integer defaultValue) {
- return ConvertUtils.toInt(getRequest().getParameter(name), defaultValue);
- }
-
- /**
- * 获取request
- */
- public static HttpServletRequest getRequest() {
- return getRequestAttributes().getRequest();
- }
-
- /**
- * 获取response
- */
- public static HttpServletResponse getResponse() {
- return getRequestAttributes().getResponse();
- }
-
- /**
- * 获取session
- */
- public static HttpSession getSession() {
- return getRequest().getSession();
- }
-
- public static ServletRequestAttributes getRequestAttributes() {
- RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
- return (ServletRequestAttributes) attributes;
- }
-
- /**
- * 将字符串渲染到客户端
- *
- * @param response 渲染对象
- * @param string 待渲染的字符串
- * @return null
- */
- public static String renderString(HttpServletResponse response, String string) {
- try {
- response.setContentType("application/json");
- response.setCharacterEncoding("utf-8");
- response.getWriter().print(string);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- /**
- * 是否是Ajax异步请求
- *
- * @param request
- */
- public static boolean isAjaxRequest(HttpServletRequest request) {
-
- String accept = request.getHeader("accept");
- if (accept != null && accept.indexOf("application/json") != -1) {
- return true;
- }
-
- String xRequestedWith = request.getHeader("X-Requested-With");
- if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) {
- return true;
- }
-
- String uri = request.getRequestURI();
- if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) {
- return true;
- }
-
- String ajax = request.getParameter("__ajax");
- if (StringUtils.inStringIgnoreCase(ajax, "json", "xml")) {
- return true;
- }
-
- return false;
- }
- }
-
- package com.destination.destinationquery.util.Security;
-
- import cn.hutool.core.lang.Assert;
- import cn.hutool.core.util.StrUtil;
-
- import com.destination.destinationquery.util.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.http.server.reactive.ServerHttpRequest;
- import org.springframework.stereotype.Component;
-
- import javax.servlet.http.HttpServletRequest;
- import java.io.UnsupportedEncodingException;
- import java.net.URLDecoder;
-
- /**
- * 权限获取工具类
- *
- * @author ws
- */
- @Component
- public class SecurityUtils {
- private static final Logger log = LoggerFactory.getLogger(SecurityUtils.class);
- public static String urlDecode(String str)
- {
- try
- {
- return URLDecoder.decode(str,"UTF-8");
- }
- catch (UnsupportedEncodingException e)
- {
- return "";
- }
- }
- /**
- * 获取用户手机号
- */
- public static String getPhone_NO() {
- String customerNo = ServletUtils.getRequest().getHeader(SecurityConstants.Phone_NO);
- Assert.isFalse(StrUtil.isBlank(customerNo), () -> new BusinessException("手机号不能为空"));
- return urlDecode(customerNo);
- }
- /**
- * 获取用户权限
- */
- public static String getRole_Type() {
- String customerNo = ServletUtils.getRequest().getHeader(SecurityConstants.ROLE_TYPE);
- Assert.isFalse(StrUtil.isBlank(customerNo), () -> new BusinessException("权限不能为空"));
- return urlDecode(customerNo);
- }
-
-
-
-
-
-
-
- /**
- * 获取请求token
- */
- public static String getToken() {
- return getToken(ServletUtils.getRequest());
- }
-
- /**
- * 根据request获取请求token
- */
- public static String getToken(HttpServletRequest request) {
- String token = request.getHeader(SecurityConstants.TOKEN_AUTHENTICATION);
- return replaceTokenPrefix(token);
- }
-
- /**
- * 根据request获取请求token
- */
- public static String getToken(ServerHttpRequest request) {
- String token = request.getHeaders().getFirst(SecurityConstants.TOKEN_AUTHENTICATION);
- return replaceTokenPrefix(token);
- }
-
- /**
- * 替换token前缀
- */
- public static String replaceTokenPrefix(String token) {
- if (StringUtils.isNotEmpty(token) && token.startsWith(SecurityConstants.TOKEN_PREFIX)) {
- token = token.replace(SecurityConstants.TOKEN_PREFIX, "");
- }
- return token;
- }
-
-
- }
-
- import com.destination.destinationquery.util.StringUtils;
- import java.math.BigDecimal;
- import java.math.BigInteger;
- import java.nio.ByteBuffer;
- import java.nio.charset.Charset;
- import java.text.NumberFormat;
- import java.util.Set;
-
- /**
- * 类型转换器
- *
- * @author p&s
- */
- public class ConvertUtils {
-
- /**
- * 转换为字符串<br>
- * 如果给定的值为null,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static String toStr(Object value, String defaultValue) {
- if (null == value) {
- return defaultValue;
- }
- if (value instanceof String) {
- return (String) value;
- }
- return value.toString();
- }
-
- /**
- * 转换为字符串<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static String toStr(Object value) {
- return toStr(value, null);
- }
-
- /**
- * 转换为字符<br>
- * 如果给定的值为null,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Character toChar(Object value, Character defaultValue) {
- if (null == value) {
- return defaultValue;
- }
- if (value instanceof Character) {
- return (Character) value;
- }
-
- final String valueStr = toStr(value, null);
- return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0);
- }
-
- /**
- * 转换为字符<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Character toChar(Object value) {
- return toChar(value, null);
- }
-
- /**
- * 转换为byte<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Byte toByte(Object value, Byte defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Byte) {
- return (Byte) value;
- }
- if (value instanceof Number) {
- return ((Number) value).byteValue();
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return Byte.parseByte(valueStr);
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为byte<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Byte toByte(Object value) {
- return toByte(value, null);
- }
-
- /**
- * 转换为Short<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Short toShort(Object value, Short defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Short) {
- return (Short) value;
- }
- if (value instanceof Number) {
- return ((Number) value).shortValue();
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return Short.parseShort(valueStr.trim());
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为Short<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Short toShort(Object value) {
- return toShort(value, null);
- }
-
- /**
- * 转换为Number<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Number toNumber(Object value, Number defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Number) {
- return (Number) value;
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return NumberFormat.getInstance().parse(valueStr);
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为Number<br>
- * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Number toNumber(Object value) {
- return toNumber(value, null);
- }
-
- /**
- * 转换为int<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Integer toInt(Object value, Integer defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Integer) {
- return (Integer) value;
- }
- if (value instanceof Number) {
- return ((Number) value).intValue();
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return Integer.parseInt(valueStr.trim());
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为int<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Integer toInt(Object value) {
- return toInt(value, null);
- }
-
- /**
- * 转换为Integer数组<br>
- *
- * @param str 被转换的值
- * @return 结果
- */
- public static Integer[] toIntArray(String str) {
- return toIntArray(",", str);
- }
-
- /**
- * 转换为Long数组<br>
- *
- * @param str 被转换的值
- * @return 结果
- */
- public static Long[] toLongArray(String str) {
- return toLongArray(",", str);
- }
-
- /**
- * 转换为Integer数组<br>
- *
- * @param split 分隔符
- * @param split 被转换的值
- * @return 结果
- */
- public static Integer[] toIntArray(String split, String str) {
- if (StringUtils.isEmpty(str)) {
- return new Integer[]{};
- }
- String[] arr = str.split(split);
- final Integer[] ints = new Integer[arr.length];
- for (int i = 0; i < arr.length; i++) {
- final Integer v = toInt(arr[i], 0);
- ints[i] = v;
- }
- return ints;
- }
-
- /**
- * 转换为Long数组<br>
- *
- * @param split 是否忽略转换错误,忽略则给值null
- * @param str 被转换的值
- * @return 结果
- */
- public static Long[] toLongArray(String split, String str) {
- if (StringUtils.isEmpty(str)) {
- return new Long[]{};
- }
- String[] arr = str.split(split);
- final Long[] longs = new Long[arr.length];
- for (int i = 0; i < arr.length; i++) {
- final Long v = toLong(arr[i], null);
- longs[i] = v;
- }
- return longs;
- }
-
- /**
- * 转换为String数组<br>
- *
- * @param str 被转换的值
- * @return 结果
- */
- public static String[] toStrArray(String str) {
- return toStrArray(",", str);
- }
-
- /**
- * 转换为String数组<br>
- *
- * @param split 分隔符
- * @param split 被转换的值
- * @return 结果
- */
- public static String[] toStrArray(String split, String str) {
- return str.split(split);
- }
-
- /**
- * 转换为long<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Long toLong(Object value, Long defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Long) {
- return (Long) value;
- }
- if (value instanceof Number) {
- return ((Number) value).longValue();
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- // 支持科学计数法
- return new BigDecimal(valueStr.trim()).longValue();
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为long<br>
- * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Long toLong(Object value) {
- return toLong(value, null);
- }
-
- /**
- * 转换为double<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Double toDouble(Object value, Double defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Double) {
- return (Double) value;
- }
- if (value instanceof Number) {
- return ((Number) value).doubleValue();
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- // 支持科学计数法
- return new BigDecimal(valueStr.trim()).doubleValue();
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为double<br>
- * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Double toDouble(Object value) {
- return toDouble(value, null);
- }
-
- /**
- * 转换为Float<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Float toFloat(Object value, Float defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Float) {
- return (Float) value;
- }
- if (value instanceof Number) {
- return ((Number) value).floatValue();
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return Float.parseFloat(valueStr.trim());
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为Float<br>
- * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Float toFloat(Object value) {
- return toFloat(value, null);
- }
-
- /**
- * 转换为boolean<br>
- * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Boolean toBool(Object value, Boolean defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Boolean) {
- return (Boolean) value;
- }
- String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- valueStr = valueStr.trim().toLowerCase();
- switch (valueStr) {
- case "true":
- return true;
- case "false":
- return false;
- case "yes":
- return true;
- case "ok":
- return true;
- case "no":
- return false;
- case "1":
- return true;
- case "0":
- return false;
- default:
- return defaultValue;
- }
- }
-
- /**
- * 转换为boolean<br>
- * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static Boolean toBool(Object value) {
- return toBool(value, null);
- }
-
- /**
- * 转换为Enum对象<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- *
- * @param clazz Enum的Class
- * @param value 值
- * @param defaultValue 默认值
- * @return Enum
- */
- public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (clazz.isAssignableFrom(value.getClass())) {
- @SuppressWarnings("unchecked")
- E myE = (E) value;
- return myE;
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return Enum.valueOf(clazz, valueStr);
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为Enum对象<br>
- * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
- *
- * @param clazz Enum的Class
- * @param value 值
- * @return Enum
- */
- public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value) {
- return toEnum(clazz, value, null);
- }
-
- /**
- * 转换为BigInteger<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static BigInteger toBigInteger(Object value, BigInteger defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof BigInteger) {
- return (BigInteger) value;
- }
- if (value instanceof Long) {
- return BigInteger.valueOf((Long) value);
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return new BigInteger(valueStr);
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为BigInteger<br>
- * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static BigInteger toBigInteger(Object value) {
- return toBigInteger(value, null);
- }
-
- /**
- * 转换为BigDecimal<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof BigDecimal) {
- return (BigDecimal) value;
- }
- if (value instanceof Long) {
- return new BigDecimal((Long) value);
- }
- if (value instanceof Double) {
- return new BigDecimal((Double) value);
- }
- if (value instanceof Integer) {
- return new BigDecimal((Integer) value);
- }
- final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return new BigDecimal(valueStr);
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- /**
- * 转换为BigDecimal<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @return 结果
- */
- public static BigDecimal toBigDecimal(Object value) {
- return toBigDecimal(value, null);
- }
-
- /**
- * 将对象转为字符串<br>
- * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- *
- * @param obj 对象
- * @return 字符串
- */
- public static String utf8Str(Object obj) {
- return str(obj, Charset.forName("UTF-8"));
- }
-
- /**
- * 将对象转为字符串<br>
- * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- *
- * @param obj 对象
- * @param charsetName 字符集
- * @return 字符串
- */
- public static String str(Object obj, String charsetName) {
- return str(obj, Charset.forName(charsetName));
- }
-
- /**
- * 将对象转为字符串<br>
- * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- *
- * @param obj 对象
- * @param charset 字符集
- * @return 字符串
- */
- public static String str(Object obj, Charset charset) {
- if (null == obj) {
- return null;
- }
-
- if (obj instanceof String) {
- return (String) obj;
- } else if (obj instanceof byte[] || obj instanceof Byte[]) {
- return str((Byte[]) obj, charset);
- } else if (obj instanceof ByteBuffer) {
- return str((ByteBuffer) obj, charset);
- }
- return obj.toString();
- }
-
- /**
- * 将byte数组转为字符串
- *
- * @param bytes byte数组
- * @param charset 字符集
- * @return 字符串
- */
- public static String str(byte[] bytes, String charset) {
- return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));
- }
-
- /**
- * 解码字节码
- *
- * @param data 字符串
- * @param charset 字符集,如果此字段为空,则解码的结果取决于平台
- * @return 解码后的字符串
- */
- public static String str(byte[] data, Charset charset) {
- if (data == null) {
- return null;
- }
-
- if (null == charset) {
- return new String(data);
- }
- return new String(data, charset);
- }
-
- /**
- * 将编码的byteBuffer数据转换为字符串
- *
- * @param data 数据
- * @param charset 字符集,如果为空使用当前系统字符集
- * @return 字符串
- */
- public static String str(ByteBuffer data, String charset) {
- if (data == null) {
- return null;
- }
-
- return str(data, Charset.forName(charset));
- }
-
- /**
- * 将编码的byteBuffer数据转换为字符串
- *
- * @param data 数据
- * @param charset 字符集,如果为空使用当前系统字符集
- * @return 字符串
- */
- public static String str(ByteBuffer data, Charset charset) {
- if (null == charset) {
- charset = Charset.defaultCharset();
- }
- return charset.decode(data).toString();
- }
-
- // ----------------------------------------------------------------------- 全角半角转换
-
- /**
- * 半角转全角
- *
- * @param input String.
- * @return 全角字符串.
- */
- public static String toSBC(String input) {
- return toSBC(input, null);
- }
-
- /**
- * 半角转全角
- *
- * @param input String
- * @param notConvertSet 不替换的字符集合
- * @return 全角字符串.
- */
- public static String toSBC(String input, Set<Character> notConvertSet) {
- char c[] = input.toCharArray();
- for (int i = 0; i < c.length; i++) {
- if (null != notConvertSet && notConvertSet.contains(c[i])) {
- // 跳过不替换的字符
- continue;
- }
-
- if (c[i] == ' ') {
- c[i] = '\u3000';
- } else if (c[i] < '\177') {
- c[i] = (char) (c[i] + 65248);
-
- }
- }
- return new String(c);
- }
-
- /**
- * 全角转半角
- *
- * @param input String.
- * @return 半角字符串
- */
- public static String toDBC(String input) {
- return toDBC(input, null);
- }
-
- /**
- * 替换全角为半角
- *
- * @param text 文本
- * @param notConvertSet 不替换的字符集合
- * @return 替换后的字符
- */
- public static String toDBC(String text, Set<Character> notConvertSet) {
- char c[] = text.toCharArray();
- for (int i = 0; i < c.length; i++) {
- if (null != notConvertSet && notConvertSet.contains(c[i])) {
- // 跳过不替换的字符
- continue;
- }
-
- if (c[i] == '\u3000') {
- c[i] = ' ';
- } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
- c[i] = (char) (c[i] - 65248);
- }
- }
- String returnString = new String(c);
-
- return returnString;
- }
-
- /**
- * 数字金额大写转换 先写个完整的然后将如零拾替换成零
- *
- * @param n 数字
- * @return 中文大写数字
- */
- public static String digitUppercase(double n) {
- String[] fraction = {"角", "分"};
- String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
- String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}};
-
- String head = n < 0 ? "负" : "";
- n = Math.abs(n);
-
- String s = "";
- for (int i = 0; i < fraction.length; i++) {
- s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
- }
- if (s.length() < 1) {
- s = "整";
- }
- int integerPart = (int) Math.floor(n);
-
- for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
- String p = "";
- for (int j = 0; j < unit[1].length && n > 0; j++) {
- p = digit[integerPart % 10] + unit[1][j] + p;
- integerPart = integerPart / 10;
- }
- s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
- }
- return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
- }
- }
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。