OpenIMApiClient

This commit is contained in:
wells
2026-08-08 14:56:37 +08:00
parent 0e51812d80
commit aa48225d85
11 changed files with 3931 additions and 232 deletions
@@ -0,0 +1,113 @@
package com.tailbet.common.exception;
import com.tailbet.common.enums.ErrorCodeEnum;
import lombok.Getter;
/**
* 业务异常
* <p>
* 封装业务逻辑层面的异常,区别于系统运行时异常。
* 业务异常通常有明确的错误码和提示信息,可直接返回给前端展示。
* 使用时优先使用预定义的错误码枚举,也支持自定义消息。
* </p>
*
* @author socialapp团队
* @since 1.0.0
*/
@Getter
public class BusinessException extends RuntimeException {
/**
* 错误码
*/
private final int code;
/**
* 附加数据(如当前场次信息等)
*/
private final Object data;
/**
* 基于错误码枚举构造业务异常
*
* @param errorCode 错误码枚举
*/
public BusinessException(ErrorCodeEnum errorCode) {
super(errorCode.getMessage());
this.code = errorCode.getCode();
this.data = null;
}
/**
* 基于错误码枚举和自定义消息构造业务异常
*
* @param errorCode 错误码枚举
* @param message 自定义错误消息
*/
public BusinessException(ErrorCodeEnum errorCode, String message) {
super(message);
this.code = errorCode.getCode();
this.data = null;
}
/**
* 基于错误码枚举、自定义消息和原因构造业务异常
*
* @param errorCode 错误码枚举
* @param message 自定义错误消息
* @param cause 原始异常
*/
public BusinessException(ErrorCodeEnum errorCode, String message, Throwable cause) {
super(message, cause);
this.code = errorCode.getCode();
this.data = null;
}
/**
* 基于状态码和自定义消息构造业务异常
*
* @param code 状态码
* @param message 错误消息
*/
public BusinessException(int code, String message) {
super(message);
this.code = code;
this.data = null;
}
/**
* 基于自定义消息构造业务异常(默认错误码 INTERNAL_ERROR
*
* @param message 错误消息
*/
public BusinessException(String message) {
super(message);
this.code = ErrorCodeEnum.INTERNAL_ERROR.getCode();
this.data = null;
}
/**
* 基于错误码枚举和附加数据构造业务异常
* <p>
* 用于需要向前端返回额外数据的异常场景,
* 如 LIVE_ALREADY_ACTIVE 时携带已有场次信息。
* </p>
*
* @param errorCode 错误码枚举
* @param data 附加数据
*/
public BusinessException(ErrorCodeEnum errorCode, Object data) {
super(errorCode.getMessage());
this.code = errorCode.getCode();
this.data = data;
}
/**
* 获取对应的错误码枚举
*
* @return 错误码枚举
*/
public ErrorCodeEnum getErrorCodeEnum() {
return ErrorCodeEnum.of(this.code);
}
}