![](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();
}
}