python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现

本文主要是介绍python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

锋哥原创的Springboot+Layui python222网站实战:

python222网站实战课程视频教程(SpringBoot+Python爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBoot+Python爬虫实战) ( 火爆连载更新中... )共计23条视频,包括:python222网站实战课程视频教程(SpringBoot+Python爬虫实战) ( 火爆连载更新中... )、第2讲 架构搭建实现、第3讲 页面系统属性动态化设计实现等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1yX4y1a7qM/

新建ArticleAdminController

package com.python222.controller.admin;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.python222.entity.Article;
import com.python222.entity.PageBean;
import com.python222.service.ArticleService;
import com.python222.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** 管理员-帖子控制器* @author python222小锋老师* @site www.python222.com*/
@RestController
@RequestMapping(value = "/admin/article")
public class ArticleAdminController {@Autowiredprivate ArticleService articleService;/*** 根据条件分页查询帖子* @param page* @param limit* @return* @throws Exception*/@RequestMapping(value = "/list")public Map<String,Object> list(@RequestParam(value="page",required=false)Integer page,@RequestParam(value="limit",required=false)Integer limit, @RequestParam(value="title",required=false)String title)throws Exception{Map<String, Object> resultMap = new HashMap<>();PageBean pageBean=new PageBean(page,limit);Page<Article> articlePage = articleService.page(new Page<>(pageBean.getPage(), pageBean.getPageSize()),new QueryWrapper<Article>().like(StringUtil.isNotEmpty(title),"title",title).orderByDesc("publish_date"));resultMap.put("code", 0);resultMap.put("count", articlePage.getTotal());resultMap.put("data", articlePage.getRecords());return resultMap;}/*** 删除帖子* @param id* @return* @throws Exception*/@RequestMapping("/delete")public Map<String,Object> delete(Integer id)throws Exception{Map<String, Object> resultMap = new HashMap<>();articleService.removeById(id);resultMap.put("success", true);return resultMap;}/*** 根据id查询帖子实体* @param id* @return* @throws Exception*/@RequestMapping("/findById")public Map<String,Object> findById(Integer id)throws Exception{Map<String, Object> resultMap = new HashMap<>();Article article=articleService.getById(id);resultMap.put("article", article);resultMap.put("success", true);return resultMap;}}

新建articleManage.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>帖子管理</title>
<link rel="stylesheet" href="/static/layui/css/layui.css"></link>
<link rel="stylesheet" href="/static/css/css.css"></link>
</head>
<body><script type="text/html" id="hotSwitchTpl"><!-- 这里的 checked 的状态只是演示 --><input type="checkbox" name="{{d.id}}" value="{{d.hot}}" lay-skin="switch" lay-filter="hotSwitch" lay-text="&nbsp;是&nbsp;|&nbsp;否&nbsp;" {{ d.hot == true ? 'checked' : '' }}></script><div style="padding: 20px"><span class="layui-breadcrumb"><a>首页</a><a><cite>帖子管理</cite></a></span><div style="padding-top: 20px;"><div style="padding: 20px"><div class="layui-form"><div class="layui-inline"><label class="layui-form-label">文章标题:</label><div class="layui-input-inline"><input type="text" id="s_title"  placeholder="请输入" autocomplete="off" style="width: 400px" class="layui-input" onkeydown="if(event.keyCode==13) search()"/></div></div><div class="layui-inline"><button class="layui-btn layuiadmin-btn-list"  lay-submit="" onclick="search()" lay-filter="LAY-app-contlist-search"><i class="layui-icon layui-icon-search layuiadmin-button-btn" ></i></button></div></div><div><table width="100%" id="articleListTable" ></table></div></div></div><script src="/static/layui/layui.js"></script>
<script src="/static/js/jquery.js"></script>
<script src="/static/js/common.js"></script>
<script type="text/javascript">function formattedDate(obj){const date = new Date(obj.publishDate);const year = date.getFullYear();const month = (date.getMonth() + 1).toString().padStart(2, '0');const day = date.getDate().toString().padStart(2, '0');const formattedDate = `${year}-${month}-${day}`;return formattedDate}layui.use(['element','form','table'], function(){var form=layui.form;var element = layui.element; //导航的hover效果、二级菜单等功能,需要依赖element模块$ = layui.jquery; // 使用jquerytable = layui.table;table.render({elem: '#articleListTable',url:'/admin/article/list',cols: [[{type:'checkbox'},{field:'id', width:100,title: '编号'},{field:'title',title: '帖子标题'},{field:'publishDate', width:150,title: '发布日期',templet:formattedDate},{field:'hot', width:100, title: '热门?',align:'center',templet:hotSwitchTpl},{field:'action', width:250, title: '操作',align:'center',templet:formatAction}]],page: true});// 监听用户状态操作form.on('switch(hotSwitch)', function(obj){$.post("/admin/article/updateHotState",{"id":this.name,"hot":obj.elem.checked},function(result){if(result.success){layer.msg("执行成功!");table.reload("articleListTable",{});}else{layer.msg("执行失败,请联系管理员!");}},"json");});});function search(){var s_title=$("#s_title").val();table.reload("articleListTable",{page:{curr:1},where:{title:s_title}})}function deleteOne(id){layer.confirm('您确定要删除这条记录吗?', {title:"系统提示",btn: ['确定','取消'] //按钮}, function(){layer.closeAll('dialog');$.post("/admin/article/delete",{"id":id},function(result){if(result.success){layer.msg("删除成功!");table.reload("articleListTable",{});}else{layer.msg("删除失败,请联系管理员!");}},"json");}, function(){});}function addArticle(){layer.open({type: 2,title: '添加友情链接',area: ['500px', '500px'],content: '/admin/saveArticle.html' //iframe的url});}function modifyArticle(id){layer.open({type: 2,title: '修改友情链接',area: ['500px', '500px'],content: '/admin/saveArticle.html?id='+id //iframe的url});}function publishArticle(id){$.post("/admin/article/publish",{"id":id},function(result){if(result.success){layer.msg("发布成功!");table.reload("articleListTable",{});}else{layer.msg("发布失败,请联系管理员!");}},"json");}function modifyArticle(id){window.location.href="saveArticle.html?id="+id}function formatAction(d){var s="<button class='layui-btn layui-btn-normal layui-btn-xs' onclick='modifyArticle("+d.id+")'><i class='layui-icon layui-icon-edit'></i>编辑</button><button class='layui-btn layui-btn-warm layui-btn-xs' onclick='deleteOne("+d.id+")'><i class='layui-icon layui-icon-delete' ></i>删除</button>";if(d.status==2){return s;}else{return "<button th:if='${d.status!=2}' class='layui-btn layui-btn layui-btn-xs' onclick='publishArticle("+d.id+")'><i class='layui-icon layui-icon-edit'></i>发布帖子</button>"+s;}}</script>
</body>
</html>
/*** 修改帖子热门状态* @param article* @return*/
@RequestMapping("/updateHotState")
public Map<String,Object> updateHotState(Article article){Article oldArticle = articleService.getById(article.getId());oldArticle.setHot(article.getHot());oldArticle.setHotDate(new Date());articleService.updateById(oldArticle);Map<String, Object> resultMap = new HashMap<>();resultMap.put("success",true);return resultMap;
}

这篇关于python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/649477

相关文章

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定