package com.zzwtec.wechat.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.zzwtec.third.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Random; import java.util.UUID; public class CommonUtil { private static final Logger logger = LoggerFactory.getLogger(CommonUtil.class); //web请求操作码前缀 //public static final String WEB_REQUESTID_PREFIX = "web"; public static final String USER_TOKEN_PREFIX = "user-"; public static final String DEVICE_TOKEN_PREFIX = "device-"; public static final String DEVICE_IPC_TOKEN_PREFIX = "device-ipc-"; public static final String SYSUSER_TOKEN_PREFIX = "sysuser-"; public static final String ADUSER_TOKEN_PREFIX = "aduser-"; public static final String ZR60_LOCK_STATE = "zr60-lock-state-"; public static final String ZR60_CARD_LIST = "zr60-card-list-"; //慧联临时密码前缀 public static final String HL_TEMP_PSW_PREFIX="hl-tmp-psw-"; // 慧联方面的设备状态 public static final String HL_STATUS_PREFIX = "hl-state-"; //总后台角色ID前缀 public static final String ACCOUNT_ROLE_PREFIX = "account_role"; //物业后台角色ID前缀 public static final String ADMIN_ROLE_PREFIX = "admin_role"; //总后台管理员ID前缀 public static final String ACCOUNT_PREFIX = "account"; //物业后台管理员ID前缀 public static final String ADMIN_PREFIX = "admin"; //总后台管理员ID前缀 public static final String BIGDATAUSER_PREFIX = "cmpadmin"; //百度语音Token的redis缓存key public static final String VOICE_TOKEN_CACHE = "VOICE_TOKEN:"; //验证码的redis前缀 public static final String VERIFY_CODE_PREFIX = "VERIFY_CODE:"; // 开锁日志的redis缓存前缀 public static final String OPEN_DOOR_LOG_PREFIX = "OPEN_DOOR_LOG:"; // 用户房产id的redis缓存前缀 public static final String CELL_ID_LIST_PREFIX = "CELL_ID_LIST:"; // 地图坐标数据 public static final JSONObject GEO_MAP = JSON.parseObject("{\"461\":[100.9,36.97],\"427\":[99.7,27.83],\"494\":[120.67,24.15],\"7\":[112.56,37.87],\"8\":[111.747,40.8],\"9\":[123.429,41.83],\"433\":[80.1,32.5],\"400\":[102.22,31.9],\"425\":[98.58,24.43],\"3\":[121.47,31.23],\"10\":[126.55,43.83],\"477\":[82.07,44.9],\"186\":[129.5,42.88],\"6\":[116.4,39],\"23\":[110.34,20.01],\"500\":[120.8,24.53],\"501\":[120.72,24.25],\"502\":[120.53,24.08],\"503\":[120.67,23.92],\"504\":[120.53,23.72],\"506\":[120.32,23.32],\"507\":[120.37,22.63],\"508\":[120.48,22.67],\"509\":[121.75,24.77],\"510\":[121.6,23.98],\"511\":[121.15,22.75],\"512\":[119.58,23.58],\"4\":[117.2,39.12],\"497\":[121.5,25.03],\"457\":[103.22,35.6],\"403\":[106.63,26.65],\"404\":[104.83,26.6],\"405\":[106.92,27.73],\"406\":[105.95,26.25],\"407\":[109.18,27.72],\"483\":[81.32,43.92],\"409\":[105.28,27.3],\"412\":[102.72,25.05],\"413\":[103.8,25.5],\"414\":[102.55,24.35],\"415\":[99.17,25.12],\"416\":[103.72,27.33],\"417\":[100.23,26.88],\"419\":[100.08,23.88],\"496\":[120.2,23.0],\"421\":[103.4,23.37],\"300\":[114.88,30.4],\"301\":[112.2,31.03],\"302\":[113.92,30.93],\"303\":[112.23,30.33],\"424\":[99.97,25.42],\"304\":[114.87,30.45],\"305\":[114.32,29.85],\"306\":[113.37,31.72],\"428\":[91.13,29.65],\"307\":[109.47,30.3],\"308\":[113.45,30.37],\"309\":[112.88,30.42],\"422\":[104.25,23.37],\"431\":[88.88,29.27],\"310\":[113.17,30.67],\"311\":[110.67,31.75],\"312\":[112.93,28.23],\"313\":[113.13,27.83],\"314\":[112.93,27.83],\"402\":[102.27,27.9],\"435\":[108.93,34.27],\"436\":[108.93,34.9],\"315\":[112.57,26.9],\"316\":[111.47,27.25],\"437\":[107.13,34.37],\"438\":[108.7,34.33],\"317\":[113.12,29.37],\"318\":[111.68,29.05],\"439\":[109.5,34.5],\"319\":[110.47,29.13],\"426\":[98.85,25.85],\"440\":[109.48,36.6],\"320\":[112.32,28.6],\"441\":[107.02,33.07],\"200\":[118.78,32.07],\"442\":[109.73,38.28],\"321\":[113.02,25.78],\"443\":[109.02,32.68],\"322\":[111.62,26.43],\"201\":[120.3,31.57],\"202\":[117.18,34.27],\"444\":[109.93,33.87],\"323\":[110.0,27.57],\"324\":[112.0,27.73],\"445\":[103.82,36.07],\"203\":[119.95,31.78],\"325\":[109.73,28.32],\"446\":[98.27,39.8],\"204\":[120.58,31.3],\"447\":[102.18,38.5],\"326\":[113.5107,23.2196],\"205\":[120.88,31.98],\"327\":[113.6,24.82],\"206\":[119.22,34.6],\"448\":[104.18,36.55],\"449\":[105.72,34.58],\"207\":[119.02,33.62],\"328\":[114.05,22.55],\"329\":[113.57,22.27],\"462\":[102.02,35.52],\"208\":[120.15,33.35],\"209\":[119.4,32.4],\"401\":[101.97,30.05],\"450\":[102.63,37.93],\"451\":[100.45,38.93],\"330\":[116.68,23.35],\"331\":[113.12,23.02],\"452\":[106.67,35.55],\"210\":[119.45,32.2],\"332\":[113.08,22.58],\"453\":[98.52,39.75],\"211\":[119.92,32.45],\"454\":[107.63,35.73],\"333\":[110.35,21.27],\"212\":[118.28,33.97],\"213\":[120.15,30.28],\"455\":[104.62,35.58],\"334\":[110.92,21.67],\"214\":[121.55,29.88],\"456\":[104.92,33.4],\"335\":[112.47,23.05],\"215\":[120.7,28.0],\"336\":[114.42,23.12],\"216\":[120.75,30.75],\"337\":[116.12,24.28],\"459\":[101.78,36.62],\"217\":[120.08,30.9],\"338\":[115.37,22.78],\"339\":[114.7,23.73],\"218\":[120.57,30.0],\"219\":[119.65,29.08],\"340\":[111.98,21.87],\"220\":[118.87,28.93],\"341\":[113.03,23.7],\"342\":[113.75,23.05],\"221\":[122.2,30.0],\"222\":[121.43,28.68],\"343\":[113.38,22.52],\"344\":[116.62,23.67],\"223\":[119.92,28.45],\"224\":[117.25,31.83],\"345\":[116.37,23.55],\"346\":[112.03,22.92],\"225\":[118.38,31.33],\"467\":[106.28,38.47],\"468\":[106.38,39.02],\"226\":[117.38,32.92],\"347\":[108.37,22.82],\"348\":[109.42,24.33],\"469\":[106.2,37.98],\"227\":[117.0,32.63],\"349\":[110.28,25.28],\"228\":[118.5,31.7],\"229\":[116.8,33.95],\"470\":[106.28,36.0],\"350\":[111.27,23.48],\"471\":[105.18,37.52],\"230\":[117.82,30.93],\"351\":[109.12,21.48],\"472\":[87.62,43.82],\"231\":[117.05,30.53],\"473\":[84.87,45.6],\"352\":[108.35,21.7],\"474\":[89.17,42.95],\"353\":[108.62,21.95],\"232\":[118.33,29.72],\"475\":[93.52,42.83],\"233\":[118.32,32.3],\"354\":[109.6,23.1],\"355\":[110.17,22.63],\"234\":[115.82,32.9],\"235\":[116.98,33.63],\"356\":[106.62,23.9],\"236\":[117.87,31.6],\"357\":[111.55,24.42],\"358\":[108.07,24.7],\"479\":[80.27,41.17],\"237\":[116.5,31.77],\"359\":[109.23,23.73],\"238\":[115.78,33.85],\"239\":[117.48,30.67],\"11\":[126.66,45.74],\"12\":[118.76,32.06],\"13\":[120.153,30.26],\"14\":[117.28,31.86],\"15\":[119.296,26.0998],\"16\":[115.91,28.674],\"17\":[117.02,36.668],\"18\":[113.75,34.765],\"464\":[100.23,34.48],\"19\":[114.34,30.54],\"360\":[107.37,22.4],\"481\":[75.98,39.47],\"240\":[118.75,30.95],\"361\":[110.32,20.03],\"482\":[79.92,37.12],\"362\":[109.5,18.25],\"241\":[119.3,26.08],\"484\":[82.98,46.75],\"363\":[109.52,18.78],\"242\":[118.08,24.48],\"364\":[110.47,19.25],\"485\":[88.13,47.85],\"243\":[119.0,25.43],\"244\":[117.62,26.27],\"486\":[86.03,44.3],\"365\":[109.57,19.52],\"366\":[110.8,19.55],\"245\":[118.67,24.88],\"487\":[81.28,40.55],\"246\":[117.65,24.52],\"367\":[110.4,18.8],\"488\":[79.13,39.85],\"247\":[118.17,26.65],\"368\":[108.63,19.1],\"489\":[87.53,44.17],\"248\":[117.03,25.1],\"369\":[110.32,19.7],\"249\":[119.52,26.67],\"20\":[112.98,28.11],\"21\":[113.258,23.13],\"22\":[108.32,22.81],\"24\":[104.076,30.65],\"25\":[106.707,26.598],\"26\":[102.71,25.046],\"27\":[91.117,29.64],\"28\":[108.95,34.26],\"29\":[103.82,36.059],\"5\":[106.55,29.57],\"370\":[110.1,19.37],\"250\":[115.85,28.68],\"492\":[121.73,25.13],\"371\":[110.0,19.73],\"372\":[109.68,19.92],\"130\":[114.52,38.05],\"251\":[117.17,29.27],\"131\":[118.2,39.63],\"373\":[109.45,19.23],\"252\":[113.85,27.63],\"374\":[109.05,19.25],\"253\":[116.0,29.7],\"132\":[119.6,39.93],\"133\":[114.48,36.62],\"375\":[109.17,18.75],\"254\":[114.92,27.82],\"376\":[110.03,18.5],\"255\":[117.07,28.27],\"134\":[114.48,37.07],\"498\":[121.3,24.97],\"256\":[114.93,25.83],\"377\":[109.7,18.63],\"135\":[115.47,38.87],\"257\":[114.98,27.12],\"378\":[109.83,19.03],\"136\":[114.88,40.82],\"137\":[117.93,40.97],\"258\":[114.38,27.8],\"138\":[116.83,38.3],\"259\":[116.35,28.0],\"139\":[116.7,39.52],\"30\":[101.78,36.62],\"31\":[106.258,38.47],\"32\":[87.627,43.79],\"33\":[121.5,25.0],\"34\":[114.08,22.2],\"35\":[113.33,22.13],\"260\":[117.97,28.45],\"382\":[104.07,30.67],\"261\":[116.98,36.67],\"140\":[115.68,37.73],\"383\":[104.78,29.35],\"262\":[120.38,36.07],\"141\":[112.55,37.87],\"263\":[118.05,36.82],\"384\":[101.72,26.58],\"142\":[113.3,40.08],\"143\":[113.57,37.85],\"264\":[117.32,34.82],\"385\":[105.43,28.87],\"386\":[104.38,31.13],\"265\":[118.67,37.43],\"144\":[113.12,36.2],\"387\":[104.73,31.47],\"145\":[112.83,35.5],\"266\":[121.43,37.45],\"146\":[112.43,39.33],\"267\":[119.15,36.7],\"388\":[105.83,32.43],\"147\":[112.75,37.68],\"389\":[105.57,30.52],\"268\":[116.58,35.42],\"269\":[117.08,36.2],\"148\":[110.98,35.02],\"149\":[112.73,38.42],\"2\":[116.4,39.9],\"420\":[101.55,25.03],\"390\":[105.05,29.58],\"391\":[103.77,29.57],\"270\":[122.12,37.52],\"271\":[119.52,35.42],\"150\":[111.52,36.08],\"392\":[106.08,30.78],\"272\":[117.67,36.22],\"393\":[103.83,30.05],\"151\":[111.13,37.52],\"273\":[118.35,35.05],\"152\":[111.73,40.83],\"394\":[104.62,28.77],\"395\":[106.63,30.47],\"274\":[116.3,37.45],\"153\":[109.83,40.65],\"154\":[106.82,39.67],\"275\":[115.98,36.45],\"396\":[107.5,31.22],\"155\":[118.92,42.27],\"397\":[103.0,29.98],\"276\":[117.97,37.38],\"398\":[106.77,31.85],\"156\":[122.27,43.62],\"399\":[104.65,30.12],\"157\":[109.8,39.62],\"278\":[113.62,34.75],\"279\":[114.3,34.8],\"158\":[119.77,49.22],\"159\":[107.42,40.75],\"166\":[122.98,41.1],\"466\":[97.37,37.37],\"280\":[112.45,34.62],\"281\":[113.18,33.77],\"160\":[113.12,40.98],\"161\":[122.05,46.08],\"282\":[114.38,36.1],\"283\":[114.28,35.75],\"162\":[116.07,43.95],\"163\":[105.67,38.83],\"284\":[113.9,35.3],\"164\":[123.43,41.8],\"285\":[113.25,35.22],\"286\":[115.03,35.77],\"165\":[121.62,38.92],\"287\":[113.85,34.03],\"167\":[123.98,41.88],\"288\":[114.02,33.58],\"168\":[123.77,41.3],\"289\":[111.2,34.78],\"169\":[124.38,40.13],\"176\":[120.45,41.57],\"290\":[112.52,33.0],\"170\":[121.13,41.1],\"291\":[115.65,34.45],\"171\":[122.23,40.67],\"292\":[114.07,32.13],\"293\":[114.65,33.62],\"478\":[86.15,41.77],\"172\":[121.67,42.02],\"173\":[123.17,41.27],\"294\":[114.02,32.98],\"174\":[122.07,41.12],\"295\":[114.3,30.6],\"175\":[123.83,42.28],\"296\":[115.03,30.2],\"297\":[110.78,32.65],\"298\":[111.28,30.7],\"177\":[120.83,40.72],\"178\":[125.32,43.9],\"430\":[91.77,29.23],\"180\":[124.35,43.17],\"181\":[125.13,42.88],\"182\":[125.93,41.73],\"183\":[126.42,41.93],\"184\":[124.82,45.13],\"185\":[122.83,45.62],\"187\":[126.53,45.8],\"188\":[123.95,47.33],\"189\":[130.97,45.3],\"190\":[130.27,47.33],\"191\":[131.15,46.63],\"192\":[125.03,46.58],\"193\":[128.9,47.73],\"194\":[130.37,46.82],\"195\":[130.95,45.78],\"411\":[107.52,26.27],\"196\":[129.6,44.58],\"197\":[127.48,50.25],\"476\":[87.3,44.02],\"198\":[126.98,46.63],\"199\":[124.12,50.42],\"458\":[102.92,34.98],\"424\":[100.23,25.6],\"410\":[107.97,26.58],\"463\":[100.62,36.28],\"423\":[100.8,22.02],\"432\":[92.07,31.48],\"465\":[97.02,33.0]}"); @SuppressWarnings("rawtypes") public static Object getClassFieldObj(Class clazz, String fieldName, String fieldValue){ try { Class fieldClazz = clazz.getField(fieldName).getType(); if(fieldClazz.getName().equals("short")){ return Short.parseShort(fieldValue); }else if(fieldClazz.getName().equals("int")){ return Integer.parseInt(fieldValue); }else if(fieldClazz.getName().equals("long")){ return Long.parseLong(fieldValue); }else if(fieldClazz.getName().equals("float")){ return Float.parseFloat(fieldValue); }else if(fieldClazz.getName().equals("double")){ return Double.parseDouble(fieldValue); }else if(fieldClazz.getName().equals("boolean")){ return Boolean.parseBoolean(fieldValue); }else if(fieldClazz.getName().equals("java.lang.String")){ return fieldValue; } } catch (Exception e) { logger.error("有异常",e); } return null; } /** * 获取用户token * @return */ public static String getUserToken(){ return USER_TOKEN_PREFIX+CommonUtil.getUUID(); } /** * 获取设备token * @return */ public static String getDeviceToken(){ return DEVICE_TOKEN_PREFIX+CommonUtil.getUUID(); } /** * 获取IPC服务器(网络监控摄像头的服务器)token * @return */ public static String getIPCDeviceToken(){ return DEVICE_IPC_TOKEN_PREFIX+CommonUtil.getUUID(); } /** * 获取系统用户token * @return */ public static String getSysuserToken(){ return SYSUSER_TOKEN_PREFIX+CommonUtil.getUUID(); } /** * 获取广告用户token */ public static String getAdUserToken(){ return ADUSER_TOKEN_PREFIX+CommonUtil.getUUID(); } /** * 获取没有-的UUID * @return */ public synchronized static String getUUID() { String s = UUID.randomUUID().toString(); return s.replaceAll("-", ""); } /** * 获取请求ID */ public static String getRequestId(String projectName){ return projectName+"-"+System.nanoTime(); } /** * 拼接 * @param arr 基础数据类型数组或字符串数组 * @param delim * @return */ public static String join(Object[] arr, String delim){ if (arr==null || arr.length==0) { return ""; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.length; i++) { if(arr[i]==null){ continue; } if (i > 0) { sb.append(delim); } sb.append(arr[i]); } return sb.toString(); } /** * 获取验证redis key * @param sessionId * @return */ public static String getVerifyCodeRedisKey(String sessionId) { return VERIFY_CODE_PREFIX + sessionId; } /** * 生成验证码 随机码 * @param simple 是否要简单的验证码 * @param length 验证码长度 * @return */ public static String makeVerifyNum(boolean simple, int length){ final char[] legalChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray(); StringBuilder sb = new StringBuilder(); Random random = new Random(); short len = 62; if(simple){ len = 10; } for (int i = 0; i < length; i++) { char rand = legalChars[random.nextInt(len)]; sb.append(rand); } String sjm = sb.toString(); sb = null; random=null; return sjm; } /** * 数据模型属性转表字段
* 将数据模型属性的大写字母转为_小写字母
* 如 数据模型属性 userId 那么表字段为 user_id
* @param field * @return */ public static String field2Column(String field){ //a=97 z=122 A=65 Z=90 if(field==null)return null; char[] value = new char[100]; int count=0; for(int i=0; i