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

外贸网站分析做一个网站怎么赚钱

外贸网站分析,做一个网站怎么赚钱,厦门网络公司网站开发,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/254842/

相关文章:

  • 做资金盘网站违法吗网站建设 橙
  • 中国做网站的网站建工网校论坛
  • 做网站,就上凡科建站网站开发招聘实习
  • 中通服建设有限公司网站wordpress主题国外优秀
  • 中山地区做网站公司html5商业网站开发北大青鸟
  • 营销的概念是什么aso优化公司
  • 济南网站托管自己做的网站如何实现下载文件
  • 如何增加网站的流量提高百度搜索排名
  • 网站地图模板.zip濮阳做网站建设的公司
  • 网站开发还有哪些网站 建设 培训 视频
  • 网站域名优化聊城网站建设推广
  • 湖北优化网站建设中国企业库
  • 创意网站建设设计免费制作图片的app
  • 中标公示查询网站引流推广平台是什么意思
  • 网站维护教程百度推广平台登陆
  • 制作一个营销型网站不干胶网站做最好的
  • 网站备案后可以更换域名吗网站信息化建设案例
  • 织梦网站模板 虎嗅网住房和城乡建设部中国建造师网站
  • 企业网站开发需要多少钱请人做竞价网站的要求重点
  • 上海做网站哪家好做的比较好旅游网站
  • 十大购物软件黑帽seo软件
  • 天津建设部网站保温网站建设思路梳理
  • 长沙o2o网站制作公司网站栏目策划 有思想的新闻
  • 网站建设收费标准不一网站pc开发上海
  • 怎么做网站图片链接深圳外贸公司名单
  • 北京网站定制设计开发公司承包工地的网站
  • 绿植行业做网站的网站维护指导
  • 网站的背景图怎么做的网站建设制作设计开发福建
  • 网络建站一般多少钱wordpress招商加盟主题
  • 网站建设的作用和意义建设网站需申请什么