反垃圾邮件系统|基于Springboot+vue 实现反垃圾邮件系统

news2025/1/17 23:08:13

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-XX-165

一,项目简介

随着互联网技术的不断发展,我们已经步入了互联网时代。网络技术的日渐成熟,现在的互联网已经和我们生活紧密的联系。网购的出现使人们可以足不出户就可以跟朋友跟同事和合作伙伴进行联络加快节奏的工作与生活,让人们不仅仅最求物质上的自由更加追求精神上的满足感与幸福感。

反垃圾邮件系统是一个个人性质邮件系统,它为用户之间搭建了一个桥梁,你可以登录/注册后可以进行收发邮件加通讯录等功能操作,并且还支持网页国际化,也就是多国语言来回切换。而管理员可以通过管理员账号进入该系统,并且通过管理员才有的用户管理界面对账号赋予、移除管理员权限。并且该系统还支持附件的传输下载。

反垃圾邮件系统本着设计功能丰富,易于操作,界面友好为开发原则,管理员需要能方便、快捷的获取用户信息。系统需要具备较好的可观性,系统能有效的拦截垃圾邮件 [4]。

依据以上总体目标,对该系统提出以下需求。

(1)系统需要简洁明了的界面效果,能够快速清晰地了解整个系统所具备的功能。

(2)系统操作界面需要简单明了,不需要特别的技术能力,用户只要平时用过电脑,均可进入系统,无需对操作系统的人员进行培训。

(3)后台数据需要能够十分清晰,并进行数据管理和系统管理。

(4)为了更好展示系统的邮件信息状况,功能查询界面需要合理的提供分页功能。

3.1.2 功能需求

本系统是反垃圾邮件分析需求而设计开发的一个前后台一体的系统。主要内容包括:首页、登录、邮件中心、联系人、用户管理、敏感字词管理、自动回复 [5]。

(1)首页:首页为前端界面,概括了所有可视化图形界面,用于展示用户的头像用户名和窗口栏等等。

(2)登录:该登录是进入后台的唯一入口,管理员需要输入正确的用户名与密码才能进入后台管理系统。

(3)邮件中心:邮件中心是该用户所有的邮件相关模块,包括已发送、收件箱、垃圾箱、草稿箱、写信、已删除等,

(4)联系人:联系人是该用户所有的联系人相关模块,包括好友列表、添加好友、同意和拒绝好友申请、黑名单、白名单等,

(5)用户管理:系统管理功能模块包括用户权限修改、用户编辑。其中,用户权限修改功能是用于修改用户成为系统的管理员权限;用户编辑功能是用于修改系统用户的账号信息。

(6)敏感字词管理:敏感字词管理功能模块包括敏感字词修改、新增敏感字词、其中,敏感字词修改功能是用于修改敏感字词的内容;

(7)自动回复:自动回复是别的用户给用户发送邮件,用户可以设置自定义的内容自动回复给发件人

 反垃圾邮件系统主要实现了前台(登录、注册、首页、写信、邮件中心(已发送、草稿箱、收件箱、垃圾箱已删除)、联系人相关(通讯录、黑名单、白名单)和后台(客户管理、敏感字词管理)。

反垃圾邮件系统前台功能主要分为以下几个内容:

1、注册

客户通过账号密码注册进入反垃圾邮件系统

注册合法性判断过程:用户注册时通过正则表达式验证,以及注册不能重复账号。

2、写信

用户通过输入收件人邮箱、标题、正文和附件等内容给其他用户写邮件或者存入草稿箱

合格性判断过程: 通过查询收件人信息,看是否有这个用户,附件大小类型是否合格

3、已发送邮件

根据用户的id查询邮件,并且该邮件不是垃圾箱等状态,可以对该邮件进行查看、删除和转发。

对邮件按时间进行倒序,列表分页展示

4、草稿箱

根据用户的id查询垃圾箱邮件,并且可以对该邮件进行继续编辑、删除和发送。

对邮件按时间进行倒序,列表分页展示

5、收件箱

根据用户的id查询收件箱箱邮件,并且可以对该邮件进行继续编辑、删除和发送。

对邮件按时间进行倒序,列表分页展示

合法性:是否存在敏感字词,发件人是否是黑名单,是否通过朴素贝叶斯算法

6、垃圾箱

根据用户的id查询敏感字词和黑名单拦截的垃圾箱邮件,并且可以对该邮件进行查看和删除

对邮件按时间进行倒序,列表分页展示

7、已删除

根据用户的id查询那些收件箱发件邮箱删除的邮件,并且可以对该邮件进行查看和彻底删除

对邮件按时间进行倒序,列表分页展示

8、通讯录

好友之间的桥梁,可以通过搜索好友邮箱号查找用户申请好友,通过好友申请,对好友进行备注、拉入黑名单、拉入白名单以及删除好友

9、黑名单

好友之间的小船翻了,设置了黑名单之后该用户给你发的邮件全收纳进了垃圾箱,但可以对用户取消黑名单、以及删除好友

10、 白名单

这是我的信任好友,设置了白名单之后该用户给你发的邮件就算有敏感字词和朴素贝叶斯过滤的词也全都正常接收到收件箱,但可以对用户取消白名单、以及删除好友

11、 自动回复

当用户在忙的时候往往不能第一时间回复好友的邮件,这时候也不能让好友等的太着急。就可以用我们自定义的自动回复来给好友发邮件

12、后台功能设计

反垃圾邮件系统后台功能主要分为用户管理和敏感字词管理:

13、用户管理

用户管理主要对反垃圾邮件系统所有用户的信息以等进行编辑,删除,以及对用户的权限进行修改,当设为管理员时就将该用户的字段中的roles加一个root,在前端vue的路由里面进行权限判断,数组里只有editor就是普通用户没有后台界面,里面有root的时候就是管理员,反垃圾邮件系统里面就有后台界面

14、敏感字词管理

敏感字词管理是对管理员对邮件系统进行反垃圾拦截的时候设置的敏感字词,可以对敏感字词进行增加,修改,删除等操作,当接收邮件的时候标题或者正文里边包含这些敏感字词其中之一时就纳入到垃圾箱

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前台开发技术:Vue+ElementUI+Nodejs

前后端分离开发模

三,系统展示

本次反垃圾邮件系统的实现基于B/S结构模式,http超文本传输协议,文件和图片用Nginx反向代理上传和下载, MySQL数据库引擎采用默认的innodb,接口规范采用Restful API风格。

该系统实现为前台(注册登录、首页、写信、收件箱、垃圾箱、通讯录等等),后台(用户管理、敏感字词管理)

6.1 前台系统

前台主要是用户使用的,跟朋友之间进行通信,加好友,黑名单。还有拦截垃圾邮箱等功能。主要分为以下几个内容:

6.1.1 登录注册页面

该页面通过用户输入账号密码进行注册之后,发送请求调用后端接口完成注册,MySQL给账号设置了唯一的索引,如果再注册这个账号。后端就会报错,在用java的异常机制处理这个异常返回一个该账号以存在的msg给前端,前端在展示到页面上,注册成功之后跳转到登录页面。登录即可。如下图6.1所示:

 

表6-1 注册页面

6.1.2 首页页面

该页面通过用户输入正确的账号密码登录进来之后,映入眼帘的是一个我们邮件系统的动态logo,左侧是系统的主要功能,右上角则是用户的头像以及用户名,还支持网站国际化。如下图6.2所示:

 


表6-2 前台首页

表6-2 前台首页

6.1.3 写信页面

该页面通过前台首页的写信入口进入,集成了富文本编辑器插件。支持html标签、图片以及附件的上传等等,还能直接加入草稿箱、如下图6.3所示:

                                                     表6-3 写信页面

6.1.4 收件箱页面

该页面通过首页进入,发送请求,后台接收到该用户的ID,调用该接口方法返回该用户的所有收件箱的邮件,用户可以对邮件进行删除查看转发作 如下图6.4:

 

表6-4 收件箱页面

6.1.5 垃圾箱页面

该页面通过首页进入,发送请求,后台接收到该用户的ID,调用该接口方法返回该用户拦截的敏感字词和黑名单的垃圾邮件。用户可以进行查看删除等操作 如下图所示:

表6-5 垃圾箱页面

6.1.6通讯录页面

该页面通过首页进入,发送请求,后台接收到该用户的ID,调用该接口方法返回该用户所有的好友列表和所有好友申请。该页面可以对好友进行拉入黑名单、拉入白名单、备注以及删除好友等操作 如下图所示:

表6-6 联系人页面

6.2 后台系统

后台主要是管理员使用的,主要模块有用户管理以及敏感字词管理

6.2.1 用户管理页面

该页面只有拥有管理员权限的用户才能显示,用到了vue里面路由权限的技术点,里面展现了所有用户的信息,该页面也可以对用户赋予管理员权限和取消管理员权限如下图6.8所示:

 

 

表6-8 用户管理页面

6.2.2 敏感字词管理页面

该页面只有拥有管理员权限的用户才能显示,是拦截垃圾邮件的关键来源、这里可以对敏感字词进行增加、删除、修改以及设置敏感字词状态等操作 如下图6.9所示:

表6-9 敏感字管理页面

四,核心代码展示

package com.javaclimb.music.controller;/**
 * @Project_name: Mucic
 * @PACKAGE_NAME: com.javaclimb.mucic.controller
 * @description: tmx
 **/

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.javaclimb.music.bean.Friends;
import com.javaclimb.music.bean.Mails;
import com.javaclimb.music.service.FriendsService;
import com.javaclimb.music.service.MailsService;
import com.javaclimb.music.utils.Consts;
import org.apache.ibatis.annotations.Param;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Project_name: Mucic
 * @PACKAGE_NAME: com.javaclimb.mucic.controller
 * @author: 詹姆斯
 * @create: 2021-10-10 01:48
 * @description: tmx
 *
 **/
@RestController
@RequestMapping("/friends")
public class FriendsController {
   @Resource
   private FriendsService friendsService;
    @Resource
    private MailsService mailsService;

    /**
     * 新增
     * @param
     * @return
     */
    @RequestMapping(value = "/insert",method = RequestMethod.POST)
    public Object insert(@Param("id") Integer id ,@Param("em") String em) {
        JSONObject jsonObject = new JSONObject();

       int i=0;
        int selecta1 = mailsService.selecta(em);
        if(selecta1==0){
            jsonObject.put(Consts.CODE, 500);
            jsonObject.put(Consts.MSG, "没有此用户");
            return jsonObject;
        }
        Integer friendId = mailsService.select(em);
        int i1 = friendsService.selectTmx(id, friendId);
        if(i1>0){
            jsonObject.put(Consts.CODE, 500);
            jsonObject.put(Consts.MSG, "和该好友已经申请过了");
            return jsonObject;
        }
        Friends friends =new Friends();
        friends.setUserId(id);
        friends.setFriendId(friendId);
        i = friendsService.insert(friends);
        if(i!=0) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "发送申请成功");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "发送申请失败");
        return jsonObject;
        }


    /**
     * 修改
     */
    @RequestMapping(value = "/update",method = RequestMethod.PUT)
    public Object updateFriends(@RequestBody Friends friends){
        JSONObject jsonObject =new JSONObject();
        if (friends.getIsBlack()!=null){
            if (friends.getIsBlack() == true) {
                friends.setIsWhite(false);
            }
        }
        int flag= friendsService.updateByPrimaryKeySelective(friends);
        if(flag!=0){
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "修改成功");
            return jsonObject;
        }
        else {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "修改失败");
            return jsonObject;
        }
    }

    /**
     * 修改
     */
    @RequestMapping(value = "/upFriend",method = RequestMethod.PUT)
    public Object upFriend(@RequestParam int id){
        System.out.println(id);
        JSONObject jsonObject =new JSONObject();
        int flag= friendsService.upFriend(id);
        Friends friends = friendsService.sId(id);

        Integer userId = friends.getUser().getId();
        System.out.println("userId是"+userId);
        Integer friendId = friends.getFriend().getId();
        Friends friends1 = new Friends();
        friends1.setUserId(friendId);
        friends1.setFriendId(userId);
        friends1.setIsFriend(true);
        friendsService.insert(friends1);
        if(flag!=0){
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "通过好友申请");
            return jsonObject;
        }
        else {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "失败");
            return jsonObject;
        }
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete",method = RequestMethod.DELETE)
    public Object deleteFriends(@RequestParam Integer id){
        int flag= friendsService.deleteByPrimaryKey(id);
        JSONObject jsonObject = new JSONObject();
        if (flag==1) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "删除成功");
            return jsonObject;
        } else {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "删除失败");
            return jsonObject;
        }
    }

    /**
     * 根据主键取对象
     */
    @RequestMapping(value = "/selectByPrimarykey",method = RequestMethod.GET)
    public Object selectByPrimarykey(@RequestParam int id){
        JSONObject jsonObject = new JSONObject();
        Friends friends = friendsService.selectByPrimaryKey(id);
        if(friends.getRemarks()==null){
            friends.setRemarks("");
        }
        if (friends !=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA, friends);
            return jsonObject;
        }
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "获取失败");
            return jsonObject;

    }
    /**
     * 根据主键取申请记录
     */
    @RequestMapping(value = "/selectByAllId",method = RequestMethod.GET)
    public Object selectByAllId(@RequestParam int id){
        JSONObject jsonObject = new JSONObject();
        Friends friends = friendsService.selectByAllId(id);
        if(friends.getRemarks()==null){
            friends.setRemarks("");
        }
        if (friends !=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA, friends);
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;

    }
    /**.
     * 获取全部数据
     * @param Pages
     * @param pageSize
     * @return
     */
    @RequestMapping(value = "/selectAll",method = RequestMethod.GET)
    public Map<String, Object> selectAll(@RequestParam int Pages,int pageSize) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> friends = friendsService.selectAll();
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());
        if (friends !=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "获取失败");
            return jsonObject;
    }

    /**
     * 根据用户id获取所有好友
     */
    @RequestMapping(value = "/selectAllUserId",method = RequestMethod.GET)
    public Object selectAllUserId(@RequestParam int Pages,int pageSize,Integer id) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectAllUserId(id);
        for(Friends friends:mails){
            if(friends.getRemarks()==null){
                friends.setRemarks("");
            }
        }
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
    /**
     * 根据用户id获取所有好友模糊
     */
    @RequestMapping(value = "/selectAllUserIdLike",method = RequestMethod.GET)
    public Object selectAllUserIdLike(@RequestParam int Pages,int pageSize,Integer id,String friendEmail) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectAllUserIdLike(id,friendEmail);
        for(Friends friends:mails){
            if(friends.getRemarks()==null){
                friends.setRemarks("");
            }
        }
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
    /**
     * 根据用户id获取所有黑名单模糊
     */
    @RequestMapping(value = "/selectAllBlackLike",method = RequestMethod.GET)
    public Object selectAllBlackLike(@RequestParam int Pages,int pageSize,Integer id,String friendEmail) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectAllBlackLike(id,friendEmail);
        for(Friends friends:mails){
            if(friends.getRemarks()==null){
                friends.setRemarks("");
            }
        }
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
    /**
     * 根据用户id获取所有白名单模糊
     */
    @RequestMapping(value = "/selectAllWhiteLike",method = RequestMethod.GET)
    public Object selectAllWhiteLike(@RequestParam int Pages,int pageSize,Integer id,String friendEmail) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectAllWhiteLike(id,friendEmail);
        for(Friends friends:mails){
            if(friends.getRemarks()==null){
                friends.setRemarks("");
            }
        }
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
    /**
     * 根据用户id获取所有黑名单
     */
    @RequestMapping(value = "/selectAllBlack",method = RequestMethod.GET)
    public Object selectAllBlack(@RequestParam int Pages,int pageSize,Integer id) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectAllBlack(id);
        for(Friends friends:mails){
            if(friends.getRemarks()==null){
                friends.setRemarks("");
            }
        }
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
    /**
     * 根据用户id获取所有白名单
     */
    @RequestMapping(value = "/selectAllWhite",method = RequestMethod.GET)
    public Object selectAllWhite(@RequestParam int Pages,int pageSize,Integer id) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectAllWhite(id);
        for(Friends friends:mails){
            if(friends.getRemarks()==null){
                friends.setRemarks("");
            }
        }
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
    /**
     * 根据用户id获取所有白名单
     */
    @RequestMapping(value = "/selectByAll",method = RequestMethod.GET)
    public Object selectByAll(@RequestParam int Pages,int pageSize,Integer id) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<Friends> page = PageHelper.startPage(Pages, pageSize);
        List<Friends> mails = friendsService.selectByAll(id);
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());

        if (page.getResult()!=null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA,result);
            return jsonObject;
        }
        else if(page.getResult()==null){
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "没值");
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;
    }
}

package com.javaclimb.music.controller;/**
 * @Project_name: Mucic
 * @PACKAGE_NAME: com.javaclimb.mucic.controller
 * @description: tmx
 **/

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.javaclimb.music.bean.KeyWord;
import com.javaclimb.music.service.KeyWordService;
import com.javaclimb.music.utils.Consts;
import com.javaclimb.music.utils.JsonUtil;
import com.javaclimb.music.utils.ReadPropertiesUtil;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Project_name: Mucic
 * @PACKAGE_NAME: com.javaclimb.mucic.controller
 * @author: 詹姆斯
 * @create: 2021-10-10 01:48
 * @description: tmx
 **/
@RestController
@RequestMapping("/keyWord")
public class KeyWordController {
    @Resource
    private KeyWordService keyWordService;

    @RequestMapping(value = "/registerKeyWord", method = RequestMethod.POST)
    public Object registerKeyWord(@Param("key") String key) {
        JSONObject jsonObject = new JSONObject();
        int i = keyWordService.insert(key);
        if (i != 0) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "添加成功");
            return jsonObject;
        } else {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "添加失败");
            return jsonObject;
        }

    }


    /**
     * 修改
     */
    @RequestMapping(value = "/update", method = RequestMethod.PUT)
    public Object updateKeyWord(@Param("key") String key,@Param("id") Integer id ) {
        JSONObject jsonObject = new JSONObject();
        int flag = keyWordService.updateByPrimaryKeySelective(key,id);
        if (flag != 0) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "修改成功");
            return jsonObject;
        } else {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "修改失败");
            return jsonObject;
        }
    }

    /**
     * 删除
     */
    @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
    public Object deleteKeyWord(@RequestParam Integer id) {
        int flag = keyWordService.deleteByPrimaryKey(id);
        JSONObject jsonObject = new JSONObject();
        if (flag == 1) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "删除成功");
            return jsonObject;
        } else {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "删除失败");
            return jsonObject;
        }
    }

    /**
     * 根据主键取对象
     */
    @RequestMapping(value = "/selectByPrimarykey", method = RequestMethod.GET)
    public Object selectByPrimarykey(@RequestParam int id) {
        JSONObject jsonObject = new JSONObject();
        KeyWord keyWord = keyWordService.selectByPrimaryKey(id);
        if (keyWord != null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA, keyWord);
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;

    }

    // 分页,利用page获取分页信息,然后封装map
    @RequestMapping(value = "/selectAll", method = RequestMethod.GET)
    public Map<String, Object> selectAll(@RequestParam int Pages, int pageSize) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<KeyWord> page = PageHelper.startPage(Pages, pageSize);
        List<KeyWord> keyWord = keyWordService.selectAll();
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());
        if (keyWord != null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA, result);
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;


    }
    // 分页,利用page获取分页信息,然后封装map
    @RequestMapping(value = "/selectAlll", method = RequestMethod.GET)
    public Map<String, Object> selectAlll(@RequestParam int Pages, int pageSize,String key) {
        JSONObject jsonObject = new JSONObject();
        Map<String, Object> result = new HashMap<>();
        // 设置分页,1代表第一页,5代表这一页有五条数据
        Page<KeyWord> page = PageHelper.startPage(Pages, pageSize);
        List<KeyWord> keyWord = keyWordService.selectAlll(key);
        result.put("total", page.getTotal());
        result.put("pageNo", page.getPageNum());
        result.put("pages", page.getPages());
        result.put("pageSize", page.getPageSize());
        result.put("rows", page.getResult());
        if (keyWord != null) {
            jsonObject.put(Consts.CODE, 1);
            jsonObject.put(Consts.MSG, "成功");
            jsonObject.put(Consts.DATA, result);
            return jsonObject;
        }
        jsonObject.put(Consts.CODE, 0);
        jsonObject.put(Consts.MSG, "获取失败");
        return jsonObject;


    }


}

五,项目总结

 在上个月刚刚结束的互联网会议上,信息产业部电信管理局副局长陈家春表示,一些国际机构将中国评为2021全球垃圾邮件控制成效最显著的国家。目前,我们面临的挑战是,垃圾邮件信息不再满足于仅通过电子邮件传播。手机短信、电话传真和即时消息正在成为垃圾信息的传播载体。在更加动荡的形势下,垃圾邮件信息干扰了人们的正常生活和网络秩序。因此,有关部门应进一步加强对网络垃圾信息的综合治理。调查显示,中国用户收到垃圾邮件的比例仍然最高,达到50%以上,其次是英语30.9%,繁体中文第三,占9.5%。从这些统计数据可以看出,垃圾邮件的主要来源仍然来自中国,这是我们在反垃圾邮件中应该注意的主要领域。同时,该系统计划开发后投入运行,为反垃圾邮件工作提供了基本的技术保障。该平台可以实时更新垃圾邮件IP地址的“黑名单”,分析当前国内垃圾邮件传播情况,为反垃圾邮件工作提供基础数据。实时黑名单服务提高了黑名单数据的及时性。它可以在垃圾邮件源爆发的第一时间为用户提供查询服务,从而更及时地防止垃圾邮件入侵。据统计,实时黑名单每日查询次数已达20万次,查询速度约为4次/秒,“命中率”为65.97%。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117044.html

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

相关文章

servlet(二)文件的上传

servlet实现文件的上传 文件上传是一个web应用常见的功能 比如&#xff1a;QQ头像&#xff0c;就使用了上传。 邮箱中也有附件的上传和下载功能。 OA系统中审批有附件材料的上传。 1.1前端需要有个form表单标签 methodpost请求 (因为post请求是没有长度限制&#xff0c;get…

Computer Graphics From Scratch - Chapter 7

系列文章目录 简介&#xff1a;Computer Graphics From Scratch-《从零开始的计算机图形学》简介 第一章: Computer Graphics From Scratch - Chapter 1 介绍性概念 第二章&#xff1a;Computer Graphics From Scratch - Chapter 2 基本光线追踪 第三章&#xff1a;Computer Gr…

新生儿喝奶后不要马上放回床上睡觉,为宝宝健康着想,先做1件事

看到一个问题&#xff0c;题主问&#xff0c;新生儿喝完奶能马上放回床上睡觉吗&#xff1f;可以吗&#xff1f;也许每个人都认为照顾新生儿是一件非常简单的事情&#xff0c;因为新生儿几乎整天都在睡觉。当他们饿的时候&#xff0c;他们会让他们的宝宝吃牛奶。他们吃饱了就要…

博客搭建教程(一):静态博客 GitHub + Gridea

同步blog文章 注册一个 Github 账号并创建仓库 注册Github账号 如果你没有 Github 的账号&#xff0c;那么可以进入 官网 开始注册&#xff08;注意一下用户名的填写&#xff0c;如果不使用自定义域名&#xff0c;用户名将会是你的 Github 分配给你的域名&#xff0c;例如你的…

D. George and Interesting Graph(最大匹配)

Problem - 387D - Codeforces 乔治喜欢图表。最重要的是&#xff0c;他喜欢有趣的图。我们将假设一个有向图是有趣的&#xff0c;如果它符合以下标准。 该图不包含任何多弧。 有一个顶点v&#xff08;我们称她为中心&#xff09;&#xff0c;这样对于图形u的任何顶点&#xff…

信息网络传播视听节目服务单位的设立与经营

一、行业准入 &#xff08;一&#xff09;网络视听业务准入范围 利用公共互联网&#xff08;含移动互联网&#xff09;向计算机、手机用户提供视听节目服务&#xff08;不含交互式网络电视&#xff08;IPTV&#xff09;、互联网电视、专网手机电视业务&#xff09;业务的&…

几个小设置让 mac 更好用

今天在 youtube 上看到一个视频[1]&#xff0c;讲新 mac 到手后一定要做的几个设置&#xff0c;有几个之前我不知道的小设置&#xff0c;非常好用&#xff0c;看完马上就用上了。一些常用的就不列了&#xff0c;比如说设置点按、三指拖拽&#xff0c;不知道的可以去搜索了解&am…

【Python数据可视化】使用geoplotlib绘制地理空间数据

geoplotlib前言一、安装geoplotlib包二、读取csv数据使用1.点密度可视化2.直方图3. Voronoi图总结前言 ❤️❤️希望大家能多多点赞。❤️❤️ 需要数据集的可以评论。 Geoplotlib 是地理空间数据可视化的开源Python库&#xff0c;包含了大量的地理空间可视化操作&#xff0c…

131. 分割回文串

131. 分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”]…

青少年等级考试【Python通关干货】(二级)

青少年等级考试【Python通关干货】(二级)1.列表类型的概念 2.序列的通用操作 3.可变序列及列表的通用操作 4.列表的特有操作 5.元组类型的概念与操作

激活学习:一种挑战反向传播的生物启发算法

激活学习(activation learning)是一种生物启发的简单本地学习规则构建的前向无监督通用模型&#xff0c;它的核心是构建多层神经网络使得网络输出激活强度能反映输入的相对概率大小。并且&#xff0c;它在一些任务上达到并超过反向传播的表现。激活学习的概念由山东大学教授周洪…

C++11标准模板(STL)- 算法(std::adjacent_difference)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算范围内各相邻元素之间…

MyBatis 配置文件解析

MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求&#xff0c;必须按照下面的顺序填写节点信息&#xff1a; (properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databa…

Odoo丨如何在Odoo中修改HTML编辑工具栏?

文章目录一、前言二、渲染原理三、修改方法一、前言 在odoo中&#xff0c;当我们在页面上使用Html类型或者html的小组件的时候&#xff0c;页面渲染成如下格式&#xff0c;供用户编辑⬇ 上方有一些工具栏如背景颜色&#xff0c;字体颜色&#xff0c;字体大小&#xff0c;插入表…

【Linux04-进程概念下】不愧是操作系统,优美的设计!

前言 上期的分享让我们知道进程大概的模样&#xff0c;本期一样重要&#xff0c;能学到操作系统设计的优美&#xff0c;体会到前辈们的智慧。 #环境变量 是什么 OS提供&#xff0c;往往有特殊功能的全局变量&#xff08;/etc/profile.d是设置环境变量的目录&#xff09; [b…

React 入门:实战案例 Github搜索_axios发送请求

文章目录快速搭建 API 服务器在 Search 组件中实现 Axios 发送请求在 App 组件中管理 List 组件的用户列表状态在 List 组件中更新渲染用户列表数据优化完善完整源码最终效果&#xff1a;快速搭建 API 服务器 根据下面步骤来操作&#xff0c;就可以快速搭建一个符合本案例使用…

明年跨境电商外贸的新增量在哪里?来自专家的2个判断

明年跨境电商外贸的新增量在哪里&#xff1f;来自专家的2个判断2022年&#xff0c;外贸大环境不容易&#xff0c;外贸人也不容易。自2021年9月以来&#xff0c;海运费飙涨&#xff0c;库容一降再降。大批的货品滞留库存&#xff0c;部分卖家只好硬着头皮扛下来了高额的仓储费&a…

最佳实践 | 帮助您的游戏在斋月期间大放异彩

作者 / Google Play 游戏业务发展经理 Nimrod Levy世界各地的开发者都发现&#xff0c;在斋月期间&#xff0c;许多庆祝这个神圣月份的国家/地区的用户都会比平时更活跃。这是一个吸引穆斯林玩家的宝贵机会。斋月是伊斯兰历的第 9 个月。世界各地的穆斯林都会在这个月进行斋戒、…

RV1126笔记二十二:pt->onnx->rknn模型转换

若该文为原创文章,转载请注明原文出处。 一、介绍 实现的目标是,把RK提供的yolov5s.pt转成onnx,在把onnx转成rknn,部署到RV1126上面。 这里不训练模型,所以只要搭建好环境后,就可以直接运行测试。 这里只是提供一种转换的方法,有其他的方式,可以自行测试。 由于不…

立根铸魂 崛起数智时代 操作系统产业峰会2022即将启幕!

如今&#xff0c;数字经济成为全球经济增长的主引擎。基础软件是数字经济发展的基础&#xff0c;是制造强国、网络强国、数字中国建设的关键支撑。而基础软件中的操作系统&#xff0c;作为数字基础设施的底座&#xff0c;已经成为推动产业数字化、智能化发展的核心力量。 2022…