基于springboot的智慧社区微信小程序

文未可获取一份本项目的java源码和数据库参考。

本课题研究目标

本文主要对小区生活服务平台的功能和非功能需求进行了分析,系统除了提供物业保修、小区资讯、投诉留言、常用电话等基础功能外,为了满足用户的多样化需求,还提供邻里圈子和有偿求助,通过邻里圈子用户可以和社区内其他人交流,交流本身就能解决很多问题,通过邻里圈子,用户可以发布二手交易消息等。有偿求助模块对接服务提供者和小区居民,对于物业无法满足的用户需求,比如代驾、家教等,住户发布需求订单,由专业的服务人员提供有偿帮助。根据服务划分规则将系统分成若干微服务并进行技术选型,设计出项目的微服务风格的架构。

微服务架构的最重要的特点是将一个系统分成多个容器化微服务,而每个微服务都需要进行认证鉴权,本文设计并实现了统一的认证鉴权模块。因为微服务独立部署导致日志分散,本文设计并实现了统一的日志收集分析模块。各个微服务协作完成系统功能,通过远程调用相互通信,而为了高可靠性,每个微服务采用多实例部署,系统调用需要高效的负载均衡,本文设计并实现了基于服务器负载情况的动态权重负载均衡模块。为了提高系统性能,项目使用Redis缓存技术,Redis缓存和MySQL数据库会产生数据库一致性问题,本文设计并实现了具有重试机制的失效缓存删除策略。对系统的功能点进行设计和实现,最终实现了高可靠、高性能、易扩展的小区生活服务平台,包括前台微信小程序和Web管理后台。

最后对小区生活服务平台进行了功能和非功能测试,测试结果表明,小区生活服务平台的实现效果符合预期。

  • 关键技术和难点

对于Java开发领域,Spring框架[18]可以说是最重要使用最广泛的框架,它提供了一系列组件模块,比如依赖注入、安全框架等,开发人员以前编写大量代码才能是实现的功能,通过Spring提供的组件,几十行甚至几行代码就能实现,例如,通过使用Spring JDBC模块的JDBCtemplate,几行代码就能实现数据存取功能。

虽然Spring框架通过整合一系列组件大大简化了Java开发人员的工作,但是也带来了不容忽视的问题,Spring项目需要大量的xml配置,复杂的配置和依赖管理成了开发和部署维护的新难题。Spring Boot基于Spring框架开发,使用Spring Boot可以快速的进行程序开发。Spring Boot实现了自动配置,还提供了大量开箱即用的启动器,使开发者从Spring的配置地狱中解脱出来,在Spring Boot的应用中开发者只需要很少的配置甚至零配置就能使用第三方库,节省开发者大量的时间和精力,开发者可以更专注于业务逻辑的代码编写,简化Spring应用的开发是Spring Boot的重要目的。Spring Boot可以创建独立运行的Spring应用,它内嵌了Tomcat服务器,而微服务的核心思想就是分散解耦,将一个应用解耦合为多个可以独立运行部署的小型应用,利用Spirng Boot可以便捷的开发出能够独立运行独立部署的微服务。

三、现有的研究基础

要完成本课题的设计和实现,需要具备需求分析、程序设计、界面和代码实现的能力。

在参加毕业设计之前,本人已熟练掌握了Java开发语言和数据库等基础编程语言,熟悉开发环境和机制,因此能实现成本课题要求所需功能的编写和调试。同时,也参加过小项目的实践,另外也经常浏览多个技术论坛以学习他人经验,加强自己的积累。因此本人已具备了研发本课题的基础能力,有信心完成本课题的研究任务。

四、实施方案

系统功能需求:

小区生活服务平台需要多个角色协同工作,不同的角色有不同的功能和权限,本平台的用户角色有:

(1)普通用户:平台的使用主体,为小区居民,自动分配账号。

(2)服务提供者:具有专业技能并且有意愿帮助他人的用户可以申请认证,认证通过后可以查看普通用户发出的订单并接单,为普通用户提供有偿帮助。

(3)物业管理人员:负责平台的日常管理。

(4)系统管理员:主要对物业管理人员进行管理。

系统有四类角色:普通用户、物业管理人员、服务提供者、系统管理员。需要有三个不同的应用,构成完整的平台以供全部用户使用:

(1)开发一个微信小程序供普通用户使用,用户可以在微信小程序里查看小区动态资讯,和其它小区居民交流,发布有偿求助订单等。

(2)开发一个微信小程序供通过审核的服务提供者使用。服务提供者查看并接受用户订单提供有偿服务,也可以发布专业资讯。

(3)开发一个后台管理系统,供系统管理员和物业管理人员使用。系统管理员可以对物业管理人员进行人员管理和授权管理,物业管理人员可以根据自己的权限开展工作。

以下对小区生活服务平台根据用户角色进行详细的需求分析。

(1)普通用户

普通用户用例图如图3-1所示。

图1 普通用户用例图

详细功能需求如下:

1)普通用户通过微信小程序端,输入账号密码或通过手机验证码登录进入系统,使用其他功能。

2)普通用户可以管理个人信息,包括头像,电话号码,昵称,地址等信息。

3)普通用户可以根据自己的需求,发布需求订单寻求专业人士帮助,比如家政需求,代驾需求等。根据有意接单的技能人士,普通用户可以查看技能人士的个人信息以及报价选择技能人士。

4)人们对自己所处环境的动态有着刚性需求,普通用户可以通过小程序查看动态资讯并留言,动态资讯的发布者包括后勤物业以及认证的服务人员。

5)普通用户有日常交流的需求。社区圈子类似于百度贴吧,用户可以发布主题帖,可以对主题帖做出评论,点赞别人的评论,以及对自己的发言进行管理。

6)普通用户可以通过每日登录,每日首次浏览动态资讯,对完成的需求订单进行评价获得奖励积分,通过积分兑换商品消耗积分,还可以查看自己的积分明细。

7)普通用户可以通过微信小程序给物业留言,在线报修、查询常用电话等

2.服务提供者

审核通过的服务提供者用例图如图2所示。

图2 服务人员用例图

服务提供者所具有的功能需求详细介绍如下:

1)有意愿提供服务的人或公司通过微信小程序端注册,需要提供证明自己专业技能的资料,比如专业证书等,审核通过后才可以正常使用小程序提供的功能。

2)物业人员将审核通过的用户需求订单推送给具有服务提供者,服务提供者可以查看需求订单详情,并参与竞标或抢单,竞标需要给出价格区间和竞标宣言。

3)订单完成后,可以评价雇主。

4)可以查看自己参与完成的订单列表和详情。

5)服务人员可以发表动态资讯,未审核状态,物业管理人员审核通过后才可以正式发布

(3)物业管理人员

物业管理员的管理权限是系统管理员授予的,不同的物业管理人员具有不同的权限负责不同的管理工作。这里以物业管理人员的全集说明这个用户群体的功能需求。

物业管理人员功能用例如图3所示。

图3 物业管理人员用例图

物业管理人员所具有的功能需求详细介绍如下:

1)物业管理人员通过Web端登录系统,进入对应权限的页面,处理工作。

2)物业管理人员可以修改自己的个人信息,比如电话号码。

3)被授权的物业管理人员可以管理小区动态资讯模块,可以发布动态资讯,删除动态资讯,审核经过认证的服务人员提交的动态资讯发布申请,以及查看、删除用户留言

4)被授权的物业管理人员可以对积分模块进行管理,包括设置积分规则,管理积分兑换商品,以及查看兑换历史记录。

5)被授权的物业管理人员能够对社区圈子进行管理,包括删除用户的不良发言、对违规用户进行一段时间的禁言、发布公告以及置顶等。

6)被授权的物业管理人员可以对有偿求助模块进行管理,包括审核服务人员的资质,增加或删除服务人员,审核用户提交的求助订单,管理求助类型和查看历史订单记录等。

系统架构分析:

使用Keepalived实现Nginx集群的高可用[361370,Keepalived是一款实现服务器高可用的服务软件,它可以防止单点故障导致系统不可用情况的发生,当集群中某台服务器发生故障,Keepalived检测到并将其移除,当服务恢复时,将其自动加入到集群里,Keepalived实现高可用的关键是VRRP协议,也就是虚拟路由冗余协议。通过Nginx和Keepalived组合,实现Nginx集群的高可用,当主Nginx服务器出故障,备Nginx服务器会接管主Nginx服务器的工作,当服务器从故障中恢复,备Nginx将工作交给主Nginx。MysQL具有体积小、内存占用率低,速度快、能够较好的运用低成本的硬件资源提供横向扩展能力,本系统选择使用MySQL关系型数据库。为了加快系统响应速度,减轻数据库压力,使用Redis缓存数据库。

综上所述,系统整体架构如图3-5所示。

图4 系统架构图

1.用户登录的总体流程如下:

1)用户进入登录界面,输入账号密码并提交。

2)客户端对密码进行MDS加密后,使用https传输到服务器。

3)服务器根据用户名查询用户密码密文和盐值。

4)用户密码与盐值拼接,再次进行MD5加密,和数据库中密码比较。

5)如果相等,则用户信息正确登录成功,否则,登录失败并提示“信息错误”。

登录流程如图5所示。

图5 用户登陆流程

2、浏览资讯

用户浏览资讯需要四个步骤:登录系统、进入动态资讯首页、浏览资讯列表、点击资讯标题浏览资讯详情。

对于列表中的资讯,用户真正会浏览的仅仅是一小部分,资讯列表界面仅仅需要资讯标题、时间等,而不需要获取资讯详情。为了减少不必要的网络,提高系统性能,将新闻标题,作者等信息与资讯详情分开保存,详情单独保存在一张表中,资讯的其它属性在另一张表里,最新发布的动态资讯保存到Redis中。

3、发贴

发贴是邻里圈子模块内容的来源,是该模块其它功能的基础,用户可以发表主题帖,但是为了维护良好的邻里圈子模块环境,管理人员可以对发表不当言论的用户进行禁言,并设置禁言时间。所以用户在请求发帖时,首先判断是否有发帖权限,也就是是否正处于禁言状态,若没有被禁言,进入发帖页面并在编辑完主题帖内容后,包括主题帖名称、主题帖类型和具体信息,点击确认发布,即可发布主题帖。

图6 用户发帖流程

4、有偿求助

有偿求助模块的目的是满足居民的多样化需求,居民发布需求订单,为了防止用户发布不规范甚至违法的需求订单,管理人员要对用户发布的订单进行审查,不合理的需求会被驳回,审核通过的订单会被发布到需求市场供服务提供者查看。服务提供者从需求市场查看订单,接受订单并提供有偿服务。核心业务就是普通用户发布订单和服务提供者接单。以接单类型来分,需求订单有两种:抢单和竞标。抢单为先到先得,竞标类型需要服务提供者参与竞标由用户决定中标者。

普通用户发布的竞标订单,服务提供者需要通过竞标方式接单,服务提供者查看需求市场的订单列表,点击感兴趣的订单查看详情,若有意接单,填写竞标宣言后参与竞标,竞标的参与者最多为三人,订单发布者从竞标者中选择,决定订单最终交给谁。

服务提供者参与竞标的流程如图所示。

5、积分兑换

对于用户来说,积分的唯一用途就是兑换商品。而对于积分兑换商品,需要着重考虑并发量,因为可能存在某一热门商品开启兑换,大量用户短时间内对该商品进行争抢的情况。为了提高兑换操作的并发量,将商品的信息存入Redis,并对兑换操作进行数据库事务降级,使用Redis事务完成兑换商品库存的减少,考虑到有些商品限制一个用户只能兑换一次,将兑换记录也存入Redis。设置定时执行的库存同步线程,将商品的库存信息和兑换记录更新到数据库中,具体的Redis缓存设计如下:

(1)参与积分兑换的商品列表。主键为EXC GOODS LIST商品ID,存储至多30条兑换商品的ID信息

(2)商品的基本信息。主键为EXC GOODS INFO商品ID,存储的信息主要包括商品名、兑换所需积分、详情等。

(3)商品的库存信息。主键为EXC GOODS-LEFT-商品ID,存储商品剩余数量。对于积分兑换,商品的剩余数量是最重要的信息。

(4)用户兑换商品信息。主键为EXC USER ORDER用户ID商品1D,记录单个用户兑换单个商品的数量积分兑换商品流程如图8。

图8 用户兑换积分流程

用户点击兑换,发送请求到后端。服务端收到用户兑换请求,查询该用户是否已达到兑换上限,若没有,查询数据库得到用户当前积分数,如果不足以兑换商品,提示“积分不足”,兑换失败。如果用户积分足够,根据商品id查询商品库存,如果商品不足,提示“库存不足”,兑换失败。积分足够,库存足够,减少积分,减少库存,增加一条兑换记录,兑换成功。

  • 可行性分析
  1. 技术可行性

本平台采用Springboot架构的形式,尽量减少数据与代码之间、代码与代码之间的耦合度,提高彼此间的内聚度,尽力保证各个子程序之间能够独立运行互补的干扰。同时,MySQL建立数据库的方式相比SQL Server简单很多,MySQL不仅可以用SQL语句操作数据库,而且还可以直接对表进行操作,而SQL Server只能用SQL语句对数据库进行操作。因此,在技术选择上是可行的。

2.经济可行性

开发本平台所需要的开发工具均是开源免费软件,即开发即可展示效果,不需要大型复杂的服务器支持开发和运行,这些有利条件使得开发成本几乎为零。该平台的制作只需我一人即可,开发过程中设备也只需我的个人电脑。这样大大降低了开发难度及节省开发时间。因此,该系统在经济上是完全可行的。

3.实施可行性

本系统采用JAVA语言开发,利用现有的微信小程序开发工具等完全能够实现,因此本系统在实施时完全可行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539503.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

sheng的学习笔记-AI-归纳逻辑程序设计(ILP)

AI目录:sheng的学习笔记-AI目录-CSDN博客 规则学习(rule learning): sheng的学习笔记-AI-规则学习(rule learning)-CSDN博客 一阶规则学习: sheng的学习笔记-AI-FOIL(First-Order Inductive Learner)-CSD…

Tiny-universe学习笔记1:Qwen-blog

本文是参与Datawhale Tiny-universe组队学习的第一篇学习笔记,参考链接:https://github.com/datawhalechina/tiny-universe Tiny-universe学习笔记1:Qwen-blog Qwen整体架构与Llama2类似,具体如下图所示: 其中&#…

1 elasticsearch安装

【0】官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.11/targz.html 【1】Centos7 下载安装 【1.1】下载 官网:Download Elasticsearch | Elastic 选择好自己想要的相关版本即可; 【2】Centos7.X 前置环境配置(uli…

C# 访问Access存取图片

图片存入ole字段,看有的代码是获取图片的字节数组转换为base64字符串,存入数据库;显示图片是把base64字符串转换为字节数组再显示;直接存字节数组可能还好一点; 插入的时候用带参数的sql写法比较好;用拼接…

汽车应用生态系统的飞跃

在过去的几年里,汽车系统经历了前所未有的变革,驾驶员和乘客对于车内体验的期待已远远超越了传统的驾驶范畴。随着技术的不断进步,基于Android Automotive OS(AAOS)和Google Automotive Services(GAS&#…

毕业设计选题:基于ssm+vue+uniapp的农产品自主供销小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

力扣 167.两数之和||—输入为有序数组

文章目录 题目介绍解法 题目介绍 解法 利用相向双指针&#xff0c;初始时l在最用左边&#xff0c;r在最右边 1.numbers[l] numbers[r] < target 则 l 2.numbers[l] numbers[r] < target 则 r 3.numbers[l] numbers[r] target 说明找到了答案 class Solution {publi…

WPF DataGrid 单元格居中,头部居中,点击行改变背景色。

我得全局样式都写在了App.XAML文件下的ResourceDictionary里&#xff0c;方便全局引用 DataGrid样式和点击改变行背景色的触发器(BasedOn继承的是UI框架的样式&#xff0c;若无则删除&#xff0c;触发器还有鼠标移动事件等&#xff0c;按需自行修改添加) <Style x:Key&quo…

联想正式在印度生产AI服务器!致力于在印度开发世界“尖端”技术真的能实现吗?|AI日报

文章推荐 OpenAI以1500亿美元公司估值向投资者筹集65亿美元&#xff01;安卓版谷歌Gemini Live免费上线&#xff5c;AI日报 今日热点 联想集团将在印度生产AI服务器 联想集团周二宣布&#xff0c;将开始在其位于印度南部的工厂生产AI服务器&#xff0c;并在班加罗尔的科技中…

Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive

文章目录 一、创建Vue3工程1. vue-cli方式2. vite方式3. 项目小说明4. 安装插件&#xff1a;(1) Prettier--整理格式(2) Vue-official 二、 OptionsAPI 与 CompositionAPI1 选项式API的弊端2 组合式API的优势 三、setup1. 基本使用2 setup与组合式API3 setup语法糖 四、Vue中的…

[Redis][String][上]详细讲解

目录 0.前言1.常见命令1.SET2.GET3.MSET && MGET4.SETNX && SETXX 2.计数命令1.INCR2.INCRBY3.DECR4.DECYBY5.INCRBYFLOAT6.注意 0.前言 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; Redis中所有的键的类型都是字符串类…

【南方科技大学】CS315 Computer Security 【Lab3 Format String Vulnerability】

目录 Lab OverviewLab TasksTask 1: The Vulnerable ProgramTask 2: Understanding the Layout of the StackTask 3: Crash the ProgramTask 4: Print Out the Server Program’s MemoryTask 5: Change the Server Program’s MemoryTask 6: Inject Malicious Code into the Se…

Vue2学习笔记(02条件渲染 、监视数据的原理)

1、v-if和v-show的区别 2、Vue监视数据的原理

gcc升级(含命令行升级、手动升级两种方式)

gcc升级 1.yum源替换1.1 备份原始repo配置文件1.2 重新配置CentOS-Base.reporepo文件1.3 清除缓存并重新创建 2. gcc安装3.命令行升级gcc4.手动升级4.1 安装包下载4.2 解压4.3 gcc升级4.3.1 依赖拉取4.3.2 gmp安装4.3.3 mpfr安装4.3.4 mpc安装4.3.5 gcc编译、安装 4.4 gcc命令配…

springsecurity+jwt实现前后端分离认证授权

文章目录 1.简介2.快速入门3.认证3.1登录校验流程3.2原理初探3.3认证详流程详解3.4 分析UsernamePasswordAuthenticationFilter 4.案例实战4.1 思路分析4.2准备工作4.3实战1.数据库校验用户2.核心代码1.创建UserDetailsService实现类2.创建UserDetails实现类3.密码加密存储模式…

前端界面搜索部分,第一个选择框的值,影响第二个选择框的值

1.字段声明 {title: 单位名称,dataIndex: departmentId,align: center,width: 100,hideInTable: true,renderFormItem: (item, { defaultRender, ...rest }) > (<ProFormSelectname"departmentId"// label"单位名称"options{hospitaltData}onChange…

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler&#xff0c;抓https请求&#xff0c;除打开抓包功能&#xff08;F12&#xff09;还需要&#xff1a; ① Fiddler开启https抓包 ② Fiddler导出证书&#xff1b; ③ 浏览器导入证书。 否则&#xff0c;无法访问https网站&#xff08;如下图&#xff0…

详解CORDIC算法以及Verilog实现并且调用Xilinx CORDIC IP核进行验证

系列文章目录 文章目录 系列文章目录一、什么是CORDIC算法&#xff1f;二、CORDIC算法原理推导三、CORDIC模式3.1 旋转模式3.2 向量模式 四、Verilog实现CORDIC4.1 判断象限4.2 定义角度表4.3 迭代公式 五、仿真验证5.1 matlab打印各角度的正余弦值5.2 Verilog仿真结果观察 六、…

使用Python免费将pdf转为docx

刚刚想将pdf转换为docx文档时&#xff0c;居然要收费 还好我学过编程&#xff0c;这不得露两手 将pdf 转换为 docx 文档 的操作步骤 我这里使用的是Python语言 &#xff08;1&#xff09;在终端上安装 pdf2docx 是一个 Python 库&#xff0c;它可以将 PDF 文件转换为 Word (…

PHP发邮件教程:配置SMTP服务器发送邮件?

PHP发邮件的几种方式&#xff1f;如何使用PHP通过SMTP协议发信&#xff1f; PHP作为一种广泛使用的服务器端脚本语言&#xff0c;提供了多种方式来发送邮件。AokSend将详细介绍如何通过配置SMTP服务器来实现PHP发邮件教程的核心内容。 PHP发邮件教程&#xff1a;设置参数 这…