SpringBoot在线失物招领系统

news2024/11/26 9:34:54

一个基于SpringBoot+SemanticUI的pc Web在线失物招领系统

http://localhost:8080/swzl/index  主页

http://localhost:8080/swzl/login  登录页   用户表user  admin字段为true是管理员  false用户

springboot2.3  springmvc mybatis  html ajax

idea 或eclipse  maven  mysql  jdk1.8

package com.ctgu.swzl.controller;

import com.ctgu.swzl.dao.FeedbackDao;
import com.ctgu.swzl.dao.NoticeDao;
import com.ctgu.swzl.dao.TypeDao;
import com.ctgu.swzl.domain.Feedback;
import com.ctgu.swzl.domain.Notice;
import com.ctgu.swzl.domain.Post;
import com.ctgu.swzl.domain.User;
import com.ctgu.swzl.service.PostService;
import com.ctgu.swzl.service.UserService;
import com.ctgu.swzl.utils.Jmail;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.mail.MessagingException;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/admin")
public class AdminController {

    @Autowired
    private Jmail jmail;

    @Autowired
    private UserService userService;

    @Autowired
    private PostService postService;

    @Autowired
    private NoticeDao noticeDao;

    @Autowired
    private FeedbackDao feedbackDao;

    @Autowired
    private TypeDao typeDao;

    /*---------------------------------------------------userManage------------------------------------------------*/
    @GetMapping("/searchUser")
    public ModelAndView findUser(@RequestParam("search") String uname){

        User user = userService.findUserByUname(uname).get(0);
        ModelAndView mv = new ModelAndView();

        mv.addObject("users",user);
        mv.setViewName("/admin/userManage");
        return mv;
    }

    @GetMapping("/userManage")
    public ModelAndView showUser(@RequestParam(value = "page",required = false)Integer page){
        int pageSize=4;
        if (page==null) {
            page=1;
        }
        Page<Object> pages = PageHelper.startPage(page, pageSize);

        ModelAndView modelAndView = new ModelAndView();
        List<User> users = userService.findAll();
        modelAndView.addObject("users",users);

        PageInfo pageInfo = new PageInfo();
        pageInfo.setPageNum(page);
        pageInfo.setPages(pageSize);
        int a = (int)pages.getTotal()%pageSize==0?0:1;
        pageInfo.setPages((int)pages.getTotal()/pageSize+a);
        pageInfo.setPrePage(page-1);
        pageInfo.setNextPage(page+1);
        modelAndView.addObject("pageInfo",pageInfo);
        modelAndView.setViewName("/admin/userManage");
        return modelAndView;
    }

    /*---------------------------------------------------postManage---------------------------------------------------*/
    @GetMapping("/searchPost")
    public ModelAndView findPost(@RequestParam("search") String uname){
        List<Post> posts = postService.findByUname(uname);
        System.out.println(uname);
        System.out.println(posts);
        ModelAndView mv = new ModelAndView();
        mv.addObject("posts",posts);
        mv.setViewName("/admin/postManage");
        return mv;
    }

    @GetMapping("/postManage")
    public ModelAndView showPost(@RequestParam(value = "page",required = false)Integer page){
        int pageSize=4;
        if (page==null) {
            page=1;
        }
        Page<Object> pages = PageHelper.startPage(page, pageSize);

        ModelAndView modelAndView = new ModelAndView();
        List<Post> posts = postService.findAll();
        modelAndView.addObject("posts",posts);

        PageInfo pageInfo = new PageInfo();
        pageInfo.setPageNum(page);
        pageInfo.setPages(pageSize);
        int a = (int)pages.getTotal()%pageSize==0?0:1;
        pageInfo.setPages((int)pages.getTotal()/pageSize+a);
        pageInfo.setPrePage(page-1);
        pageInfo.setNextPage(page+1);
        modelAndView.addObject("pageInfo",pageInfo);
        modelAndView.setViewName("/admin/postManage");
        return modelAndView;
    }

    @ResponseBody
    @DeleteMapping("/deletePost/{id}")
    public void deletePost(@PathVariable("id")long postId){
        postService.deleteById(postId);
    }

    @PostMapping("/postStatus")
    public String updateStatus(@RequestParam("postID")long postId,
                               @RequestParam("status")String status){
        int s = "已完成".equals(status)?0:1;
        Post post = postService.findById(postId).get(0);
        post.setStatus(s);
        postService.updateStatus(post);
        return "redirect:postManage";
    }

    /*---------------------------------------------------noticeManage---------------------------------------------------*/
    @GetMapping("/searchNotice")
    public ModelAndView findNotice(@RequestParam("search") String cuser){
        List<Notice> notices = noticeDao.findByCuser(cuser);
        ModelAndView mv = new ModelAndView();
        mv.addObject("notices",notices);
        mv.setViewName("/admin/noticeManage");
        return mv;
    }

    @GetMapping("/noticeManage")
    public ModelAndView showNotice(@RequestParam(value = "page",required = false)Integer page){
        int pageSize=4;
        if (page==null) {
            page=1;
        }
        Page<Object> pages = PageHelper.startPage(page, pageSize);

        ModelAndView modelAndView = new ModelAndView();
        List<Notice> notices = noticeDao.findAll();
        modelAndView.addObject("notices",notices);

        PageInfo pageInfo = new PageInfo();
        pageInfo.setPageNum(page);
        pageInfo.setPages(pageSize);
        int a = (int)pages.getTotal()%pageSize==0?0:1;
        pageInfo.setPages((int)pages.getTotal()/pageSize+a);
        pageInfo.setPrePage(page-1);
        pageInfo.setNextPage(page+1);
        modelAndView.addObject("pageInfo",pageInfo);
        modelAndView.setViewName("/admin/noticeManage");
        return modelAndView;
    }

    @ResponseBody
    @DeleteMapping("/deleteNotice/{id}")
    public void deleteNotice(@PathVariable("id")long noticeId){
        noticeDao.deleteById(noticeId);
    }

    @PostMapping("/addNotice")
    public String addNotice(HttpServletRequest request,Notice notice){
        String cuser = request.getSession().getAttribute("loginUser").toString();
        notice.setCuser(cuser).setCtime(new Date());
        noticeDao.addNotice(notice);
        return "redirect:noticeManage";
    }
    /*---------------------------------------------------feedbackManage---------------------------------------------------*/
    @GetMapping("/searchFeedback")
    public ModelAndView findFeedback(@RequestParam("search") String uname){
        List<Feedback> feedbacks = feedbackDao.findByUname(uname);
        ModelAndView mv = new ModelAndView();
        mv.addObject("feedbacks",feedbacks);
        mv.setViewName("/admin/feedbackManage");
        return mv;
    }

    @GetMapping("/feedbackManage")
    public ModelAndView showFeedback(@RequestParam(value = "page",required = false)Integer page){
        int pageSize=4;
        if (page==null) {
            page=1;
        }
        Page<Object> pages = PageHelper.startPage(page, pageSize);

        ModelAndView modelAndView = new ModelAndView();
        List<Feedback> feedbacks = feedbackDao.findAll();
        modelAndView.addObject("feedbacks",feedbacks);

        PageInfo pageInfo = new PageInfo();
        pageInfo.setPageNum(page);
        pageInfo.setPages(pageSize);
        int a = (int)pages.getTotal()%pageSize==0?0:1;
        pageInfo.setPages((int)pages.getTotal()/pageSize+a);
        pageInfo.setPrePage(page-1);
        pageInfo.setNextPage(page+1);
        modelAndView.addObject("pageInfo",pageInfo);
        modelAndView.setViewName("/admin/feedbackManage");
        return modelAndView;
    }

    @ResponseBody
    @DeleteMapping("/deleteFeedback/{id}")
    public void deleteFeedback(@PathVariable("id")long feedbackId){
        feedbackDao.deleteById(feedbackId);
    }

    @PostMapping("/reply")
    public String reply(@RequestParam("feedbackId")long feedbackId,
                      @RequestParam("content")String content,
                      HttpServletRequest request){
        String admin = request.getSession().getAttribute("loginUser").toString();
        String feedbackName = feedbackDao.fingNameById(feedbackId);
        String tomail = userService.findMailByName(feedbackName);
        jmail.setToMail(tomail);
        jmail.setTopic("失物招领回复");
        jmail.setContent(content);
        System.out.println(tomail+":::"+content);
        try {
            jmail.send();
        } catch (MessagingException e) {
            throw new RuntimeException("邮箱发送失败!");
        }
        return "redirect:feedbackManage";
    }


    @ResponseBody
    @GetMapping("/addType")
    public void addType(@RequestParam("typeName") String typeName){
        typeDao.addType(typeName);
    }

}

 

package com.ctgu.swzl.controller;

import com.ctgu.swzl.domain.Post;
import com.ctgu.swzl.domain.User;
import com.ctgu.swzl.service.PostService;
import com.ctgu.swzl.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

@Controller
public class MineController {

    @Value("${images.path}")
    private String path;

    @Autowired
    private UserService userService;

    @Autowired
    private PostService postService;

    @GetMapping("/mine")
    public ModelAndView toMine(HttpServletRequest request){
        ModelAndView modelAndView = new ModelAndView();
        String uname = request.getSession().getAttribute("loginUser").toString();
        List<User> users = userService.findUserByUname(uname);
        List<Post> posts = postService.findByUname(uname);
        modelAndView.addObject("mine",users.get(0));
        modelAndView.addObject("posts",posts);
        modelAndView.setViewName("mine");
        return modelAndView;
    }

    @PostMapping("/mine")
    public String updateMine(@RequestParam(value = "frequency",required = false)String sexx,
                             @RequestParam(value = "age",required = false)Integer age,
                             @RequestParam(value = "personalSay",required = false)String personalSay,
                             @RequestParam(value = "upload",required = false) MultipartFile upload,
                             @RequestParam(value = "upload5",required = false) MultipartFile upload5,
                             HttpServletRequest request) throws IOException {
        User loginUser = (User) request.getSession().getAttribute("localUser");

        String filename = upload.getOriginalFilename();
        if (filename.length()!=0){
            filename = UUID.randomUUID().toString().replaceAll("-", "") + "_" + filename;
            upload.transferTo(new File(path, filename));
            loginUser.setPhoto("/images/"+filename);
        }
        String filename5 = upload5.getOriginalFilename();
        if (filename5.length()!=0){
            filename5 = UUID.randomUUID().toString().replaceAll("-", "") + "_" + filename5;
            upload5.transferTo(new File(path, filename5));
            loginUser.setRewardCode("/images/"+filename5);
        }

        if (sexx.length()!=0) {
            char sex = "man".equals(sexx) ? '男' : '女';
            loginUser.setSex(sex);
        }
        if (age!=null) {
            loginUser.setAge(age);
        }
        if (personalSay.length()!=0){
            loginUser.setPersonalSay(personalSay);
        }
        userService.updateUser(loginUser);
        return "redirect:/mine";
    }

    @ResponseBody
    @DeleteMapping("/mine/{id}")
    public String deletePostById(@PathVariable("id") long postId) {
        try {
            postService.deleteById(postId);
        } catch (Exception e) {
            e.printStackTrace();
//            throw new CustomException("删除失败");
        }
        return "success";
    }

    @PostMapping("/postStatus")
    public String updateStatus(@RequestParam("postID")long postId,
                               @RequestParam("status")String status){
        int s = "已完成".equals(status)?0:1;
        Post post = postService.findById(postId).get(0);
        post.setStatus(s);
        postService.updateStatus(post);
        return "redirect:mine";
    }
}

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

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

相关文章

9.3.2.1网络原理(UDP)

1.UDP的基本特点:无连接,不可靠传输,面向数据报,全双工. 2.1~1024的端口号有特定的含义,不建议使用.比如21:ftp,22:ssh,80:http,443:https. 3.CRC校验算法:循环冗余校验和,把UDP报中的每个字节都依次进行累加,把累加的结果,放到两个字节的变量中,溢出也无所谓,因为都加了一遍.…

机器学习笔记 - 关于向量嵌入​embedding在机器学习中的使用

向量嵌入概述 向量嵌入是机器学习中最有趣和最有用的概念之一。它们是许多 NLP、推荐和搜索算法的核心。如果您曾经使用过推荐引擎、语音助手、语言翻译器等工具,您就会遇到过依赖嵌入的系统。 与大多数软件算法一样,机器学习算法也需要使用数字。有时,我们的数据集包含数值…

Centos操作系统新安装的Python3中安装mysqlclient库

问题简介&#xff1a; mysqlclient 是python中的一个连接MySQL数据库的重要的三方库&#xff0c;但是在centos中使用pip3 install mysqlclient 方法安装一直报错&#xff0c;经过两天时间的排查,终于找到了解决问题的方法。 [rootd3acd2b8211d /]# pip3 install mysqlclient Co…

聊聊51单片机

目录 1.介绍 2.发展 3.应用领域 4.发展前景 1.介绍 51单片机&#xff08;AT89C51&#xff09;是一种常见的8位微控制器&#xff0c;属于Intel MCS-51系列。它是一种低功耗、高性能的单片机&#xff0c;广泛应用于嵌入式系统中。 51单片机具有很多特点和功能&#xff0c;例如…

用js快速生成一个简单的css原子库 例如: .mr-18 .pl-18

第三方css原子库的缺点 比如 tailwindcss&#xff0c;有学习成本最开始写的时候效率可能还没有我们自己手写效率高&#xff0c;需要配置&#xff0c;会有原始样式被覆盖的问题&#xff1b;总之就是一个字重 自己搓的优点 学习成本低灵活不会有副作用 <!DOCTYPE html>…

eclipse 导入项目js报错问题

eclipse 导入项目后会出现项目中的js文件报错&#xff08;红叉&#xff09;&#xff0c;如下图所示&#xff0c;有时候报错的文件很多&#xff0c;需要集中处理。 解决办法&#xff1a; 右键项目名称》Properties》MyEclipse》JavaScript》Include Path&#xff0c;在右侧选择“…

C语言案例 将一个数组逆序输出14

题目&#xff1a;将一个数组逆序输出 程序分析 数组是根据下标进行输出的&#xff0c;因此&#xff0c;我们可以逆向下标顺序输出。 步骤一&#xff1a;定义程序目标 编写C程序&#xff0c;输入数组元素&#xff0c;然后进行逆序输出。 步骤 二&#xff1a;程序设计 整个程序使…

国产航顺HK32F030M: 基于NTC负温度系数的温度计

前言&#xff1a; 家里的一个儿童澡盆附带的温度计坏掉了&#xff0c;拆解后发现这东西做的真垃圾&#xff01;索性自己做一个。拆下了里面的NTC热敏电阻&#xff0c;但是不知道NTC的性能参数&#xff0c;经过测量与查资料后&#xff0c;采用用中位值滤波 、 Steinhart-Hart方…

期权的希腊字母计算及应用

1.前言 期权价格会受到多个因素的影响,如标的资产价格、时间、波动率等,所以引入希腊字母来衡量不同因素对期权价格的影响程度,即Delta、Gamma、Vega、Theta和Rho,从而更综合的研究期权的影响因素。对于单独希腊值的作用,Delta经常被用做计算期权交易杠杆的指标、期权和期…

Linux系统下Redis3.2集群

本节主要学习reids主从复制的概念&#xff0c;作用&#xff0c;缺点&#xff0c;流程&#xff0c;搭建&#xff0c;验证&#xff0c;reids哨兵模式的概念&#xff0c;作用&#xff0c;缺点&#xff0c;结构&#xff0c;搭建&#xff0c;验证等。 文章目录 一、redis主从复制 …

【网络编程(三)】Netty入门到实战这一篇就够了

Netty入门到实战 NettyNetty 核心组件和流程分析数据流转的底层核心ByteBuf 原理分析Netty 解决半包、粘包问题Netty 实现心跳检查机制 Netty NIO 是一种 I/O 模型&#xff0c;netty 是基于 NIO 开发出来的一款异步事件驱动框架&#xff0c;它是一个通用的网络应用程序框架。n…

Transformer(二)(VIT,TNT)(基于视觉CV)

目录 1.视觉中的Attention 2.VIT框架&#xff08;图像分类&#xff0c;不需要decoder&#xff09; 2.1整体框架 2.2.CNN和Transformer遇到的问题 2.3.1CNN 2.3.2Transformer 2.3.3二者对比 2.4.公式理解 3TNT 参考文献 1.视觉中的Attention 对于人类而言看到一幅图可以立…

面向对象编程的特征:抽象、封装、继承和多态

文章目录 1. 抽象和封装&#xff1a;揭示事物本质&#xff0c;隐藏细节抽象封装 2. 继承&#xff1a;代码复用&#xff0c;提高可维护性3. 多态&#xff1a;灵活应对不同情境总结 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种现代的…

感应电机的谐波分析 - Part2-1理论推演

金属腔体生成电磁波后&#xff0c;这些电磁波会像黑体辐射一样无论反射多少次&#xff0c;终将会被壳体吸收&#xff1f; 根据热力学的基本原理&#xff0c;当金属腔体内的电磁波频率和温度满足一定条件时&#xff0c;电磁波会像黑体辐射一样被吸收。这种现象被称为热平衡。一旦…

mybatis(上)

mybatis&#xff1a;原来是apache的一个开源项目&#xff0c;叫ibatis。2010年转移谷歌&#xff0c;从3.0开始改名为mybatis mybatis是一款优秀的持久层框架&#xff0c;是对jdbc功能进行轻量级的封装&#xff0c;提供了统一的数据库信息配置统一放在一个xml文件中&#xff0c;…

安卓改透明屏有哪些方法和步骤?壁纸、主题、软件

安卓改透明屏是指将安卓手机的屏幕背景变为透明&#xff0c;使得手机的背景图像或者壁纸能够透过屏幕显示出来。 这样的改变可以让手机的界面更加个性化&#xff0c;也能够增加手机的美观度。 要实现安卓手机的透明屏&#xff0c;可以通过以下几种方法&#xff1a; 1. 使用透…

Windows端口占用问题

Windows端口占用问题 1、检查端口是否已被占用&#xff08;端口举例&#xff1a;10000&#xff09; 【WindowsR】打开【运行】窗口 点击【确定】打开【cmd】窗口 输入【下方命令】&#xff0c;然后【回车】 netstat -aon | find "10000"可以看到端口【10000】已…

Android系统-进程-Binder

目录 引言&#xff1a; 一次拷贝 Binder一次通信过程 应用启动中的binder交互 C/S模式&#xff1a; Binder COMMAND BWR数据结构&#xff1a; 引言&#xff1a; Android的binder是从openbinder发展过来的。包括了binder驱动&#xff0c;Native层&#xff0c;Java层。用…

Linux黑客渗透测试揭秘:探索安全边界的挑战与应对

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 前言 随着信息技术的迅…

uniapp 获取 view 的宽度、高度以及上下左右左边界位置

<view class"cont-box"></view> /* 获取节点信息的对象 */ getElementRect() {const query uni.createSelectorQuery().in(this);query.select(".cont-box").boundingClientRect(res > {console.log(res);console.log(res.height); // 10…