大米新闻微信小程序和Springboot新闻管理系统项目源码

news/2024/7/20 3:39:59 标签: 微信小程序, spring boot, 小程序

介绍

本项目分为大米news小程序springboot新闻管理系统后台项目。小程序主要用来新闻展示,后台管理系统用于提供相关新闻API。

项目源码

参考:https://www.bilibili.com/video/BV1TD4y1j7g3/?spm_id_from=333.337.search-card.all.click&vd_source=20f28d37cb33d3df70e94bebfe39fee8

系统功能演示

大米新闻小程序演示

大米news小程序

功能截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知识点

  1. 如何创建并使用自定义组件?
  2. 如何编写好看的样式CSS?
  3. 如何对VIEW进行排版布局?
  4. 如何利用wxParse实现对html内容格式化?
  5. 如何使用不同类型路由携带参数跳转?
  6. 如何与springboot后台系统进行接口调用和数据交互?

新闻管理后台

功能截图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知识点

  • springboot通用框架
  • mybatis dao层设计
  • thymeleaf 格式化
  • mysql
  • bootstrap布局增删改查

后台API接口

@RestController
@RequestMapping("/openapi")
public class OpenApi extends BaseController {

    @Autowired
    ISysUserService userService;

    @Autowired
    IDmNewsService dmNewsService;

    @Autowired
    IDmBannerService bannerService;


    @PostMapping("/doLogin")
    public AjaxResult login(@RequestBody LoginForm loginForm){
        SysUser entity = userService.selectUserByUsername(loginForm.getUsername());
        String err = "";
        // 未找到用户
        if(entity == null){
            err = "用户不存在!";
        }else if(!loginForm.getPassword().equals(entity.getPassword())){
            err = "密码错误!";
        }

        if(StringUtils.isNotEmpty(err)){
            return AjaxResult.error(err);
        }

        return AjaxResult.success(entity);
    }

    /**
     * 查询资讯列表,支持根据新闻类型查找
     */
    @PostMapping("/dmNews/list")
    public AjaxResult listDmNews(@RequestBody DmNews news)
    {
        //startPage();
        List<DmNews> list = dmNewsService.selectDmNewsList(news);
        return AjaxResult.success(list);
    }

    /**
     *  获取热点新闻,根据阅读数+点赞数降序取top10
     * @return
     */
    @GetMapping("/dmNews/hotlist")
    public AjaxResult getHotDmNews(){
        List<DmNews> list = dmNewsService.selectHotDmNewsList();
        return AjaxResult.success(list);
    }


    @GetMapping("/dmNews/{id}")
    public AjaxResult getById(@PathVariable("id") Integer id){
        // 阅读数+1
        DmNews dmNews = dmNewsService.selectDmNewsById(id);
        dmNews.setReadCount(dmNews.getReadCount()+1);
        dmNewsService.updateDmNews(dmNews);

        return AjaxResult.success(dmNews);
    }

    @GetMapping("/dmNews/addLikeCount/{id}")
    public AjaxResult like(@PathVariable("id") Integer id){
        // 阅读数+1
        DmNews dmNews = dmNewsService.selectDmNewsById(id);
        dmNews.setLikeCount(dmNews.getLikeCount()+1);
        dmNewsService.updateDmNews(dmNews);

        return AjaxResult.success();
    }
    /**
     * 查询轮播图列表
     */
    @GetMapping("/dmBanner/list")
    public TableDataInfo listDmBanner()
    {
        startPage();
        List<DmBanner> list = bannerService.selectDmBannerList(null);
        return getDataTable(list);
    }

    /**
     *  修改密码
     * @param param
     * @return
     */
    @PostMapping("/modifyPassword")
    @ResponseBody
    public AjaxResult modifyPassword(@RequestBody PasswordForm param){
        // 从session中获取当前登录用户
        String oldPassword = param.getPassword();
        String newPassword = param.getNewpassword();
        String newPassword2 = param.getNewpassword2();

        if(StringUtils.isEmpty(oldPassword)){
            return AjaxResult.error("原密码不能为空!");
        }

        if(StringUtils.isEmpty(newPassword)){
            return AjaxResult.error("新密码不能为空!");
        }

        if(StringUtils.isEmpty(newPassword2)){
            return AjaxResult.error("确认密码不能为空!");
        }

        if(oldPassword.equals(newPassword)){
            return AjaxResult.error("新密码不能和旧密码一致!");
        }

        if(newPassword.length() > 10 || newPassword.length() < 3){
            return AjaxResult.error("新密码长度必须为3-10之间!");
        }

        // 根据用户名查询用户
        SysUser user = userService.selectUserByUsername(param.getUsername());
        String realPassword = user.getPassword();
        if(!(oldPassword.equals(realPassword))){
            return AjaxResult.error("原密码输入错误!");
        }

        if(!(newPassword.equals(newPassword2))){
            return AjaxResult.error("新密码输入不一致!");
        }

        user.setPassword(newPassword);

        userService.updateSysUser(user);

        return AjaxResult.success();
    }


}

http://www.niftyadmin.cn/n/22269.html

相关文章

HarmonyOS/OpenHarmony 双击返回与退出App

作者&#xff1a;坚果&#xff0c;公众号&#xff1a;”大前端之旅“&#xff0c;哔哩哔哩&#xff0c;OpenHarmony布道师&#xff0c;OpenHarmony校源行开源大使&#xff0c;电子发烧友鸿蒙MVP&#xff0c;51CTO博客专家博主&#xff0c;阿里云博客专家。 有时候我们会遇到这样…

【携程】真题-查询满足区间的记录

【携程】真题-查询满足区间的记录 题目描述 有一批订单记录,数据有订单号,入店时间,离店时间; 输入一个时间值A,需要在这批记录中找到符合入离店时间范围(A大于等于入店时间,并且A小于等于离店时间)内的所有记录。 单次查询时间复杂度控制在O(logN) ※注意:订单号升…

整合Tkinter GUI界面的古诗词词云生成

Python语言提供的wordcloud词云功能&#xff0c;使文本数据的可视化&#xff0c;简单而美丽。但网上的大多数词云生成功能&#xff0c;多半没有可交互的GUI界面&#xff0c;使用起来稍觉不便。笔者结合网上的中文词云功能&#xff0c;以唐诗三百首&#xff0c;宋词三百首&#…

ArcGIS基础实验操作100例--实验11以线要素分割面要素(一)

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验11 以线要素分割面要素&#xff08;一&#xff09; 目录 一、实验背景 二、实验数据 …

云服务未来的发展

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录云服务发展仍然具有潜力一、云服务是什么二、提供云服务企业1.腾讯2.阿里3.百度4.华为5.CSDN6.浪潮7.曙光8.并行云9.CSDN三、云服务的支撑四、云服务的一站式解决方案…

Android进阶 之 SPI机制及实现原理

什么是SPI SPI &#xff0c;全称为 Service Provider Interface&#xff0c;是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件&#xff0c;自动加载文件里所定义的类。是Java提供的一套用来被第三方实现或者扩展的API&#xff0c;它可以用来启用…

open-local部署之后k8s的kube-scheduler挂掉问题

搭建一套k8s集群之后&#xff0c;本地存储化方案选择了阿里巴巴的open-local&#xff0c;没部署open-local&#xff0c;k8s 的kube-scheduler一切正常&#xff0c;只要按照官方文档部署了open-local&#xff0c;k8s的kube-scheduler就会挂掉&#xff0c;不是被kill掉&#xff…

【Kafka】性能测试命令

提示&#xff1a;一直在用kafka但是对它的性能一直没有啥认识&#xff0c;趁着这次优化算法中台的算法效率问题&#xff0c;梳理一下这块。 文章目录1.硬件资源2.测试3.总结kafka是个消息中间件&#xff0c;现在我们要搞清楚它的性能&#xff0c;离开硬件资源配置说性能都是xjb…