拉不拉稀肚拉稀 发表于 2024-5-13 13:04:19

搭建一个Java项目可直接拿去使用的通用工具类

1、通用枚举类

import lombok.Getter;

/**
* @Description 状态码定义约束,共6位数,前三位代表服务,后3位代表接口
* 比如 商品服务210,购物车是220、用户服务230,403代表权限
**/
public enum BizCodeEnum {


    /**
   * 短链分组
   */
    GROUP_REPEAT(23001, "分组名重复"),
    GROUP_OPER_FAIL(23503, "分组名操作失败"),
    GROUP_NOT_EXIST(23404, "分组不存在"),


    /**
   * 验证码
   */
    CODE_TO_ERROR(240001, "接收号码不合规"),
    CODE_LIMITED(240002, "验证码发送过快"),
    CODE_ERROR(240003, "验证码错误"),
    CODE_CAPTCHA_ERROR(240101, "图形验证码错误"),


    /**
   * 账号
   */
    ACCOUNT_REPEAT(250001, "账号已经存在"),
    ACCOUNT_UNREGISTER(250002, "账号不存在"),
    ACCOUNT_PWD_ERROR(250003, "账号或者密码错误"),
    ACCOUNT_UNLOGIN(250004, "账号未登录"),


    /**
   * 短链
   */
    SHORT_LINK_NOT_EXIST(260404, "短链不存在"),


    /**
   * 订单
   */
    ORDER_CONFIRM_PRICE_FAIL(280002, "创建订单-验价失败"),
    ORDER_CONFIRM_REPEAT(280008, "订单恶意-重复提交"),
    ORDER_CONFIRM_TOKEN_EQUAL_FAIL(280009, "订单令牌缺少"),
    ORDER_CONFIRM_NOT_EXIST(280010, "订单不存在"),

    /**
   * 支付
   */
    PAY_ORDER_FAIL(300001, "创建支付订单失败"),
    PAY_ORDER_CALLBACK_SIGN_FAIL(300002, "支付订单回调验证签失败"),
    PAY_ORDER_CALLBACK_NOT_SUCCESS(300003, "支付宝回调更新订单失败"),
    PAY_ORDER_NOT_EXIST(300005, "订单不存在"),
    PAY_ORDER_STATE_ERROR(300006, "订单状态不正常"),
    PAY_ORDER_PAY_TIMEOUT(300007, "订单支付超时"),


    /**
   * 流控操作
   */
    CONTROL_FLOW(500101, "限流控制"),
    CONTROL_DEGRADE(500201, "降级控制"),
    CONTROL_AUTH(500301, "认证控制"),


    /**
   * 流量包操作
   */
    TRAFFIC_FREE_NOT_EXIST(600101, "免费流量包不存在,联系客服"),

    TRAFFIC_REDUCE_FAIL(600102, "流量不足,扣减失败"),

    TRAFFIC_EXCEPTION(600103, "流量包数据异常,用户无流量包"),


    /**
   * 通用操作码
   */

    OPS_REPEAT(110001, "重复操作"),
    OPS_NETWORK_ADDRESS_ERROR(110002, "网络地址错误"),


    /**
   * 文件相关
   */
    FILE_UPLOAD_USER_IMG_FAIL(700101, "用户头像文件上传失败");

    @Getter
    private String message;

    @Getter
    private int code;

    private BizCodeEnum(int code, String message) {
      this.code = code;
      this.message = message;
    }
}全局非常类
import lombok.Data;
import net.xdclass.enums.BizCodeEnum;

@Data
public class BizException extends RuntimeException {

    private int code;

    private String msg;

    public BizException(Integer code, String message) {
      super(message);
      this.code = code;
      this.msg = message;
    }

    public BizException(BizCodeEnum bizCodeEnum) {
      super(bizCodeEnum.getMessage());
      this.code = bizCodeEnum.getCode();
      this.msg = bizCodeEnum.getMessage();
    }
}自定义非常处置惩罚器
import lombok.extern.slf4j.Slf4j;
import net.xdclass.utils.JsonData;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* 自定义异常处理器
*/
@ControllerAdvice
@Slf4j
public class CustomExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData handler(Exception e) {
      if (e instanceof BizException) {
            BizException bizException = (BizException) e;
            log.error("[业务异常]{}",e);
            return JsonData.buildCodeAndMsg(bizException.getCode(),bizException.getMsg());
      }else {
            log.error("[系统异常]{}",e);
            return JsonData.buildError("系统异常");
      }
    }
}2、通用工具类

import lombok.extern.slf4j.Slf4j;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;import java.net.InetAddress;import java.net.UnknownHostException;import java.security.MessageDigest;import java.util.*;@Slf4jpublic class CommonUtil {    /**   * 获取ip   *   * @param request   * @return   */    public static String getIpAddr(HttpServletRequest request) {      String ipAddress = null;      try {            ipAddress = request.getHeader("x-forwarded-for");            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {                ipAddress = request.getHeader("Proxy-Client-IP");            }            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {                ipAddress = request.getHeader("WL-Proxy-Client-IP");            }            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {                ipAddress = request.getRemoteAddr();                if (ipAddress.equals("127.0.0.1")) {                  // 根据网卡取本机设置的IP                  InetAddress inet = null;                  try {                        inet = InetAddress.getLocalHost();                  } catch (UnknownHostException e) {                        e.printStackTrace();                  }                  ipAddress = inet.getHostAddress();                }            }            // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割            if (ipAddress != null && ipAddress.length() > 15) {                // "***.***.***.***".length()                // = 15                if (ipAddress.indexOf(",") > 0) {                  ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));                }            }      } catch (Exception e) {            ipAddress = "";      }      return ipAddress;    }    /**   * 获取全部请求头   *   * @param request   * @return   */    public static Map getAllRequestHeader(HttpServletRequest request) {      Enumeration headerNames = request.getHeaderNames();      Map map = new HashMap();      while (headerNames.hasMoreElements()) {            String key = (String) headerNames.nextElement();            //根据名称获取请求头的值            String value = request.getHeader(key);            map.put(key, value);      }      return map;    }    /**   * MD5加密   *   * @param data   * @return   */    public static String MD5(String data) {      try {            MessageDigest md = MessageDigest.getInstance("MD5");            byte[] array = md.digest(data.getBytes("UTF-8"));            StringBuilder sb = new StringBuilder();            for (byte item : array) {                sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));            }            return sb.toString().toUpperCase();      } catch (Exception exception) {      }      return null;    }    /**   * 获取验证码随机数   *   * @param length   * @return   */    public static String getRandomCode(int length) {      String sources = "0123456789";      Random random = new Random();      StringBuilder sb = new StringBuilder();      for (int j = 0; j < length; j++) {            sb.append(sources.charAt(random.nextInt(9)));      }      return sb.toString();    }    /**   * 获取当前时间戳   *   * @return   */    public static long getCurrentTimestamp() {      return System.currentTimeMillis();    }    /**   * 天生uuid   *   * @return   */    public static String generateUUID() {      return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);    }    /**   * 获取随机长度的串   *   * @param length   * @return   */    private static final String ALL_CHAR_NUM = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";    public static String getStringNumRandom(int length) {      //天生随机数字和字母,      Random random = new Random();      StringBuilder saltString = new StringBuilder(length);      for (int i = 1; i
页: [1]
查看完整版本: 搭建一个Java项目可直接拿去使用的通用工具类