483 字
2 分钟
用户中心项目(一些常见通用的代码)
2025-10-09

项目#

用户中心项目,记录一些以后可能会用到的新知识

Hutool工具库

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version> <!-- 替换为最新版本 -->
</dependency>

判断所有的字符串不为空

StrUtil.isAllNotEmpty(userAccount,userPassword,checkPassword)

账号密码校验

//判断账户
// 4-20位字符
//允许字母、数字、下划线
//必须以字母开头
String usernameRegex = "^[a-zA-Z]\\w{3,19}$"; // 正则表达式
if(!ReUtil.isMatch(usernameRegex, userAccount)) {
    return -1;
}

//校验密码
//8-16位字符
//必须包含大小写字母、数字、特殊符号(如 !@#$%^&*)
String passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*]).{8,16}$";
if (!ReUtil.isMatch(passwordRegex, userPassword)) {
    return -1;
}

密码加密,md5加密

String password = DigestUtil.md5Hex(userPassword);

断言测试

import static org.junit.jupiter.api.Assertions.*;
assertEquals(-1, userService.UserRegister("", "/521010Hao", "/521010Hao"));

没有办法确定请求参数大小的时候尽量不要使用Get请求

逻辑删除配置

mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  global-config:
    db-config:
      update-strategy: not_null
      logic-delete-field: deleted
      logic-not-delete-value: 0
      logic-delete-value: 1

通用的ErrorCode枚举类

@Getter
public enum ErrorCode {
    PARAMS_ERROR(400, "请求参数错误", ""),
    PARAMS_NULL(401, "请求参数为空", ""),
    NO_AUTH(402, "权限不足", ""),
    NO_CURRENT_USER(403, "不存在当前用户", ""),
    NO_REQUEST_OBJECT(404, "没有获取到request对象", "");

    private final int code;
    private final String message;
    private final String description;

    ErrorCode(int code, String message, String description) {
        this.code = code;
        this.message = message;
        this.description = description;
    }

}

通用的ResultVo返回对象

@Data
public class ResultVo<T>{
    int code;
    T data;
    String message;

    public ResultVo(int code, T data, String message) {
        this.code = code;
        this.data = data;
        this.message = message;
    }

    public static <T> ResultVo<T> success(T data) {
        return new ResultVo<T>(200, data, "success");
    }

    public static <T> ResultVo<T> success() {
        return new ResultVo<T>(200, null, "success");
    }

    public static <T> ResultVo<T> success(String message) {
        return new ResultVo<T>(200, null, message);
    }

    public static <T> ResultVo<T> success(String message, T data) {
        return new ResultVo<T>(200, data, message);
    }

    public static <T> ResultVo<T> fail(String message) {
        return new ResultVo<T>(400, null, message);
    }

    public static <T> ResultVo<T> fail() {
        return new ResultVo<T>(400, null, "fail");
    }

    public static <T> ResultVo<T> message(int code, String message, T data) {
        return new ResultVo<T>(code, data, message);
    }

    public static <T> ResultVo<T> fail(int code, String message) {
        return new ResultVo<T>(code, null, message);
    }

    public static <T> ResultVo<T> fail(ErrorCode errorCode) {
        return new ResultVo<T>(errorCode.getCode(), null, errorCode.getMessage());
    }
}

创建登陆异常类

public class LoginException extends RuntimeException {
    public LoginException(String message) {
        super(message);
    }
}

异常全局处理

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(LoginException.class)
    public ResultVo<?> exceptionHandler(LoginException e) {
        return ResultVo.fail(ErrorCode.LOGIN_ERROR, e.getMessage());
    }
}
用户中心项目(一些常见通用的代码)
https://thrinisty.github.io/Blog/posts/用户中心项目一些常见通用的代码/
作者
Thrinisty
发布于
2025-10-09
许可协议
CC BY-NC-SA 4.0