05. 开发普通用户登录功能

1453 字约 3 分钟读完1144 次阅读更新于 2026/5/3

完成SQL表的创建
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
username varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '账号',
password varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码',
name varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名称',
avatar varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像',
role varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '角色',
sex varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '性别',
phone varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
account decimal(10,2) DEFAULT '0.00' COMMENT '账户余额',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息';
完成后台接口开发
新建一个角色的枚举

新建用户的实体类
public class User extends Account {
private Integer id;
private String username;
private String password;
private String name;
private String avatar;
private String role;

private String sex;
private String phone;
private BigDecimal account;

}
完善后台接口逻辑
@PostMapping("/login")
public Result login(@RequestBody Account account) {
if (RoleEnum.ADMIN.name().equals(account.getRole())) {
account = adminService.login(account);
} else if (RoleEnum.USER.name().equals(account.getRole())) {
account = userService.login(account);
} else {
return Result.error("您的参数输入错误");
}
return Result.success(account);
}
public Account login(Account account) {
String username = account.getUsername();
// 根据账号查询数据
User dbUser = userMapper.selectByUsername(username);
if (dbUser == null) {
throw new CustomException("账号不存在");
}
// 校验密码
if (!dbUser.getPassword().equals(account.getPassword())) {
throw new CustomException("账号或者密码错误");
}
return dbUser;
}
完成页面角色选择