![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP350MJRVZvB3MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLycDNyADMzQTMxEjNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
建立類
IntercepterConfig
package com.example.hotelmanagement.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.List;
/*
* 攔截器配置
*/
@Configuration
public class IntercepterConfig implements WebMvcConfigurer {
private TokenInterceptor tokenInterceptor;
/*
* @param tokenInterceptor
* @return
* @introduction: 構造方法
* @date 2021/5/19 21:41
*/
public IntercepterConfig(TokenInterceptor tokenInterceptor) {
this.tokenInterceptor = tokenInterceptor;
}
/*
* @param registry
* @return void
* @introduction: 設定攔截路徑
* @date 2021/5/19 21:41
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
List<String> excludePath = new ArrayList<>();
//放開權限
excludePath.add("/info/findLogin"); //登入
excludePath.add("/**");//放開所有
//excludePath.add("/client/findAll");//放開客戶基本資訊查詢全部
excludePath.add("/static/**"); //靜态資源
//注入攔截器
registry.addInterceptor(tokenInterceptor)
.addPathPatterns("/**") // 攔截所有請求,通過判斷是否有 @LoginRequired 注解 決定是否需要登入
// .excludePathPatterns("/user")//不攔截的
.excludePathPatterns(excludePath);
WebMvcConfigurer.super.addInterceptors(registry);
}
/*
* @param registry
* @return void
* @introduction: 跨域支援
* @date 2021/5/19 21:44
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH", "OPTIONS", "HEAD")
.maxAge(3600 * 24);
}
}
TokenInterceptor
package com.example.hotelmanagement.config;
import com.alibaba.fastjson.JSONObject;
import com.example.hotelmanagement.model.entity.RolePermission;
import com.example.hotelmanagement.utils.TokenUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.lang.reflect.Method;
@Component
public class TokenInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判斷狀态
if (request.getMethod().equals("OPTIONS")) {
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
//執行個體化
HandlerMethod handlerMethod = (HandlerMethod) handler;
//傳回此處理程式方法的方法,也就是取得接口的方法
Method method = handlerMethod.getMethod();
//檢視接口是否存在注釋
if (method.isAnnotationPresent(RolePermission.class)) {
//取得接口的注解
RolePermission annotation = method.getAnnotation(RolePermission.class);
//擷取login的通路權限,是登入完通路,還是不登入就可以通路
if (!annotation.login()) {
return true;
}
}
//設定編碼
response.setCharacterEncoding("utf-8");
// 從 http 請求頭中取出 token
String token = request.getHeader("token");
System.out.println("token :"+token);//輸出token
if (token != null) {
//判斷是否通過驗證
boolean result = TokenUtil.verify(token);
//權限
String status = TokenUtil.getRoleByToken(request);
//檢視接口是否存在注釋
if (method.isAnnotationPresent(RolePermission.class)) {
//取得接口的注解
RolePermission annotation = method.getAnnotation(RolePermission.class);
//擷取權限
String roleRolePermission = annotation.status();
if (StringUtils.isBlank(roleRolePermission)) {
throw new Exception("接口權限擷取失敗");
}
//使用indexOf方法從頭開始檢索是否存在role,存在就傳回位置,不存在就傳回-1
int i = roleRolePermission.indexOf(status);
if (i == -1) {
throw new Exception("使用者權限不足");
}
}
if (result) {
System.out.println("通過攔截器");
return true;
}
}
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try {
JSONObject json = new JSONObject();
json.put("success", "false");
json.put("msg", "認證失敗,未通過攔截器");
json.put("code", "50000");
response.getWriter().append(json.toJSONString());
System.out.println("認證失敗,未通過攔截器");
// response.getWriter().write("50000");
} catch (Exception e) {
e.printStackTrace();
response.sendError(500);
return false;
}
return false;
}
}
BaseException
package com.example.hotelmanagement.utils.common;
/**
* 系統自定義異常
* 服務節點異常,必須先繼承該類
*/
public class BaseException extends RuntimeException {
/**
* 參考
*/
private String code;
/**
* 錯誤資訊
*/
private String errorMessage;
public BaseException(String code) {
this.code = code;
this.errorMessage = "";
}
public BaseException(String code, String errorMessage) {
super(errorMessage);
this.code = code;
this.errorMessage = errorMessage;
}
public BaseException(String code, String errorMessage, Throwable e) {
super(errorMessage, e);
this.code = code;
this.errorMessage = errorMessage;
}
/**
* 建立一個系統配置異常方法
* <p>未找到相關服務請求</p>
*
* @param errorMessage 錯誤資訊
* @return 執行個體
*/
public static BaseException createSysActionNotFound(String errorMessage) {
return new BaseException(ConstantResultCode.ERROR_SYS_ACTION_NOT_FOUND, errorMessage);
}
/**
* 建立一個請求參數異常方法
* <p>參數格式不比對</p>
*
* @param errorMessage 錯誤資訊
* @return 執行個體
*/
public static BaseException createClientParams(String errorMessage) {
return new BaseException(ConstantResultCode.ERROR_CLIENT_PARAMETER_FORMAT_NOT_MATCH, errorMessage);
}
/**
* 建立一個系統配置異常方法
* <p>系統轉換資料失敗</p>
*
* @param errorMessage 錯誤資訊
* @param e 異常資訊
* @return 執行個體
*/
public static BaseException createSysDataConvert(String errorMessage, Exception e) {
return new BaseException(ConstantResultCode.ERROR_SYS_FAILED_DATA_CONVERT, errorMessage, e);
}
/**
* 建立一個系統資料結構異常方法
* <p>相關資料缺失</p>
* <p>系統不可能出行的資料錯誤,一般由手工修改導緻的錯誤</p>
*
* @param errorMessage 錯誤相關資訊
* @return 異常執行個體
*/
public static BaseException createSysDataStructure(String errorMessage) {
return new BaseException(ConstantResultCode.ERROR_SYS_DATA_STRUCTURE, errorMessage);
}
/**
* 建立一個系統資料結構異常方法
* <p>擷取系統配置參數異常</p>
*
* @param errorMessage 錯誤相關資訊
* @return 異常執行個體
*/
public static BaseException createSysConf(String errorMessage) {
return new BaseException(ConstantResultCode.ERROR_SYS_CONF, errorMessage);
}
/**
* 系統代碼邏輯異常
* <p>1.出現不符合設計邏輯時抛出異常</p>
*
* @param errorMessage 錯誤相關資訊
* @return 異常執行個體
*/
public static BaseException createSysCode(String errorMessage) {
return new BaseException(ConstantResultCode.ERROR_SYS_CODE, errorMessage);
}
/**
* 遠端調用回報失敗
*
* @param errorMessage 錯誤相關資訊
* @return 異常執行個體
*/
public static BaseException createRemote(String errorMessage) {
return new BaseException(ConstantResultCode.ERROR_REMOTE, errorMessage);
}
/**
* 遠端調用異常
*
* @param errorMessage 錯誤相關資訊
* @param e 異常資訊
* @return 異常執行個體
*/
public static BaseException createRemote(String errorMessage, Exception e) {
return new BaseException(ConstantResultCode.ERROR_REMOTE_MIDDLEWARE, errorMessage, e);
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
}
ConstantBase
package com.example.hotelmanagement.utils.common;
import java.io.Serializable;
/**
* 常量接口
*
* @param <T> 指定常量泛型
*/
public interface ConstantBase<T extends Serializable> {
/**
* 擷取名稱,無對應值時傳回 ""
*
* @param val 常量值
* @return 常量名稱
*/
String getName(T val);
/**
* 擷取分類名稱
*
* @return 類型名
*/
default String getCategoryName() {
return "";
}
/**
* 是否允許使用者新增,預設不允許
*
* @return Boolean
*/
default boolean isUserAppend() {
return false;
}
/**
* 擷取名稱
*
* @param obj 常量值
* @return 常量名稱(參數為Null或不存在該常量 , 傳回Null)
*/
default String getNameByObject(Object obj) {
T t = convertByObject(obj);
return getName(t);
}
/**
* 通過Object轉換為目前常量值,不能轉換抛出異常
*
* @param obj Object類型的參數
* @return T
*/
default T convertByObject(Object obj) {
try {
return (T) obj;
} catch (Exception e) {
throw new BaseException(ConstantResultCode.ERROR_SYS_FAILED_DATA_CONVERT, "未實作資料轉換:" + this.getClass().getSimpleName());
}
}
/**
* 根據名擷取常量值
*
* @param name 常量名稱
* @return 常量值
*/
default T getValue(String name) {
throw new RuntimeException("未實作該功能:根據名擷取常量值" + this.getClass().getSimpleName());
}
}
ConstantResultCode
package com.example.hotelmanagement.utils.common;
import org.apache.commons.lang3.StringUtils;
/**
* 常量--結果狀态Code
*
* @author luqili
*/
public class ConstantResultCode implements ConstantBase<String> {
/**
* 一切 ok
*/
public static final String SUCCESS = "00000";
/**
* 使用者端錯誤 一級宏觀錯誤碼
*/
public static final String ERROR_CLIENT = "A0001";
/**
* 使用者注冊錯誤 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_REGISTER = "A0100";
/**
* 使用者未同意隐私協定
*/
public static final String ERROR_CLIENT_NOT_AGREE = "A0101";
/**
* 注冊國家或地區受限
*/
public static final String ERROR_CLIENT_REGION_LIMIT = "A0102";
/**
* 使用者名校驗失敗
*/
public static final String ERROR_CLIENT_USERNAME_FAIL = "A0110";
/**
* 使用者名已存在
*/
public static final String ERROR_CLIENT_USERNAME_EXISTS = "A0111";
/**
* 使用者名包含敏感詞
*/
public static final String ERROR_CLIENT_ILLEGAL_WORD = "A0112";
/**
* 使用者名包含特殊字元
*/
public static final String ERROR_CLIENT_SPECIAL_CHARACTER = "A0113";
/**
* 密碼校驗失敗
*/
public static final String ERROR_CLIENT_PASSWORD_FAIL = "A0120";
/**
* 密碼長度不夠
*/
public static final String ERROR_CLIENT_PASSWORD_LENGTH_NOT_ENOUGH = "A0121";
/**
* 密碼強度不夠
*/
public static final String ERROR_CLIENT_PASSWORD_STRENGTH_NOT_ENOUGH = "A0122";
/**
* 校驗碼輸入錯誤
*/
public static final String ERROR_CLIENT_CHECKCODE_INPUT_ERROR = "A0130";
/**
* 短信校驗碼輸入錯誤
*/
public static final String ERROR_CLIENT_SMS_CHECKCODE_INPUT_ERROR = "A0131";
/**
* 郵件校驗碼輸入錯誤
*/
public static final String ERROR_CLIENT_EMAIL_CHECKCODE_INPUT_ERROR = "A0132";
/**
* 語音校驗碼輸入錯誤
*/
public static final String ERROR_CLIENT_VOICE_CHECKCODE_INPUT_ERROR = "A0133";
/**
* 使用者證件異常
*/
public static final String ERROR_CLIENT_CERTIFICATE_ABNORMAL = "A0140";
/**
* 使用者證件類型未選擇
*/
public static final String ERROR_CLIENT_CERTIFICATE_TYPE_UNSELECTED = "A0141";
/**
* 大陸身份證編号校驗非法
*/
public static final String ERROR_CLIENT_IDCARD_ILLEGAL = "A0142";
/**
* 護照編号校驗非法
*/
public static final String ERROR_CLIENT_PASSPORT_ILLEGAL = "A0143";
/**
* 軍官證編号校驗非法
*/
public static final String ERROR_CLIENT_MILITARY_ID_NUMBER_ILLEGAL = "A0144";
/**
* 使用者基本資訊校驗失敗
*/
public static final String ERROR_CLIENT_BASIC_INFORMATION_FAIL = "A0150";
/**
* 手機格式校驗失敗
*/
public static final String ERROR_CLIENT_PHONE_FORMAT_FAIL = "A0151";
/**
* 位址格式校驗失敗
*/
public static final String ERROR_CLIENT_ADDRESS_FORMAT_FAIL = "A0152";
/**
* 郵箱格式校驗失敗
*/
public static final String ERROR_CLIENT_EMAIL_FORMAT_FAIL = "A0153";
/**
* 使用者登入異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_LOGIN_ABNORMAL = "A0200";
/**
* 使用者賬戶不存在
*/
public static final String ERROR_CLIENT_ACCOUNT_NOTEXIST = "A0201";
/**
* 使用者賬戶被當機
*/
public static final String ERROR_CLIENT_ACCOUNT_FREEZE = "A0202";
/**
* 使用者賬戶已廢棄
*/
public static final String ERROR_CLIENT_ACCOUNT_INVALID = "A0203";
/**
* 使用者密碼錯誤
*/
public static final String ERROR_CLIENT_PASSWORD_ERROR = "A0210";
/**
* 使用者輸入密碼錯誤次數超限
*/
public static final String ERROR_CLIENT_PASSWORD_ERROR_TIMES_OVERRUN = "A0211";
/**
* 使用者身份校驗失敗
*/
public static final String ERROR_CLIENT_IDENTITY_FILE = "A0220";
/**
* 使用者指紋識别失敗
*/
public static final String ERROR_CLIENT_FINGERPRINT_FILE = "A0221";
/**
* 使用者面容識别失敗
*/
public static final String ERROR_CLIENT_COUNTENANCE_FILE = "A0222";
/**
* 使用者未獲得第三方登入授權
*/
public static final String ERROR_CLIENT_NO_LOGIN_AUTHORIZATION = "A0223";
/**
* 使用者登入已過期
*/
public static final String ERROR_CLIENT_LOGIN_EXPIRED = "A0230";
/**
* 使用者驗證碼錯誤
*/
public static final String ERROR_CLIENT_CHECKCODE_ERROR = "A0240";
/**
* 使用者驗證碼嘗試次數超限
*/
public static final String ERROR_CLIENT_CHECKCODE_TIMES_OVERRUN = "A0241";
/**
* 通路權限異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_ACCESS_EXCEPTION = "A0300";
/**
* 通路未授權
*/
public static final String ERROR_CLIENT_ACCESS_UNAUTHORIZED = "A0301";
/**
* 正在授權中
*/
public static final String ERROR_CLIENT_ACCESS_AUTHORIZING = "A0302";
/**
* 使用者授權申請被拒絕
*/
public static final String ERROR_CLIENT_REJECTED_AUTHORIZATION = "A0303";
/**
* 因通路對象隐私設定被攔截
*/
public static final String ERROR_CLIENT_ACCESS_PRIVACY_SETTINGS_BLOCKED = "A0310";
/**
* 授權已過期
*/
public static final String ERROR_CLIENT_AUTHORIZATION_EXPIRED = "A0311";
/**
* 無權限使用API
*/
public static final String ERROR_CLIENT_NO_PROMISSIONS_TO_API = "A0312";
/**
* 使用者通路被攔截
*/
public static final String ERROR_CLIENT_ACCESS_BLOCKED = "A0320";
/**
* 黑名單使用者
*/
public static final String ERROR_CLIENT_BLACKLIST_USERS = "A0321";
/**
* 賬号被當機
*/
public static final String ERROR_CLIENT_ACCOUNT_IS_FROZEN = "A0322";
/**
* 非法IP位址
*/
public static final String ERROR_CLIENT_ILLEGAL_IP_ADDRESS = "A0323";
/**
* 網關通路受限
*/
public static final String ERROR_CLIENT_GATEWAY_ACCESS_RESTRICTED = "A0324";
/**
* 地域黑名單
*/
public static final String ERROR_CLIENT_REGIONAL_BLACKLIST = "A0325";
/**
* 服務已欠費
*/
public static final String ERROR_CLIENT_SERVICE_ARREARS = "A0330";
/**
* 使用者簽名異常
*/
public static final String ERROR_CLIENT_SIGNATURE_EXCEPTION = "A0340";
/**
* RSA簽名錯誤
*/
public static final String ERROR_CLIENT_RSA_SIGNATURE_ERROR = "A0341";
/**
* 使用者請求參數錯誤 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_REQUEST_PARAMETER_ERROR = "A0400";
/**
* 包含非法惡意跳轉連結
*/
public static final String ERROR_CLIENT_ILLEGAL_MALICIOUS_LINKS = "A0401";
/**
* 無效的使用者輸入
*/
public static final String ERROR_CLIENT_INVALID_INPUT = "A0402";
/**
* 請求必填參數為空
*/
public static final String ERROR_CLIENT_REQUIRED_PARAMETER_EMPTY = "A0410";
/**
* 使用者訂單号為空
*/
public static final String ERROR_CLIENT_ORDER_NUMBER_EMPTY = "A0411";
/**
* 訂購數量為空
*/
public static final String ERROR_CLIENT_ORDER_QUANTITY_EMPTY = "A0412";
/**
* 缺少時間戳參數
*/
public static final String ERROR_CLIENT_TIMESTAMP_PARAMETER_MISSING = "A0413";
/**
* 非法的時間戳參數
*/
public static final String ERROR_CLIENT_INVALID_TIMESTAMP_PARAMETER = "A0414";
/**
* 訂單類型不比對
*/
public static final String ERROR_CLIENT_ORDER_TYPE_MISMATCHING = "A0415";
/**
* 産品日庫存不足
*/
public static final String ERROR_CLIENT_PRODUCT_INVENTORY_SHORTAGE = "A0416";
/**
* 統一下單失敗
*/
public static final String ERROR_CLIENT_ORDER_PLACE_FAIL = "A0417";
/**
* 請求參數值超出允許的範圍
*/
public static final String ERROR_CLIENT_PARAMETER_VALUES_BEYOND_ALLOWED_RANGE = "A0420";
/**
* 參數格式不比對
*/
public static final String ERROR_CLIENT_PARAMETER_FORMAT_NOT_MATCH = "A0421";
/**
* 位址不在服務範圍
*/
public static final String ERROR_CLIENT_ADDRESS_NOT_IN_SERVICE = "A0422";
/**
* 時間不在服務範圍
*/
public static final String ERROR_CLIENT_TIME_NOT_IN_SERVICE = "A0423";
/**
* 金額超出限制
*/
public static final String ERROR_CLIENT_AMOUNT_EXCEEDS_LIMIT = "A0424";
/**
* 數量超出限制
*/
public static final String ERROR_CLIENT_QUANTITY_EXCEEDS_LIMIT = "A0425";
/**
* 請求批量處理總個數超出限制
*/
public static final String ERROR_CLIENT_BATCH_PROCESSING_TOTAL_EXCEEDS_LIMIT = "A0426";
/**
* 請求JSON解析失敗
*/
public static final String ERROR_CLIENT_REQUEST_JSON_PARSING_FAILED = "A0427";
/**
* 使用者輸入内容非法
*/
public static final String ERROR_CLIENT_INPUT_ILLEGAL = "A0430";
/**
* 包含違禁敏感詞
*/
public static final String ERROR_CLIENT_PROHIBITED_SENSITIVE_WORD = "A0431";
/**
* 圖檔包含違禁資訊
*/
public static final String ERROR_CLIENT_IMAGE_PROHIBITED = "A0432";
/**
* 檔案侵犯版權
*/
public static final String ERROR_CLIENT_COPYRIGHT_INFRINGEMENT = "A0433";
/**
* 使用者操作異常
*/
public static final String ERROR_CLIENT_OPERATION_ABNORMAL = "A0440";
/**
* 使用者支付逾時
*/
public static final String ERROR_CLIENT_PAY_OVERTIME = "A0441";
/**
* 确認訂單逾時
*/
public static final String ERROR_CLIENT_ORDER_TIMEOUT = "A0442";
/**
* 訂單已關閉
*/
public static final String ERROR_CLIENT_ORDER_CLOSED = "A0443";
/**
* 使用者支付失敗
*/
public static final String ERROR_CLIENT_PAY_FAIL = "A0444";
/**
* 使用者請求服務異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_REQUEST_SERVICE_EXCEPTION = "A0500";
/**
* 請求次數超出限制
*/
public static final String ERROR_CLIENT_REQUESTS_NUMBER_EXCEEDS_LIMIT = "A0501";
/**
* 請求并發數超出限制
*/
public static final String ERROR_CLIENT_REQUESTS_CONCURRENT_NUMBER_EXCEEDS_LIMIT = "A0502";
/**
* 使用者操作請等待
*/
public static final String ERROR_CLIENT_OPERATION_WAIT = "A0503";
/**
* WebSocket連接配接異常
*/
public static final String ERROR_CLIENT_WEBSOCKET_CONNECTION_EXCEPTION = "A0504";
/**
* WebSocket連接配接斷開
*/
public static final String ERROR_CLIENT_WEBSOCKET_CONNECTION_DISCONNECT = "A0505";
/**
* 使用者重複請求
*/
public static final String ERROR_CLIENT_REPEATED_REQUESTS = "A0506";
/**
* 使用者資源異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_RESOURCE_EXCEPTION = "A0600";
/**
* 賬戶餘額不足
*/
public static final String ERROR_CLIENT_INSUFFICIENT_ACCOUNT_BALANCE = "A0601";
/**
* 使用者磁盤空間不足
*/
public static final String ERROR_CLIENT_INSUFFICIENT_DISK_SPACE = "A0602";
/**
* 使用者記憶體空間不足
*/
public static final String ERROR_CLIENT_INSUFFICIENT_MEMORY_SPACE = "A0603";
/**
* 使用者OSS容量不足
*/
public static final String ERROR_CLIENT_INSUFFICIENT_OSS_CAPACITY = "A0604";
/**
* 使用者配額已用光 螞蟻森林澆水數或每天抽獎數
*/
public static final String ERROR_CLIENT_QUOTA_EXHAUSTED = "A0605";
/**
* 使用者上傳檔案異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_UPLOAD_FILE_EXCEPTION = "A0700";
/**
* 使用者上傳檔案類型不比對
*/
public static final String ERROR_CLIENT_UPLOAD_FILE_TYPE_NOT_MATCH = "A0701";
/**
* 使用者上傳檔案太大
*/
public static final String ERROR_CLIENT_UPLOAD_FILE_TOO_LARGE = "A0702";
/**
* 使用者上傳圖檔太大
*/
public static final String ERROR_CLIENT_UPLOAD_PICTURE_TOO_LARGE = "A0703";
/**
* 使用者上傳視訊太大
*/
public static final String ERROR_CLIENT_UPLOAD_VIDEO_TOO_LARGE = "A0704";
/**
* 使用者上傳壓縮檔案太大
*/
public static final String ERROR_CLIENT_UPLOAD_COMPRESSED_FILE_TOO_LARGE = "A0705";
/**
* 使用者目前版本異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_CURRENT_VERSION_ABNORMAL = "A0800";
/**
* 使用者安裝版本與系統不比對
*/
public static final String ERROR_CLIENT_INSTALLED_VERSION_NOT_MATCH = "A0801";
/**
* 使用者安裝版本過低
*/
public static final String ERROR_CLIENT_INSTALLED_VERSION_TOO_LOW = "A0802";
/**
* 使用者安裝版本過高
*/
public static final String ERROR_CLIENT_INSTALLED_VERSION_TOO_HIGH = "A0803";
/**
* 使用者安裝版本已過期
*/
public static final String ERROR_CLIENT_INSTALLED_VERSION_EXPIRED = "A0804";
/**
* 使用者API請求版本不比對
*/
public static final String ERROR_CLIENT_API_VERSION_NOT_MATCH = "A0805";
/**
* 使用者API請求版本過高
*/
public static final String ERROR_CLIENT_API_VERSION_TOO_HIGH = "A0806";
/**
* 使用者API請求版本過低
*/
public static final String ERROR_CLIENT_API_VERSION_TOO_LOW = "A0807";
/**
* 使用者隐私未授權 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_PRIVACY_NOT_AUTHORIZED = "A0900";
/**
* 使用者隐私未簽署
*/
public static final String ERROR_CLIENT_PRIVACY_NOT_SIGNED = "A0901";
/**
* 使用者攝像頭未授權
*/
public static final String ERROR_CLIENT_UNAUTHORIZED_CAMERA = "A0902";
/**
* 使用者相機未授權
*/
public static final String ERROR_CLIENT_CAMERA_NOT_AUTHORIZED = "A0903";
/**
* 使用者圖檔庫未授權
*/
public static final String ERROR_CLIENT_UNAUTHORIZED_IMAGE_LIBRARY = "A0904";
/**
* 使用者檔案未授權
*/
public static final String ERROR_CLIENT_UNAUTHORIZED_DOCUMENT = "A0905";
/**
* 使用者位置資訊未授權
*/
public static final String ERROR_CLIENT_UNAUTHORIZED_LOCATION = "A0906";
/**
* 使用者通訊錄未授權
*/
public static final String ERROR_CLIENT_UNAUTHORIZED_ADDRESS_BOOK = "A0907";
/**
* 使用者裝置異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_EQUIPMENT_ABNORMAL = "A1000";
/**
* 使用者相機異常
*/
public static final String ERROR_CLIENT_CAMERA_ABNORMAL = "A1001";
/**
* 使用者麥克風異常
*/
public static final String ERROR_CLIENT_MICROPHONE_ABNORMAL = "A1002";
/**
* 使用者聽筒異常
*/
public static final String ERROR_CLIENT_EARPIECE_ABNORMAL = "A1003";
/**
* 使用者揚聲器異常
*/
public static final String ERROR_CLIENT_SPEAKER_ABNORMAL = "A1004";
/**
* 使用者GPS定位異常
*/
public static final String ERROR_CLIENT_GPS_POSITIONING_ABNORMAL = "A1005";
/**
* 使用者權限異常 二級宏觀錯誤碼
*/
public static final String ERROR_CLIENT_PERMISSION = "A1100";
/**
* 使用者請求無權限
*/
public static final String ERROR_CLIENT_PERMISSION_NO_FOUNT = "A1101";
/**
* 使用者權限過期
*/
public static final String ERROR_CLIENT_PERMISSION_TIME_OUT = "A1102";
/**
* 使用者權限無效
*/
public static final String ERROR_CLIENT_PERMISSION_INVALID = "A1103";
/**
* 系統執行出錯 一級宏觀錯誤碼
*/
public static final String ERROR_SYS = "B0001";
/**
* 系統執行逾時 二級宏觀錯誤碼
*/
public static final String ERROR_SYS_RUN_TIME_OUT = "B0100";
/**
* 系統訂單處理逾時
*/
public static final String ERROR_SYS_ORDER_TIME_OUT = "B0101";
/**
* 系統資料轉換失敗
*/
public static final String ERROR_SYS_FAILED_DATA_CONVERT = "B0102";
/**
* 資料結構異常
* <p>相關資料缺失</p>
* <p>系統不可能出行的資料錯誤,一般由手工修改導緻的錯誤</p>
*/
public static final String ERROR_SYS_DATA_STRUCTURE = "B0103";
/**
* 系統配置參數異常
* <p>擷取配置參數異常</p>
*/
public static final String ERROR_SYS_CONF = "B0104";
/**
* 系統編碼邏輯
* <p>1.内部方法調用不符合預期的調用</p>
*/
public static final String ERROR_SYS_CODE = "B0105";
/**
* 系統容災功能被觸發 二級宏觀錯誤碼
*/
public static final String ERROR_SYS_DISASTER_TRCOVERY_FUNCTION_TRIGGERED = "B0200";
/**
* 系統限流
*/
public static final String ERROR_SYS_CURRENT_LIMITING = "B0210";
/**
* 系統功能降級
*/
public static final String ERROR_SYS_FUNCTIONAL_DEGRADATION = "B0220";
/**
* 系統資源異常 二級宏觀錯誤碼
*/
public static final String ERROR_SYS_RESOURCES_ABNORMAL = "B0300";
/**
* 系統資源耗盡
*/
public static final String ERROR_SYS_RESOURCE_EXHAUSTION = "B0310";
/**
* 系統磁盤空間耗盡
*/
public static final String ERROR_SYS_OUT_OF_DISK_SPACE = "B0311";
/**
* 系統記憶體耗盡
*/
public static final String ERROR_SYS_OUT_OF_MEMORY = "B0312";
/**
* 檔案句柄耗盡
*/
public static final String ERROR_SYS_FILE_HANDLE_EXHAUSTED = "B0313";
/**
* 系統連接配接池耗盡
*/
public static final String ERROR_SYS_CONNECTION_POOL_DEPLETION = "B0314";
/**
* 系統線程池耗盡
*/
public static final String ERROR_SYS_THREAD_POOL_DEPLETION = "B0315";
/**
* 系統資源通路異常
*/
public static final String ERROR_SYS_RESOURCE_ACCESS_EXCEPTION = "B0320";
/**
* 系統讀取磁盤檔案失敗
*/
public static final String ERROR_SYS_FAILED_READ_DISK_FILE = "B0321";
/**
* 系統執行SQL出錯
*/
public static final String ERROR_SYS_RUN_SQL = "B0322";
/**
* 請求404,無相關服務
*/
public static final String ERROR_SYS_ACTION_NOT_FOUND = "B0341";
/**
* 系統請求未定義權限标記,參考權限标記 LuTagPermission
*
* @see com.lucun.wltour.common.permission.LuTagPermission
*/
public static final String ERROR_SYS_PERMISSION_ACTION_NO = "B0342";
/**
* 系統參數異常
*/
public static final String ERROR_SYS_PARAM = "B0400";
/**
* 系統配置參數禁用
*/
public static final String ERROR_SYS_PARAM_CONFIG_DISABLE = "B0401";
/**
* 系統配置參數為空
*/
public static final String ERROR_SYS_PARAM_CONFIG_EMPTY = "B0402";
/**
* 系統配置參數類型錯誤
*/
public static final String ERROR_SYS_PARAM_CONFIG_TYPE = "B0403";
/**
* 系統配置參數類型過小
*/
public static final String ERROR_SYS_PARAM_CONFIG_SMALL = "B0404";
/**
* 系統配置參數類型過大
*/
public static final String ERROR_SYS_PARAM_CONFIG_BIG = "B0405";
/**
* 調用第三方服務出錯 一級宏觀錯誤碼
*/
public static final String ERROR_REMOTE = "C0001";
/**
* 中間件服務出錯 二級宏觀錯誤碼
*/
public static final String ERROR_REMOTE_MIDDLEWARE = "C0100";
/**
* RPC服務出錯
*/
public static final String ERROR_REMOTE_RPC = "C0110";
/**
* RPC服務未找到
*/
public static final String ERROR_REMOTE_RPC_NOT_FOUND = "C0111";
/**
* RPC服務未注冊
*/
public static final String ERROR_REMOTE_RPC_NOT_REGISTER = "C0112";
/**
* 接口不存在
*/
public static final String ERROR_REMOTE_API_NOT_REGISTER = "C0113";
/**
* 消息服務出錯
*/
public static final String ERROR_REMOTE_MESSAGE_SERVICE_ERROR = "C0120";
/**
* 消息投遞出錯
*/
public static final String ERROR_REMOTE_MESSAGE_DELIVERY_ERROR = "C0121";
/**
* 消息消費出錯
*/
public static final String ERROR_REMOTE_MESSAGE_CONSUMPTION_ERROR = "C0122";
/**
* 消息訂閱出錯
*/
public static final String ERROR_REMOTE_MESSAGE_SUBSCRIPTION_ERROR = "C0123";
/**
* 消息分組未查到
*/
public static final String ERROR_REMOTE_MESSAGE_GROUPING_NOT_FOUND = "C0124";
/**
* 緩存服務出錯
*/
public static final String ERROR_REMOTE_CACHE_SERVICE_ERROR = "C0130";
/**
* key長度超過限制
*/
public static final String ERROR_REMOTE_KEY_LENGTH_OVER_LIMIT = "C0131";
/**
* value長度超過限制
*/
public static final String ERROR_REMOTE_VALUE_LENGTH_OVER_LIMIT = "C0132";
/**
* 存儲容量已滿
*/
public static final String ERROR_REMOTE_STORAGE_CAPACITY_FULL = "C0133";
/**
* 不支援的資料格式
*/
public static final String ERROR_REMOTE_UNSUPPORTED_DATA_FORMATS = "C0134";
/**
* 配置服務出錯
*/
public static final String ERROR_REMOTE_CONFIGURATION_SERVICE_ERROR = "C0140";
/**
* 網絡資源服務出錯
*/
public static final String ERROR_REMOTE_NETWORK_RESOURCE_SERVICE_ERROR = "C0150";
/**
* VPN服務出錯
*/
public static final String ERROR_REMOTE_VPN_SERVICE_ERROR = "C0151";
/**
* CDN服務出錯
*/
public static final String ERROR_REMOTE_CDN_SERVICE_ERROR = "C0152";
/**
* 域名解析服務出錯
*/
public static final String ERROR_REMOTE_DOMAIN_NAME_RESOLUTION_SERVICE_ERROR = "C0153";
/**
* 網關服務出錯
*/
public static final String ERROR_REMOTE_GATEWAY_SERVICE_ERROR = "C0154";
/**
* 第三方系統執行逾時 二級宏觀錯誤碼
*/
public static final String ERROR_REMOTE_THIRD_PARTY_SYSTEM_EXECUTION_TIMEOUT = "C0200";
/**
* RPC執行逾時
*/
public static final String ERROR_REMOTE_RPC_TIMEOUTS = "C0210";
/**
* 消息投遞逾時
*/
public static final String ERROR_REMOTE_MESSAGE_DELIVERY_TIMEOUT = "C0220";
/**
* 緩存服務逾時
*/
public static final String ERROR_REMOTE_CACHE_SERVICE_TIMEOUT = "C0230";
/**
* 配置服務逾時
*/
public static final String ERROR_REMOTE_CONFIGURE_SERVICE_TIMEOUT = "C0240";
/**
* 資料庫服務逾時
*/
public static final String ERROR_REMOTE_DATABASE_SERVICE_TIMEOUT = "C0250";
/**
* 資料庫服務出錯 二級宏觀錯誤碼
*/
public static final String ERROR_REMOTE_DATABASE_SERVICE_ERROR = "C0300";
/**
* 表不存在
*/
public static final String ERROR_REMOTE_TABLE_DOES_NOT_EXIST = "C0311";
/**
* 列不存在
*/
public static final String ERROR_REMOTE_COLUMN_DOES_NOT_EXIST = "C0312";
/**
* 多表關聯中存在多個相同名稱的列
*/
public static final String ERROR_REMOTE_MULTIPLE_COLUMNS_WITH_THE_SAMENAME = "C0321";
/**
* 資料庫死鎖
*/
public static final String ERROR_REMOTE_DATABASE_DEADLOCK = "C0331";
/**
* 主鍵沖突
*/
public static final String ERROR_REMOTE_PRIMARY_KEY_CONFLICT = "C0341";
/**
* 第三方容災系統被觸發 二級宏觀錯誤碼
*/
public static final String ERROR_REMOTE_THIRD_PARTY_DISASTER_TRCOVERY_SYSTEM_TRIGGERED = "C0400";
/**
* 第三方系統限流
*/
public static final String ERROR_REMOTE_THIRD_PARTY_SYSTEMS_ARE_CURRENT_LIMITING = "C0401";
/**
* 第三方功能降級
*/
public static final String ERROR_REMOTE_THIRD_PARTY_FUNCTION_DEGRADATION = "C0402";
/**
* 通知服務出錯 二級宏觀錯誤碼
*/
public static final String ERROR_REMOTE_NOTIFICATION_SERVICE_ERROR = "C0500";
/**
* 短信提醒服務失敗
*/
public static final String ERROR_REMOTE_SMS_ALERT_SERVICE_FAIL = "C0501";
/**
* 語音提醒服務失敗
*/
public static final String ERROR_REMOTE_VOICE_REMINDER_SERVICE_FAIL = "C0502";
/**
* 郵件提醒服務失敗
*/
public static final String ERROR_REMOTE_MAIL_REMINDER_SERVICE_FAILED = "C0503";
@Override
public String getName(String val) {
if (StringUtils.isBlank(val)) {
return "";
}
switch (val) {
case SUCCESS:
return "成功";
case ERROR_CLIENT:
return "使用者端錯誤";
case ERROR_CLIENT_REGISTER:
return "使用者注冊錯誤";
case ERROR_CLIENT_NOT_AGREE:
return "使用者未同意隐私協定";
case ERROR_CLIENT_REGION_LIMIT:
return "注冊國家或地區受限";
case ERROR_CLIENT_USERNAME_FAIL:
return "使用者名校驗失敗";
case ERROR_CLIENT_USERNAME_EXISTS:
return "使用者名已存在";
case ERROR_CLIENT_ILLEGAL_WORD:
return "使用者名包含敏感詞";
case ERROR_CLIENT_SPECIAL_CHARACTER:
return "使用者名包含特殊字元";
case ERROR_CLIENT_PASSWORD_FAIL:
return "密碼校驗失敗";
case ERROR_CLIENT_PASSWORD_LENGTH_NOT_ENOUGH:
return "密碼長度不夠";
case ERROR_CLIENT_PASSWORD_STRENGTH_NOT_ENOUGH:
return "密碼強度不夠";
case ERROR_CLIENT_CHECKCODE_INPUT_ERROR:
return "校驗碼輸入錯誤";
case ERROR_CLIENT_SMS_CHECKCODE_INPUT_ERROR:
return "短信校驗碼輸入錯誤";
case ERROR_CLIENT_EMAIL_CHECKCODE_INPUT_ERROR:
return "郵件校驗碼輸入錯誤";
case ERROR_CLIENT_VOICE_CHECKCODE_INPUT_ERROR:
return "語音校驗碼輸入錯誤";
case ERROR_CLIENT_CERTIFICATE_ABNORMAL:
return "使用者證件異常";
case ERROR_CLIENT_CERTIFICATE_TYPE_UNSELECTED:
return "使用者證件類型未選擇";
case ERROR_CLIENT_IDCARD_ILLEGAL:
return "大陸身份證編号校驗非法";
case ERROR_CLIENT_PASSPORT_ILLEGAL:
return "護照編号校驗非法";
case ERROR_CLIENT_MILITARY_ID_NUMBER_ILLEGAL:
return "軍官證編号校驗非法";
case ERROR_CLIENT_BASIC_INFORMATION_FAIL:
return "使用者基本資訊校驗失敗";
case ERROR_CLIENT_PHONE_FORMAT_FAIL:
return "手機格式校驗失敗";
case ERROR_CLIENT_ADDRESS_FORMAT_FAIL:
return "位址格式校驗失敗";
case ERROR_CLIENT_EMAIL_FORMAT_FAIL:
return "郵箱格式校驗失敗";
case ERROR_CLIENT_LOGIN_ABNORMAL:
return "使用者登入異常";
case ERROR_CLIENT_ACCOUNT_NOTEXIST:
return "使用者賬戶不存在";
case ERROR_CLIENT_ACCOUNT_FREEZE:
return "使用者賬戶被當機";
case ERROR_CLIENT_ACCOUNT_INVALID:
return "使用者賬戶已廢棄";
case ERROR_CLIENT_PASSWORD_ERROR:
return "使用者密碼錯誤";
case ERROR_CLIENT_PASSWORD_ERROR_TIMES_OVERRUN:
return "使用者輸入密碼錯誤次數超限";
case ERROR_CLIENT_IDENTITY_FILE:
return "使用者身份校驗失敗";
case ERROR_CLIENT_FINGERPRINT_FILE:
return "使用者指紋識别失敗";
case ERROR_CLIENT_COUNTENANCE_FILE:
return "使用者面容識别失敗";
case ERROR_CLIENT_NO_LOGIN_AUTHORIZATION:
return "使用者未獲得第三方登入授權";
case ERROR_CLIENT_LOGIN_EXPIRED:
return "使用者登入已過期";
case ERROR_CLIENT_CHECKCODE_ERROR:
return "使用者驗證碼錯誤";
case ERROR_CLIENT_CHECKCODE_TIMES_OVERRUN:
return "使用者驗證碼嘗試次數超限";
case ERROR_CLIENT_ACCESS_EXCEPTION:
return "通路權限異常";
case ERROR_CLIENT_ACCESS_UNAUTHORIZED:
return "通路未授權";
case ERROR_CLIENT_ACCESS_AUTHORIZING:
return "正在授權中";
case ERROR_CLIENT_REJECTED_AUTHORIZATION:
return "使用者授權申請被拒絕";
case ERROR_CLIENT_ACCESS_PRIVACY_SETTINGS_BLOCKED:
return "因通路對象隐私設定被攔截";
case ERROR_CLIENT_AUTHORIZATION_EXPIRED:
return "授權已過期";
case ERROR_CLIENT_NO_PROMISSIONS_TO_API:
return "無權限使用API";
case ERROR_CLIENT_ACCESS_BLOCKED:
return "使用者通路被攔截";
case ERROR_CLIENT_BLACKLIST_USERS:
return "黑名單使用者";
case ERROR_CLIENT_ACCOUNT_IS_FROZEN:
return "賬号被當機";
case ERROR_CLIENT_ILLEGAL_IP_ADDRESS:
return "非法IP位址";
case ERROR_CLIENT_GATEWAY_ACCESS_RESTRICTED:
return "網關通路受限";
case ERROR_CLIENT_REGIONAL_BLACKLIST:
return "地域黑名單";
case ERROR_CLIENT_SERVICE_ARREARS:
return "服務已欠費";
case ERROR_CLIENT_SIGNATURE_EXCEPTION:
return "使用者簽名異常";
case ERROR_CLIENT_RSA_SIGNATURE_ERROR:
return "RSA簽名錯誤";
case ERROR_CLIENT_REQUEST_PARAMETER_ERROR:
return "使用者請求參數錯誤";
case ERROR_CLIENT_ILLEGAL_MALICIOUS_LINKS:
return "包含非法惡意跳轉連結";
case ERROR_CLIENT_INVALID_INPUT:
return "無效的使用者輸入";
case ERROR_CLIENT_REQUIRED_PARAMETER_EMPTY:
return "請求必填參數為空";
case ERROR_CLIENT_ORDER_NUMBER_EMPTY:
return "使用者訂單号為空";
case ERROR_CLIENT_ORDER_QUANTITY_EMPTY:
return "訂購數量為空";
case ERROR_CLIENT_TIMESTAMP_PARAMETER_MISSING:
return "缺少時間戳參數";
case ERROR_CLIENT_INVALID_TIMESTAMP_PARAMETER:
return "非法的時間戳參數";
case ERROR_CLIENT_PARAMETER_VALUES_BEYOND_ALLOWED_RANGE:
return "請求參數值超出允許的範圍";
case ERROR_CLIENT_PARAMETER_FORMAT_NOT_MATCH:
return "參數格式不比對";
case ERROR_CLIENT_ADDRESS_NOT_IN_SERVICE:
return "位址不在服務範圍";
case ERROR_CLIENT_TIME_NOT_IN_SERVICE:
return "時間不在服務範圍";
case ERROR_CLIENT_AMOUNT_EXCEEDS_LIMIT:
return "金額超出限制";
case ERROR_CLIENT_QUANTITY_EXCEEDS_LIMIT:
return "數量超出限制";
case ERROR_CLIENT_BATCH_PROCESSING_TOTAL_EXCEEDS_LIMIT:
return "請求批量處理總個數超出限制";
case ERROR_CLIENT_REQUEST_JSON_PARSING_FAILED:
return "請求JSON解析失敗";
case ERROR_CLIENT_INPUT_ILLEGAL:
return "使用者輸入内容非法";
case ERROR_CLIENT_PROHIBITED_SENSITIVE_WORD:
return "包含違禁敏感詞";
case ERROR_CLIENT_IMAGE_PROHIBITED:
return "圖檔包含違禁資訊";
case ERROR_CLIENT_COPYRIGHT_INFRINGEMENT:
return "檔案侵犯版權";
case ERROR_CLIENT_OPERATION_ABNORMAL:
return "使用者操作異常";
case ERROR_CLIENT_PAY_OVERTIME:
return "使用者支付逾時";
case ERROR_CLIENT_PAY_FAIL:
return "使用者支付失敗";
case ERROR_CLIENT_ORDER_TIMEOUT:
return "确認訂單逾時";
case ERROR_CLIENT_ORDER_CLOSED:
return "訂單已關閉";
case ERROR_CLIENT_ORDER_TYPE_MISMATCHING:
return "訂單類型不比對";
case ERROR_CLIENT_PRODUCT_INVENTORY_SHORTAGE:
return "産品日庫存不足";
case ERROR_CLIENT_ORDER_PLACE_FAIL:
return "統一下單失敗";
case ERROR_CLIENT_REQUEST_SERVICE_EXCEPTION:
return "使用者請求服務異常";
case ERROR_CLIENT_REQUESTS_NUMBER_EXCEEDS_LIMIT:
return "請求次數超出限制";
case ERROR_CLIENT_REQUESTS_CONCURRENT_NUMBER_EXCEEDS_LIMIT:
return "請求并發數超出限制";
case ERROR_CLIENT_OPERATION_WAIT:
return "使用者操作請等待";
case ERROR_CLIENT_WEBSOCKET_CONNECTION_EXCEPTION:
return "WebSocket連接配接異常";
case ERROR_CLIENT_WEBSOCKET_CONNECTION_DISCONNECT:
return "WebSocket連接配接斷開";
case ERROR_CLIENT_REPEATED_REQUESTS:
return "使用者重複請求";
case ERROR_CLIENT_RESOURCE_EXCEPTION:
return "使用者資源異常";
case ERROR_CLIENT_INSUFFICIENT_ACCOUNT_BALANCE:
return "賬戶餘額不足";
case ERROR_CLIENT_INSUFFICIENT_DISK_SPACE:
return "使用者磁盤空間不足";
case ERROR_CLIENT_INSUFFICIENT_MEMORY_SPACE:
return "使用者記憶體空間不足";
case ERROR_CLIENT_INSUFFICIENT_OSS_CAPACITY:
return "使用者OSS容量不足";
case ERROR_CLIENT_QUOTA_EXHAUSTED:
return "使用者配額已用光";
case ERROR_CLIENT_UPLOAD_FILE_EXCEPTION:
return "使用者上傳檔案異常";
case ERROR_CLIENT_UPLOAD_FILE_TYPE_NOT_MATCH:
return "使用者上傳檔案類型不比對";
case ERROR_CLIENT_UPLOAD_FILE_TOO_LARGE:
return "使用者上傳檔案太大";
case ERROR_CLIENT_UPLOAD_PICTURE_TOO_LARGE:
return "使用者上傳圖檔太大";
case ERROR_CLIENT_UPLOAD_VIDEO_TOO_LARGE:
return "使用者上傳視訊太大";
case ERROR_CLIENT_UPLOAD_COMPRESSED_FILE_TOO_LARGE:
return "使用者上傳壓縮檔案太大";
case ERROR_CLIENT_CURRENT_VERSION_ABNORMAL:
return "使用者目前版本異常";
case ERROR_CLIENT_INSTALLED_VERSION_NOT_MATCH:
return "使用者安裝版本與系統不比對";
case ERROR_CLIENT_INSTALLED_VERSION_TOO_LOW:
return "使用者安裝版本過低";
case ERROR_CLIENT_INSTALLED_VERSION_TOO_HIGH:
return "使用者安裝版本過高";
case ERROR_CLIENT_INSTALLED_VERSION_EXPIRED:
return "使用者安裝版本已過期";
case ERROR_CLIENT_API_VERSION_NOT_MATCH:
return "使用者API請求版本不比對";
case ERROR_CLIENT_API_VERSION_TOO_HIGH:
return "使用者API請求版本過高";
case ERROR_CLIENT_API_VERSION_TOO_LOW:
return "使用者API請求版本過低";
case ERROR_CLIENT_PRIVACY_NOT_AUTHORIZED:
return "使用者隐私未授權";
case ERROR_CLIENT_PRIVACY_NOT_SIGNED:
return "使用者隐私未簽署";
case ERROR_CLIENT_UNAUTHORIZED_CAMERA:
return "使用者攝像頭未授權";
case ERROR_CLIENT_CAMERA_NOT_AUTHORIZED:
return "使用者相機未授權";
case ERROR_CLIENT_UNAUTHORIZED_IMAGE_LIBRARY:
return "使用者圖檔庫未授權";
case ERROR_CLIENT_UNAUTHORIZED_DOCUMENT:
return "使用者檔案未授權";
case ERROR_CLIENT_UNAUTHORIZED_LOCATION:
return "使用者位置資訊未授權";
case ERROR_CLIENT_UNAUTHORIZED_ADDRESS_BOOK:
return "使用者通訊錄未授權";
case ERROR_CLIENT_EQUIPMENT_ABNORMAL:
return "使用者裝置異常";
case ERROR_CLIENT_CAMERA_ABNORMAL:
return "使用者相機異常";
case ERROR_CLIENT_MICROPHONE_ABNORMAL:
return "使用者麥克風異常";
case ERROR_CLIENT_EARPIECE_ABNORMAL:
return "使用者聽筒異常";
case ERROR_CLIENT_SPEAKER_ABNORMAL:
return "使用者揚聲器異常";
case ERROR_CLIENT_GPS_POSITIONING_ABNORMAL:
return "使用者GPS定位異常";
case ERROR_CLIENT_PERMISSION:
return "使用者權限異常";
case ERROR_CLIENT_PERMISSION_NO_FOUNT:
return "使用者無相關權限";
case ERROR_CLIENT_PERMISSION_TIME_OUT:
return "使用者權限過期";
case ERROR_CLIENT_PERMISSION_INVALID:
return "使用者權限無效";
case ERROR_SYS:
return "系統錯誤";
case ERROR_SYS_RUN_TIME_OUT:
return "系統執行逾時";
case ERROR_SYS_ORDER_TIME_OUT:
return "系統訂單處理逾時";
case ERROR_SYS_DISASTER_TRCOVERY_FUNCTION_TRIGGERED:
return "系統容災功能被觸發";
case ERROR_SYS_CURRENT_LIMITING:
return "系統限流";
case ERROR_SYS_FUNCTIONAL_DEGRADATION:
return "系統功能降級";
case ERROR_SYS_RESOURCES_ABNORMAL:
return "系統資源異常";
case ERROR_SYS_RESOURCE_EXHAUSTION:
return "系統資源耗盡";
case ERROR_SYS_OUT_OF_DISK_SPACE:
return "系統磁盤空間耗盡";
case ERROR_SYS_OUT_OF_MEMORY:
return "系統記憶體耗盡";
case ERROR_SYS_FILE_HANDLE_EXHAUSTED:
return "檔案句柄耗盡";
case ERROR_SYS_CONNECTION_POOL_DEPLETION:
return "系統連接配接池耗盡";
case ERROR_SYS_THREAD_POOL_DEPLETION:
return "系統線程池耗盡";
case ERROR_SYS_RESOURCE_ACCESS_EXCEPTION:
return "系統資源通路異常";
case ERROR_SYS_FAILED_READ_DISK_FILE:
return "系統讀取磁盤檔案失敗";
case ERROR_SYS_FAILED_DATA_CONVERT:
return "資料轉換失敗";
case ERROR_SYS_DATA_STRUCTURE:
return "資料結構異常";
case ERROR_SYS_CONF:
return "系統參數異常";
case ERROR_SYS_CODE:
return "系統編碼異常";
case ERROR_SYS_ACTION_NOT_FOUND:
return "未找到相關請求";
case ERROR_SYS_PERMISSION_ACTION_NO:
return "系統請求未定義權限标記";
case ERROR_SYS_PARAM:
return "系統參數異常";
case ERROR_SYS_PARAM_CONFIG_DISABLE:
return "系統配置參數禁用";
case ERROR_SYS_PARAM_CONFIG_EMPTY:
return "系統配置參數為空";
case ERROR_SYS_PARAM_CONFIG_TYPE:
return "系統配置參數類型錯誤";
case ERROR_SYS_PARAM_CONFIG_SMALL:
return "系統配置參數過小";
case ERROR_SYS_PARAM_CONFIG_BIG:
return "系統配置參數過大";
case ERROR_REMOTE:
return "第三方服務錯誤";
case ERROR_REMOTE_MIDDLEWARE:
return "中間件服務出錯";
case ERROR_REMOTE_RPC:
return "RPC服務出錯";
case ERROR_REMOTE_RPC_NOT_FOUND:
return "RPC服務未找到";
case ERROR_REMOTE_RPC_NOT_REGISTER:
return "RPC服務未注冊";
case ERROR_REMOTE_API_NOT_REGISTER:
return "接口不存在";
case ERROR_REMOTE_MESSAGE_SERVICE_ERROR:
return "消息服務出錯";
case ERROR_REMOTE_MESSAGE_DELIVERY_ERROR:
return "消息投遞出錯";
case ERROR_REMOTE_MESSAGE_CONSUMPTION_ERROR:
return "消息消費出錯";
case ERROR_REMOTE_MESSAGE_SUBSCRIPTION_ERROR:
return "消息訂閱出錯";
case ERROR_REMOTE_MESSAGE_GROUPING_NOT_FOUND:
return "消息分組未查到";
case ERROR_REMOTE_CACHE_SERVICE_ERROR:
return "緩存服務出錯";
case ERROR_REMOTE_KEY_LENGTH_OVER_LIMIT:
return "key長度超過限制";
case ERROR_REMOTE_VALUE_LENGTH_OVER_LIMIT:
return "value長度超過限制";
case ERROR_REMOTE_STORAGE_CAPACITY_FULL:
return "存儲容量已滿";
case ERROR_REMOTE_UNSUPPORTED_DATA_FORMATS:
return "不支援的資料格式";
case ERROR_REMOTE_CONFIGURATION_SERVICE_ERROR:
return "配置服務出錯";
case ERROR_REMOTE_NETWORK_RESOURCE_SERVICE_ERROR:
return "網絡資源服務出錯";
case ERROR_REMOTE_VPN_SERVICE_ERROR:
return "VPN服務出錯";
case ERROR_REMOTE_CDN_SERVICE_ERROR:
return "CDN服務出錯";
case ERROR_REMOTE_DOMAIN_NAME_RESOLUTION_SERVICE_ERROR:
return "域名解析服務出錯";
case ERROR_REMOTE_GATEWAY_SERVICE_ERROR:
return "網關服務出錯";
case ERROR_REMOTE_THIRD_PARTY_SYSTEM_EXECUTION_TIMEOUT:
return "第三方系統執行逾時";
case ERROR_REMOTE_RPC_TIMEOUTS:
return "RPC執行逾時";
case ERROR_REMOTE_MESSAGE_DELIVERY_TIMEOUT:
return "消息投遞逾時";
case ERROR_REMOTE_CACHE_SERVICE_TIMEOUT:
return "緩存服務逾時";
case ERROR_REMOTE_CONFIGURE_SERVICE_TIMEOUT:
return "配置服務逾時";
case ERROR_REMOTE_DATABASE_SERVICE_TIMEOUT:
return "資料庫服務逾時";
case ERROR_REMOTE_DATABASE_SERVICE_ERROR:
return "資料庫服務出錯";
case ERROR_REMOTE_TABLE_DOES_NOT_EXIST:
return "表不存在";
case ERROR_REMOTE_COLUMN_DOES_NOT_EXIST:
return "列不存在";
case ERROR_REMOTE_MULTIPLE_COLUMNS_WITH_THE_SAMENAME:
return "多表關聯中存在多個相同名稱的列";
case ERROR_REMOTE_DATABASE_DEADLOCK:
return "資料庫死鎖";
case ERROR_REMOTE_PRIMARY_KEY_CONFLICT:
return "主鍵沖突";
case ERROR_REMOTE_THIRD_PARTY_DISASTER_TRCOVERY_SYSTEM_TRIGGERED:
return "第三方容災系統被觸發";
case ERROR_REMOTE_THIRD_PARTY_SYSTEMS_ARE_CURRENT_LIMITING:
return "第三方系統限流";
case ERROR_REMOTE_THIRD_PARTY_FUNCTION_DEGRADATION:
return "第三方功能降級";
case ERROR_REMOTE_NOTIFICATION_SERVICE_ERROR:
return "通知服務出錯'";
case ERROR_REMOTE_SMS_ALERT_SERVICE_FAIL:
return "短信提醒服務失敗";
case ERROR_REMOTE_VOICE_REMINDER_SERVICE_FAIL:
return "語音提醒服務失敗";
case ERROR_REMOTE_MAIL_REMINDER_SERVICE_FAILED:
return "郵件提醒服務失敗";
default:
return "";
}
}
}
JwtUtils
package com.example.hotelmanagement.utils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.example.hotelmanagement.model.UserInfo;
import java.util.Date;
public class JwtUtils {
/*
過期時間為24小時,毫秒計時的---毫秒--》秒--》分--》小時--》天
*/
private static final long EXPIRE_TIME= 60 * 24 * 60 * 1000;
/**
* 密鑰,注意這裡如果真實用到,應當設定到複雜點,相當于私鑰的存在。如果被人拿到,相當于它可以自己制造token了。
*/
private static final String TOKEN_SECRET="token-xly"; //密鑰鹽
/**
* 簽名生成
* @param user
* @return
*/
public static String sign(UserInfo user){
String token = null;
try {
Date expiresAt = new Date(System.currentTimeMillis() + EXPIRE_TIME);
token = JWT.create()
.withIssuer("xu")//自定義的
.withClaim("username", user.getPhone())
.withExpiresAt(expiresAt)
// 使用了HMAC256加密算法。
.sign(Algorithm.HMAC256(TOKEN_SECRET));
} catch (Exception e){
e.printStackTrace();
}
return token;
}
/**
* 簽名驗證h
* @param token
* @return
*/
public static boolean verify(String token){
try {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET)).withIssuer("xu").build();//自定義的
DecodedJWT jwt = verifier.verify(token);
System.out.println("認證通過:");
System.out.println("issuer: " + jwt.getIssuer());
System.out.println("username: " + jwt.getClaim("username").asString());
System.out.println("過期時間:" + jwt.getExpiresAt());
return true;
} catch (Exception e){
return false;
}
}
}
TokenUtil
package com.example.hotelmanagement.utils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.example.hotelmanagement.model.UserInfo;
import com.example.hotelmanagement.utils.common.BaseException;
import com.example.hotelmanagement.utils.common.ConstantResultCode;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TokenUtil {
/*
過期時間為24小時,毫秒計時的---毫秒--》秒--》分--》小時--》天
private static final long EXPIRE_TIME= 60 * 24 * 60 * 1000;
*/
/**
* 過期時間為一分鐘
*/
private static final long EXPIRE_TIME = 1000 * 60 * 60 * 24;
/**
* 密鑰,注意這裡如果真實用到,應當設定到複雜點,相當于私鑰的存在。如果被人拿到,相當于它可以自己制造token了。
*/
private static final String TOKEN_SECRET = "token-lx"; //密鑰鹽
/**
* 簽名生成
*
* @param userInfo
* @return
*/
public static String sign(UserInfo userInfo) {
String token = null;
try {
Date expiresAt = new Date(System.currentTimeMillis() + EXPIRE_TIME);
token = JWT.create()
.withClaim("id", userInfo.getId())
.withClaim("phone", userInfo.getPhone())
.withClaim("status", userInfo.getStatus())
.withExpiresAt(expiresAt)
// 使用了HMAC256加密算法。
.sign(Algorithm.HMAC256(TOKEN_SECRET));
} catch (Exception e) {
e.printStackTrace();
}
return token;
}
/**
* 簽名驗證
*
* @param token
* @return
*/
public static boolean verify(String token) {
if (StringUtils.isBlank(token)) {
throw new BaseException(ConstantResultCode.ERROR_CLIENT_REQUIRED_PARAMETER_EMPTY, "token為空");
}
try {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET)).build();//自定義的
DecodedJWT jwt = verifier.verify(token);
System.out.println("認證通過:");
System.out.println("id: " + jwt.getClaim("id").asInt());
System.out.println("phone: " + jwt.getClaim("phone").asString());
// System.out.println("role: " + jwt.getClaim("role").asString());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("過期時間:" + sdf.format(jwt.getExpiresAt()));
return true;
} catch (Exception e) {
return false;
}
}
/**
* <p> 獲得權限 </p>
*
* @Param [request]
* @Return java.lang.String
*/
public static String getRoleByToken(HttpServletRequest request) {
String token = request.getHeader("token");
DecodedJWT jwt = JWT.decode(token);
return jwt.getClaim("status").asString();
}
/**
* <p> 獲得id,操作人 </p>
*
* @Param [request]
* @Return java.lang.String
*/
public static int getIdByToken(HttpServletRequest request) {
String token = request.getHeader("token");
DecodedJWT jwt = JWT.decode(token);
return jwt.getClaim("id").asInt();
}
}