commit
e9dbda42b0
@ -11,18 +11,18 @@ import java.util.concurrent.*;
|
|||||||
*/
|
*/
|
||||||
public class BaiDuUtils {
|
public class BaiDuUtils {
|
||||||
|
|
||||||
private final static String token = "9cdKR6bVCJzxDEJS";
|
private final static String TOKEN = "9cdKR6bVCJzxDEJS";
|
||||||
|
|
||||||
private final static String site = "https://rymcu.com";
|
private final static String SITE = "https://rymcu.com";
|
||||||
|
|
||||||
public static void sendSEOData(String permalink) {
|
public static void sendSEOData(String permalink) {
|
||||||
if (StringUtils.isBlank(permalink) || StringUtils.isBlank(token)) {
|
if (StringUtils.isBlank(permalink) || StringUtils.isBlank(TOKEN)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ExecutorService executor= new ThreadPoolExecutor(1,1,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
|
ExecutorService executor= new ThreadPoolExecutor(1,1,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
|
||||||
CompletableFuture.supplyAsync(()-> {
|
CompletableFuture.supplyAsync(()-> {
|
||||||
try {
|
try {
|
||||||
HttpResponse response = HttpRequest.post("http://data.zz.baidu.com/urls?site=" + site + "&token=" + token).
|
HttpResponse response = HttpRequest.post("http://data.zz.baidu.com/urls?site=" + SITE + "&token=" + TOKEN).
|
||||||
header("User-Agent", "curl/7.12.1").
|
header("User-Agent", "curl/7.12.1").
|
||||||
header("Host", "data.zz.baidu.com").
|
header("Host", "data.zz.baidu.com").
|
||||||
header("Content-Type", "text/plain").
|
header("Content-Type", "text/plain").
|
||||||
@ -34,17 +34,16 @@ public class BaiDuUtils {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
},executor);
|
},executor);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendUpdateSEOData(String permalink) {
|
public static void sendUpdateSEOData(String permalink) {
|
||||||
if (StringUtils.isBlank(permalink) || StringUtils.isBlank(token)) {
|
if (StringUtils.isBlank(permalink) || StringUtils.isBlank(TOKEN)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ExecutorService executor= new ThreadPoolExecutor(1,1,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
|
ExecutorService executor= new ThreadPoolExecutor(1,1,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
|
||||||
CompletableFuture.supplyAsync(()-> {
|
CompletableFuture.supplyAsync(()-> {
|
||||||
try {
|
try {
|
||||||
HttpResponse response = HttpRequest.post("http://data.zz.baidu.com/update?site=" + site + "&token=" + token).
|
HttpResponse response = HttpRequest.post("http://data.zz.baidu.com/update?site=" + SITE + "&token=" + TOKEN).
|
||||||
header("User-Agent", "curl/7.12.1").
|
header("User-Agent", "curl/7.12.1").
|
||||||
header("Host", "data.zz.baidu.com").
|
header("Host", "data.zz.baidu.com").
|
||||||
header("Content-Type", "text/plain").
|
header("Content-Type", "text/plain").
|
||||||
@ -59,13 +58,13 @@ public class BaiDuUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void deleteSEOData(String permalink) {
|
public static void deleteSEOData(String permalink) {
|
||||||
if (StringUtils.isBlank(permalink) || StringUtils.isBlank(token)) {
|
if (StringUtils.isBlank(permalink) || StringUtils.isBlank(TOKEN)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ExecutorService executor= new ThreadPoolExecutor(1,1,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
|
ExecutorService executor= new ThreadPoolExecutor(1,1,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
|
||||||
CompletableFuture.supplyAsync(()-> {
|
CompletableFuture.supplyAsync(()-> {
|
||||||
try {
|
try {
|
||||||
HttpResponse response = HttpRequest.post("http://data.zz.baidu.com/del?site=" + site + "&token=" + token).
|
HttpResponse response = HttpRequest.post("http://data.zz.baidu.com/del?site=" + SITE + "&token=" + TOKEN).
|
||||||
header("User-Agent", "curl/7.12.1").
|
header("User-Agent", "curl/7.12.1").
|
||||||
header("Host", "data.zz.baidu.com").
|
header("Host", "data.zz.baidu.com").
|
||||||
header("Content-Type", "text/plain").
|
header("Content-Type", "text/plain").
|
||||||
|
@ -2,7 +2,6 @@ package com.rymcu.forest.util;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.cglib.beans.BeanCopier;
|
import org.springframework.cglib.beans.BeanCopier;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@ -16,14 +15,14 @@ public class BeanCopierUtil {
|
|||||||
* beanCopier缓存
|
* beanCopier缓存
|
||||||
* (A拷贝到B,确定一个beanCopier)
|
* (A拷贝到B,确定一个beanCopier)
|
||||||
*/
|
*/
|
||||||
private static Map<Class<?>,Map<Class<?>, BeanCopier>> beanCopierMap = new ConcurrentHashMap<>();
|
private static final Map<String, BeanCopier> BEAN_COPIER_MAP = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拷贝方法
|
* 拷贝方法
|
||||||
* @param sourceBean
|
* @param sourceBean 源对象
|
||||||
* @param targetBean
|
* @param targetBean 目标对象
|
||||||
* @param <S>
|
* @param <S> 源对象类型
|
||||||
* @param <T>
|
* @param <T> 目标对象类型
|
||||||
*/
|
*/
|
||||||
public static <S,T> void copy(S sourceBean,T targetBean){
|
public static <S,T> void copy(S sourceBean,T targetBean){
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -37,16 +36,15 @@ public class BeanCopierUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换方法
|
* 转换方法
|
||||||
* @param sourceBean 原对象
|
* @param sourceBean 源对象
|
||||||
* @param targetClass 目标类
|
* @param targetBean 目标对象
|
||||||
* @param <S>
|
* @param <S> 源对象类型
|
||||||
* @param <T>
|
* @param <T> 目标对象类型
|
||||||
* @return
|
* @return 拷贝值后的targetBean
|
||||||
*/
|
*/
|
||||||
public static <S,T> T convert(S sourceBean,Class<T> targetClass){
|
public static <S,T> T convert(S sourceBean,T targetBean){
|
||||||
try {
|
try {
|
||||||
assert sourceBean!=null;
|
assert sourceBean!=null;
|
||||||
T targetBean = targetClass.newInstance();
|
|
||||||
copy(sourceBean,targetBean);
|
copy(sourceBean,targetBean);
|
||||||
return targetBean;
|
return targetBean;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -56,24 +54,20 @@ public class BeanCopierUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static <S,T> BeanCopier getBeanCopier(Class<S> sourceClass, Class<T> targetClass ){
|
/**
|
||||||
Map<Class<?>, BeanCopier> map = beanCopierMap.get(sourceClass);
|
* beanCopier获取方法
|
||||||
if(CollectionUtils.isEmpty(map)){
|
*
|
||||||
BeanCopier newBeanCopier = BeanCopier.create(sourceClass, targetClass, false);
|
* 使用beanCopierMap重用BeanCopier对象
|
||||||
Map<Class<?>, BeanCopier> newMap = new ConcurrentHashMap<>();
|
*
|
||||||
newMap.put(targetClass,newBeanCopier);
|
* 线程安全
|
||||||
beanCopierMap.put(sourceClass,newMap);
|
* @param sourceClass 源类型
|
||||||
return newBeanCopier;
|
* @param targetClass 目标类型
|
||||||
}
|
* @param <S> 源类型
|
||||||
|
* @param <T> 目标类型
|
||||||
BeanCopier beanCopier = map.get(targetClass);
|
* @return BeanCopier实例
|
||||||
if(beanCopier == null){
|
*/
|
||||||
BeanCopier newBeanCopier = BeanCopier.create(sourceClass, targetClass, false);
|
private static <S,T> BeanCopier getBeanCopier(Class<S> sourceClass, Class<T> targetClass){
|
||||||
map.put(targetClass,newBeanCopier);
|
String classKey = sourceClass.getTypeName() + targetClass.getTypeName();
|
||||||
|
return BEAN_COPIER_MAP.computeIfAbsent(classKey, key -> BeanCopier.create(sourceClass, targetClass, false));
|
||||||
return newBeanCopier;
|
|
||||||
}
|
|
||||||
|
|
||||||
return beanCopier;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ import org.apache.shiro.cache.CacheManager;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,15 +12,15 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public class CacheUtils {
|
public class CacheUtils {
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(CacheUtils.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(CacheUtils.class);
|
||||||
private static CacheManager cacheManager = SpringContextHolder.getBean(CacheManager.class);
|
private static final CacheManager CACHE_MANAGER = SpringContextHolder.getBean(CacheManager.class);
|
||||||
|
|
||||||
private static final String SYS_CACHE = "system";
|
private static final String SYS_CACHE = "system";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取SYS_CACHE缓存
|
* 获取SYS_CACHE缓存
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @return
|
* @return 缓存对象
|
||||||
*/
|
*/
|
||||||
public static Object get(String key) {
|
public static Object get(String key) {
|
||||||
return get(SYS_CACHE, key);
|
return get(SYS_CACHE, key);
|
||||||
@ -29,9 +28,9 @@ public class CacheUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取SYS_CACHE缓存
|
* 获取SYS_CACHE缓存
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @param defaultValue
|
* @param defaultValue 默认返回值
|
||||||
* @return
|
* @return 缓存对象或默认值
|
||||||
*/
|
*/
|
||||||
public static Object get(String key, Object defaultValue) {
|
public static Object get(String key, Object defaultValue) {
|
||||||
Object value = get(key);
|
Object value = get(key);
|
||||||
@ -40,8 +39,8 @@ public class CacheUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入SYS_CACHE缓存
|
* 写入SYS_CACHE缓存
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @return
|
* @param value 被缓存对象
|
||||||
*/
|
*/
|
||||||
public static void put(String key, Object value) {
|
public static void put(String key, Object value) {
|
||||||
put(SYS_CACHE, key, value);
|
put(SYS_CACHE, key, value);
|
||||||
@ -49,29 +48,28 @@ public class CacheUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 从SYS_CACHE缓存中移除
|
* 从SYS_CACHE缓存中移除
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public static void remove(String key) {
|
public static void remove(String key) {
|
||||||
remove(SYS_CACHE, key);
|
remove(SYS_CACHE, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取缓存
|
* 获取指定命名空间下的缓存
|
||||||
* @param cacheName
|
* @param cacheName 缓存命名空间
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @return
|
* @return 该命名空间下的对应键值缓存
|
||||||
*/
|
*/
|
||||||
public static Object get(String cacheName, String key) {
|
public static Object get(String cacheName, String key) {
|
||||||
return getCache(cacheName).get(getKey(key));
|
return getCache(cacheName).get(getKey(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取缓存
|
* 获取指定命名空间下的缓存,并在无缓存对象时返回默认值
|
||||||
* @param cacheName
|
* @param cacheName 缓存命名空间
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @param defaultValue
|
* @param defaultValue 默认返回值
|
||||||
* @return
|
* @return 缓存对象或默认值
|
||||||
*/
|
*/
|
||||||
public static Object get(String cacheName, String key, Object defaultValue) {
|
public static Object get(String cacheName, String key, Object defaultValue) {
|
||||||
Object value = get(cacheName, getKey(key));
|
Object value = get(cacheName, getKey(key));
|
||||||
@ -79,41 +77,39 @@ public class CacheUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入缓存
|
* 向指定命名空间下存入被缓存对象
|
||||||
* @param cacheName
|
* @param cacheName 缓存命名空间
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @param value
|
* @param value 该命名空间下被缓存对象
|
||||||
*/
|
*/
|
||||||
public static void put(String cacheName, String key, Object value) {
|
public static void put(String cacheName, String key, Object value) {
|
||||||
getCache(cacheName).put(getKey(key), value);
|
getCache(cacheName).put(getKey(key), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从缓存中移除
|
* 将指定命名空间下的缓存移除
|
||||||
* @param cacheName
|
* @param cacheName 缓存命名空间
|
||||||
* @param key
|
* @param key 键值
|
||||||
*/
|
*/
|
||||||
public static void remove(String cacheName, String key) {
|
public static void remove(String cacheName, String key) {
|
||||||
getCache(cacheName).remove(getKey(key));
|
getCache(cacheName).remove(getKey(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从缓存中移除所有
|
* 清空命名空间下所有缓存
|
||||||
* @param cacheName
|
* @param cacheName 命名空间
|
||||||
*/
|
*/
|
||||||
public static void removeAll(String cacheName) {
|
public static void removeAll(String cacheName) {
|
||||||
Cache<String, Object> cache = getCache(cacheName);
|
Cache<String, Object> cache = getCache(cacheName);
|
||||||
Set<String> keys = cache.keys();
|
Set<String> keys = cache.keys();
|
||||||
for (Iterator<String> it = keys.iterator(); it.hasNext();){
|
cache.clear();
|
||||||
cache.remove(it.next());
|
LOGGER.info("清理缓存: {} => {}", cacheName, keys);
|
||||||
}
|
|
||||||
logger.info("清理缓存: {} => {}", cacheName, keys);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取缓存键名,多数据源下增加数据源名称前缀
|
* 获取缓存键名,多数据源下增加数据源名称前缀
|
||||||
* @param key
|
* @param key 键值
|
||||||
* @return
|
* @return 返回对应数据源前缀拼接键值
|
||||||
*/
|
*/
|
||||||
private static String getKey(String key){
|
private static String getKey(String key){
|
||||||
// String dsName = DataSourceHolder.getDataSourceName();
|
// String dsName = DataSourceHolder.getDataSourceName();
|
||||||
@ -124,12 +120,12 @@ public class CacheUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得一个Cache,没有则显示日志。
|
* 获得指定命名空间的Cache,没有则显示日志。
|
||||||
* @param cacheName
|
* @param cacheName 命名空间
|
||||||
* @return
|
* @return 命名空间对应的Cache
|
||||||
*/
|
*/
|
||||||
private static Cache<String, Object> getCache(String cacheName){
|
private static Cache<String, Object> getCache(String cacheName){
|
||||||
Cache<String, Object> cache = cacheManager.getCache(cacheName);
|
Cache<String, Object> cache = CACHE_MANAGER.getCache(cacheName);
|
||||||
if (cache == null){
|
if (cache == null){
|
||||||
throw new RuntimeException("当前系统中没有定义“"+cacheName+"”这个缓存。");
|
throw new RuntimeException("当前系统中没有定义“"+cacheName+"”这个缓存。");
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName: ContextHolderUtils
|
* @ClassName: ContextHolderUtils
|
||||||
@ -17,24 +18,22 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ContextHolderUtils {
|
public class ContextHolderUtils {
|
||||||
private static final Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();
|
private static final Map<String, HttpSession> sessionMap = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SpringMvc下获取request
|
* SpringMvc下获取request
|
||||||
*
|
*
|
||||||
* @return
|
* @return HttpServletRequest
|
||||||
*/
|
*/
|
||||||
public static HttpServletRequest getRequest() {
|
public static HttpServletRequest getRequest() {
|
||||||
|
return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
||||||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
||||||
return request;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SpringMvc下获取session
|
* SpringMvc下获取session
|
||||||
*
|
*
|
||||||
* @return
|
* @return HttpSession
|
||||||
*/
|
*/
|
||||||
public static HttpSession getSession() {
|
public static HttpSession getSession() {
|
||||||
HttpServletRequest request = getRequest();
|
HttpServletRequest request = getRequest();
|
||||||
@ -54,7 +53,7 @@ public class ContextHolderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static HttpSession getSession2() {
|
public static HttpSession getSession2() {
|
||||||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
||||||
return request.getSession();
|
return request.getSession();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -65,9 +64,7 @@ public class ContextHolderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void removeSession(String sessionId){
|
public static void removeSession(String sessionId){
|
||||||
if(sessionMap.containsKey(sessionId)){
|
|
||||||
sessionMap.remove(sessionId);
|
sessionMap.remove(sessionId);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,22 +13,23 @@ public class DateUtil {
|
|||||||
if (StringUtils.isBlank(s)) {
|
if (StringUtils.isBlank(s)) {
|
||||||
s = "";
|
s = "";
|
||||||
}
|
}
|
||||||
for (int i = 0; i < len - s.length(); ++i) {
|
StringBuilder sBuilder = new StringBuilder(s);
|
||||||
s = "0" + s;
|
for (int i = 0; i < len - sBuilder.length(); ++i) {
|
||||||
|
sBuilder.insert(0, "0");
|
||||||
}
|
}
|
||||||
return s;
|
return sBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getYear(Calendar cal) {
|
public static String getYear(Calendar cal) {
|
||||||
return String.valueOf(cal.get(1));
|
return String.valueOf(cal.get(Calendar.YEAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getMonth(Calendar cal) {
|
public static String getMonth(Calendar cal) {
|
||||||
return strLen(String.valueOf(cal.get(2) + 1), 2);
|
return strLen(String.valueOf(cal.get(Calendar.MONTH) + 1), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getDay(Calendar cal) {
|
public static String getDay(Calendar cal) {
|
||||||
return strLen(String.valueOf(cal.get(5)), 2);
|
return strLen(String.valueOf(cal.get(Calendar.DATE)), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getNowDateNum() {
|
public static String getNowDateNum() {
|
||||||
|
@ -20,7 +20,7 @@ public class Digests {
|
|||||||
private static final String SHA1 = "SHA-1";
|
private static final String SHA1 = "SHA-1";
|
||||||
private static final String MD5 = "MD5";
|
private static final String MD5 = "MD5";
|
||||||
|
|
||||||
private static SecureRandom random = new SecureRandom();
|
private static final SecureRandom SECURE_RANDOM = new SecureRandom();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对输入字符串进行md5散列.
|
* 对输入字符串进行md5散列.
|
||||||
@ -79,7 +79,7 @@ public class Digests {
|
|||||||
Validate.isTrue(numBytes > 0, "numBytes argument must be a positive integer (1 or larger)", numBytes);
|
Validate.isTrue(numBytes > 0, "numBytes argument must be a positive integer (1 or larger)", numBytes);
|
||||||
|
|
||||||
byte[] bytes = new byte[numBytes];
|
byte[] bytes = new byte[numBytes];
|
||||||
random.nextBytes(bytes);
|
SECURE_RANDOM.nextBytes(bytes);
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@ public enum ErrorCode {
|
|||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String code;
|
private final String code;
|
||||||
|
|
||||||
private String message;
|
private final String message;
|
||||||
|
|
||||||
public String getCode() {
|
public String getCode() {
|
||||||
return code;
|
return code;
|
||||||
|
Loading…
Reference in New Issue
Block a user