基于SpringBoot的公益慈善平台

81 篇文章 0 订阅
一、项目背景介绍:

基于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)

字段名

类型

默认值

列注释

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. 系统主页:浏览系统主页、留言、浏览公益项目、浏览平台活动、浏览求助文章,每次浏览都会累积访问量

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

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

  1. 平台活动:

  1. 留言:

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

  1. 管理员用户管理:

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

  1. 管理员认证审核:

管理员评论管理:

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

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

八、源码获取:

 此源码非开源,若需要此源码可扫码添加微信进行咨询!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值