Initial commit for tuoheng-common
This commit is contained in:
commit
e240f3660a
|
|
@ -0,0 +1,45 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
### Logs ###
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
### Temp Files ###
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
|
||||||
|
http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.tuoheng.hxf</groupId>
|
||||||
|
<artifactId>parent</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>tuoheng-common</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>Tuoheng Common</name>
|
||||||
|
<description>拓恒通用模块 - 包含通用工具类、响应对象、异常类等</description>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Lombok -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- FastJSON2 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.fastjson2</groupId>
|
||||||
|
<artifactId>fastjson2</artifactId>
|
||||||
|
<version>2.0.43</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Spring Boot Starter (for basic Spring support) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.tuoheng.common.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用常量
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
public class CommonConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成功标记
|
||||||
|
*/
|
||||||
|
public static final Integer SUCCESS = 200;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败标记
|
||||||
|
*/
|
||||||
|
public static final Integer FAIL = 500;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除标记 - 已删除
|
||||||
|
*/
|
||||||
|
public static final Integer DELETED = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除标记 - 未删除
|
||||||
|
*/
|
||||||
|
public static final Integer NOT_DELETED = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启用状态 - 启用
|
||||||
|
*/
|
||||||
|
public static final Integer ENABLED = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启用状态 - 禁用
|
||||||
|
*/
|
||||||
|
public static final Integer DISABLED = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是
|
||||||
|
*/
|
||||||
|
public static final Integer YES = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 否
|
||||||
|
*/
|
||||||
|
public static final Integer NO = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UTF-8编码
|
||||||
|
*/
|
||||||
|
public static final String UTF8 = "UTF-8";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Token前缀
|
||||||
|
*/
|
||||||
|
public static final String TOKEN_PREFIX = "Bearer ";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Token请求头
|
||||||
|
*/
|
||||||
|
public static final String TOKEN_HEADER = "Authorization";
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.tuoheng.common.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果码枚举
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ResultCode {
|
||||||
|
|
||||||
|
SUCCESS(200, "操作成功"),
|
||||||
|
FAIL(500, "操作失败"),
|
||||||
|
|
||||||
|
// 参数错误 1xxx
|
||||||
|
PARAM_ERROR(1001, "参数错误"),
|
||||||
|
PARAM_IS_NULL(1002, "参数为空"),
|
||||||
|
PARAM_TYPE_ERROR(1003, "参数类型错误"),
|
||||||
|
|
||||||
|
// 用户错误 2xxx
|
||||||
|
USER_NOT_EXIST(2001, "用户不存在"),
|
||||||
|
USER_PASSWORD_ERROR(2002, "用户密码错误"),
|
||||||
|
USER_ACCOUNT_LOCKED(2003, "用户账号被锁定"),
|
||||||
|
USER_NOT_LOGIN(2004, "用户未登录"),
|
||||||
|
USER_NO_PERMISSION(2005, "用户无权限"),
|
||||||
|
TOKEN_INVALID(2006, "Token无效"),
|
||||||
|
TOKEN_EXPIRED(2007, "Token已过期"),
|
||||||
|
|
||||||
|
// 业务错误 3xxx
|
||||||
|
AIRPORT_NOT_EXIST(3001, "机场不存在"),
|
||||||
|
DRONE_NOT_EXIST(3002, "无人机不存在"),
|
||||||
|
TASK_NOT_EXIST(3003, "任务不存在"),
|
||||||
|
AIRLINE_NOT_EXIST(3004, "航线不存在"),
|
||||||
|
|
||||||
|
// 系统错误 9xxx
|
||||||
|
SYSTEM_ERROR(9001, "系统错误"),
|
||||||
|
DATABASE_ERROR(9002, "数据库错误"),
|
||||||
|
REDIS_ERROR(9003, "Redis错误"),
|
||||||
|
MQTT_ERROR(9004, "MQTT错误"),
|
||||||
|
KAFKA_ERROR(9005, "Kafka错误");
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
private final String message;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.tuoheng.common.exception;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务异常
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class BusinessException extends RuntimeException {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误码
|
||||||
|
*/
|
||||||
|
private Integer code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误消息
|
||||||
|
*/
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
public BusinessException(String message) {
|
||||||
|
super(message);
|
||||||
|
this.code = 500;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BusinessException(Integer code, String message) {
|
||||||
|
super(message);
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BusinessException(Integer code, String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.tuoheng.common.response;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页响应结果
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class PageResult<T> extends Result<List<T>> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总记录数
|
||||||
|
*/
|
||||||
|
private Long total;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前页码
|
||||||
|
*/
|
||||||
|
private Integer pageNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 每页大小
|
||||||
|
*/
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总页数
|
||||||
|
*/
|
||||||
|
private Integer pages;
|
||||||
|
|
||||||
|
public PageResult() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public PageResult(List<T> data, Long total, Integer pageNum, Integer pageSize) {
|
||||||
|
super(200, "查询成功", data);
|
||||||
|
this.total = total;
|
||||||
|
this.pageNum = pageNum;
|
||||||
|
this.pageSize = pageSize;
|
||||||
|
this.pages = (int) Math.ceil((double) total / pageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> PageResult<T> success(List<T> data, Long total, Integer pageNum, Integer pageSize) {
|
||||||
|
return new PageResult<>(data, total, pageNum, pageSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
package com.tuoheng.common.response;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统一响应结果
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class Result<T> implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响应码
|
||||||
|
*/
|
||||||
|
private Integer code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响应消息
|
||||||
|
*/
|
||||||
|
private String msg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响应数据
|
||||||
|
*/
|
||||||
|
private T data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 时间戳
|
||||||
|
*/
|
||||||
|
private Long timestamp;
|
||||||
|
|
||||||
|
public Result() {
|
||||||
|
this.timestamp = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result(Integer code, String msg, T data) {
|
||||||
|
this.code = code;
|
||||||
|
this.msg = msg;
|
||||||
|
this.data = data;
|
||||||
|
this.timestamp = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> Result<T> success() {
|
||||||
|
return new Result<>(200, "操作成功", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> Result<T> success(T data) {
|
||||||
|
return new Result<>(200, "操作成功", data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> Result<T> success(String msg, T data) {
|
||||||
|
return new Result<>(200, msg, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> Result<T> error() {
|
||||||
|
return new Result<>(500, "操作失败", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> Result<T> error(String msg) {
|
||||||
|
return new Result<>(500, msg, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> Result<T> error(Integer code, String msg) {
|
||||||
|
return new Result<>(code, msg, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.tuoheng.common.util;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日期工具类
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
public class DateUtil {
|
||||||
|
|
||||||
|
public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
public static final String PATTERN_DATE = "yyyy-MM-dd";
|
||||||
|
public static final String PATTERN_TIME = "HH:mm:ss";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化日期时间
|
||||||
|
*/
|
||||||
|
public static String format(LocalDateTime dateTime) {
|
||||||
|
if (dateTime == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return dateTime.format(DateTimeFormatter.ofPattern(PATTERN_DATETIME));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化日期时间(自定义格式)
|
||||||
|
*/
|
||||||
|
public static String format(LocalDateTime dateTime, String pattern) {
|
||||||
|
if (dateTime == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return dateTime.format(DateTimeFormatter.ofPattern(pattern));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析日期时间字符串
|
||||||
|
*/
|
||||||
|
public static LocalDateTime parse(String dateTimeStr) {
|
||||||
|
if (dateTimeStr == null || dateTimeStr.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern(PATTERN_DATETIME));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前日期时间
|
||||||
|
*/
|
||||||
|
public static LocalDateTime now() {
|
||||||
|
return LocalDateTime.now();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.tuoheng.common.util;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON工具类
|
||||||
|
*
|
||||||
|
* @author Tuoheng Team
|
||||||
|
*/
|
||||||
|
public class JsonUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对象转JSON字符串
|
||||||
|
*/
|
||||||
|
public static String toJsonString(Object obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return JSON.toJSONString(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON字符串转对象
|
||||||
|
*/
|
||||||
|
public static <T> T parseObject(String jsonStr, Class<T> clazz) {
|
||||||
|
if (jsonStr == null || jsonStr.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return JSON.parseObject(jsonStr, clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON字符串转JSONObject
|
||||||
|
*/
|
||||||
|
public static JSONObject parseObject(String jsonStr) {
|
||||||
|
if (jsonStr == null || jsonStr.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return JSON.parseObject(jsonStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue