基于SpringBoot的公益慈善平台

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

文末获取项目下载方式


一、项目背景介绍:

基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展,公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上,主要有管理员、捐赠者和志愿者三种角色,他们各自拥有不同的权限和功能。

管理员作为平台的运营者,主要负责管理整个平台的运行情况,包括用户信息管理、项目管理等。而捐赠者则是为公益事业做出贡献的人,他们可以浏览平台上的各种公益项目,并选择自己感兴趣的项目进行捐赠。此外,他们还可以在平台上查看自己的捐赠记录和捐赠的项目进展情况。

志愿者是公益事业的重要推动力,他们在平台上可以找到自己感兴趣的志愿者活动,并进行报名参与。同时,他们也可以在平台上查看自己的志愿服务记录和参与的活动信息。

在技术实现上,该平台采用了SpringBoot整合Mybatis、Redis等主流开发技术,以提供高效、稳定的服务。此外,还整合了支付宝支付、websocket聊天室等功能,为用户提供更便捷的操作体验。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  3. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  4. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  5. Bootstrap:Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
  6. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
    超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

基于SpringBoot的公益慈善平台_第1张图片

四、数据库设计:

1:article(article)

字段名 类型 默认值 列注释
id int NULL 文章ID
user_id int NULL 作者用户ID
title varchar NULL 文章标题
content longtext NULL 文章正文
status int NULL 文章状态:发布(1),回收站(2)
read_count int NULL 阅读量
img varchar NULL 封面图片
type int NULL 类型:文章由普通用户发布(1),活动由管理员发表(2)
is_checked int NULL 文章审核,0:未审核,1:审核通过,2:审核不通过
info varchar NULL 审核未通过返回的消息
gmt_create datetime NULL 数据插入时间,即发布时间
gmt_modified datetime NULL 更新时间

2:article_activity(article_activity)

字段名 类型 默认值 列注释
id int NULL 主键ID
article_id int NULL 文章的ID
activity_article_id int NULL 活动文章的ID
gmt_create datetime NULL 插入数据的时间
gmt_modified datetime NULL 更新的时间

3:certification(certification)

字段名 类型 默认值 列注释
id int NULL 主键ID
user_id int NULL 用户ID
name varchar NULL 机构名称
leader_name varchar NULL 领导者姓名
id_card varchar NULL 领导者身份证号码
type varchar NULL 机构类型
show_name varchar NULL 认证称号(XXX官方账户)
prove_img varchar NULL 单位证明/营业执照图片地址
id_card_img0 varchar NULL 领导者身份证照片(反面)
id_card_img1 varchar NULL 领导者身份证照片(正面)
is_checked int NULL 审核(0),成功(1),失败(2)
info varchar NULL 认证未通过返回的消息
gmt_create datetime NULL 插入数据的时间
gmt_modified datetime NULL 更新的时间

4:comment(comment)

字段名 类型 默认值 列注释
id int NULL 主键ID
user_id int NULL 发表评论用户的ID
user_name varchar NULL 用户名
img varchar NULL 用户头像地址
target_id int NULL 目标ID:可以是项目ID 、文章ID
type int NULL 类型:项目(1),文章(2)
content varchar NULL 评论内容
reply_id int NULL 回复评论的ID
is_first int NULL 是否置顶:置顶(1),不置顶(0)
gmt_create datetime NULL 插入数据的时间,即发表评论的时间
gmt_modified datetime NULL 更新的时间

5:feedback(feedback)

字段名 类型 默认值 列注释
id int NULL 主键ID
user_id int NULL 反馈的用户的ID
user_name varchar NULL 用户名
img varchar NULL 用户头像地址
content varchar NULL 评论内容
gmt_create datetime NULL 插入数据的时间,即发表评论的时间
gmt_modified datetime NULL 更新的时间

6:link(link)

字段名 类型 默认值 列注释
id int NULL 主键ID
name varchar NULL 名称
target_url varchar NULL 链接地址
type int NULL 类型:顶部菜单(1),友情链接(2)
gmt_create datetime NULL 插入数据的时间
gmt_modified datetime NULL 更新的时间

7:message(message)

字段名 类型 默认值 列注释
id int NULL 主键ID
receive_user_id int NULL 接收消息的用户ID
sent_user_id int NULL 发送消息的用户ID
type int NULL 类型:项目评论(1)/文章评论(2)/审核 (3)
target_id int NULL 目标ID:公益项目/文章ID
title varchar NULL 标题
content varchar NULL 消息的内容
is_read int NULL 是否已读:未读(0),已读(1)
gmt_create datetime NULL 插入数据的时间,即发表评论的时间
gmt_modified datetime NULL 更新的时间
sent_user_img varchar NULL 发送消息的用户头像

8:message_board(message_board)

字段名 类型 默认值 列注释
id int NULL 主键ID
name varchar NULL 昵称
email varchar NULL 邮件地址
content varchar NULL 留言内容
gmt_create datetime NULL 插入数据的时间
gmt_modified datetime NULL 更新的时间

9:project(project)

字段名 类型 默认值 列注释
id int NULL 主键ID
name varchar NULL 名称
background varchar NULL 背景
target varchar NULL 目的
theme varchar NULL 主题
sponsor varchar NULL 赞助
content longtext NULL 内容
img varchar NULL 公益项目的封面
gmt_create datetime NULL 插入数据的时间
gmt_modified datetime NULL 更新的时间

10:user(user)

字段名 类型 默认值 列注释
id int NULL 主键ID
name varchar NULL 姓名
password varchar NULL 密码
email varchar NULL 邮箱地址
phone char NULL 手机号码
address varchar NULL 地址
sex int NULL 性别:女(0)男(1)
birthday date NULL 出生年月
career varchar NULL 职业
certification_id int NULL 认证类型ID
img varchar NULL 头像地址
status int NULL 状态:正常(0),封禁(1)
gmt_create datetime NULL 注册时间
gmt_modified datetime NULL 最近更新
role int NULL 角色:普通用户(0)管理员(1)

五、功能模块:

  1. 系统主页:浏览系统主页、留言、浏览公益项目、浏览平台活动、浏览求助文章,每次浏览都会累积访问量

    基于SpringBoot的公益慈善平台_第2张图片

  2. 用户登录注册:填写用户信息进行账号注册(邮箱验证码)、使用邮箱密码进行登录、忘记密码(邮箱验证码并重置)、退出登录

    基于SpringBoot的公益慈善平台_第3张图片

  3. 公益项目:包括项目标题、内容(Markdown)、封面、背景、主题、目的、赞助

  4. 平台活动:

  5. 留言:

    基于SpringBoot的公益慈善平台_第4张图片

  6. 普通用户后台:| 仪表盘 | 数据统计、最新活动、最新求助文章 |
    | ---------- | ------------------------------------------------------------ |
    | 求助文章 | 标题、编写求助文章(Markdown编辑器)、上传封面、关联平台活动、文章搜索、重新编辑 |
    | 审核队列 | 等待审核、已审核 |
    | 文章回收站 | 删除文章后自动加入回收站,可再次删除、移出回收站 |
    | 评论管理 | 置顶评论、删除评论、查询详情 |
    | 通知消息 | 查看消息、全部已读 |

    基于SpringBoot的公益慈善平台_第5张图片

  7. 管理员用户管理:

    基于SpringBoot的公益慈善平台_第6张图片

  8. 管理员公益项目发布:

  9. 管理员认证审核:

    基于SpringBoot的公益慈善平台_第7张图片

  10. 管理员评论管理:

    基于SpringBoot的公益慈善平台_第8张图片

六、代码示例:

 /**
     * 发布求助文章
     */
    @PostMapping("/publishArticle")
    @ResponseBody
    public String publishArticle(String title, String content, String imgPath, Integer activityId) {
        // 生成文章对象
        Article article = Article.builder()
                .title(title).content(content).userId(loginUser.getId())
                .type(TypeStatus.ARTICLE).readCount(0).status(TrashStatus.NOT_IN).isChecked(CheckStatus.WAIT)
                .gmtCreate(new Date()).gmtModified(new Date())
                .build();
        // 为文章设置封面,如果为空就生成随机封面
        article.setImg(StringUtils.isEmpty(imgPath) ? OssUtils.getRandomFace() : imgPath);
        if (articleService.insert(article)) {
            if (activityId != -1) {
                articleService.insertArticleActivity(article.getId(), activityId);
                logger.info("【成功】:添加文章活动");
            }
            result.setCode(200);
            logger.info("【成功】:添加文章");
        } else {
            result.setCode(500);
            logger.info("【失败】:添加文章");
        }
        return JSONObject.toJSONString(result);
    }

    /**
     * 更新文章
     */
    @PostMapping("/updateArticle")
    @ResponseBody
    public String updateArticle(Integer id, String title, String content, String imgPath, int activityId) {
        // 生成文章对象
        Article article = Article.builder()
                .id(id).title(title).content(content).status(TrashStatus.NOT_IN).isChecked(CheckStatus.WAIT)
                .gmtModified(new Date())
                .build();
        // 为文章设置封面,如果为空就生成随机封面
        article.setImg(StringUtils.isEmpty(imgPath) ? OssUtils.getRandomFace() : imgPath);
        if (articleService.update(article)) {
            if (activityId != -1) {
                // 获取原来参加的活动
                Article activity = articleService.getActivityByArticleId(id);
                if (activity == null || activity.getId() != activityId) {
                    // 删除参与的活动
                    articleService.deleteArticleActivity(id);
                    // 添加新的活动
                    articleService.insertArticleActivity(article.getId(), activityId);
                    logger.info("【成功】:更新文章活动");
                }
            }
            result.setCode(200);
            logger.info("【成功】:更新文章");
        } else {
            result.setCode(500);
            logger.info("【失败】:更新文章");
        }
        return JSONObject.toJSONString(result);
    }

    /**
     * 将文章移到回收站
     */
    @GetMapping("/putIntoTrash")
    public String putIntoTrash(@RequestParam("id") Integer id, @RequestParam("checked") Integer checked) {
        // 获取文章
        Article article = articleService.getById(id);
        if (article.getType() == TypeStatus.ACTIVITY) {
            logger.info("【失败】:将文章移到回收站,类型错误");
            return "error/400";
        }
        if (article.getUserId() != loginUser.getId()) {
            logger.info("【失败】:将文章移到回收站,无权限");
            return "error/401";
        }
        article.setStatus(TrashStatus.IS_IN);
        if (articleService.update(article)) {
            logger.info("【成功】:将文字移到回收站");
        } else {
            logger.info("【失败】:将文字移到回收站");
        }
        return "redirect:/my-articles?checked=" + checked;
    }

七、项目总结:

之前在教材内容读书过程中开发设计技术专业知识,对研究过程的认知,对开发设计设计课程学习,及其如何有效开展系统的市场分析和设计。老师还选了更具有标志性管理方案系统来解读教学过程,课下安排工作使们进行练习。在这段时间,老师还应当掌握系统地完成和测试。应对餐厅点餐管理系统的开发,的脑海里的确有一个清晰的认知。在系统制做及配套文本文件撰写中,按照软件开发流程一步步做好本职工作。

从系统的角度看,依据餐厅点餐管理系统生产,其艰难在于功能清楚、系统构造设计、设计使用性能数据库系统、挑选核心技术进行系统功能等,这种都是自己的难题。针对这一艰难,实行了一些防范措施。当也不知道系统的功能时,在网上找到很多相似的系统,做好记录了一些系统的一般功能,并用了这一系统的高效功能的一部分。除此之外,在在网络上得到了很多关于系统设计的前提知识,包含系统模块划分、设计规范、数据库表的设计和创建,及其程序流程编码的专业技能知识,包含撰写与使用数据和信息加上、删掉和变更编码控制器。在系统序号进行相关功能后,认真的试了系统中所有功能,最后发现自己研发的系统符合规定,能接受。系统功能与系统剖析设计高度一致,系统质量稳定。为应对客户的实际操作不正确,还设有不恰当反馈机制,系统性能稳定。唯一的最大的缺点是系统数据报表的设计不健全,字段名称相匹配的引用类型不正确,一部分系统编码很多地方并没有注解,编码不足简易。

从文本文件的角度看,依据基于SpringBoot的公益慈善平台生产后,应叙述生产过程的需求,包含怎样进行数据分析报告、怎样进行系统设计及其系统功能的具体运作实际效果。在这期间,用了接近一个月的时间来做。要实现院校标准化的文档排版标准,多次在老师的建议下学习办公软件使用和排版设计设计。坚持就是收益。经过长时间的的撰写和优化,的文档终于完成。

总而言之,尽管制做经历了太多阶段,但如果认真完成这件事情,们将在每一个环节得到许多知识,在每一个环节的操作过程中锻练们自己的实践技能。根据该项目的制做,开始明白,许多知识不但来源于书籍,来源于教师在课堂教学中讲的知识,还来源于各种网络学习平台和社会实践。到现在为止,将继续努力,维持新知识的深入学习习惯性

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看获取项目下载链接,博主联系方式

链接点击直达:下载链接

你可能感兴趣的:(优质毕业设计,spring,boot,后端,java,公益慈善,毕业设计)