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

php做的网站怎么入侵wordpress路由重写

php做的网站怎么入侵,wordpress路由重写,wordpress 更新过慢,商务软文写作范文200字《深入剖析题目接口控制器#xff1a;功能、实现与应用》 一、引言 在在线编程平台或竞赛系统中#xff0c;题目管理和提交是核心功能之一。QuestionController 类作为控制器层#xff0c;承担着处理与题目相关的各种请求的重要职责#xff0c;包括题目的增删改查、题目提…《深入剖析题目接口控制器功能、实现与应用》 一、引言 在在线编程平台或竞赛系统中题目管理和提交是核心功能之一。QuestionController 类作为控制器层承担着处理与题目相关的各种请求的重要职责包括题目的增删改查、题目提交等操作。本文将详细剖析该类的代码深入理解其功能和实现细节。 二、类概述 QuestionController 类使用 Spring 的 RestController 注解表明它是一个 RESTful 风格的控制器用于处理 HTTP 请求。它位于 / 根路径下提供了一系列与题目相关的接口。该类依赖于 QuestionService、UserFeignClient 和 QuestionSubmitService 等服务通过这些服务来完成具体的业务逻辑。 RestController RequestMapping(/) Slf4j public class QuestionController {Resourceprivate QuestionService questionService;Resourceprivate UserFeignClient userFeignClient;Resourceprivate QuestionSubmitService questionSubmitService;private final static Gson GSON new Gson();// ... 具体方法 ... } 三、增删改查功能实现 3.1 创建题目 PostMapping(/add) public BaseResponseLong addQuestion(RequestBody QuestionAddRequest questionAddRequest, HttpServletRequest request) {if (questionAddRequest null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}Question question new Question();BeanUtils.copyProperties(questionAddRequest, question);ListString tags questionAddRequest.getTags();if (tags ! null) {question.setTags(GSON.toJson(tags));}ListJudgeCase judgeCase questionAddRequest.getJudgeCase();if (judgeCase ! null) {question.setJudgeCase(GSON.toJson(judgeCase));}JudgeConfig judgeConfig questionAddRequest.getJudgeConfig();if (judgeConfig ! null) {question.setJudgeConfig(GSON.toJson(judgeConfig));}questionService.validQuestion(question, true);User loginUser userFeignClient.getLoginUser(request);question.setUserId(loginUser.getId());question.setFavourNum(0);question.setThumbNum(0);boolean result questionService.save(question);ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);long newQuestionId question.getId();return ResultUtils.success(newQuestionId); } 功能处理创建题目的请求将用户提交的题目信息保存到数据库中。实现步骤 检查请求参数是否为空若为空则抛出参数错误异常。将 QuestionAddRequest 对象的属性复制到 Question 对象中。对题目标签、测试用例和判题配置进行 JSON 序列化处理。调用 questionService 的 validQuestion 方法对题目信息进行校验。获取当前登录用户的信息并将用户 ID 关联到题目中。初始化题目点赞数和收藏数为 0。调用 questionService 的 save 方法保存题目信息若保存失败则抛出操作错误异常。返回新创建题目的 ID。 3.2 删除题目 PostMapping(/delete) public BaseResponseBoolean deleteQuestion(RequestBody DeleteRequest deleteRequest, HttpServletRequest request) {if (deleteRequest null || deleteRequest.getId() 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}User user userFeignClient.getLoginUser(request);long id deleteRequest.getId();// 判断是否存在Question oldQuestion questionService.getById(id);ThrowUtils.throwIf(oldQuestion null, ErrorCode.NOT_FOUND_ERROR);// 仅本人或管理员可删除if (!oldQuestion.getUserId().equals(user.getId()) !userFeignClient.isAdmin(user)) {throw new BusinessException(ErrorCode.NO_AUTH_ERROR);}boolean b questionService.removeById(id);return ResultUtils.success(b); } 功能处理删除题目的请求从数据库中删除指定 ID 的题目。实现步骤 检查请求参数是否合法若不合法则抛出参数错误异常。获取当前登录用户的信息。根据题目 ID 查询题目信息若题目不存在则抛出未找到错误异常。检查当前用户是否有删除权限只有题目创建者或管理员才能删除题目若没有权限则抛出无权限错误异常。调用 questionService 的 removeById 方法删除题目信息并返回删除结果。 3.3 更新题目仅管理员 PostMapping(/update) AuthCheck(mustRole UserConstant.ADMIN_ROLE) public BaseResponseBoolean updateQuestion(RequestBody QuestionUpdateRequest questionUpdateRequest) {if (questionUpdateRequest null || questionUpdateRequest.getId() 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}Question question new Question();BeanUtils.copyProperties(questionUpdateRequest, question);ListString tags questionUpdateRequest.getTags();if (tags ! null) {question.setTags(GSON.toJson(tags));}ListJudgeCase judgeCase questionUpdateRequest.getJudgeCase();if (judgeCase ! null) {question.setJudgeCase(GSON.toJson(judgeCase));}JudgeConfig judgeConfig questionUpdateRequest.getJudgeConfig();if (judgeConfig ! null) {question.setJudgeConfig(GSON.toJson(judgeConfig));}// 参数校验questionService.validQuestion(question, false);long id questionUpdateRequest.getId();// 判断是否存在Question oldQuestion questionService.getById(id);ThrowUtils.throwIf(oldQuestion null, ErrorCode.NOT_FOUND_ERROR);boolean result questionService.updateById(question);return ResultUtils.success(result); } 功能处理更新题目的请求只有管理员才能执行此操作。实现步骤 检查请求参数是否合法若不合法则抛出参数错误异常。将 QuestionUpdateRequest 对象的属性复制到 Question 对象中。对题目标签、测试用例和判题配置进行 JSON 序列化处理。调用 questionService 的 validQuestion 方法对题目信息进行校验。根据题目 ID 查询题目信息若题目不存在则抛出未找到错误异常。调用 questionService 的 updateById 方法更新题目信息并返回更新结果。 3.4 根据 ID 获取题目 GetMapping(/get) public BaseResponseQuestion getQuestionById(long id, HttpServletRequest request) {if (id 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}Question question questionService.getById(id);if (question null) {throw new BusinessException(ErrorCode.NOT_FOUND_ERROR);}User loginUser userFeignClient.getLoginUser(request);// 不是本人或管理员不能直接获取所有信息if (!question.getUserId().equals(loginUser.getId()) !userFeignClient.isAdmin(loginUser)) {throw new BusinessException(ErrorCode.NO_AUTH_ERROR);}return ResultUtils.success(question); } 功能根据题目 ID 获取题目信息只有题目创建者或管理员才能获取完整信息。实现步骤 检查题目 ID 是否合法若不合法则抛出参数错误异常。根据题目 ID 查询题目信息若题目不存在则抛出未找到错误异常。获取当前登录用户的信息。检查当前用户是否有获取完整信息的权限若没有权限则抛出无权限错误异常。返回题目信息。 3.5 根据 ID 获取脱敏后的题目信息 GetMapping(/get/vo) public BaseResponseQuestionVO getQuestionVOById(long id, HttpServletRequest request) {if (id 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}Question question questionService.getById(id);if (question null) {throw new BusinessException(ErrorCode.NOT_FOUND_ERROR);}return ResultUtils.success(questionService.getQuestionVO(question, request)); } 功能根据题目 ID 获取脱敏后的题目信息适用于普通用户查看。实现步骤 检查题目 ID 是否合法若不合法则抛出参数错误异常。根据题目 ID 查询题目信息若题目不存在则抛出未找到错误异常。调用 questionService 的 getQuestionVO 方法获取脱敏后的题目信息并返回。 3.6 分页获取题目列表封装类 PostMapping(/list/page/vo) public BaseResponsePageQuestionVO listQuestionVOByPage(RequestBody QuestionQueryRequest questionQueryRequest,HttpServletRequest request) {long current questionQueryRequest.getCurrent();long size questionQueryRequest.getPageSize();// 限制爬虫ThrowUtils.throwIf(size 20, ErrorCode.PARAMS_ERROR);PageQuestion questionPage questionService.page(new Page(current, size),questionService.getQueryWrapper(questionQueryRequest));return ResultUtils.success(questionService.getQuestionVOPage(questionPage, request)); } 功能分页获取题目列表并返回封装后的题目信息QuestionVO。实现步骤 从请求参数中获取当前页码和每页数量。检查每页数量是否超过限制若超过则抛出参数错误异常防止爬虫过度请求。调用 questionService 的 page 方法进行分页查询。调用 questionService 的 getQuestionVOPage 方法将查询结果封装为 QuestionVO 并返回。 3.7 分页获取当前用户创建的题目列表 PostMapping(/my/list/page/vo) public BaseResponsePageQuestionVO listMyQuestionVOByPage(RequestBody QuestionQueryRequest questionQueryRequest,HttpServletRequest request) {if (questionQueryRequest null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}User loginUser userFeignClient.getLoginUser(request);questionQueryRequest.setUserId(loginUser.getId());long current questionQueryRequest.getCurrent();long size questionQueryRequest.getPageSize();// 限制爬虫ThrowUtils.throwIf(size 20, ErrorCode.PARAMS_ERROR);PageQuestion questionPage questionService.page(new Page(current, size),questionService.getQueryWrapper(questionQueryRequest));return ResultUtils.success(questionService.getQuestionVOPage(questionPage, request)); } 功能分页获取当前用户创建的题目列表并返回封装后的题目信息QuestionVO。实现步骤 检查请求参数是否为空若为空则抛出参数错误异常。获取当前登录用户的信息并将用户 ID 设置到查询请求中。从请求参数中获取当前页码和每页数量。检查每页数量是否超过限制若超过则抛出参数错误异常防止爬虫过度请求。调用 questionService 的 page 方法进行分页查询。调用 questionService 的 getQuestionVOPage 方法将查询结果封装为 QuestionVO 并返回。 3.8 分页获取题目列表仅管理员 PostMapping(/list/page) AuthCheck(mustRole UserConstant.ADMIN_ROLE) public BaseResponsePageQuestion listQuestionByPage(RequestBody QuestionQueryRequest questionQueryRequest,HttpServletRequest request) {long current questionQueryRequest.getCurrent();long size questionQueryRequest.getPageSize();PageQuestion questionPage questionService.page(new Page(current, size),questionService.getQueryWrapper(questionQueryRequest));return ResultUtils.success(questionPage); } 功能分页获取题目列表只有管理员才能执行此操作。实现步骤 从请求参数中获取当前页码和每页数量。调用 questionService 的 page 方法进行分页查询。返回查询结果。 四、其他功能实现 4.1 编辑题目用户 PostMapping(/edit) public BaseResponseBoolean editQuestion(RequestBody QuestionEditRequest questionEditRequest, HttpServletRequest request) {if (questionEditRequest null || questionEditRequest.getId() 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}Question question new Question();BeanUtils.copyProperties(questionEditRequest, question);ListString tags questionEditRequest.getTags();if (tags ! null) {question.setTags(GSON.toJson(tags));}ListJudgeCase judgeCase questionEditRequest.getJudgeCase();if (judgeCase ! null) {question.setJudgeCase(GSON.toJson(judgeCase));}JudgeConfig judgeConfig questionEditRequest.getJudgeConfig();if (judgeConfig ! null) {question.setJudgeConfig(GSON.toJson(judgeConfig));}// 参数校验questionService.validQuestion(question, false);User loginUser userFeignClient.getLoginUser(request);long id questionEditRequest.getId();// 判断是否存在Question oldQuestion questionService.getById(id);ThrowUtils.throwIf(oldQuestion null, ErrorCode.NOT_FOUND_ERROR);// 仅本人或管理员可编辑if (!oldQuestion.getUserId().equals(loginUser.getId()) !userFeignClient.isAdmin(loginUser)) {throw new BusinessException(ErrorCode.NO_AUTH_ERROR);}boolean result questionService.updateById(question);return ResultUtils.success(result); } 功能处理编辑题目的请求只有题目创建者或管理员才能执行此操作。实现步骤 检查请求参数是否合法若不合法则抛出参数错误异常。将 QuestionEditRequest 对象的属性复制到 Question 对象中。对题目标签、测试用例和判题配置进行 JSON 序列化处理。调用 questionService 的 validQuestion 方法对题目信息进行校验。获取当前登录用户的信息。根据题目 ID 查询题目信息若题目不存在则抛出未找到错误异常。检查当前用户是否有编辑权限若没有权限则抛出无权限错误异常。调用 questionService 的 updateById 方法更新题目信息并返回更新结果。 4.2 提交题目 PostMapping(/question_submit/do) public BaseResponseLong doQuestionSubmit(RequestBody QuestionSubmitAddRequest questionSubmitAddRequest,HttpServletRequest request) {if (questionSubmitAddRequest null || questionSubmitAddRequest.getQuestionId() 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}// 登录才能提交final User loginUser userFeignClient.getLoginUser(request);long questionSubmitId questionSubmitService.doQuestionSubmit(questionSubmitAddRequest, loginUser);return ResultUtils.success(questionSubmitId); } 功能处理提交题目的请求用户必须登录才能提交。实现步骤 检查请求参数是否合法若不合法则抛出参数错误异常。获取当前登录用户的信息。调用 questionSubmitService 的 doQuestionSubmit 方法处理题目提交并返回提交记录的 ID。 4.3 分页获取题目提交列表 PostMapping(/question_submit/list/page) public BaseResponsePageQuestionSubmitVO listQuestionSubmitByPage(RequestBody QuestionSubmitQueryRequest questionSubmitQueryRequest,HttpServletRequest request) {long current questionSubmitQueryRequest.getCurrent();long size questionSubmitQueryRequest.getPageSize();// 从数据库中查询原始的题目提交分页信息PageQuestionSubmit questionSubmitPage questionSubmitService.page(new Page(current, size),questionSubmitService.getQueryWrapper(questionSubmitQueryRequest));final User loginUser userFeignClient.getLoginUser(request);// 返回脱敏信息return ResultUtils.success(questionSubmitService.getQuestionSubmitVOPage(questionSubmitPage, loginUser)); } 功能分页获取题目提交列表
http://www.yingshimen.cn/news/98846/

相关文章:

  • 建设工程消防验收网站百度指数官方下载
  • 网站建设就业前景2017怎样才可以知道网站是否优化
  • 企业网站开发的功能一流的南昌网站建设
  • 常用网站后台地址网页美工培训哪里好
  • 网站制作网站建设案例o2o网站建设机构
  • 金华安全网站建设怎么收费创意网站展示
  • 做竞价的网站可以做优化吗网站开发与应用专业就业方向
  • 做论文常用网站有哪些芜湖设计公司排名
  • 大型网站 cms玉溪网络推广 网站建设
  • 美食网站设计方案北京网站seo哪家公司好
  • 顺德网站建设案例网页网站建设难吗
  • 河北网站建设就业考试网站开发常用的数据库
  • 网站建设 英文顺企网宁波网站建设
  • 生成wap网站怎样做网站快照
  • 广东城市建设档案馆官方网站做网站哪家公司最好
  • crm网站推荐wordpress仪表盘定制
  • 网站做seo安全吗wordpress无法
  • 台州卓远做网站好不好wordpress修改注册页
  • 江门seo哪家专业石家庄视频优化公司
  • 佛山南海区建网站的公司济南做网站比较好的
  • 做运营需要知道素材网站sketch网页设计教程
  • 能在线做国二计算机题目的网站congqin网站建设
  • 企业网站推广可以选择哪些方法?丝网免费推广平台
  • 池州网站建设电话网站空间免费试用
  • 成都网站建设商家网络营销是以什么为基础
  • 电子商务公司网站建立前期准备wordpress 蛋花
  • 全国知名网站访问量大的网站
  • 衡水网站建设知识深圳华丰大厦网站建设
  • 有关网站升级建设的申请书seo公司
  • 网站续费方案html5手机网站模板下载