当前位置: 首页 > article >正文

基于java+springboot+layui的流浪动物交流信息平台设计实现

基于java+springboot+layui的流浪动物交流信息平台设计实现

🍅 作者主页 网顺技术团队
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 文末获取源码联系方式 📝
🍅 查看下方微信号获取联系方式 承接各种定制系统 📝
🚀🚀🚀精彩系列推荐
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
Java毕设项目精品实战案例《1000套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

文章目录

  • 基于java+springboot+layui的流浪动物交流信息平台设计实现
  • 前言介绍:
  • 技术工具:
  • 模块设计:
  • 系统架构:
  • 功能截图:
    • 用户登录注册:
    • 前端首页:
    • 分类查看:
    • 详情查看:
    • 收藏领养管理:
    • 我的个人信息:
    • 我的领养收藏:
    • 发布流浪交流信息:
    • 我的发布:
    • 后端管理:
    • 后端首页:
    • 用户管理:
    • 类型管理:
    • 详情管理:
    • 评论回复管理:
    • 通知公告等:
  • 代码实现:

前言介绍:

漫步校园中,偶尔会看到几只猫,或是晃做在小道上,或是蜷作一团躺在花坛边上,就像是无家可归的可怜的孩子,真叫人心疼!其实,它们就是一些被人遗弃的流浪宠物。 流浪宠物是指无主、长期在野外生存的宠物。与野猫(狗)不同,流浪宠物特指那些曾被人们收养过,后来因为某些原因、被抛弃的宠物。某些原因,可能是因为主人的乔迁,可能是经济跟不上,也可能只是主人不喜欢了,就遗弃了。事实上,在全国社会各地,还有许许多多同他们一样遭遇被遗弃的命运的可怜的猫儿狗儿。 校园里的这些猫儿,算是比较幸运的,因为经常有好心的同学会给它们喂一些吃的,它们还不至于饿死。另外的那些流浪宠物,不仅失去了温暖的家,失去了主人的关爱,就连基本的餐饷都成了问题。
在现在猫狗等小动物自被驯化以来,作为人类的伙伴,他们也有自己的理智与情感,我们应该给予充分的尊重和关怀。但是随着社会经济的发展,猫狗等小动物数量日益增多、部分人们的嫌弃和遗弃,流浪动物越来越多。这就需要社会机构或者热心人士关怀和救助这些流浪动物。在社会网络化的背景下,推进人与动物和谐共处符合时代特点。而我们开发一个自愿救助流浪动物网站能够为一些机构和爱心人士提供平台,让小宠物们能更好的找到主人使它们也更容易的生存下去。同时,也可以为一些不愿意继续养宠物的主人提供转让服务。提高人们的动物保护意识,动物也是大自然的一员人们应该保护它们,倡导爱护动物的社会风气,促进人与动物更和谐的相处。因此,本课题的研究符合时代现状,将为营造一个人与自然动物生命体和谐共处的良好社会环境走出一小步。

技术工具:

开发工具:IDEA 2021.3、navicat for mysql 、postman。

开发语言:java、jdk1.8、mysql5。

硬件环境:Windows 10操作系统、Google浏览器等。

主要技术:springboot、mybatis-plus、layui、mysql等

模块设计:

1.用户模块管理:用户登录、用户注册、用户的查询、删除操作、

2.流浪动物首页管理:首页列表的展示、添加、修改、删除操作、

3.流浪动物信息详情管理:流浪动物信息详情列表的查看、添加、删除等操作、

4.管理员信息管理:管理员信息的查看、修改、

5.公告信息管理:公告信息的查看、添加、修改、删除操作、

6.用户模块管理:用户列表查询、添加、删除、、

7.用户评论模块管理:用户评论查询、添加、删除、

8.注销退出登录管理

系统架构:

在这里插入图片描述

功能截图:

用户登录注册:

在这里插入图片描述

前端首页:

在这里插入图片描述

分类查看:

在这里插入图片描述

详情查看:

在这里插入图片描述
评论回复信息:这里用户头像替换成自己本地路径即可显示
在这里插入图片描述

收藏领养管理:

在这里插入图片描述

我的个人信息:

在这里插入图片描述

我的领养收藏:

在这里插入图片描述

发布流浪交流信息:

在这里插入图片描述

我的发布:

在这里插入图片描述

后端管理:

在这里插入图片描述

后端首页:

在这里插入图片描述

用户管理:

在这里插入图片描述

类型管理:

在这里插入图片描述

详情管理:

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

评论回复管理:

在这里插入图片描述

通知公告等:

在这里插入图片描述

代码实现:

用户登录:

/**
 * 根路径以及其他请求处理
 * 
 * @author admin
 *
 */
@Controller
public class IndexController {
 
  @Value("${imageFilePath}")
  private String imageFilePath; // 文件路径
 
  @Resource
  private NoticeService noticeService;
 
  @Resource
  private UserService userService;
 
  @Resource
  private ArticleService articleService;
  @Resource
  private ClassifyService classifyService;
 
  @RequestMapping("/")
  public String index(HttpSession session) {
 
    // 查询公告
    session.setAttribute("noticeList", noticeService.list(0, 5));
    return "index";// 跳转到index.html
  }
 
  /**
   * 登录页面
   * 
   * @return
   */
  @RequestMapping("/login")
  public String login() {
    return "login";
  }
 
  /**
   * 前台登录页面
   * 
   * @return
   */
  @RequestMapping("/webLogin")
  public String webLogin() {
    return "webLogin";
  }
 
  /**
   * 注册
   * 
   * @return
   */
  @RequestMapping("/regist")
  public String regist() {
    return "regist";
  }
 
  /**
   * 保存注册信息
   * 
   * @param user
   * @return
   */
  @RequestMapping("/saveUser")
  public String saveUser(User user) {
//    List<Article> randomArticle = articleService.getRandomArticle(3);
//    String ids="";
//    for (int i = 0; i < randomArticle.size(); i++) {
//      Integer articleId = randomArticle.get(i).getArticleId();
//      ids+=articleId+",";
//    }
//    ids = ids.substring(0, ids.length() -1);
//    user.setArticleIds(ids);
    user.setRegistrationDate(new Date());
    userService.save(user);
 
    return "webLogin";
  }
 
  /**
   * 退出登录
   * 
   * @param request
   * @return
   */
  @RequestMapping("/quit")
  public String quit(HttpServletRequest request) {
    HttpSession session = request.getSession();
    session.removeAttribute("user");
    return "index";
  }
 
  /**
   * 退出登录
   * 
   * @param request
   * @return
   */
  @RequestMapping("/quitAdmin")
  public String quitAdmin(HttpServletRequest request) {
    HttpSession session = request.getSession();
    session.removeAttribute("user");
    return "login";
  }
 
  /**
   * 验证登录
   * 
   * @param user
   * @param request
   * @return
   */
  @RequestMapping("/checkLogin")
  public ModelAndView checkLogin(User user, HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    HttpSession session = request.getSession();
    User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword());
    if (u == null) {
      mav.addObject("user", user);
      mav.addObject("errorInfo", "用户名或者密码错误!");
      mav.setViewName("webLogin");
    } else {
      u.setLatelyLoginTime(new Date());
      userService.save(u);
      session.setAttribute("user", u);
      mav.addObject("username", u.getUsername());
      mav.addObject("user", u);
      mav.addObject("success", true);
      mav.setViewName("/index");
    }
    return mav;
  }
 
  /**
   * 查看个人信息
   * 
   * @return
   */
  @RequestMapping("viewPerson")
  public ModelAndView viewPerson(HttpServletRequest request) {
    User user = (User) request.getSession().getAttribute("user");
    ModelAndView mav = new ModelAndView();
    User u = userService.findById(user.getUserId());
    mav.addObject("user", u);
    mav.setViewName("/viewPerson");
    return mav;
  }
 
  /**
   * 查看个人收藏夹
   * 
   * @return
   */
  @RequestMapping("viewCollection")
  public ModelAndView viewCollection(HttpServletRequest request, HttpSession session) {
    User user = (User) request.getSession().getAttribute("user");
    ModelAndView mav = new ModelAndView();
    User u = userService.findById(user.getUserId());
    String artIds = u.getArticleIds();
    List<String> result = new ArrayList<>();
    if (StringUtils.isNotBlank(artIds)) {
      result = Arrays.asList(StringUtils.split(artIds, ","));
    }
    List<Integer> retIds = new ArrayList<>();
    for (String temp : result) {
      retIds.add(Integer.valueOf(temp).intValue());
    }
    List<Article> retArt = articleService.findByListId(retIds);
    session.setAttribute("noticeList", noticeService.list(0, 5));
    mav.addObject("retArt", retArt);
    mav.addObject("user", u);
    mav.setViewName("/viewCollection");
    return mav;
  }
 
  /**
   * 查看个人关注用户
   * 
   * @return
   */
  @RequestMapping("viewFocusUser")
  public ModelAndView viewFocusUser(HttpServletRequest request, HttpSession session) {
    User user = (User) request.getSession().getAttribute("user");
    ModelAndView mav = new ModelAndView();
    User u = userService.findById(user.getUserId());
    String userIds = u.getUserIds();
    List<String> result = new ArrayList<>();
    if (StringUtils.isNotBlank(userIds)) {
      result = Arrays.asList(StringUtils.split(userIds, ","));
    }
    List<Integer> retIds = new ArrayList<>();
    for (String temp : result) {
      retIds.add(Integer.valueOf(temp).intValue());
    }
    List<User> retArt = userService.findByListId(retIds);
    session.setAttribute("noticeList", noticeService.list(0, 5));
    mav.addObject("retArt", retArt);
    mav.addObject("user", u);
    mav.setViewName("/viewFocusUser");
    return mav;
  }
 
  /**
   * 保存用户信息
   * 
   * @param user
   * @return
   */
  @RequestMapping("/save")
  public ModelAndView save(User user) {
    ModelAndView mav = new ModelAndView();
    userService.save(user);
    mav.setViewName("/index");
    return mav;
  }
 
  /**
   * 流浪动物信息发布页面
   * 
   * @param request
   * @return
   */
  // @RequestMapping("notePage")
  // public String notePage(HttpServletRequest request, Model model) {
  // User user = (User) request.getSession().getAttribute("user");
  // if (user == null) {
  // return "webLogin";
  // }
  // List<Classify> list = classifyService.findAll();
  // model.addAttribute("list", list);
  // return "one";
  // }
 
  @RequestMapping("notePage")
  public ModelAndView notePage(HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    User user = (User) request.getSession().getAttribute("user");
    if (user == null) {
      mav.setViewName("/webLogin");
      return mav;
    }
    List<Classify> list = classifyService.findAll();
    mav.addObject("list", list);
    mav.setViewName("/one");
    return mav;
  }
 
  /**
   * 保存笔记
   * 
   * @param article
   * @param request
   * @return
   */
  @RequestMapping("addNote")
  public ModelAndView addNote(Article article, HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    // 获取当前用户信息
    User user = (User) request.getSession().getAttribute("user");
    article.setUserId(user.getUserId());
    article.setPublishDate(new Date());
    article.setClick(0);
    article.setCommentNum(0);
    article.setContentNoTag(StringUtil.Html2Text(article.getContent()));
    articleService.save(article);
    mav.setViewName("/index");
    return mav;
  }
 
  @RequestMapping("saveNote")
  public ModelAndView saveNote(Article article, HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    Article a = articleService.findById(article.getArticleId());
    article.setPublishDate(a.getPublishDate());
    // 获取当前用户信息
    articleService.save(article);
    mav.setViewName("/index");
    return mav;
  }
 
  /**
   * 查看笔记
   * 
   * @return
   */
  @RequestMapping("viewNote")
  public String viewNote(HttpSession session) {
    session.setAttribute("noticeList", noticeService.list(0, 5));
    return "mylist";
  }
 
  @RequestMapping("/delete/{id}")
  public String delete(@PathVariable(value = "id") String id) throws Exception {
    articleService.delete(Integer.parseInt(id));
    return "mylist";
  }
 
  /**
   * 查看个人笔记加载数据列表
   * 
   * @param article
   * @param publishDates
   * @param page
   * @param pageSize
   * @return
   */
  @RequestMapping("/mylist")
  public Map<String, Object> list(Article article,
      @RequestParam(value = "publishDates", required = false) String publishDates,
      @RequestParam(value = "page", required = false) Integer page,
      @RequestParam(value = "pageSize", required = false) Integer pageSize, HttpServletRequest request) {
    Map<String, Object> resultMap = new HashMap<String, Object>();
    // User user = (User) request.getSession().getAttribute("user");
    // article.setUserId(user.getUserId());
    String s_bPublishDate = null; // 开始时间
    String s_ePublishDate = null; // 结束时间
    if (StringUtil.isNotEmpty(publishDates)) {
      String[] strs = publishDates.split(" - "); // 拆分时间段
      s_bPublishDate = strs[0];
      s_ePublishDate = strs[1];
    }
    Long total = articleService.getCount(article, s_bPublishDate, s_ePublishDate);
    int totalPage = (int) (total % pageSize == 0 ? total / pageSize : total / pageSize + 1); // 总页数
    resultMap.put("totalPage", totalPage);
    resultMap.put("errorNo", 0);
    resultMap.put("data", articleService.list(article, s_bPublishDate, s_ePublishDate, page - 1, pageSize));
    resultMap.put("total", total);
    return resultMap;
  }
 
  /**
   * 后台默认首页
   * 
   * @return
   */
  @RequestMapping("/index")
  public String root() {
    return "/common/index";
  }
 
  /**
   * 博主信息页面
   * 
   * @return
   */
  @RequestMapping("/blogger")
  public String blogger() {
    return "/blogger/index";
  }
 
  /**
   * 图片上传处理 @Title: ckeditorUpload @param file 图片文件 @return 参数说明 @return
   * Map<String,Object> 返回类型 @throws
   */
  @ResponseBody
  @RequestMapping("/upload")
  public Map<String, Object> ckeditorUpload(@RequestParam("file") MultipartFile file) {
    Map<String, Object> resultMap = new HashMap<String, Object>();
    Map<String, Object> resultMap1 = new HashMap<String, Object>();
    String fileName = file.getOriginalFilename(); // 获取文件名
    String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 获取文件的后缀
    String newFileName = "";
    try {
      newFileName = DateUtil.getCurrentDateStr() + suffixName; // 新文件名
      FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath + newFileName)); // 上传
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    resultMap.put("code", 0);
    resultMap1.put("filePath", newFileName);
    resultMap.put("data", resultMap1);
    return resultMap;
  }
 
}

全局yml:

server: 
  port: 80
  servlet:
    context-path: /
  
spring: 
  datasource: 
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/baby_mobile?characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  thymeleaf:
    cache: false

获取源码
总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考
🍅 查看下方微信号获取联系方式 承接各种定制系统 📝
🚀🚀🚀精彩系列推荐
Java毕设项目精品实战案例《1000套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人


http://www.kler.cn/a/421306.html

相关文章:

  • MongoDB集群分片安装部署手册
  • ARP表、MAC表、路由表的区别和各自作用
  • 基于大数据python 电商数据分析及推荐可视化系统(源码+LW+部署讲解+数据库+ppt)
  • 单片机状态机实现多个按键同时检测单击、多击、长按等操作
  • 1.1 STM32_GPIO_基本知识
  • C++分治思想
  • git查看本地库对应的远端库的地址
  • opencv-mobile在幸狐RV1106部署使用
  • IDEA中MAVEN的一些设置问题
  • 【青牛科技】BISS0001高性能的传感信号处理集成电路芯片,广泛用于安防、自控等领域能
  • 开发者如何使用GCC提升开发效率Cmake操作
  • 每日总结,今日学习Python(有ptChorm的破解,需要可以留言)
  • 算法刷题Day8:BM30 二叉搜索树与双向链表
  • Adam 和 AdamW 优化器详解及其训练显存需求分析:以LLaMA-2 7B为例(中英双语)
  • 在Windows下进行PyTorch深度学习环境配置(单纯安装版)
  • Ps:存储 Adobe PDF - 预设
  • 工作-k8s问题处理篇
  • 【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格
  • IntelliJ+SpringBoot项目实战(23)--整合RabbitMQ
  • 网盘聚合搜索项目Aipan(爱盼)【续】
  • uniapp 实现 uni-file-picker 效果
  • 【继承】—— 我与C++的不解之缘(十九)
  • 秒杀 重复下单 详解
  • Unity AssetBundles(AB包)
  • stm32 spi接口传输asm330l速率优化(及cpu和dma方式对比)
  • 威联通-001 手机相册备份