diff --git a/.idea/mybatisx/templates.xml b/.idea/mybatisx/templates.xml index 47f2860..f2e668e 100644 --- a/.idea/mybatisx/templates.xml +++ b/.idea/mybatisx/templates.xml @@ -39,6 +39,26 @@ diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommentController.java b/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommentController.java index b282ef3..fbf5ab1 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommentController.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommentController.java @@ -210,7 +210,6 @@ public class CommentController { public Result getPostComments(@PathVariable("postId") Long postId, @RequestBody Pages pages) { logger.info("获取帖子ID:{}的评论列表", postId); logger.info("获取pageSize:{}", pages.getPageSize()); - System.out.println("aaaaaa" + pages.getPageSize()); IPage comments = commentService.getPostComments(postId, pages.getPageNum(), pages.getPageSize()); return Result.ok(comments); } diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunityController.java b/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunityController.java index 8ec25a2..90142a7 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunityController.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunityController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckLogin; import com.ivmiku.tutorial.entity.Community; import com.ivmiku.tutorial.response.Result; import com.ivmiku.tutorial.service.CommunityService; +import com.ivmiku.tutorial.service.CommunitytagService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.models.annotations.OpenAPI30; import org.apiguardian.api.API; diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunitytagController.java b/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunitytagController.java new file mode 100644 index 0000000..ca1644b --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/controller/CommunitytagController.java @@ -0,0 +1,47 @@ +package com.ivmiku.tutorial.controller; + +import com.ivmiku.tutorial.entity.Communitytag; +import com.ivmiku.tutorial.response.Result; +import com.ivmiku.tutorial.service.CommunitytagService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/communityTags") +public class CommunitytagController { + + @Resource + private CommunitytagService communitytagService; + + @PostMapping("/create") + public Result createCommunityTag(@RequestBody Communitytag communityTag) { + communitytagService.createCommunityTag(communityTag); + return Result.ok(); + } + + @PutMapping("/update/{id}") + public Result updateCommunityTag(@PathVariable Long id, @RequestBody Communitytag communityTag) { + communitytagService.updateCommunityTag(id, communityTag); + return Result.ok(); + } + + @DeleteMapping("/delete/{id}") + public Result deleteCommunityTag(@PathVariable Long id) { + communitytagService.deleteCommunityTag(id); + return Result.ok(); + } + + @GetMapping("/get/{id}") + public Result getCommunityTag(@PathVariable Long id) { + Communitytag communityTag = communitytagService.getCommunityTagById(id); + return Result.ok(communityTag); + } + + @GetMapping("/list/{communityId}") + public Result getCommunityTagListByCommunityId(@PathVariable Long communityId) { + List tags = communitytagService.getCommunityTagListByCommunityId(communityId); + return Result.ok(tags); + } +} diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/controller/InteractionController.java b/community-8073/src/main/java/com/ivmiku/tutorial/controller/InteractionController.java index d2a33f6..7e18427 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/controller/InteractionController.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/controller/InteractionController.java @@ -2,12 +2,17 @@ package com.ivmiku.tutorial.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.lang.hash.Hash; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ivmiku.tutorial.entity.Post; import com.ivmiku.tutorial.response.Result; import com.ivmiku.tutorial.service.InteractionService; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; /** * InteractionController 是处理用户与帖子的收藏、点赞以及对评论的点赞功能的控制器类。 @@ -104,4 +109,35 @@ public class InteractionController { interactionService.unlikeComment(userOpenid, commentId); return Result.ok(); } + + + /** + * 我的收藏接口 + * @return + */ + @GetMapping("/getFavoritePosts") + public Result getFavoritePosts() { + String userOpenid = StpUtil.getLoginIdAsString(); + log.info("用户 {} 正在获取收藏的帖子", userOpenid); + IPage favoritePost = interactionService.getFavoritePosts(userOpenid); + HashMap data = new HashMap<>(); + if (favoritePost != null) { + log.info("用户 {} 收藏的帖子获取成功", userOpenid); + data.put("total", favoritePost.getTotal()); + data.put("list", favoritePost.getRecords()); + return Result.ok(data); + } + return Result.ok("用户未发表帖子"); + } + + /** + * 统计我的获赞数量 笔记数量 收藏数量 + */ + @GetMapping("/getLikeCount") + public Result getLikeCount() { + String userOpenid = StpUtil.getLoginIdAsString(); + log.info("用户 {} 正在获取用户获赞的数量", userOpenid); + HashMap res = interactionService.getLikeCount(userOpenid); + return Result.ok(); + } } diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/controller/PostController.java b/community-8073/src/main/java/com/ivmiku/tutorial/controller/PostController.java index ab8ebf2..52a4d70 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/controller/PostController.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/controller/PostController.java @@ -16,7 +16,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.sql.Timestamp; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 帖子控制器,用于处理帖子相关的HTTP请求。 @@ -82,7 +84,8 @@ public class PostController { @GetMapping("/get/{id}") public Result getPost(@PathVariable Long id) { logger.info("开始获取帖子ID:{}的详细信息", id); - Post post = postService.getPostById(id); // 调用服务层根据ID查询帖子 + String userId = StpUtil.getLoginIdAsString(); + Post post = postService.getPostById(id, userId); // 调用服务层根据ID查询帖子 if (post != null) { logger.info("帖子ID:{}的详细信息获取成功", id); } else { @@ -111,21 +114,24 @@ public class PostController { /** * 用户获取自己所有帖子的信息 - * @return 当前用户帖子列表 + * @return 当前用户帖子列表与该用户的总发布数量 */ @GetMapping("/getPostList") public Result getPostList(@RequestBody Pages pages) { logger.info("开始获取帖子列表"); String userId = StpUtil.getLoginIdAsString(); // 获取当前登录用户的ID IPage posts = postService.getPostList(userId, pages.getPageNum(), pages.getPageSize()); - return Result.ok(posts); // 调用服务层获取帖子列表 + Map data = new HashMap<>(); + data.put("total", posts.getTotal()); + data.put("posts", posts); + return Result.ok(data); // 调用服务层获取帖子列表 } /** * 社区获取自己所有帖子的信息 * @return 当前用户帖子列表 */ - @GetMapping("/getCommunityPostList{communityId}") + @GetMapping("/getCommunityPostList/{communityId}") public Result getCommunityPostList(@PathVariable("communityId") Long communityId, @RequestBody Pages pages) { logger.info("开始获取帖子列表"); IPage posts = postService.getCommunityPostList(communityId, pages.getPageNum(), pages.getPageSize()); diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/entity/BrowingHistory.java b/community-8073/src/main/java/com/ivmiku/tutorial/entity/BrowingHistory.java new file mode 100644 index 0000000..fc963e3 --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/entity/BrowingHistory.java @@ -0,0 +1,30 @@ +package com.ivmiku.tutorial.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * @TableName browing_history + */ +@TableName(value ="browing_history") +@Data +public class BrowingHistory implements Serializable { + @TableId(type = IdType.AUTO) + private Long browingId; + + private String userOpenid; + + + private Long postId; + + + private Date createAt; + + @TableLogic + private Integer isDelete; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/entity/Communitytag.java b/community-8073/src/main/java/com/ivmiku/tutorial/entity/Communitytag.java new file mode 100644 index 0000000..9d0d8f8 --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/entity/Communitytag.java @@ -0,0 +1,27 @@ +package com.ivmiku.tutorial.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; + +/** + * @TableName communitytag + */ +@TableName(value ="communitytag") +@Data +public class Communitytag implements Serializable { + + @TableId + private Long smallCTagId; + + private String cTagName; + + private Long cId; + + private Integer isDelete; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/mapper/BrowingHistoryMapper.java b/community-8073/src/main/java/com/ivmiku/tutorial/mapper/BrowingHistoryMapper.java new file mode 100644 index 0000000..09e62fa --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/mapper/BrowingHistoryMapper.java @@ -0,0 +1,18 @@ +package com.ivmiku.tutorial.mapper; + +import com.ivmiku.tutorial.entity.BrowingHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author rog +* @description 针对表【browing_history】的数据库操作Mapper +* @createDate 2024-08-23 11:29:33 +* @Entity com.ivmiku.tutorial.entity.BrowingHistory +*/ +public interface BrowingHistoryMapper extends BaseMapper { + +} + + + + diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/mapper/CommunitytagMapper.java b/community-8073/src/main/java/com/ivmiku/tutorial/mapper/CommunitytagMapper.java new file mode 100644 index 0000000..641085c --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/mapper/CommunitytagMapper.java @@ -0,0 +1,18 @@ +package com.ivmiku.tutorial.mapper; + +import com.ivmiku.tutorial.entity.Communitytag; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author rog +* @description 针对表【communitytag】的数据库操作Mapper +* @createDate 2024-08-16 09:40:06 +* @Entity com.ivmiku.tutorial.entity.Communitytag +*/ +public interface CommunitytagMapper extends BaseMapper { + +} + + + + diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/mapper/LikeMapper.java b/community-8073/src/main/java/com/ivmiku/tutorial/mapper/LikeMapper.java index b951e47..77b9297 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/mapper/LikeMapper.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/mapper/LikeMapper.java @@ -2,6 +2,8 @@ package com.ivmiku.tutorial.mapper; import com.ivmiku.tutorial.entity.Likee; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * @author rog @@ -11,6 +13,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface LikeMapper extends BaseMapper { + // 获取帖子获赞数 + @Select("SELECT SUM(like_count) FROM posts WHERE user_openid = #{userOpenid}") + Long getPostLikeCount(@Param("userOpenid") String userOpenid); + + // 获取评论获赞数 + @Select("SELECT SUM(like_count) FROM comments WHERE user_openid = #{userOpenid}") + Long getCommentLikeCount(@Param("userOpenid") String userOpenid); + } diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/BrowingHistoryService.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/BrowingHistoryService.java new file mode 100644 index 0000000..2ba13dd --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/BrowingHistoryService.java @@ -0,0 +1,18 @@ +package com.ivmiku.tutorial.service; + +import com.ivmiku.tutorial.entity.BrowingHistory; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author rog +* @description 针对表【browing_history】的数据库操作Service +* @createDate 2024-08-23 11:29:33 +*/ +public interface BrowingHistoryService extends IService { + + void deleteBrowingRecordById(Long browingId); + + void deleteBrowingRecordsByIds(List browingIds); +} diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/CommunitytagService.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/CommunitytagService.java new file mode 100644 index 0000000..4561c71 --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/CommunitytagService.java @@ -0,0 +1,24 @@ +package com.ivmiku.tutorial.service; + +import com.ivmiku.tutorial.entity.Communitytag; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author rog +* @description 针对表【communitytag】的数据库操作Service +* @createDate 2024-08-16 09:40:06 +*/ +public interface CommunitytagService extends IService { + + void createCommunityTag(Communitytag communityTag); + + void updateCommunityTag(Long id, Communitytag communityTag); + + void deleteCommunityTag(Long id); + + Communitytag getCommunityTagById(Long id); + + List getCommunityTagListByCommunityId(Long communityId); +} \ No newline at end of file diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/InteractionService.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/InteractionService.java index 981a552..bf8c9f0 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/service/InteractionService.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/InteractionService.java @@ -1,5 +1,11 @@ package com.ivmiku.tutorial.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ivmiku.tutorial.entity.Post; + +import java.util.HashMap; +import java.util.List; + /** * InteractionService接口定义用户对帖子和评论的收藏与点赞操作。 */ @@ -10,4 +16,8 @@ public interface InteractionService { void unlikePost(String userOpenid, Long postId); void likeComment(String userOpenid, Long commentId); void unlikeComment(String userOpenid, Long commentId); + + IPage getFavoritePosts(String userOpenid); + + HashMap getLikeCount(String userOpenid); } diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/PostService.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/PostService.java index 740e5d5..05a2a2d 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/service/PostService.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/PostService.java @@ -9,7 +9,8 @@ import java.util.List; public interface PostService extends IService { void createPost(Post post); - Post getPostById(Long postId); + Post getPostById(Long postId, String userOpenid); + void updatePost(Long postId, String userId, Post post); void deletePost(Long postId, String userId); diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/BrowingHistoryServiceImpl.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/BrowingHistoryServiceImpl.java new file mode 100644 index 0000000..4c6e129 --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/BrowingHistoryServiceImpl.java @@ -0,0 +1,60 @@ +package com.ivmiku.tutorial.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ivmiku.tutorial.entity.BrowingHistory; +import com.ivmiku.tutorial.service.BrowingHistoryService; +import com.ivmiku.tutorial.mapper.BrowingHistoryMapper; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** +* @author rog +* @description 针对表【browing_history】的数据库操作Service实现 +* @createDate 2024-08-23 11:29:33 +*/ +@Service +@Slf4j +public class BrowingHistoryServiceImpl extends ServiceImpl + implements BrowingHistoryService{ + + private static final Logger logger = LoggerFactory.getLogger(BrowingHistoryServiceImpl.class); + @Override + public void deleteBrowingRecordById(Long browingId) { + logger.info("开始删除浏览记录,浏览记录ID:{}", browingId); + BrowingHistory browingHistory = getById(browingId); + if (browingHistory != null) { + browingHistory.setIsDelete(1); // 标记为已删除 + updateById(browingHistory); + logger.info("浏览记录ID:{} 删除成功", browingId); + } else { + logger.warn("浏览记录ID:{} 不存在", browingId); + } + } + + @Override + public void deleteBrowingRecordsByIds(List browingIds) { + logger.info("开始批量删除浏览记录,浏览记录ID列表:{}", browingIds); + if (browingIds != null && !browingIds.isEmpty()) { + List browingHistories = listByIds(browingIds); + if (!browingHistories.isEmpty()) { + for (BrowingHistory browingHistory : browingHistories) { + browingHistory.setIsDelete(1); // 标记为已删除 + } + updateBatchById(browingHistories); // 批量更新删除状态 + logger.info("批量删除浏览记录成功"); + } else { + logger.warn("提供的浏览记录ID列表中没有找到匹配的记录"); + } + } else { + logger.warn("浏览记录ID列表为空,无法删除"); + } + } +} + + + + diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/CommunitytagServiceImpl.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/CommunitytagServiceImpl.java new file mode 100644 index 0000000..2396be0 --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/CommunitytagServiceImpl.java @@ -0,0 +1,50 @@ +package com.ivmiku.tutorial.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ivmiku.tutorial.entity.Communitytag; +import com.ivmiku.tutorial.service.CommunitytagService; +import com.ivmiku.tutorial.mapper.CommunitytagMapper; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** +* @author rog +* @description 针对表【communitytag】的数据库操作Service实现 +* @createDate 2024-08-16 09:40:06 +*/ +@Service +public class CommunitytagServiceImpl extends ServiceImpl + implements CommunitytagService{ + + @Override + public void createCommunityTag(Communitytag communityTag) { + this.save(communityTag); + } + + @Override + public void updateCommunityTag(Long id, Communitytag communityTag) { + communityTag.setSmallCTagId(id); + this.updateById(communityTag); + } + + @Override + public void deleteCommunityTag(Long id) { + this.removeById(id); + } + + @Override + public Communitytag getCommunityTagById(Long id) { + return this.getById(id); + } + + @Override + public List getCommunityTagListByCommunityId(Long communityId) { + return this.lambdaQuery().eq(Communitytag::getCId, communityId).list(); + } + +} + + + + diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/InteractionServiceImpl.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/InteractionServiceImpl.java index 4ff63bf..1a4f10c 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/InteractionServiceImpl.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/InteractionServiceImpl.java @@ -1,15 +1,22 @@ package com.ivmiku.tutorial.service.impl; +import cn.hutool.core.lang.hash.Hash; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.ivmiku.tutorial.entity.Favorite; import com.ivmiku.tutorial.entity.Likee; +import com.ivmiku.tutorial.entity.Post; import com.ivmiku.tutorial.mapper.FavoriteMapper; import com.ivmiku.tutorial.mapper.LikeMapper; import com.ivmiku.tutorial.service.InteractionService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ivmiku.tutorial.service.PostService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; /** * InteractionServiceImpl 实现了 InteractionService 接口,处理用户对帖子和评论的收藏与点赞操作。 @@ -24,6 +31,9 @@ public class InteractionServiceImpl implements InteractionService { @Resource private LikeMapper likeMapper; + @Resource + private PostService postService; + @Override public void favoritePost(String userOpenid, Long postId) { log.info("User {} is favoriting post {}", userOpenid, postId); @@ -95,4 +105,60 @@ public class InteractionServiceImpl implements InteractionService { likeMapper.updateById(likee); } } + + @Override + public IPage getFavoritePosts(String userOpenid) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Favorite::getUserOpenid, userOpenid); + List favorites = favoriteMapper.selectList(wrapper); + if (favorites != null && !favorites.isEmpty()) { + List postIds = favorites.stream().map(Favorite::getPostId).toList(); + return postService.getPostList(userOpenid, 1, 10); + } + return null; + } + + @Override + public HashMap getLikeCount(String userOpenid) { + HashMap res = new HashMap<>(); + + // 获取帖子获赞数 + Long postLikeCount = likeMapper.getPostLikeCount(userOpenid); + // 获取评论获赞数 + Long commentLikeCount = likeMapper.getCommentLikeCount(userOpenid); + + // 如果帖子获赞数不为空,加入结果 + if (postLikeCount != null) { + res.put("postLikeCount", postLikeCount); + } else { + res.put("postLikeCount", 0L); // 如果为空,设置为0 + } + + // 如果评论获赞数不为空,加入结果 + if (commentLikeCount != null) { + res.put("commentLikeCount", commentLikeCount); + } else { + res.put("commentLikeCount", 0L); // 如果为空,设置为0 + } + + // 计算总的获赞数 + Long totalLikeCount = (postLikeCount == null ? 0 : postLikeCount) + + (commentLikeCount == null ? 0 : commentLikeCount); + + res.put("totalLikeCount", totalLikeCount); + + // 获取收藏数量 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Favorite::getUserOpenid, userOpenid); + Long favoriteCount = favoriteMapper.selectCount(wrapper); + + if (favoriteCount != null) { + res.put("favoriteCount", favoriteCount); + } else { + res.put("favoriteCount", 0L); // 如果为空,设置为0 + } + Long myTotalPost = getFavoritePosts(userOpenid).getTotal(); + res.put("myTotalPost", myTotalPost); + return res; + } } diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/PostServiceImpl.java b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/PostServiceImpl.java index 8236bc6..98d7adc 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/PostServiceImpl.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/service/impl/PostServiceImpl.java @@ -3,20 +3,18 @@ package com.ivmiku.tutorial.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.ivmiku.tutorial.entity.Comment; +import com.ivmiku.tutorial.entity.BrowingHistory; import com.ivmiku.tutorial.entity.Post; import com.ivmiku.tutorial.mapper.PostMapper; +import com.ivmiku.tutorial.service.BrowingHistoryService; import com.ivmiku.tutorial.service.PostService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - import java.sql.Timestamp; -import java.util.List; +import java.util.Date; @Service public class PostServiceImpl extends ServiceImpl implements PostService { @@ -26,6 +24,9 @@ public class PostServiceImpl extends ServiceImpl implements Po @Autowired private PostMapper postMapper; + @Autowired + private BrowingHistoryService browingHistoryService; + @Override public void createPost(Post post) { logger.info("开始创建帖子"); @@ -37,15 +38,24 @@ public class PostServiceImpl extends ServiceImpl implements Po } @Override - public Post getPostById(Long postId) { - logger.info("开始根据ID获取帖子详情,帖子ID:{}", postId); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Post::getIsPublic, 1); - Post post = postMapper.selectById(wrapper); - if (post == null) { - logger.warn("帖子ID:{}不存在", postId); + public Post getPostById(Long postId, String userOpenid) { + logger.info("用户openid:{} 开始根据ID获取帖子详情,帖子ID:{}", userOpenid, postId); + + // 查找帖子信息 + Post post = postMapper.selectById(postId); + if (post == null || post.getIsDeleted() == 1) { + logger.warn("帖子ID:{}不存在或已删除", postId); return null; } + + // 创建浏览记录 + BrowingHistory browingHistory = new BrowingHistory(); + browingHistory.setUserOpenid(userOpenid); + browingHistory.setPostId(postId); + browingHistory.setCreateAt(new Date()); + browingHistory.setIsDelete(0); // 未删除标记 + browingHistoryService.save(browingHistory); + logger.info("用户openid:{}的浏览记录创建成功", userOpenid); return post; } diff --git a/community-8073/src/main/resources/application-dev.properties b/community-8073/src/main/resources/application-dev.properties index b25407e..abec73c 100644 --- a/community-8073/src/main/resources/application-dev.properties +++ b/community-8073/src/main/resources/application-dev.properties @@ -27,3 +27,7 @@ minio.accessKey=minio_root minio.secretKey=minio_123456 minio.bucketName=haixia +## Nacos?? +#spring.cloud.nacos.discovery.server-addr=/192.168.146.1:8848 +#dubbo.registry.address=nacos:///192.168.146.1:8848 + diff --git a/community-8073/src/main/resources/mapper/BrowingHistoryMapper.xml b/community-8073/src/main/resources/mapper/BrowingHistoryMapper.xml new file mode 100644 index 0000000..cb4fe77 --- /dev/null +++ b/community-8073/src/main/resources/mapper/BrowingHistoryMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + browing_id,user_openid,post_id, + create_at,is_delete + + diff --git a/community-8073/src/main/resources/mapper/CommunitytagMapper.xml b/community-8073/src/main/resources/mapper/CommunitytagMapper.xml new file mode 100644 index 0000000..a995906 --- /dev/null +++ b/community-8073/src/main/resources/mapper/CommunitytagMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + small_c_tag_id,c_tag_name,c_id, + is_delete + + diff --git a/navigate-8432/pom.xml b/navigate-8432/pom.xml index 97f02c0..bb3eb35 100644 --- a/navigate-8432/pom.xml +++ b/navigate-8432/pom.xml @@ -18,6 +18,11 @@ + + com.baomidou + mybatis-plus-boot-starter + 3.5.7 + org.springframework.boot spring-boot-starter-web @@ -26,10 +31,10 @@ org.springframework.boot spring-boot-starter-actuator - - com.baomidou - mybatis-plus-spring-boot3-starter - + + + + com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery