织梦网站底端的怎么删除满足seo需求的网站
news/
2025/9/26 14:17:52/
文章来源:
织梦网站底端的怎么删除,满足seo需求的网站,怎么自己开发app软件,郑州新闻头条提示#xff1a;今日是2024年的6月30日#xff0c;未来的你看到这篇文章#xff0c;希望你依旧快乐 文章目录 前言
首先在这里前缀部分我就不做要求了,比如说登录信息什么的 数据库表格 这里实现点赞功能#xff0c;主要是围绕论坛项目完成的 user_info代表用户信息表 for… 提示今日是2024年的6月30日未来的你看到这篇文章希望你依旧快乐 文章目录 前言
首先在这里前缀部分我就不做要求了,比如说登录信息什么的 数据库表格 这里实现点赞功能主要是围绕论坛项目完成的 user_info代表用户信息表 forum_article代表着文章信息表 user_message代表着点赞或者评论点赞发送信息表 like_record代表着用户点赞表 user_info用户信息表 forum_article文章信息表 user_message点赞评论信息发送表 like_record点赞信息表 表格准备完毕
代码实现
Controller层 /*** 实现文章点赞功能。* 通过请求映射 /doLike该方法处理用户对文章的点赞操作。* 使用GlobalInterceptor注解表明该方法受全局拦截器影响会检查参数有效性及用户登录状态。** param session 用户会话对象用于获取会话中的用户信息。* param articleId 需要点赞的文章ID通过VerifyParam注解确保其为非空保证操作的有效性。* return 返回操作成功的响应对象。*/RequestMapping(/doLike)GlobalInterceptor(checkParams true, checkLogin true)public ResponseVO likeArticle(HttpSession session, VerifyParam(required true) String articleId) {// 从会话中获取用户信息SessionWebUserDto sessionWebUserDto getUserInfoFromSession(session);// 调用点赞服务记录用户的点赞行为likeRecordService.doLike(articleId, sessionWebUserDto.getUserId(), sessionWebUserDto.getNickName(), OperRecordOpTypeEnum.ARTICLE_LIKE);// 返回操作成功的响应return getSuccessResponseVO(null);}
//枚举package com.easybbs.entity.enums;public enum OperRecordOpTypeEnum {ARTICLE_LIKE(0, 文章点赞),COMMENT_LIKE(1, 评论点赞);private Integer type;private String desc;OperRecordOpTypeEnum(Integer type, String desc) {this.type type;this.desc desc;}public Integer getType() {return type;}public String getDesc() {return desc;}} 至于这里的参数校验和登录校验我就不作详细解释了相信未来的你也一定可以看懂 Service接口层
//点赞void doLike(String objectId, String userId, String nickName, OperRecordOpTypeEnum opTypeEnum); Service接口实现层
/*** 用户点赞操作。* 实现对文章或评论的点赞功能并记录用户的点赞行为。* param objectId 点赞对象的ID可以是文章ID或评论ID。* param userId 点赞用户的ID。* param nickName 点赞用户的昵称。* param opTypeEnum 点赞操作的类型区分是文章点赞还是评论点赞。* throws BusinessException 如果文章不存在则抛出业务异常。*/OverrideTransactional(rollbackFor Exception.class)public void doLike(String objectId, String userId, String nickName, OperRecordOpTypeEnum opTypeEnum) {// 创建用户消息对象用于记录点赞行为。UserMessage userMessage new UserMessage();userMessage.setCreateTime(new Date());// 根据点赞类型执行不同的操作。switch (opTypeEnum){case ARTICLE_LIKE:// 根据文章ID查询文章信息如果文章不存在则抛出异常。ForumArticle forumArticle forumArticleMapper.selectByArticleId(objectId);if(forumArticle null){throw new BusinessException(文章不存在);}// 执行文章点赞逻辑。articleLike(objectId,forumArticle,userId,opTypeEnum);// 设置用户消息的相关信息如文章ID、文章标题等。userMessage.setArticleId(objectId);userMessage.setArticleTitle(forumArticle.getTitle());userMessage.setMessageType(MessageTypeEnum.ARTICLE_LIKE.getType());userMessage.setCommentId(Constants.ZERO);userMessage.setReceivedUserId(forumArticle.getUserId());break;case COMMENT_LIKE:// 评论点赞的逻辑实现。break;}// 设置用户消息的发送者信息。userMessage.setSendUserId(userId);userMessage.setSendNickName(nickName);userMessage.setStatus(MessageStatusEnum.NO_READ.getStatus());// 判断是否为给自己的点赞若是则不记录点赞消息。// 判断是否已经点赞if(!userId.equals(userMessage.getReceivedUserId())){// 根据文章ID、评论ID、发送者ID和消息类型查询是否已存在相同的点赞记录。UserMessage dbInfo userMessageMapper.selectByArticleIdAndCommentIdAndSendUserIdAndMessageType(userMessage.getArticleId(),userMessage.getCommentId(),userMessage.getSendUserId(),userMessage.getMessageType());// 如果不存在相同的点赞记录则插入新的点赞消息。if(dbInfo null ){userMessageMapper.insert(userMessage);}}}/*** 用户对文章进行点赞或取消点赞操作。** param objId 对象ID即文章的唯一标识。* param forumArticle 文章对象用于获取文章的作者信息。* param userId 用户ID执行点赞操作的用户。* param opTypeEnum 操作类型枚举表示点赞或取消点赞。* return 返回点赞记录如果用户之前点赞过则返回非空否则返回空。*/public LikeRecord articleLike(String objId, ForumArticle forumArticle, String userId, OperRecordOpTypeEnum opTypeEnum) {// 根据对象ID、用户ID和操作类型查询点赞记录判断用户是否已经点赞过。LikeRecord record this.likeRecordMapper.selectByObjectIdAndUserIdAndOpType(objId, userId, opTypeEnum.getType());if (record ! null) {// 如果用户之前点赞过则取消点赞。this.likeRecordMapper.deleteByObjectIdAndUserIdAndOpType(objId, userId, opTypeEnum.getType());// 更新文章的点赞数减少1。forumArticleMapper.updateArticleCount(UpdateArticleCountTypeEnum.GOOD_COUNT.getType(), -1, objId);} else {// 如果用户未点赞则创建新的点赞记录。LikeRecord likeRecord new LikeRecord();likeRecord.setObjectId(objId);likeRecord.setUserId(userId);likeRecord.setOpType(opTypeEnum.getType());likeRecord.setCreateTime(new Date());// 设置点赞记录的作者用户ID为文章的作者用户ID。likeRecord.setAuthorUserId(forumArticle.getUserId());// 插入新的点赞记录。this.likeRecordMapper.insert(likeRecord);// 更新文章的点赞数增加1。forumArticleMapper.updateArticleCount(UpdateArticleCountTypeEnum.GOOD_COUNT.getType(), 1, objId);}// 返回点赞记录无论是否新点赞或取消点赞。return record;}
Mapper层
!-- 根据PrimaryKey获取对象--select idselectByArticleId resultMapbase_result_map select include refidbase_column_list /,content,markdown_content from forum_article where article_id#{articleId}/select!-- 根据PrimaryKey获取对象--select idselectByArticleIdAndCommentIdAndSendUserIdAndMessageType resultMapbase_result_map select include refidbase_column_list / from user_message where article_id#{articleId} and comment_id#{commentId} and send_user_id#{sendUserId} and message_type#{messageType}/select!-- 根据ObjectIdAndUserIdAndOpType删除--delete iddeleteByObjectIdAndUserIdAndOpTypedelete from like_record where object_id#{objectId} and user_id#{userId} and op_type#{opType}/delete!-- 根据PrimaryKey获取对象--select idselectByObjectIdAndUserIdAndOpType resultMapbase_result_map select include refidbase_column_list / from like_record where object_id#{objectId} and user_id#{userId} and op_type#{opType}/select 总结
当然上面只是一些代码的展示但其实主要的是思路那接下来我就说明一下我实现的思路 文章点赞功能首先文章点赞传到Controller层的时候肯定需要把文章id传送过去在Controller接受到文章id之后再从登录信息里面传递出来用户的id用户的名称是文章点赞还是评论点赞呢传递过去之后创建发送消息的对象根据点赞类型进行分开如果是文章点赞的话首先根据用户id文章id点赞类型去查找点赞的记录表如果说找到了的话取消点赞实际上也就是删除点赞信息删除一条点赞信息表里面的语句如果说没有点赞的话创建一个点赞对象点赞的人是这个用户名称是这个用户点赞的文章是文章id点赞的类型是文章点赞还需要额外设置点赞是给哪一个用户点赞肯定是根据文章信息找到发送文章的人然后插入新的点赞记录更改文章的点赞数如果说取消点赞也需要更改文章点赞类型 点赞完成之后去继续完善用户发送信息表比如说设置文章id文章标题文章点赞类型接收人用户id是谁发送人用户id是谁发送人名字是谁发送的是未读状态 接下来首先需要判断不是自己给自己点赞自己给自己点赞是肯定不会发送消息的如果说根据文章id评论的id发送者id点赞类型查找如果说没有查找到的话添加一条记录消息总不能每次点赞完成之后都发送一次消息吧发送的肯定是一次消息,大概逻辑就是这样
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918375.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!