基于javaweb+mysql的springboot爱心捐赠管理系统(java+springboot+html+thymeleaf+mybatis+mysql)

基于javaweb+mysql的springboot爱心捐赠管理系统(java+springboot+html+thymeleaf+mybatis+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SpringBoot爱心捐赠管理系统(java+springboot+html+thymeleaf+mybatis+mysql)

项目介绍

本项目分两种角色:管理员、用户。

项目功能:注册、登录、修改密码、捐赠衣服、论坛交流、爱心许愿、统计分析、捐赠记录、用户管理等等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;

4.数据库:MySql 5.7版本;

5.是否Maven项目:是;

技术栈

SpringBoot + FreeMarker + JPA

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

  2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;

  3. 将项目中application-dev.properties配置文件中的数据库配置改为自己的配置;

        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;
    }

}

/**
 * 页面路由控制层
 */
@Controller
@RequestMapping("/page")
public class PageController {

    /**
     * 登录页面
     */
    @RequestMapping("loginPage")
    public String loginPage() {
        UserContext.setCurrentUser(null);
        return "loginPage";
    }

    /**
     * 注册页面
     */
    }

    /**
     * 前台心愿表单
     */
    @RequestMapping("wishForm")
    public String wishForm() {
        return "user/wishForm";
    }

    /**
     * 后台用户管理页面
     */
    @RequestMapping("managerUser")
    public String managerUser() {
        return "manager/managerUser";
    }

    /**
     * 后台用户表单
     */
    @RequestMapping("userForm")
    public String userForm() {
        return "manager/userForm";
    }

    /**
     * 后台捐赠记录管理页面
     */
    @RequestMapping("managerDonation")
    public String managerDonation() {
        return "manager/managerDonation";
    }

    /**
     * 后台论坛文章管理页面
     */
    @RequestMapping("managerForum")
    public String managerForum() {
        return "manager/managerForum";
    }

    /**
     * 后台留言管理页面
     */
    @RequestMapping("managerMessage")
    public String managerMessage(){
        return "manager/managerMessage";
    }
    public String userForm() {
        return "manager/userForm";
    }

    /**
     * 后台捐赠记录管理页面
     */
    @RequestMapping("managerDonation")
    public String managerDonation() {
        return "manager/managerDonation";
    }

    /**
     * 后台论坛文章管理页面
     */
    @RequestMapping("managerForum")
    public String managerForum() {
        return "manager/managerForum";
    }

    /**
     * 后台留言管理页面
     */
    @RequestMapping("managerMessage")
    public String managerMessage(){
        return "manager/managerMessage";
    }

    /**
     * 后台心愿管理页面
     */
    @RequestMapping("managerWish")
    public String managerWish(){
        return "manager/managerWish";
    }

}

 */
@Controller
@RequestMapping("/file")
public class FileController {

    /**
     * 前缀路径(本地测试环境)
     */
    public static String filePrePath = System.getProperty("user.dir")+ "\\src\\main\\resources\\static\\";

    /**
     * 论坛图片上传
     * @param file
     * @return
     */
    @RequestMapping("/imagesUpload")
    @ResponseBody
    public 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);
            //转base64
            String 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");
    }

    /**
     * 随机获取一个默认头像
     */
    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()));
    }

}

/**
 * 留言信息控制层
 */
@RestController
@RequestMapping("/message")
public class MessageController {

    @Autowired
    MessageService messageService;

    /**
     * 留言信息数据表格接口
     */
        }).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;
    }

    /**
     * 前台页面第三个折现图数据接口
     * 随机获取一个默认头像
     */
    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()));
    }

}

/**
 * 留言信息控制层
 */
@RestController
@RequestMapping("/message")
public class MessageController {

    @Autowired
    MessageService messageService;

    /**
     * 留言信息数据表格接口
     */
    @RequestMapping(value = "/getTableData", produces = "application/json; charset=utf-8")
    public String getTableData(@RequestBody Message message) {
        Map<String, Object> map = messageService.selectPage(message);
        return JSON.toJSONString(map);
     * 我的文章数据获取
     */
    @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;
    }

}

/**
 * 文件上传控制层
    }

    /**
     * 前台捐赠信息保存
     */
    @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("裤子");

/**
 * 文章信息控制层
 */
@RestController
@RequestMapping("/article")
public class ArticleController {

    @Autowired
    ArticleService 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")

/**
 * 文件上传控制层
 */
@Controller
@RequestMapping("/file")
public class FileController {

    /**
     * 前缀路径(本地测试环境)
     */
    public static String filePrePath = System.getProperty("user.dir")+ "\\src\\main\\resources\\static\\";

    /**
     * 论坛图片上传
     * @param file
     * @return
     */
    @RequestMapping("/imagesUpload")
    @ResponseBody
    public 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);
            //转base64
            String 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){
    UserService userService;
    @Autowired
    DonationService donationService;
    @Autowired
    ArticleService articleService;
    @Autowired
    MessageService messageService;
    @Autowired
    WishService 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<>();
@RequestMapping("/message")
public class MessageController {

    @Autowired
    MessageService messageService;

    /**
     * 留言信息数据表格接口
     */
    @RequestMapping(value = "/getTableData", produces = "application/json; charset=utf-8")
    public String getTableData(@RequestBody Message message) {
        Map<String, Object> map = messageService.selectPage(message);
        return JSON.toJSONString(map);
    }

    /**
     * 留言信息保存
     */
    @RequestMapping("/saveMessage")
    public String saveMessage(@RequestBody Message message) {
        return messageService.saveMessage(message);
    }

    /**
     * 留言信息删除(物理删除)
     */
    @RequestMapping("/deleteMessage")
    public String deleteMessage(String id) {
        return messageService.deletePhysical(id);
    }

    /**
     * 根据文章id获取留言
     */
    @RequestMapping("/getByArticleId")
    public List<Message> getByArticleId(String articleId) {
        List<Message> messageList = messageService.selectByArticleId(articleId);
        return messageList;
    }

}

        return "user/personalPage";
    }

    /**
     * 前台论坛详情页面
     */
    @RequestMapping("detailPage")
    public String detailPage(String articleId) {
        return "user/detailPage";
    }

    /**
     * 前台心愿页面
     */
    @RequestMapping("wishPage")
    public String wishPage() {
        return "user/wishPage";
    }

    /**
     * 前台心愿表单
     */
    @RequestMapping("wishForm")
    public String wishForm() {
        return "user/wishForm";
    }

    /**
     * 后台用户管理页面
     */
    @RequestMapping("managerUser")
    public String managerUser() {
        return "manager/managerUser";
    }

    /**
     * 后台用户表单
     */
    @RequestMapping("userForm")
    public String userForm() {
        return "manager/userForm";
    }

    /**
     * 后台捐赠记录管理页面
     */
    @RequestMapping("managerDonation")
    public String managerDonation() {
    /**
     * 随机获取一个默认头像
     */
    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()));
    }

}

/**
 * 留言信息控制层
 */
@RestController
@RequestMapping("/message")
public class MessageController {

    @Autowired
    MessageService messageService;

    /**
     * 留言信息数据表格接口
    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()));
    }

}

/**
 * 留言信息控制层
 */
@RestController
@RequestMapping("/message")
public class MessageController {

    @Autowired
    MessageService messageService;

    /**
     * 留言信息数据表格接口
     */
    @RequestMapping(value = "/getTableData", produces = "application/json; charset=utf-8")
    public String getTableData(@RequestBody Message message) {
        Map<String, Object> map = messageService.selectPage(message);
        return JSON.toJSONString(map);
    }

    /**
    }

}

/**
 *	RequestHand工具类,用于存取登录用户session
 */
public class UserContext {

    private static final String USER_IN_SESSION = "CURRENT_USER";

    public static HttpSession getSession() {
        return ((ServletRequestAttributes) (RequestContextHolder.getRequestAttributes())).getRequest().getSession();
    }

    /**
     * 当前用户存入session
     * @param user 当前登录用户对象
     */
    public static void setCurrentUser(User user) {
        if(user == null) {
            getSession().invalidate();
        }else {
            getSession().setAttribute(USER_IN_SESSION,user);
        }
    }

    /**
     * 当前登录用户取出
     * @return 返回当前登录对象实体
     */
    public static User getCurrentUser() {
        return (User) getSession().getAttribute(USER_IN_SESSION);
    }

}

    @Autowired
    DonationService donationService;
    @Autowired
    ArticleService articleService;
    @Autowired
    MessageService messageService;
    @Autowired
    WishService 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();
        }
        //用户个人信息

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值