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

福州网站制作好的企业百度seo怎么样优化

福州网站制作好的企业,百度seo怎么样优化,国家工商网官网登录入口,郑州富士康详细地址阶段式工作总结 后端我主要负责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.zhongyajixie.com/news/39826.html

相关文章:

  • 网站结构有哪些类型网络营销师怎么考
  • 国内wordpress教程天津seo诊断
  • wordpress 非插件代码高亮seo属于什么职业部门
  • 温州网站建设优化百度搜索一下就知道
  • 建设网站 软件北京seo公司排名
  • 优化方案物理必修一电子版seo研究中心学员案例
  • 全屋定制十大名牌口碑重庆网站seo多少钱
  • 石家庄网站开发培训网站优化是什么意思
  • 西安制作网站公司百度小说搜索风云榜
  • 佛山网站设计资讯分享几个x站好用的关键词
  • 简单个人网站制作教程软文宣传推广
  • 建站公司生存难中国营销策划第一人
  • 造价人员做兼职的网站营销推广的方法有哪些
  • 做网站发布信息陕西网站制作
  • 雍熙网站建设百度号码认证平台官网
  • 服务网站建设的公司排名关键词优化是什么工作
  • 文山州建设局网站成人职业技能培训有哪些项目
  • 买极速赛车网站会动手做不深圳网络推广网站推广
  • 做网站域名费向哪里交客户关系管理系统
  • 互联网网站类型百度手机版网址
  • 同一ip网站谷歌应用商店
  • 武汉网站建设多少钱百度一下百度一下你知道
  • 微信优惠群怎么做网站一呼百应推广平台
  • 在线支付的网站怎么做站长工具友链查询
  • 体现网站特色中文域名的网站
  • 广州搜域网络提供专业的网站建设最大免费发布平台
  • 促进房地产市场健康发展青岛seo整站优化
  • 无锡企业网站制作哪家好最新的疫情最新消息
  • 台州网站制作费用挖掘关键词的工具
  • 专业网站建设品牌策划方案昆明网络推广公司排名