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

news2024/10/6 2:32:04

介绍

本项目分为大米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.coloradmin.cn/o/126164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day08 常用API

1.API 1.1 API概述-帮助文档的使用 什么是API ​ API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&a…

两个链表的第一个公共结点

今天为大家带来一道题目&#xff1a; 这个题目先来看看我自己写的错误版本 public class Solution {public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {ListNode tmp1pHead1;ListNode tmp2pHead2;while(pHead1!null&&pHead2!null){ListNode cur…

Axure8.0动态面板使用

Axure动态面板是最常使用的&#xff0c;今天我们就来详细介绍一下。 动态面板是Axure中一个非常强大的高级元件&#xff0c;用于实现多个状态的切换展示&#xff0c;可以将其看成一个容器&#xff0c;可以容纳多种不同状态&#xff0c;通过各种交互触发其状态发生变化。 通过以…

年终盘点丨2022边缘计算大事记

2022年进入尾声了&#xff0c;每年到了年底&#xff0c;边缘计算社区都会盘点过去一年边缘计算领域发生的值得您关注的事情。今年的边缘计算领域发生很多不一样的精彩&#xff1a;加强面向特定场景的边缘计算能力刷屏一整年&#xff0c;安波福43亿美元收购风河&#xff0c;全球…

C++图论 最短路问题总结

目录 最短路问题 图的存储 一、单源最短路 ① 朴素Dijkstra O(n^2) 练习题 代码 ② 堆优化Dijkstra O(mlogn) 练习题 代码 ③ Bellman_ford O(nm) 练习题 代码 ④ Spfa O(n) - O(nm) 练习题 ​代码 二、多源最短路 Floyd O(n^3) 练习题 代码 最短路问题 图…

C# 数据库访问方法

一 访问数据的两种基本方式 1 方式1&#xff1a;DataAdapter及DataSet ① 适合于“离线”处理&#xff1b; ② 自动建立Command对象&#xff1b; 方式2&#xff1a;DataReader ① 适合于只读数据&#xff0c;效率较高 它们都要使用Connection及Command 二 Connection对象…

Android解析服务器响应数据

文章目录Android解析服务器响应数据解析XML格式数据Pull解析方式SAX解析方式解析JSON数据使用JSONObject使用GSON的方式来解析JSON数据Android解析服务器响应数据 解析XML格式数据 通常情况下,每一个需要访问网络的应用程序都会有一个自己的服务器,我们可以向服务器提交自己的…

多线程——概念及线程安全

文章目录多线程概念进程vs线程多线程的优势/好处/使用场景线程的状态创建线程的方式线程的启动Thread中,start()和run()有什么区别?Thread类中的常用方法join()获取当前线程引用线程休眠线程中断线程的属性多线程效率局部变量在多线程中的使用线程安全问题1.什么情况会产生线程…

replit搭建

本文章用于快速搭建“出去”的节点&#xff0c;很简单 每个月只有100G流量中间可能会停止运行&#xff0c;需要手动进入项目开启 1、需要注册一个Replit账号 点击注册 支持Github登录&#xff0c;其他登录也行 2、使用这个模板项目 随便起个名字 3、运行 进行完第二步&am…

【开源项目】第三方登录框架JustAuth入门使用和源码分析

第三方登录框架JustAuth入门使用和源码分析 项目介绍 JustAuth&#xff0c;如你所见&#xff0c;它仅仅是一个第三方授权登录的工具类库&#xff0c;它可以让我们脱离繁琐的第三方登录 SDK&#xff0c;让登录变得So easy! JustAuth 集成了诸如&#xff1a;Github、Gitee、支付…

九、kubernetes中Namespace详解、实例

1、概述 Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下&#xff0c;kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中&#xff0c;可能不想让两个Pod之间进行互相的访…

花费数小时,带你学透Java数组,这些常用方法你还记得吗?

推荐学习专栏&#xff1a;Java 编程进阶之路【从入门到精通】 文章目录1. 数组2. 一维数组2.1 声明2.2 初始化2.3 使用3. 二维数组3.1 声明3.2 初始化3.3 使用4. 数组在内存中的分布5. 数组常用的方法5.1 Arrays.toString方法5.2 Arrays.copyOf方法5.3 Arrays.copyOfRange方法5…

麦克斯韦(Maxwell)方程组的由来

美国著名物理学家理查德费曼&#xff08;Richard Feynman&#xff09;曾预言&#xff1a;“人类历史从长远看&#xff0c;好比说到一万年以后看回来&#xff0c;19世纪最举足轻重的毫无疑问就是麦克斯韦发现了电动力学定律。” 这个预言或许对吧。可是费曼也知道&#xff0c;麦…

疫情三年划上终止符,好易点却把个人健康写入了产品基因

作者 | 牧之 编辑 | 小沐 出品 | 智哪儿 zhinaer.cn随着12月26日国家卫健委发布的一纸公告&#xff0c;新冠肺炎正式更名为新冠感染。而从次年1月8日起&#xff0c;新冠将被实施「乙类乙管」。同时出入境也将采取开放性政策。这意味着&#xff0c;持续三年的「疫情时期」&#…

大数据技术——HBase简介

文章目录1. HBase定义2. HBase数据模型2.1 逻辑存储结构2.2 HBase 物理存储结构3. HBase基础架构1. HBase定义 HBase – Hadoop Database&#xff0c;是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统&#xff0c;利用HBase技术可在廉价PC Server上搭建起大规模结构化存…

基于BP神经网络的电力负荷预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

SpringBoot系列之数据库初始化-jpa配置方式

【DB系列】数据库初始化-jpa配置方式 | 一灰灰Blog 上一篇博文介绍如何使用spring.datasource来实现项目启动之后的数据库初始化&#xff0c;本文作为数据库初始化的第二篇&#xff0c;将主要介绍一下&#xff0c;如何使用spring.jpa的配置方式来实现相同的效果 I. 项目搭建 1…

qt windeployqt打包 带多个dll的可执行程序时 应用程序无法正常启动

前提&#xff1a; 我的工程中包含5个子项目&#xff0c;项目1生成 camer.exe 项目2生成 dll1.dll &#xff0c;其中项目1 依赖后面的四个子项目。 但我在打包程序时&#xff0c;只运行了windeployqt F:\workspace\\bin-ne\camer.exe 将打包的程序放在纯净版本上时&#xff0…

Django开发

1.创建项目 创建项目&#xff1a; 删除内容&#xff1a; 2.创建APP 创建APP 注册APP&#xff1a; 3.设计表结构 4.在SQL中生成表 工具连接MySQL生成数据库&#xff08;在cmd中执行&#xff09;&#xff1a; create database Day1 DEFAULT CHARSET utf8 COLLATE utf8_…

融云获 51CTO 年终评选「中国 IT 行业政企数智办公优秀解决方案奖」

今日&#xff0c;51CTO 主办的“2022 年第十七届中国企业年终评选”榜单新鲜出炉&#xff0c;融云凭借百幄数智办公平台在政企信创办公领域的创新方案和独特设计&#xff0c;斩获“2022 年度中国 IT 行业政企数智办公优秀解决方案奖”。关注【融云 RongCloud】&#xff0c;了解…