💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐
目录
- 基于SpringBoot 的校园新闻发布平台介绍
- 基于SpringBoot 的校园新闻发布平台演示视频
- 基于SpringBoot 的校园新闻发布平台演示图片
- x基于SpringBoot 的校园新闻发布平台代码展示
- 基于SpringBoot 的校园新闻发布平台文档展示
基于SpringBoot 的校园新闻发布平台介绍
本系统《校园新闻发布平台》是一个基于B/S架构、采用前后端分离模式开发的信息管理平台,后端选用SpringBoot框架整合Mybatis,前端使用Vue配合ElementUI组件库,数据库采用MySQL。系统面向高校宣传部与融媒体中心等实际业务场景,核心定位是为校园新闻的采编、审核、发布与存档提供全流程线上化管理工具。平台依据组织职能差异,将用户体系划分为普通用户、宣传部人员、融媒体人员三类角色,普通用户仅具备浏览新闻与投递稿件的权限,宣传部人员承担新闻稿件的初审与分类管理职责,融媒体人员则负责已发布新闻信息的终审与对外展示控制。系统围绕新闻生命周期构建了新闻分类管理、新闻稿件管理、新闻信息管理、投稿专区、公告类型管理、公告信息管理等核心业务模块,并辅以个人中心与密码修改等基础功能,从而形成一套职责清晰、流转规范、操作留痕的校园新闻数字化管理闭环。
基于SpringBoot 的校园新闻发布平台演示视频
演示视频
基于SpringBoot 的校园新闻发布平台演示图片

x基于SpringBoot 的校园新闻发布平台代码展示
// ========== 1. 新闻稿件提交(投稿专区) ==========
@Autowired
private NewsDraftMapper newsDraftMapper;
@Autowired
private NotificationService notificationService;
public Result submitDraft(NewsDraft draft, MultipartFile[] attachments) {
SparkSession spark = SparkSession.builder().appName("NewsDraftSubmit").master("local[*]").getOrCreate();
Dataset<Row> df = spark.createDataFrame(Arrays.asList(draft), NewsDraft.class);
long validCount = df.filter("title is not null and length(title) >= 4 and content is not null and length(content) >= 20").count();
if (validCount == 0) { spark.stop(); return Result.error("稿件标题至少4个字符,内容至少20个字符"); }
draft.setStatus("待审核");
draft.setSubmitTime(LocalDateTime.now());
draft.setVersion(1);
int insertResult = newsDraftMapper.insert(draft);
if (insertResult > 0 && attachments != null && attachments.length > 0) {
for (MultipartFile file : attachments) {
String filePath = saveAttachment(file, draft.getId());
attachmentMapper.insert(new Attachment(draft.getId(), filePath, file.getOriginalFilename()));
}
}
spark.stop();
notificationService.sendNotification(draft.getSubmitterId(), "您的稿件《" + draft.getTitle() + "》已提交,等待审核");
return Result.success("投稿成功,稿件编号:" + draft.getId());
}
// ========== 2. 新闻稿件审核(宣传部人员) ==========
@Autowired
private NewsDraftMapper newsDraftMapper;
@Autowired
private NewsInfoMapper newsInfoMapper;
@Autowired
private AuditLogMapper auditLogMapper;
public Result auditDraft(Integer draftId, String action, String remark, Integer auditorId) {
SparkSession spark = SparkSession.builder().appName("NewsDraftAudit").master("local[*]").getOrCreate();
NewsDraft draft = newsDraftMapper.selectById(draftId);
if (draft == null || !"待审核".equals(draft.getStatus())) { spark.stop(); return Result.error("稿件不存在或状态已变更"); }
List<NewsDraft> historyList = newsDraftMapper.selectHistoryBySubmitter(draft.getSubmitterId());
Dataset<Row> historyDf = spark.createDataFrame(historyList, NewsDraft.class);
long rejectCount = historyDf.filter("status = '已驳回'").count();
if ("通过".equals(action)) {
draft.setStatus("已通过");
NewsInfo newsInfo = new NewsInfo();
newsInfo.setTitle(draft.getTitle());
newsInfo.setContent(draft.getContent());
newsInfo.setCategoryId(draft.getCategoryId());
newsInfo.setPublisher(draft.getSubmitterName());
newsInfo.setPublishTime(LocalDateTime.now());
newsInfo.setViewCount(0);
newsInfoMapper.insert(newsInfo);
draft.setNewsId(newsInfo.getId());
} else if ("驳回".equals(action)) {
draft.setStatus("已驳回");
if (rejectCount >= 2) { spark.stop(); return Result.error("该投稿人已累计驳回" + rejectCount + "次,建议人工复核"); }
} else { spark.stop(); return Result.error("审核动作仅支持通过或驳回"); }
newsDraftMapper.updateById(draft);
AuditLog log = new AuditLog();
log.setDraftId(draftId);
log.setAuditorId(auditorId);
log.setAction(action);
log.setRemark(remark);
log.setOperateTime(LocalDateTime.now());
auditLogMapper.insert(log);
spark.stop();
return Result.success("审核完成,当前状态:" + draft.getStatus());
}
// ========== 3. 新闻信息发布与浏览量统计(融媒体人员) ==========
@Autowired
private NewsInfoMapper newsInfoMapper;
@Autowired
private ViewLogMapper viewLogMapper;
public Result publishNews(Integer newsId, Integer publisherId) {
SparkSession spark = SparkSession.builder().appName("NewsPublishStats").master("local[*]").getOrCreate();
NewsInfo news = newsInfoMapper.selectById(newsId);
if (news == null) { spark.stop(); return Result.error("新闻不存在"); }
if (news.getPublishTime() != null) { spark.stop(); return Result.error("该新闻已发布,请勿重复操作"); }
news.setPublishTime(LocalDateTime.now());
news.setStatus("已发布");
newsInfoMapper.updateById(news);
List<ViewLog> viewLogs = viewLogMapper.selectByNewsId(newsId);
if (!viewLogs.isEmpty()) {
Dataset<Row> logDf = spark.createDataFrame(viewLogs, ViewLog.class);
long totalViews = logDf.count();
news.setViewCount((int) totalViews);
newsInfoMapper.updateById(news);
Dataset<Row> hourGroup = logDf.groupBy(window(col("viewTime"), "1 hour")).count().orderBy(col("window.start").desc());
List<Row> hourRows = hourGroup.collectAsList();
if (!hourRows.isEmpty()) { System.out.println("近一小时浏览量峰值:" + hourRows.get(0).getLong(1)); }
}
spark.stop();
return Result.success("新闻发布成功,当前浏览量:" + news.getViewCount());
}
基于SpringBoot 的校园新闻发布平台文档展示

💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐






