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

拉不拉稀肚拉稀  金牌会员 | 2024-5-13 13:04:19 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 859|帖子 859|积分 2579

1、通用枚举类
  1. import lombok.Getter;
  2. /**
  3. * @Description 状态码定义约束,共6位数,前三位代表服务,后3位代表接口
  4. * 比如 商品服务210,购物车是220、用户服务230,403代表权限
  5. **/
  6. public enum BizCodeEnum {
  7.     /**
  8.      * 短链分组
  9.      */
  10.     GROUP_REPEAT(23001, "分组名重复"),
  11.     GROUP_OPER_FAIL(23503, "分组名操作失败"),
  12.     GROUP_NOT_EXIST(23404, "分组不存在"),
  13.     /**
  14.      * 验证码
  15.      */
  16.     CODE_TO_ERROR(240001, "接收号码不合规"),
  17.     CODE_LIMITED(240002, "验证码发送过快"),
  18.     CODE_ERROR(240003, "验证码错误"),
  19.     CODE_CAPTCHA_ERROR(240101, "图形验证码错误"),
  20.     /**
  21.      * 账号
  22.      */
  23.     ACCOUNT_REPEAT(250001, "账号已经存在"),
  24.     ACCOUNT_UNREGISTER(250002, "账号不存在"),
  25.     ACCOUNT_PWD_ERROR(250003, "账号或者密码错误"),
  26.     ACCOUNT_UNLOGIN(250004, "账号未登录"),
  27.     /**
  28.      * 短链
  29.      */
  30.     SHORT_LINK_NOT_EXIST(260404, "短链不存在"),
  31.     /**
  32.      * 订单
  33.      */
  34.     ORDER_CONFIRM_PRICE_FAIL(280002, "创建订单-验价失败"),
  35.     ORDER_CONFIRM_REPEAT(280008, "订单恶意-重复提交"),
  36.     ORDER_CONFIRM_TOKEN_EQUAL_FAIL(280009, "订单令牌缺少"),
  37.     ORDER_CONFIRM_NOT_EXIST(280010, "订单不存在"),
  38.     /**
  39.      * 支付
  40.      */
  41.     PAY_ORDER_FAIL(300001, "创建支付订单失败"),
  42.     PAY_ORDER_CALLBACK_SIGN_FAIL(300002, "支付订单回调验证签失败"),
  43.     PAY_ORDER_CALLBACK_NOT_SUCCESS(300003, "支付宝回调更新订单失败"),
  44.     PAY_ORDER_NOT_EXIST(300005, "订单不存在"),
  45.     PAY_ORDER_STATE_ERROR(300006, "订单状态不正常"),
  46.     PAY_ORDER_PAY_TIMEOUT(300007, "订单支付超时"),
  47.     /**
  48.      * 流控操作
  49.      */
  50.     CONTROL_FLOW(500101, "限流控制"),
  51.     CONTROL_DEGRADE(500201, "降级控制"),
  52.     CONTROL_AUTH(500301, "认证控制"),
  53.     /**
  54.      * 流量包操作
  55.      */
  56.     TRAFFIC_FREE_NOT_EXIST(600101, "免费流量包不存在,联系客服"),
  57.     TRAFFIC_REDUCE_FAIL(600102, "流量不足,扣减失败"),
  58.     TRAFFIC_EXCEPTION(600103, "流量包数据异常,用户无流量包"),
  59.     /**
  60.      * 通用操作码
  61.      */
  62.     OPS_REPEAT(110001, "重复操作"),
  63.     OPS_NETWORK_ADDRESS_ERROR(110002, "网络地址错误"),
  64.     /**
  65.      * 文件相关
  66.      */
  67.     FILE_UPLOAD_USER_IMG_FAIL(700101, "用户头像文件上传失败");
  68.     @Getter
  69.     private String message;
  70.     @Getter
  71.     private int code;
  72.     private BizCodeEnum(int code, String message) {
  73.         this.code = code;
  74.         this.message = message;
  75.     }
  76. }
复制代码
全局非常类
  1. import lombok.Data;
  2. import net.xdclass.enums.BizCodeEnum;
  3. @Data
  4. public class BizException extends RuntimeException {
  5.     private int code;
  6.     private String msg;
  7.     public BizException(Integer code, String message) {
  8.         super(message);
  9.         this.code = code;
  10.         this.msg = message;
  11.     }
  12.     public BizException(BizCodeEnum bizCodeEnum) {
  13.         super(bizCodeEnum.getMessage());
  14.         this.code = bizCodeEnum.getCode();
  15.         this.msg = bizCodeEnum.getMessage();
  16.     }
  17. }
复制代码
自定义非常处置惩罚器
  1. import lombok.extern.slf4j.Slf4j;
  2. import net.xdclass.utils.JsonData;
  3. import org.springframework.web.bind.annotation.ControllerAdvice;
  4. import org.springframework.web.bind.annotation.ExceptionHandler;
  5. import org.springframework.web.bind.annotation.ResponseBody;
  6. /**
  7. * 自定义异常处理器
  8. */
  9. @ControllerAdvice
  10. @Slf4j
  11. public class CustomExceptionHandler {
  12.     @ExceptionHandler(value = Exception.class)
  13.     @ResponseBody
  14.     public JsonData handler(Exception e) {
  15.         if (e instanceof BizException) {
  16.             BizException bizException = (BizException) e;
  17.             log.error("[业务异常]{}",e);
  18.             return JsonData.buildCodeAndMsg(bizException.getCode(),bizException.getMsg());
  19.         }else {
  20.             log.error("[系统异常]{}",e);
  21.             return JsonData.buildError("系统异常");
  22.         }
  23.     }
  24. }
复制代码
2、通用工具类

[code]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("roxy-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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表