创建admin用户
创建admin用户有两种方式:
- 直接使用 密码进行注册
- 使用人脸进行注册 若使用人脸进行注册 可以不用输入密码
业务流程:
- 首先判断字段是否有错误 如字段为赋值之类的错误
- 判断是否有图片base64传入 若无base64传入则表示用户必须使用密码进行登录 校验密码是否为空 校验密码是否和重复输入密码一致 若不一致 则抛出异常
- 校验用户是否存在
- 进行注册操作
controller
@Override
public GraceJSONResult addNewAdmin(AdminBO adminBO, BindingResult bindingResult) {
// 1. 判断字段是否有错
if (bindingResult.hasErrors()) {
Map<String, String> bindResultErrors = super.getBindResultErrors(bindingResult);
return GraceJSONResult.errorMap(bindResultErrors);
}
// 2. 判断是否有base64图片 若有base64图片表示人脸识别注册 可以无需输入密码
if (StringUtils.isBlank(adminBO.getImg64())) {
if (StringUtils.isBlank(adminBO.getPassword()) || StringUtils.isBlank(adminBO.getConfirmPassword())) {
GraceException.display(ResponseStatusEnum.ADMIN_PASSWORD_ERROR);
}
// 判断密码和确认密码是否一致
if (!adminBO.getPassword().equals(adminBO.getConfirmPassword())) {
GraceException.display(ResponseStatusEnum.ADMIN_PASSWORD_ERROR);
}
}
// 校验用户是否存在
this.checkAdminExits(adminBO.getUsername());
adminService.addAdminUser(adminBO);
return GraceJSONResult.ok();
}
service
业务流程:
- 根据BO中的值进行赋值至AdminUser对象中
- 判断密码和确认密码是否为空 若不为空则使用BCrypt加密算法将密码进行加密
- 判断是否有人脸数据进行传入 若有传入则进行赋值
- 执行插入操作
- 若插入条数 != 1 则表示插入失败 抛出异常
@Override
@Transactional
public void addAdminUser(AdminBO adminBO) {
AdminUser adminUser = new AdminUser();
adminUser.setAdminName(adminBO.getAdminName());
adminUser.setUsername(adminBO.getUsername());
if (StringUtils.isNotBlank(adminBO.getPassword()) && StringUtils.isNotBlank(adminBO.getConfirmPassword())) {
String password = BCrypt.hashpw(adminBO.getPassword(), BCrypt.gensalt());
adminUser.setPassword(password);
}
if (StringUtils.isNotBlank(adminBO.getFaceId())) {
adminUser.setFaceId(adminBO.getFaceId());
}
adminUser.setCreatedTime(new Date());
adminUser.setUpdatedTime(new Date());
int result = adminMapper.insert(adminUser);
if (result != 1) {
GraceException.display(ResponseStatusEnum.ADMIN_CREATE_ERROR);
}
}
虽然道路是曲折的,但前途是光明的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律