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

渭南中学校园网站建设工作汇报中国纪检监察报范耀庚

渭南中学校园网站建设工作汇报,中国纪检监察报范耀庚,巩义企业网站建设报价,首页优化公司1.注入bean的写法 构造函数的注入 2.回答和评论 在做这个功能的时候需要理解一些概念#xff0c;张三提出问题就是提问者#xff0c;李四去回答张三的问题#xff0c;李四就是回答者#xff0c;王五去回答李四的评论#xff0c;王五就是评论者。 在提供的InteractionRep…1.注入bean的写法 构造函数的注入 2.回答和评论 在做这个功能的时候需要理解一些概念张三提出问题就是提问者李四去回答张三的问题李四就是回答者王五去回答李四的评论王五就是评论者。 在提供的InteractionReply类中 - questionId: 互动问题问题id指的是原始问题的ID比如张三提出的问题的ID。 - answerId: 回复的上级回答id这个字段用来指向直接上一级的回答或评论的ID。在你给的场景中如果王五是在评论李四的回答那么answerId将会是李四回答的ID。 - userId: 回答者id指的是进行回答或评论操作的用户的ID。在你的例子中如果李四是回答问题的人那么在李四的回答记录中userId就是李四的ID如果王五是在对李四的回答进行评论那么在王五的评论记录中userId就是王五的ID。 - targetUserId: 回复的目标用户id这个字段可能用来指示这个回答或评论是针对哪个用户的。例如如果王五是在回复李四的回答那么targetUserId可能就是李四的用户ID。 - targetReplyId: 回复的目标回复id这个字段可以用来指示这个回答或评论是直接针对哪个回答或评论的。在你的场景中如果王五是在评论李四的回答targetReplyId可能就是李四回答的id。 因此根据你的场景**上一级的回答者id** (answerId) **是指李四的回答的ID**。这个字段用于建立回答和评论之间的层级关系让系统知道每个回答或评论是针对哪个问题或上一级回答/评论的。 新增页面原型 业务流程 前端传参 新增和分页查询的接口代码 RestController RequestMapping(/replies) RequiredArgsConstructor Api(tags 互动问答相关接口 ) public class InteractionReplyController {private final IInteractionReplyService replyService;ApiOperation(新增回答或评论)PostMappingpublic void saveReply(RequestBody ReplyDTO replyDTO) {replyService.saveReply(replyDTO);}ApiOperation(分页查询回答或评论)GetMapping(page)public PageDTOReplyVO queryReplyPage(ReplyPageQuery pageQuery){return replyService.queryReplyPage(pageQuery, false);} }OverrideTransactionalpublic void saveReply(ReplyDTO replyDTO) {// 1.获取登录用户Long userId UserContext.getUser();// 2.新增回答InteractionReply reply BeanUtils.toBean(replyDTO, InteractionReply.class);reply.setUserId(userId);save(reply);// 3.累加评论数或者累加回答数// 3.1.判断当前回复的类型是否是回答boolean isAnswer replyDTO.getAnswerId() null;if (!isAnswer) {// 3.2.是评论则需要更新上级回答的评论数量lambdaUpdate().setSql(reply_times reply_times 1).eq(InteractionReply::getId, replyDTO.getAnswerId()).update();}// 3.3.尝试更新问题表中的状态、 最近一次回答、回答数量questionService.lambdaUpdate().set(isAnswer, InteractionQuestion::getLatestAnswerId, reply.getAnswerId()).setSql(isAnswer, answer_times answer_times 1).set(replyDTO.getIsStudent(), InteractionQuestion::getStatus, QuestionStatus.UN_CHECK.getValue()).eq(InteractionQuestion::getId, replyDTO.getQuestionId()).update();// 4.尝试累加积分if(replyDTO.getIsStudent()) {// 学生才需要累加积分mqHelper.send(MqConstants.Exchange.LEARNING_EXCHANGE,MqConstants.Key.WRITE_REPLY,5);}}Overridepublic PageDTOReplyVO queryReplyPage(ReplyPageQuery query, boolean forAdmin) {// 1.问题id和回答id至少要有一个先做参数判断Long questionId query.getQuestionId();Long answerId query.getAnswerId();if (questionId null answerId null) {throw new BadRequestException(问题或回答id不能都为空);}// 标记当前是查询问题下的回答boolean isQueryAnswer questionId ! null;// 2.分页查询replyPageInteractionReply page lambdaQuery().eq(isQueryAnswer, InteractionReply::getQuestionId, questionId).eq(InteractionReply::getAnswerId, isQueryAnswer ? 0L : answerId).eq(!forAdmin, InteractionReply::getHidden, false).page(query.toMpPage( // 先根据点赞数排序点赞数相同再按照创建时间排序new OrderItem(DATA_FIELD_NAME_LIKED_TIME, false),new OrderItem(DATA_FIELD_NAME_CREATE_TIME, true)));ListInteractionReply records page.getRecords();if (CollUtils.isEmpty(records)) {return PageDTO.empty(page);}// 3.数据处理需要查询提问者信息、回复目标信息、当前用户是否点赞SetLong userIds new HashSet();SetLong answerIds new HashSet();SetLong targetReplyIds new HashSet();// 3.1.获取提问者id 、回复的目标id、当前回答或评论id统计点赞信息for (InteractionReply r : records) {if(!r.getAnonymity() || forAdmin) {// 非匿名userIds.add(r.getUserId());}targetReplyIds.add(r.getTargetReplyId());answerIds.add(r.getId());}// 3.2.查询目标回复如果目标回复不是匿名则需要查询出目标回复的用户信息targetReplyIds.remove(0L);targetReplyIds.remove(null);if(targetReplyIds.size() 0) {ListInteractionReply targetReplies listByIds(targetReplyIds);SetLong targetUserIds targetReplies.stream().filter(Predicate.not(InteractionReply::getAnonymity).or(r - forAdmin)).map(InteractionReply::getUserId).collect(Collectors.toSet());userIds.addAll(targetUserIds);}// 3.3.查询用户MapLong, UserDTO userMap new HashMap(userIds.size());if(userIds.size() 0) {ListUserDTO users userClient.queryUserByIds(userIds);userMap users.stream().collect(Collectors.toMap(UserDTO::getId, u - u));}// 3.4.查询用户点赞状态SetLong bizLiked remarkClient.isBizLiked(answerIds);// 4.处理VOListReplyVO list new ArrayList(records.size());for (InteractionReply r : records) {// 4.1.拷贝基础属性ReplyVO v BeanUtils.toBean(r, ReplyVO.class);list.add(v);// 4.2.回复人信息if(!r.getAnonymity() || forAdmin){UserDTO userDTO userMap.get(r.getUserId());if (userDTO ! null) {v.setUserIcon(userDTO.getIcon());v.setUserName(userDTO.getName());v.setUserType(userDTO.getType());}}// 4.3.如果存在评论的目标则需要设置目标用户信息if(r.getTargetReplyId() ! null){UserDTO targetUser userMap.get(r.getTargetUserId());if (targetUser ! null) {v.setTargetUserName(targetUser.getName());}}// 4.4.点赞状态v.setLiked(bizLiked.contains(r.getId()));}return new PageDTO(page.getTotal(), page.getPages(), list);}
http://www.pierceye.com/news/28049/

相关文章:

  • 公职单位建设网站的目的王烨身世
  • 购物网站建设公司上海十大工业设计公司
  • 怎么免费申请网站域名网站建设公司排行
  • cn 域名网站北京到安阳多少公里路
  • wordpress网站监测科丰化工东莞网站建设
  • 新安网站开发网站托管流程
  • html家乡网站设计wordpress json插件
  • 阿里云盘资源搜索引擎如何优化seo关键词
  • 个人网站的设计与实现摘要2023全国企业公司大黄页
  • 湖北分行建设银行网站企业购物网站开发
  • 最大网站建设公司排名iis 会影响 网站 速度
  • 湛江网站设计企业网站怎么建设公司
  • 专门做推荐的网站做网站标配
  • 免费建音乐网站外围网站怎么做
  • 深圳做网站推广中山网站建设制作 .超凡科技
  • 网站内容与功能设计与实现的阿里巴巴外贸平台一年多少钱
  • 什么网站做的产品海报比较多用网站做数据库吗
  • 米拓建设网站为什么不建议学嵌入式
  • 推广展示类网站有哪些网站建设淘宝店铺模板
  • 百度做网站的注册公司代理记账报税
  • 做网站 插件wordpress登录下载
  • seo站内优化站外优化优秀网站首页
  • 网站开发域名温州网站建设价格技术
  • 网站模板中文乱码wordpress店铺模板制作
  • 设计网站都有什么专业网站开发技术
  • 海口建设工程信息网站网站建设和网站设计有什么区别
  • 库尔勒 网站建设十大互联网企业排名
  • 自建站一般网站建设需要哪些东西
  • 商超软件系统哪家好郑州网络优化实力乐云seo
  • wordpress 网站 图标做货源的网站