当前位置: 首页 > news >正文

wordpress 模板 排名网站优化排名方法有哪些

wordpress 模板 排名,网站优化排名方法有哪些,花生棒 做网站,北京哪里做网站好阶段式工作总结 后端我主要负责user模块,包含UserController和UserService,代码和逻辑展示如下: 用户注册 接收 UserRegisterRequest,这是一个数据传输对象,用于在 前端与后端之间传输用户注册数据。接下来判空&…

阶段式工作总结

后端我主要负责user模块,包含UserController和UserService,代码和逻辑展示如下:

用户注册

接收 UserRegisterRequest,这是一个数据传输对象,用于在 前端与后端之间传输用户注册数据。接下来判空,然后调用service中的userregister函数,我们看service层的这个函数,一系列校验……使用 synchronized 锁住 userAccount,防止并发注册相同账号:用synchronized 创建一个同步代码块,当两个线程注册同一个用户名时,通过 intern() 方法,两个用户名相同的线程会获取到常量池中同一个字符串对象的引用,count>0,即可判断用户名重复。然后如果不重复则继续进行密码加密逻辑:用 MD5 算法对密码进行加密,SALT 是之前定义的盐值。然后创建新的 User 对象,设置用户账号和加密后的密码,调用 save 方法保存用户数据到数据库,如果保存失败,抛出系统错误异常,保存成功则返回新创建用户的ID。

/*** 用户注册** @param userRegisterRequest* @return*/@PostMapping("/register")public BaseResponse<Long> userRegister(@RequestBody UserRegisterRequest userRegisterRequest) {if (userRegisterRequest == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}String userAccount = userRegisterRequest.getUserAccount();String userPassword = userRegisterRequest.getUserPassword();String checkPassword = userRegisterRequest.getCheckPassword();if (StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {return null;}long result = userService.userRegister(userAccount, userPassword, checkPassword);return ResultUtils.success(result);}

用户登录

首先也是接收userloginrequest用于前后端传输用户登录数据,然后在账号密码不为空的情况下调用userService.userLogin() 完成登录逻辑。看service层,校验……将密码加密,将account和加密后的密码与数据库中已有信息进行比对,如果找到匹配的用户,返回 User 对象,如果没有找到匹配的用户,返回 null。登录失败,错误码ErrorCode.PARAMS_ERROR;登陆成功则将用户信息存储在会话中,USER_LOGIN_STATE 是常量,表示会话的 key。返回用户视图对象,过滤敏感信息。

 /*** 用户登录** @param userLoginRequest* @param request* @return*/@PostMapping("/login")public BaseResponse<LoginUserVO> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {if (userLoginRequest == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}String userAccount = userLoginRequest.getUserAccount();String userPassword = userLoginRequest.getUserPassword();if (StringUtils.isAnyBlank(userAccount, userPassword)) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}LoginUserVO loginUserVO = userService.userLogin(userAccount, userPassword, request);return ResultUtils.success(loginUserVO);}

用户注销

调用service,检查是否已登录(Session 是否存在),移除 USER_LOGIN_STATE 对应的 Session。

/*** 用户注销** @param request* @return*/@PostMapping("/logout")public BaseResponse<Boolean> userLogout(HttpServletRequest request) {if (request == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}boolean result = userService.userLogout(request);return ResultUtils.success(result);}

获取当前用户信息

getLoginUser() 获取当前用户。Service中的方法是从session中获取用户,如果是空则抛出异常。这个 currentUser 可能是从会话中获取的,可能不是最新的数据,使用 getById 方法从数据库中重新查询用户信息,确保了获取到的是最新的用户数据。

/*** 获取当前登录用户** @param request* @return*/@GetMapping("/get/login")public BaseResponse<LoginUserVO> getLoginUser(HttpServletRequest request) {User user = userService.getLoginUser(request);return ResultUtils.success(userService.getLoginUserVO(user));}

Service方法判定是否为管理员

这段代码实现了判断用户是否为管理员的功能,它提供了两个重载方法:一个接收 HttpServletRequest 参数,从会话中获取用户信息并判断;另一个直接接收 User 对象进行判断。判断逻辑是检查用户对象是否存在且其 userRole 字段是否等于 UserRoleEnum.ADMIN 的值,如果满足这两个条件,则说明该用户是管理员。这种设计既支持从会话中获取用户信息进行判断,也支持直接传入用户对象进行判断。

/*** 是否为管理员** @param request* @return*/@Overridepublic boolean isAdmin(HttpServletRequest request) {// 仅管理员可查询Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE);User user = (User) userObj;return isAdmin(user);}@Overridepublic boolean isAdmin(User user) {return user != null && UserRoleEnum.ADMIN.getValue().equals(user.getUserRole());}

管理员添加/删除/更新用户

AuthCheck是自定义权限注解,只有管理员 (ADMIN) 可以访问。UserAddRequest前端传入的 数据传输对象,仅包含必要的用户信息(如 username, password, role 等)。通过BeanUtils.copyProperties():Spring 提供的工具方法,将数据传输对象的属性复制到实体类,避免手动 set 每个字段。然后MyBatis-Plus 提供的通用 Service 方法,执行insert方法将数据存入数据库。

直接调用 MyBatis-Plus 的 save()、removeById()、updateById() 方法。

 /*** 创建用户** @param userAddRequest* @param request* @return*/@PostMapping("/add")@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)public BaseResponse<Long> addUser(@RequestBody UserAddRequest userAddRequest, HttpServletRequest request) {if (userAddRequest == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}User user = new User();BeanUtils.copyProperties(userAddRequest, user);boolean result = userService.save(user);ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);return ResultUtils.success(user.getId());}/*** 删除用户** @param deleteRequest* @param request* @return*/@PostMapping("/delete")@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)public BaseResponse<Boolean> deleteUser(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) {if (deleteRequest == null || deleteRequest.getId() <= 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}boolean b = userService.removeById(deleteRequest.getId());return ResultUtils.success(b);}/*** 更新用户** @param userUpdateRequest* @param request* @return*/@PostMapping("/update")@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)public BaseResponse<Boolean> updateUser(@RequestBody UserUpdateRequest userUpdateRequest,HttpServletRequest request) {if (userUpdateRequest == null || userUpdateRequest.getId() == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}User user = new User();BeanUtils.copyProperties(userUpdateRequest, user);boolean result = userService.updateById(user);ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);return ResultUtils.success(true);}

根据用户id获取用户信息

首先检查id是否合法,不合法则抛出异常。合法则通过服务层根据id查询,不存在则抛出异常,存在则返回用户信息。

根据id获得用户视图对象,调用上面的方法获取用户基本信息,然后下面从响应中提取用户数据,将用户对象转换为视图对象并返回。

VO(View Object,视图对象)是一种设计模式,用于将后端数据模型转换为适合前端展示的形式。它通常只包含前端需要展示的字段,可能包含计算字段或格式化后的数据,隐藏敏感或不必要的后端字段。

/*** 根据 id 获取包装类** @param id* @param request* @return*/@GetMapping("/get/vo")public BaseResponse<UserVO> getUserVOById(long id, HttpServletRequest request) {BaseResponse<User> response = getUserById(id, request);User user = response.getData();return ResultUtils.success(userService.getUserVO(user));}

更新个人信息

首先检查请求参数是否为空,为空则抛出异常,然后实现更改密码系列操作,获取新密码,如果获取到的数据不为空则检查长度。合法则获得输入的原密码,将原密码加密,与数据库存储的原密码比对,相同则可以修改,md5加密新密码并设置到更新请求对象中,旧密码输入的不对则不允许更改。接下来将更改保存到数据库中:获得当前的用户对象,将用户id设置为当前登录用户id,通过update方法将更新保存至数据库中,结束信息更新。

/*** 更新个人信息** @param userUpdateMyRequest* @param request* @return*/@PostMapping("/update/my")public BaseResponse<Boolean> updateMyUser(@RequestBody UserUpdateMyRequest userUpdateMyRequest,HttpServletRequest request) {if (userUpdateMyRequest == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}String updatePassword = userUpdateMyRequest.getUpdatePassword();if (updatePassword != null) {if (updatePassword.length() < 8) {throw new BusinessException(ErrorCode.PARAMS_ERROR, "密码设置过短,至少8位");}//说明需要更新密码String AccessPassword = userUpdateMyRequest.getAccessPassword();if (AccessPassword != null) {String encryptAccessPassword = DigestUtils.md5DigestAsHex((SALT + AccessPassword).getBytes());if (encryptAccessPassword.equals(userUpdateMyRequest.getUserPassword())) {// 2. 加密String encryptPassword = DigestUtils.md5DigestAsHex((SALT + updatePassword).getBytes());userUpdateMyRequest.setUserPassword(encryptPassword);} else {return ResultUtils.error(1, "原密码不正确");}}}User loginUser = userService.getLoginUser(request);User user = new User();BeanUtils.copyProperties(userUpdateMyRequest, user);user.setId(loginUser.getId());boolean result = userService.updateById(user);ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);return ResultUtils.success(true);}

以上是后端controller中的方法,大部分都调用了UserService中的方法,逻辑已经阐述清晰故不再黏贴service方法了。

项目实训中我的工作至此告一段落,接下来会进行总结和反思~ 

http://www.yayakq.cn/news/510946/

相关文章:

  • 申请建设网站经费的请示网站建设是自己做好还是外包
  • 京东网站开发wordpress 上传 七牛
  • 广州番禺桥南做网站寻找移动网站建设
  • wordpress wp_set_auth_cookieseo精灵
  • 包装模板网站简单网页设计作品欣赏
  • 手机网站模板建站中山哪家建网站好
  • 承德建设工程信息网站外贸网站wordpress加ssl
  • 群推广网站国家重点项目建设库网站
  • 建设个网站通用cms网站
  • 静态网站和伪静态seo招聘类网站该怎么做
  • 网站收录后然后怎么做模板网站建设合同
  • 在线做c 题的网站代运营服务公司
  • 厦门建站公司哪家好wordpress账号注册页面
  • 建设工程有限公司企业网站淄博怎么做网站
  • 上海设计师网站有哪些wordpress收录p
  • 网站开发什么比较有创意做php网站用什么软件开发
  • 金华网站建设哪家好固始网站建设公司
  • 电子商务类网站建设网站的前台和后台
  • 网站图片一般分辨率做多大上海网站建设找思创
  • 网站建设岗位说明书wordpress skype
  • 合肥专业做网站公司有哪些东莞网络优化
  • 电子商务网站开发的基本要求高清图片素材网站免费
  • 中文网站建设开发广西建设厅网证件查询
  • 长春火车站到长春机场大巴时刻表个人微信管理系统
  • 建设商务公司网站完整网站设计
  • 创意聊城做网站的公司网站优化哪里可以做
  • 湖南网站建站系统平台营销型网站建设域名
  • 做网站logo用啥软件福州公司网站
  • 智能优化网站石家庄网推公司
  • 陕西建工第三建设集团网站网站建设高端培训