作者主页:编程千纸鹤

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

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

项目编号:BS-XX-151

一,项目简介

捐赠救助系统组织管理进行信息化建设的目的主要有三点:一是信息资源是能够创造财富的;二是信息化的运用可以降低成本,提高效率;三是信息透明是捐赠救助组织的核心竞争力,有助于提高捐赠救助系统组织的公信力建设。通过网络信息的传播并透明公开,能提高公信力,并增强规范发展,同时推动捐赠救助系统服务的成效;通过信息平台建设和信息服务,有助于转变捐赠救助系统组织服务意识,救助项目执行管理方式的改变以及专业能力建设的推动,这必将成为捐赠救助系统事业发展的趋势。

随着社会的发展,捐赠救助系统组织的业务流程和服务形式的进一步优化,工作方式必然全面改造,需要彻底地向社会大众提供优质、规范、透明、公正的服务,符合国际水准的管理和服务。

如何运用现代信息技术,帮助捐赠救助系统组织,完善捐赠救助系统组织捐赠相关信息的入库、更新、检索,优化管理流程、提高效率,这些问题的研究和解决对中国捐赠救助系统组织的发展具有重要意义,同时也对其他相关组织信息化管理有示范与借鉴的作用。

本系统以使捐赠救助系统后台管理规范化信息化为宗旨,利用Java技术,采用B/S模式,实现了工作人员登录个人账号后对于捐赠过程涉及到的信息的增删改查等功能,保证了捐赠救助系统工作人员对于各种信息登记获取的及时性与便利性。且在本论文中,笔者对于小型捐赠救助系统信息管理不完善的现象,给出了一定的解决方案。

本系统主要基于Springboot开发实现一个爱心损赠管理系统,用户分为前端损赠平台使用用户和后台管理用户。前端用户注册登陆系统后可以实现在线损赚物资,查看自己损赚的物品统计情况,图形报表统计,在线发贴交流,在线许愿,个人主页等功能,后台管理员登陆系统后可以实现对捐赠信息的管理功能,以用户的管理功能,查看论坛贴子等信息管理功能。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前台开发技术:Layui+Ajax+Echart图形报表

三,系统展示

前端首页

在线捐赠物品

论坛交流

爱心许愿

个人主页

用户登陆界面:前端用户可以在此进行注册登陆

用户管理

捐赠记录管理

论坛管理

留言管理

心愿管理

四,核心代码展示

package com.lc.controller;import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.lc.entity.Article;
import com.lc.entity.User;
import com.lc.service.ArticleService;
import com.lc.utils.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.*;/*** 文章信息控制层*/
@RestController
@RequestMapping("/article")
public class ArticleController {@AutowiredArticleService articleService;/*** 文章信息数据表格接口*/@RequestMapping(value = "/getTableData", produces = "application/json; charset=utf-8")public String getTableData(@RequestBody Article article) {Map<String, Object> pageDataMap = new HashMap<>(3);//默认分页参数if(article.getCurrentPage() == null || article.getLimitCount() == null){article.setCurrentPage(1);article.setLimitCount(10);}List<Article> dataList = articleService.selectList(article);for(Article a : dataList){if(!StrUtil.isBlank(a.getPicStr())){a.setCoverImg(a.getPicStr().split(",")[0]);}}Integer totalCount = articleService.selectCount(article);pageDataMap.put("code", 0);pageDataMap.put("data", dataList);pageDataMap.put("count", totalCount);return JSON.toJSONString(pageDataMap);}/*** 文章信息保存*/@RequestMapping("/saveArticle")public String saveArticle(@RequestBody Article article) {return articleService.saveArticle(article);}/*** 文章信息删除(物理删除)*/@RequestMapping("/deleteArticle")public String deleteArticle(String id) {return articleService.deletePhysical(id);}/*** 我的文章数据获取*/@RequestMapping("/selfArticle")public List<Article> selfArticle() {User currentUser = UserContext.getCurrentUser();List<Article> articleList = articleService.selectByUserId(currentUser.getId());return articleList;}/*** 根据id获取*/@RequestMapping("/getById")public Article getById(String id) {Article article = articleService.selectEntity(id);if(!StrUtil.isBlank(article.getPicStr())){List<String> picList = new ArrayList<>(Arrays.asList(article.getPicStr().split(",")));article.setPicList(picList);}return article;}}
package com.lc.controller;import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.lc.entity.Donation;
import com.lc.entity.User;
import com.lc.service.DonationService;
import com.lc.utils.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.*;
import java.util.stream.Collectors;/*** 捐赠信息控制层*/
@RestController
@RequestMapping("/donation")
public class DonationController {@AutowiredDonationService donationService;/*** 捐赠信息数据表格接口*/@RequestMapping(value="/getTableData", produces="application/json; charset=utf-8")public String getTableData(@RequestBody Donation donation) {Map<String, Object> map = donationService.selectPage(donation);return JSON.toJSONString(map);}/*** 后台捐赠信息保存*/@RequestMapping("/saveDonation")public String saveDonation(@RequestBody Donation donation) {return donationService.save(donation);}/*** 前台捐赠信息保存*/@RequestMapping("/insertDonationList")public String insertDonationList(@RequestBody List<Donation> list) {return donationService.insertDonationList(list);}/*** 捐赠信息删除(物理删除)*/@RequestMapping("/deleteDonation")public String deleteDonation(String id) {return donationService.deletePhysical(id);}/*** 我的捐赠记录数据获取*/@RequestMapping("/selfDonation")public List<Map<String, Object>> selfDonation(){User currentUser = UserContext.getCurrentUser();List<Map<String, Object>> listMap = donationService.countSelfDonation(currentUser.getId());return listMap;}/*** 后台修改捐赠记录状态*/@RequestMapping("/updateVerify")public String updateVerify(String id, Integer verify){return donationService.updateVerifyById(id, verify);}/*** 前台页面第一个饼状图数据接口*/@RequestMapping("/echartsDataOne")public List<Map<String, String>> echartsDataOne(){List<Donation> allList = donationService.selectAllList();Map<String, List<Donation>> allMap = allList.stream().peek(o -> {if(o.getKind() == 0){o.setKindName("上衣");}else if(o.getKind() == 1){o.setKindName("裤子");}else if(o.getKind() == 2){o.setKindName("袜子");}else if(o.getKind() == 3){o.setKindName("手套");}else if(o.getKind() == 4){o.setKindName("帽子");}else if(o.getKind() == 5){o.setKindName("其他");}}).collect(Collectors.groupingBy(Donation::getKindName));List<Map<String, String>> listMap = new ArrayList<>();for(Map.Entry<String, List<Donation>> map : allMap.entrySet()){Double sum = map.getValue().stream().mapToDouble(Donation::getNumber).sum();Map<String, String> itemMap = new HashMap<String, String>();itemMap.put("value", String.valueOf(sum));itemMap.put("name", map.getKey());listMap.add(itemMap);}return listMap;}/*** 前台页面第二个柱状图数据接口*/@RequestMapping("/echartsDataTwo")public Map<String, List<String>> echartsDataTwo(){Map<String, List<String>> resultMap = new HashMap<>();//获取最近七天的时间段(往前找3天+往后找三天+今天一天)List<String> dateList = new ArrayList<>();String today= DateUtil.today();Date date = DateUtil.parse(today);for(int i=0; i<7; i++){String d = DateUtil.format(DateUtil.offset(date, DateField.DAY_OF_MONTH, -6 + i), "yyyy-MM-dd");dateList.add(d);}//根据日期获取数据List<String> dataList = new ArrayList<>();List<Donation> allList = donationService.selectAllList();for(String currentDate : dateList){List<Donation> list = allList.stream().filter(o -> currentDate.equals(o.getCreateDate().split(" ")[0])).collect(Collectors.toList());if(list.isEmpty()){dataList.add(String.valueOf(0));}else{dataList.add(String.valueOf(list.stream().mapToDouble(Donation::getNumber).sum()));}}resultMap.put("dateList", dateList);resultMap.put("dataList", dataList);return resultMap;}/*** 前台页面第三个折现图数据接口*/@RequestMapping("/echartsDataThree")public Map<String, List<String>> echartsDataThree(){Map<String, List<String>> resultMap = new HashMap<>();//获取最近七天的时间段(往前找6天+今天一天)List<String> dateList = new ArrayList<>();String today= DateUtil.today();Date date = DateUtil.parse(today);for(int i=0; i<7; i++){String d = DateUtil.format(DateUtil.offset(date, DateField.DAY_OF_MONTH, -6 + i), "yyyy-MM-dd");dateList.add(d);}//根据日期获取数据List<Donation> allList = donationService.selectAllList();List<String> agreeList = new ArrayList<>();List<String> refuseList = new ArrayList<>();List<String> waitList = new ArrayList<>();for(String currentDate : dateList){List<Donation> list = allList.stream().filter(o -> currentDate.equals(o.getCreateDate().split(" ")[0])).collect(Collectors.toList());agreeList.add(String.valueOf(list.stream().filter(o -> o.getVerify() == 1).count()));refuseList.add(String.valueOf(list.stream().filter(o -> o.getVerify() == 2).count()));waitList.add(String.valueOf(list.stream().filter(o -> o.getVerify() == 0).count()));}resultMap.put("dateList", dateList);resultMap.put("agreeList", agreeList);resultMap.put("refuseList", refuseList);resultMap.put("waitList", waitList);return resultMap;}}
package com.lc.controller;import cn.hutool.core.codec.Base64;
import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.util.*;/*** 文件上传控制层*/
@Controller
@RequestMapping("/file")
public class FileController {/*** 前缀路径(本地测试环境)*/public static String filePrePath = System.getProperty("user.dir")+ "\\src\\main\\resources\\static\\";/*** 论坛图片上传* @param file* @return*/@RequestMapping("/imagesUpload")@ResponseBodypublic String imagesUpload(@RequestParam("file") MultipartFile file){Map<String, Object> resultMap = new HashMap<>(4);try{//修改文件名,防止重复String filename = file.getOriginalFilename();String extName = FileNameUtil.getSuffix(filename);String newFileName = IdUtil.simpleUUID() + "." +extName;String pathString = filePrePath + "forumImg\\" + newFileName;//文件上传File f = new File(pathString);file.transferTo(f);//转base64String base64 = "data:image/"+extName+";base64," + Base64.encode(f);//回调信息resultMap.put("code",0);resultMap.put("data", newFileName);resultMap.put("baseData", base64);return JSON.toJSONString(resultMap);}catch(Exception e){e.printStackTrace();resultMap.put("code",1);return JSON.toJSONString(resultMap);}}/*** 随机获取一个默认头像*/public static String randomGetDefaultUserImg(){List<String> userImgList = new ArrayList<>();userImgList.add("defaultOne.jpg");userImgList.add("defaultTwo.jpg");userImgList.add("defaultThree.jpg");userImgList.add("defaultFour.jpg");userImgList.add("defaultFive.jpg");Random random = new Random();return userImgList.get(random.nextInt(userImgList.size()));}}
package com.lc.controller;import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.lc.entity.*;
import com.lc.service.*;
import com.lc.utils.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/*** 用户信息控制层*/
@RestController
@RequestMapping("/user")
public class UserController {@AutowiredUserService userService;@AutowiredDonationService donationService;@AutowiredArticleService articleService;@AutowiredMessageService messageService;@AutowiredWishService wishService;/*** 用户信息数据表格接口*/@RequestMapping(value="/getTableData", produces="application/json; charset=utf-8")public String getUserData(@RequestBody User user) {Map<String, Object> map = userService.selectPage(user);return JSON.toJSONString(map);}/*** 用户信息保存*/@RequestMapping("/saveUser")public String saveUser(@RequestBody User user) {return userService.saveUser(user);}/*** 用户删除(物理删除)*/@RequestMapping("/deleteUser")public String deleteUser(String id) {return userService.deletePhysical(id);}/*** 根据userId获取个人信息*/@RequestMapping("getPersonalInformation")public Map<String, Object> getPersonalInformation(String userId){Map<String, Object> map = new HashMap<>();if(StrUtil.isBlank(userId)){User currentUser = UserContext.getCurrentUser();userId = currentUser.getId();}//用户个人信息User user = userService.selectEntity(userId);map.put("user", user);//用户捐赠总数量List<Donation> donationList = donationService.selectByUserId(userId);map.put("donationCount", donationList.stream().mapToDouble(Donation::getNumber).sum());//用户发帖数量List<Article> articleList = articleService.selectByUserId(userId);map.put("articleCount", articleList.size());//用户帖子map.put("article", articleList);//用户心愿数量List<Wish> wishList = wishService.selectByUserId(userId);map.put("wishCount", wishList.size());//用户心愿map.put("wish", wishList);//用户留言数量List<Message> messageList = messageService.selectByUserId(userId);map.put("messageCount", messageList.size());//各个捐赠类别的数量Map<Integer, List<Donation>> groupMap = donationList.stream().collect(Collectors.groupingBy(Donation::getKind));for(Map.Entry<Integer, List<Donation>> itemGroup : groupMap.entrySet()){map.put(String.valueOf(itemGroup.getKey()), itemGroup.getValue().stream().mapToDouble(Donation::getNumber).sum());}//补零for(int i=0; i<=5; i++){if(map.get(String.valueOf(i)) == null){map.put(String.valueOf(i), 0);}}return map;}}

五,项目总结

项目整体功能完整,前后端业务流程完备,适合做毕业设计使用。

1024程序员节|基于Springboot实现爱心捐赠管理系统相关推荐

  1. 1024程序员节|基于Springboot实现运动场馆预约信息管理系统

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...

  2. 若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

    场景 若依(基于SpringBoot的权限管理系统)的快速搭建: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/111030441 ...

  3. 若依(基于SpringBoot的权限管理系统)的快速搭建

    场景 若依管理系统 基于SpringBoot的权限管理系统 官网地址: http://www.ruoyi.vip/ 下载地址: https://gitee.com/y_project/RuoYi 注: ...

  4. 基于SpringBoot的库存管理系统

    基于SpringBoot的库存管理系统 库存管理系统 项目简介 功能简介 技术选型 数据库设计 代码结构 界面设计 代码获取 库存管理系统 项目简介 本项目为库存管理系统,实现了供销管理.进退货管理. ...

  5. 基于springboot的在线商城管理系统

    1.项目介绍 基于springboot的在线商城管理系统3拥有两种角色,分别为管理员和用户 管理员:用户信息管理.商品信息管理.类型管理.订单管理.留言管理等 用户:商品查看.购买.购物车.订单详情. ...

  6. 基于 SpringBoot 的人事管理系统的设计与实现

    1,项目介绍 基于 SpringBoot 的人事管理系统拥有两种角色,分别为管理员和用户.. 本系统为职工人事管理系统.系统分为七大模块:职工管理,部门管理,岗位管理,招聘管理,奖惩管理,薪资管理,培 ...

  7. 基于SpringBoot的毕业论文管理系统的设计与实现(开题报告)

    基于Spring Boot的毕业论文管理系统 研究的背景与意义 随着信息化时代的到来,高校的管理工作也面临着信息化改革.目前,各大高校纷纷引入教务管理信息系统来加强和改善对学生.教师以及各种教务信息的 ...

  8. 基于springboot的电影院管理系统

    1.项目介绍 基于springboot的电影院管理系统拥有三种角色,介绍如下: 账户管理员:添加管理员和用户账号 普通管理员:电影管理.排片管理.活动管理.退票策略管理.影院管理.优惠券管理等 用户: ...

  9. java基于springboot二手车交易管理系统附源码

    二手车交易管理系统是基于java编程语言,mysql数据库,springboot框架设计,本系统主要分为用户和管理员两个角色,其中用户的功能有用户注册和登陆系统,用户查网站新闻,查看二手车,在线预定, ...

最新文章

  1. javascript全栈开发实践-准备
  2. 【CMAC小脑】CMAC逼近sin(t)函数的训练和测试
  3. flink中的java匿名函数修改为实名函数
  4. 前端学习(2384):element介绍
  5. 浅说深度学习(4):增强学习
  6. JavaScript 基础知识 - DOM篇(二)
  7. 使用J-LINK烧写MICRO2440的NOR
  8. freecplus框架-xml解析
  9. 10张架构图包含Python所有方向的学习路线,你们要的体系全在这
  10. 单例模式访问mysql设计类图_如何应用策略设计模式分离JDBC数据库连接中的外部环境信息...
  11. Corel Painter 2022 for Mac(初学者可驾驭的绘画软件)
  12. 《丁丁历险记系列之委托》-- 摘自http://www.cnblogs.com/xfxxx/archive/2010/04/03/1703839.html...
  13. 【语音处理】开始学习语音,从基本概念和应用讲起
  14. office插件开发_linux常用软件(开发设计必备)
  15. 通达oa2015 php解密,通达OA /interface/auth.php SQL注入
  16. 在网页中发起QQ临时对话的方法
  17. [动态规划] 区间DP
  18. 云队友丨传道士与雇佣兵:“电商之王”杰夫·贝佐斯传奇
  19. win7锁定计算机自动关机,Win7电脑老是自动关机怎么解决?
  20. 计算机图形图像的领域应用论文,计算机图形与图像处理论文2000字

热门文章

  1. 怎么把普通图片转换成mbn格式的
  2. SAP ALV 详细说明
  3. python的map,filter,reduce函数
  4. ifstream java_ifstream :: seekg给出了错误的结果
  5. JVM--三大子系统详解
  6. 大学课程 | 《数据库》基础知识点考点大全
  7. JS 入门教程-01-js入门案例
  8. 制作gogs Docker镜像
  9. 段错误原因分析和查找
  10. centos 7 32位下载地址