ApiResult
kotlinpackage com.example.demokt.core.entity
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
data class ApiResult<T>(
val code: Int,
val message: String,
val data: T?,
val timestamp: String
) {
companion object {
// 创建成功的响应
fun <T> success(data: T?): ApiResult<T> {
return ApiResult(ResultCode.SUCCESS.code, ResultCode.SUCCESS.message, data, getCurrentTimestamp())
}
// 创建成功的响应,并自定义消息
fun <T> success(message: String, data: T?): ApiResult<T> {
return ApiResult(ResultCode.SUCCESS.code, message, data, getCurrentTimestamp())
}
// 创建自定义状态码的响应
fun <T> of(resultCode: ResultCode, data: T?): ApiResult<T> {
return ApiResult(resultCode.code, resultCode.message, data, getCurrentTimestamp())
}
// 创建失败的响应
fun <T> error(code: Int, message: String): ApiResult<T> {
return ApiResult(code, message, null, getCurrentTimestamp())
}
// 创建失败的响应,并包含数据
fun <T> error(code: Int, message: String, data: T?): ApiResult<T> {
return ApiResult(code, message, data, getCurrentTimestamp())
}
// 获取当前时间戳
private fun getCurrentTimestamp(): String {
val now = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
return now.format(formatter)
}
}
}
ResultCode
kotlinpackage com.example.demokt.core.entity
enum class ResultCode(val code: Int, val message: String) {
SUCCESS(200, "Success"),
ADD_USER_SUCCESS(1001, "添加用户成功"),
USER_NOT_EXISTS(1002, "用户不存在"),
USER_ALREADY_EXISTS(1003, "用户已存在"),
INVALID_CREDENTIALS(1004, "无效的凭证"),
LOGIN_SUCCESS(1005, "登录成功"),
LOGIN_FAILED(1006, "登录失败"),
LOGOUT_SUCCESS(1007, "登出成功"),
PERMISSION_DENIED(1008, "权限不足"),
RESOURCE_NOT_FOUND(1009, "资源未找到"),
RESOURCE_ALREADY_EXISTS(1010, "资源已存在"),
INVALID_PARAMETERS(1011, "无效的参数"),
OPERATION_SUCCESS(1012, "操作成功"),
OPERATION_FAILED(1013, "操作失败"),
// 用户操作
USER_ALREADY_BLOCKED(1014, "用户已被封禁"),
USER_ALREADY_VERIFIED(1015, "用户已验证"),
USER_VERIFICATION_FAILED(1016, "用户验证失败"),
SERVER_ERROR(500, "服务器错误"),
UNKNOWN_ERROR(501, "未知错误"),
// 注册相关
REGISTER_SUCCESS(2001, "注册成功"),
REGISTER_FAILED(2002, "注册失败"),
EMAIL_ALREADY_EXISTS(2003, "邮箱已存在"),
USERNAME_ALREADY_EXISTS(2004, "用户名已存在"),
// 登录/注册
INVALID_VERIFICATION_CODE(2005, "验证码错误"),
REGISTRATION_CODE_EXPIRED(2006, "注册码已过期"),
INVALID_LOGIN_ATTEMPTS(1017, "登录尝试过多,请稍后再试"),
// 支付相关
PAYMENT_SUCCESS(3001, "支付成功"),
PAYMENT_FAILED(3002, "支付失败"),
INSUFFICIENT_FUNDS(3003, "余额不足"),
PAYMENT_CANCELED(3004, "支付已取消"),
// 支付
PAYMENT_AMOUNT_EXCEEDS_LIMIT(3005, "支付金额超出限制"),
PAYMENT_METHOD_NOT_SUPPORTED(3006, "不支持的支付方式"),
PAYMENT_AUTHENTICATION_REQUIRED(3007, "需要支付认证"),
// 数据库相关
DATABASE_CONNECTION_SUCCESS(4001, "数据库连接成功"),
DATABASE_CONNECTION_FAILED(4002, "数据库连接失败"),
DATABASE_OPERATION_SUCCESS(4003, "数据库操作成功"),
DATABASE_OPERATION_FAILED(4004, "数据库操作失败"),
// 数据库操作
DATABASE_QUERY_FAILED(4005, "数据库查询失败"),
DATABASE_UPDATE_FAILED(4006, "数据库更新失败"),
DATABASE_DELETE_FAILED(4007, "数据库删除失败"),
// 超时相关
REQUEST_TIMEOUT(5001, "请求超时"),
SESSION_TIMEOUT(5002, "会话超时"),
// 超时
API_TIMEOUT(5003, "API调用超时"),
IMAGE_UPLOAD_TIMEOUT(5004, "图片上传超时"),
// 限流相关
RATE_LIMIT_EXCEEDED(6001, "请求过于频繁,请稍后再试"),
// 限流
RATE_LIMIT_EXCEEDED_PER_USER(6002, "用户请求过于频繁,请稍后再试"),
RATE_LIMIT_EXCEEDED_PER_IP(6003, "IP请求过于频繁,请稍后再试"),
// 其他
SERVICE_UNAVAILABLE(7001, "服务不可用"),
GATEWAY_TIMEOUT(7002, "网关超时"),
// 其他
INTERNAL_SERVER_ERROR(7003, "内部服务器错误"),
CONFIGURATION_ERROR(7004, "配置错误"),
DEPENDENCY_SERVICE_UNAVAILABLE(7005, "依赖服务不可用"),
// 文件操作
FILE_NOT_FOUND(8001, "文件未找到"),
FILE_UPLOAD_FAILED(8002, "文件上传失败"),
FILE_DOWNLOAD_FAILED(8003, "文件下载失败"),
// 网络问题
CONNECTION_TIMEOUT(9001, "连接超时"),
REQUEST_FAILED(9002, "请求失败"),
HOST_UNAVAILABLE(9003, "主机不可用"),
// 安全问题
SECURITY_VIOLATION(10001, "安全违规"),
ENCRYPTION_FAILED(10002, "加密失败"),
DECRYPTION_FAILED(10003, "解密失败");
companion object {
fun fromCode(code: Int): ResultCode {
return values().find { it.code == code } ?: UNKNOWN_ERROR
}
}
}
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!