基于Spring Boot和Vue3的博客平台:用户管理、文章审核与管理、专栏审核与管理、数据统计与分析模块

news/2025/2/19 8:42:51/

目录

一、用户管理

1.查询用户列表

2.修改用户信息

二、文章审核与管理

1.查询待审核文章列表

2.审核文章

三、专栏审核与管理

1.查询待审核专栏列表

2.审核专栏

四、数据统计与分析

1.用户注册统计

2.文章发布统计

五、评论管理与审核

1.查询评论列表

3.删除评论

六、网站设置与配置


在我们的博客平台中,管理员需要处理用户管理、文章审核与管理、专栏审核与管理以及数据统计与分析等功能。本文将介绍如何实现这些功能。

一、用户管理

1.查询用户列表

管理员可以查看所有用户信息,包括用户名、邮箱、注册时间等。我们可以在 UserController 中添加一个 getUsers 方法,用于查询用户列表。

@GetMapping("/admin/users")
@PreAuthorize("hasRole('ADMIN')")
public Page<User> getUsers(Pageable pageable) {return userRepository.findAll(pageable);
}

2.修改用户信息

管理员可以修改用户的角色、状态等信息。我们可以在 UserController 中添加一个 updateUser 方法,用于更新用户信息。

@PutMapping("/admin/users/{id}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> updateUser(@PathVariable Long id, @RequestBody UserUpdateRequest request) {Optional<User> optionalUser = userRepository.findById(id);if (!optionalUser.isPresent()) {return ResponseEntity.notFound().build();}User user = optionalUser.get();// 更新用户信息,如角色、状态等// ...userRepository.save(user);return ResponseEntity.ok().build();
}

二、文章审核与管理

1.查询待审核文章列表

管理员需要审核用户发布的文章。我们可以在 ArticleController 中添加一个 getPendingArticles 方法,用于查询待审核文章列表。

@GetMapping("/admin/pending-articles")
@PreAuthorize("hasRole('ADMIN')")
public Page<Article> getPendingArticles(Pageable pageable) {return articleRepository.findByStatus(ArticleStatus.PENDING, pageable);
}

2.审核文章

管理员审核文章后,可以将文章状态更改为已发布或驳回。我们可以在 ArticleController 中添加一个 reviewArticle 方法,用于更新文章状态。

@PutMapping("/admin/articles/{id}/review")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> reviewArticle(@PathVariable Long id, @RequestParam ArticleStatus status) {Optional<Article> optionalArticle = articleRepository.findById(id);if (!optionalArticle.isPresent()) {return ResponseEntity.notFound().build();}Article article = optionalArticle.get();article.setStatus(status);articleRepository.save(article);return ResponseEntity.ok().build();
}

三、专栏审核与管理

1.查询待审核专栏列表

管理员需要审核用户创建的专栏。我们可以在 ColumnController 中添加一个 getPendingColumns 方法,用于查询待审核专栏列表。

@GetMapping("/admin/pending-columns")
@PreAuthorize("hasRole('ADMIN')")
public Page<Column> getPendingColumns(Pageable pageable) {return columnRepository.findByStatus(ColumnStatus.PENDING, pageable);
}

2.审核专栏

管理员审核专栏后,可以将专栏状态更改为已发布或驳回。我们可以在 ColumnController 中添加一个 reviewColumn 方法,用于更新专栏状态。

@PutMapping("/admin/columns/{id}/review")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> reviewColumn(@PathVariable Long id, @RequestParam ColumnStatus status) {Optional<Column> optionalColumn = columnRepository.findById(id);if (!optionalColumn.isPresent()) {return ResponseEntity.notFound().build();}Column column = optionalColumn.get();column.setStatus(status);columnRepository.save(column);return ResponseEntity.ok().build();
}

在这个重写的审核专栏代码中,我们首先通过 ID 查找待审核的专栏。如果找不到对应的专栏,返回 404 状态码。如果找到了待审核的专栏,我们将其状态更新为请求中的状态(如:已发布或驳回),然后保存更新后的专栏信息。最后,返回 200 状态码表示操作成功。

四、数据统计与分析

为了帮助管理员更好地了解平台的运行情况,我们可以提供一些数据统计与分析功能。以下是一些常见的统计指标:

1.用户注册统计

我们可以提供按日、周、月统计用户注册数量的功能。在 UserRepository 中添加一个方法,用于查询指定时间范围内的用户注册数量。

public interface UserRepository extends JpaRepository<User, Long> {// ... 其他方法 ...@Query("SELECT COUNT(u) FROM User u WHERE u.createdAt BETWEEN :startDate AND :endDate")long countUsersByDateRange(@Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate);
}

在 AdminController 中添加一个方法,用于获取用户注册统计数据。

 
@GetMapping("/admin/stats/user-registrations")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> getUserRegistrationStats(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startDate,@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endDate) {long count = userRepository.countUsersByDateRange(startDate, endDate);return ResponseEntity.ok(count);
}

2.文章发布统计

我们可以提供按日、周、月统计已发布文章数量的功能。在 ArticleRepository 中添加一个方法,用于查询指定时间范围内的已发布文章数量。

public interface ArticleRepository extends JpaRepository<Article, Long> {// ... 其他方法 ...@Query("SELECT COUNT(a) FROM Article a WHERE a.status = 'PUBLISHED' AND a.createdAt BETWEEN :startDate AND :endDate")long countPublishedArticlesByDateRange(@Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate);
}

在 AdminController 中添加一个方法,用于获取文章发布统计数据。

 
@GetMapping("/admin/stats/published-articles")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> getPublishedArticleStats(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startDate,@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endDate) {long count = articleRepository.countPublishedArticlesByDateRange(startDate, endDate);return ResponseEntity.ok(count);
}

这样,我们已经实现了管理员模块中的用户管理、文章审核与管理、专栏审核与管理以及数据统计与分析等功能。在实际项目中,你还可以根据需要添加更多的管理功能和统计指标。

五、评论管理与审核

管理员还需要处理评论管理与审核,包括查看评论列表、审核评论、删除评论等功能。

1.查询评论列表

我们可以在 CommentController 中添加一个 getComments 方法,用于查询评论列表。

@GetMapping("/admin/comments")
@PreAuthorize("hasRole('ADMIN')")
public Page<Comment> getComments(Pageable pageable) {return commentRepository.findAll(pageable);
}

1.审核评论

管理员可以审核评论后,将评论状态更改为已发布或驳回。我们可以在 CommentController 中添加一个 reviewComment 方法,用于更新评论状态。

@PutMapping("/admin/comments/{id}/review")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> reviewComment(@PathVariable Long id, @RequestParam CommentStatus status) {Optional<Comment> optionalComment = commentRepository.findById(id);if (!optionalComment.isPresent()) {return ResponseEntity.notFound().build();}Comment comment = optionalComment.get();comment.setStatus(status);commentRepository.save(comment);return ResponseEntity.ok().build();
}

3.删除评论

管理员可以删除不合适的评论。我们可以在 CommentController 中添加一个 deleteComment 方法,用于删除评论。

@DeleteMapping("/admin/comments/{id}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> deleteComment(@PathVariable Long id) {Optional<Comment> optionalComment = commentRepository.findById(id);if (!optionalComment.isPresent()) {return ResponseEntity.notFound().build();}commentRepository.delete(optionalComment.get());return ResponseEntity.ok().build();
}

通过以上代码,我们已经实现了评论管理与审核的功能。管理员可以查看评论列表、审核评论以及删除评论。根据实际需求,你还可以添加其他管理功能,如回复评论、查看举报记录等。

至此,我们已经完成了博客平台的主要功能模块,包括用户模块、文章模块、专栏模块以及管理员模块等。你可以继续扩展功能,优化用户体验,打造一个功能完善、易用的博客平台。

六、网站设置与配置

为了让管理员能够更好地管理网站,我们可以提供一些网站设置与配置功能,如网站标题、描述、备案信息等。我们可以创建一个 Settings 实体类,用于存储网站的配置信息。

@Entity
public class Setting {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String key;private String value;private String description;// getter 和 setter ...
}

在 SettingRepository 中添加相关查询方法。

public interface SettingRepository extends JpaRepository<Setting, Long> {Optional<Setting> findByKey(String key);
}

在 AdminController 中添加一个方法,用于获取网站设置。

 
@GetMapping("/admin/settings")
@PreAuthorize("hasRole('ADMIN')")
public List<Setting> getSettings() {return settingRepository.findAll();
}

添加一个方法,用于更新网站设置。

@PutMapping("/admin/settings")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<?> updateSettings(@RequestBody List<Setting> settings) {for (Setting setting : settings) {Optional<Setting> optionalSetting = settingRepository.findByKey(setting.getKey());if (optionalSetting.isPresent()) {Setting storedSetting = optionalSetting.get();storedSetting.setValue(setting.getValue());settingRepository.save(storedSetting);}}return ResponseEntity.ok().build();
}

至此,我们已经实现了网站设置与配置功能。管理员可以查看和修改网站的设置,以便根据需要调整网站的信息。同时,我们可以在前端页面中展示这些设置信息,提高网站的用户体验。

总结

在本专栏中,我们介绍了如何使用 Spring Boot、Vue3 等现代技术栈构建一个类似 CSDN 的博客平台。我们实现了用户体验与交互设计、文章发布与编辑、文章列表展示、文章分类与标签管理、文章搜索与推荐、文章阅读统计、评论与回复、专栏创建与管理等多个功能模块。同时,我们还提供了管理员管理功能,包括用户管理、文章审核与管理、专栏审核与管理、数据统计与分析、评论管理与审核以及网站设置与配置等。

本专栏旨在帮助读者了解如何构建一个博客平台,以及各个功能模块的实现方法。希望这个专栏能对你在学习和实践过程中提供一些帮助。当然,实际项目中可能会有更多的功能需求和技术挑战,这就需要你不断学习、探索和实践。祝你在技术道路上越走越远!


http://www.ppmy.cn/news/41425.html

相关文章

【随笔记】Win11、RTX3070、CUDA117的深度学习机器学习环境配置

文章目录一、创建深度学习 Conda 虚拟环境二、安装 Pytorch-Gpu三、安装 PyTorch Geometric四、安装 Sklearn五、Jupyter 配置5.1 将虚拟环境加入内核5.2 插件配置5.3 主题、字体、字号配置假设你已经安装了Anaconda3&#xff08;最新Anaconda3的安装配置及使用教程&#xff08…

Bayesian Rstan学习资料推荐

RStan 官方文档&#xff1a;RStan 官方文档是学习 RStan 的起点。它提供了详细的安装说明、基本用法和示例。 RStan 文档: https://mc-stan.org/rstan/ RStan User’s Guide: https://mc-stan.org/docs/2_27/rstan-guide/index.html Stan 用户指南&#xff1a;Stan 用户指南详…

代码随想录Day50

昨天因为准备面试所以咕咕了一天。今天继续学习动规算法&#xff0c;尽管背包问题已经结束但其中的各类思想仍需要进一步理解。 198.打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房…

异步编程

异步编程 一、FutureTask应用&源码分析 1.1 FutureTask介绍 FutureTask是一个可以取消异步任务的类。FutureTask对Future做的一个基本实现。可以调用方法区开始和取消一个任务。 一般是配合Callable去使用。 异步任务启动之后,可以获取一个绑定当前异步任务的FutureT…

【kubernetes云原生】k8s资源管理命令与Namespace使用详解

目录 一、前言 二、k8s概述 三、k8s常用操作管理命令 3.1 kubectl 命令用法 3.2 常用控制台管理命令演示 3.2.1 获取全部节点信息 3.2.2 获取当前集群下全部pod 3.2.3 查看某个pod信息 3.2.4 获取当前集群下的所有namespace信息 3.2.5 查看当前集群下已创建的资源 3…

Spring Boot 3.0系列【26】应用篇之参数校验

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.5 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 1. 概述2. Bean Validation3. 常用注解4. 入门案例5. 分组校验6. 自定义校验注解6.1 原生注解6.2 实现验证器接口6.3 创建…

中间表示- 控制流图

基本概念 基本块&#xff1a;是语句的一个序列&#xff0c;从第一条执行到最后一条 不能从中间进入&#xff0c;不能从中间退出&#xff0c;即跳转指令只能出现在最后 控制流图&#xff1a;控制流图是一个有向图G(V&#xff0c;E) 节点V&#xff1a;是基本块边E&#xff1a;…

入职字节跳动后,才知道年薪 40w 的测试工程师有这么多?

最近脉脉职言区有一条讨论火了&#xff1a; “哪家互联网公司薪资最‘厉害’&#xff1f;” 下面的评论多为字节跳动&#xff0c;还炸出了很多年薪 40w、50w的 90 后们。 我只想问一句&#xff0c;现在的年轻人都这么有钱了吗&#xff1f; 前几天有个朋友跟我说&#xff0c…