基于SpringBoot的公益慈善平台

本文详细介绍了基于SpringBoot的公益慈善平台,涵盖了项目背景、技术选型(如Java、SpringBoot、Mybatis、Redis等)、数据库设计(如用户、文章、活动、认证等表结构)以及系统功能模块,如用户登录、项目管理、认证审核等。
摘要由CSDN通过智能技术生成

✌全网粉丝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命令可以说明文字,图形、动画、声音、表格、链接等。
    超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:article(article)

字段名类型默认值列注释
idintNULL文章ID
user_idintNULL作者用户ID
titlevarcharNULL文章标题
contentlongtextNULL文章正文
statusintNULL文章状态:发布(1),回收站(2)
read_countintNULL阅读量
imgvarcharNULL封面图片
typeintNULL类型:文章由普通用户发布(1),活动由管理员发表(2)
is_checkedintNULL文章审核,0:未审核,1:审核通过,2:审核不通过
infovarcharNULL审核未通过返回的消息
gmt_createdatetimeNULL数据插入时间,即发布时间
gmt_modifieddatetimeNULL更新时间

2:article_activity(article_activity)

字段名类型默认值列注释
idintNULL主键ID
article_idintNULL文章的ID
activity_article_idintNULL活动文章的ID
gmt_createdatetimeNULL插入数据的时间
gmt_modifieddatetimeNULL更新的时间

3:certification(certification)

字段名类型默认值列注释
idintNULL主键ID
user_idintNULL用户ID
namevarcharNULL机构名称
leader_namevarcharNULL领导者姓名
id_cardvarcharNULL领导者身份证号码
typevarcharNULL机构类型
show_namevarcharNULL认证称号(XXX官方账户)
prove_imgvarcharNULL单位证明/营业执照图片地址
id_card_img0varcharNULL领导者身份证照片(反面)
id_card_img1varcharNULL领导者身份证照片(正面)
is_checkedintNULL审核(0),成功(1),失败(2)
infovarcharNULL认证未通过返回的消息
gmt_createdatetimeNULL插入数据的时间
gmt_modifieddatetimeNULL更新的时间

4:comment(comment)

字段名类型默认值列注释
idintNULL主键ID
user_idintNULL发表评论用户的ID
user_namevarcharNULL用户名
imgvarcharNULL用户头像地址
target_idintNULL目标ID:可以是项目ID 、文章ID
typeintNULL类型:项目(1),文章(2)
contentvarcharNULL评论内容
reply_idintNULL回复评论的ID
is_firstintNULL是否置顶:置顶(1),不置顶(0)
gmt_createdatetimeNULL插入数据的时间,即发表评论的时间
gmt_modifieddatetimeNULL更新的时间

5:feedback(feedback)

字段名类型默认值列注释
idintNULL主键ID
user_idintNULL反馈的用户的ID
user_namevarcharNULL用户名
imgvarcharNULL用户头像地址
contentvarcharNULL评论内容
gmt_createdatetimeNULL插入数据的时间,即发表评论的时间
gmt_modifieddatetimeNULL更新的时间

6:link(link)

字段名类型默认值列注释
idintNULL主键ID
namevarcharNULL名称
target_urlvarcharNULL链接地址
typeintNULL类型:顶部菜单(1),友情链接(2)
gmt_createdatetimeNULL插入数据的时间
gmt_modifieddatetimeNULL更新的时间

7:message(message)

字段名类型默认值列注释
idintNULL主键ID
receive_user_idintNULL接收消息的用户ID
sent_user_idintNULL发送消息的用户ID
typeintNULL类型:项目评论(1)/文章评论(2)/审核 (3)
target_idintNULL目标ID:公益项目/文章ID
titlevarcharNULL标题
contentvarcharNULL消息的内容
is_readintNULL是否已读:未读(0),已读(1)
gmt_createdatetimeNULL插入数据的时间,即发表评论的时间
gmt_modifieddatetimeNULL更新的时间
sent_user_imgvarcharNULL发送消息的用户头像

8:message_board(message_board)

字段名类型默认值列注释
idintNULL主键ID
namevarcharNULL昵称
emailvarcharNULL邮件地址
contentvarcharNULL留言内容
gmt_createdatetimeNULL插入数据的时间
gmt_modifieddatetimeNULL更新的时间

9:project(project)

字段名类型默认值列注释
idintNULL主键ID
namevarcharNULL名称
backgroundvarcharNULL背景
targetvarcharNULL目的
themevarcharNULL主题
sponsorvarcharNULL赞助
contentlongtextNULL内容
imgvarcharNULL公益项目的封面
gmt_createdatetimeNULL插入数据的时间
gmt_modifieddatetimeNULL更新的时间

10:user(user)

字段名类型默认值列注释
idintNULL主键ID
namevarcharNULL姓名
passwordvarcharNULL密码
emailvarcharNULL邮箱地址
phonecharNULL手机号码
addressvarcharNULL地址
sexintNULL性别:女(0)男(1)
birthdaydateNULL出生年月
careervarcharNULL职业
certification_idintNULL认证类型ID
imgvarcharNULL头像地址
statusintNULL状态:正常(0),封禁(1)
gmt_createdatetimeNULL注册时间
gmt_modifieddatetimeNULL最近更新
roleintNULL角色:普通用户(0)管理员(1)

五、功能模块:

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

    系统主页

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

    用户登录注册

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

    公益项目

  4. 平台活动:

    平台活动

  5. 留言:

    留言

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

    普通用户后台

  7. 管理员用户管理:

    管理员用户管理

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

    管理员公益项目发布

  9. 管理员认证审核:

    管理员认证审核

  10. 管理员评论管理:

    ### 管理员评论管理

六、代码示例:

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

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

八、源码获取:

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

链接点击直达:下载链接

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值