计算机毕业设计选题推荐,SSM基于区块链的物联网数据交易 46193(赠送源码数据库 )上万套实战教程手把手教学JAVA、PHP,node.js,C++、python、数据可视化等
SSM基于区块��的物联网数据交易
系 院 XXXX
学科门类 XXX
专 业 XXX
班级 XXX
学 号 XXX
姓 名 XXX
指导教师 XXX
教师职称 XXX
2022年12月4日
摘 要
物联网技术作为继互联网技术后新一代的通信信息集成应用的典范,其巨大的应用前景受到了学术界和政商界的广泛关注。物联网技术在一些传统行业已经有了很深入的应用,例如,其在商品生产信息溯源、环境监测保护、物流、供应链、能源等领域的成功应用。
与此同时,物联网技术的发展也受到了安全隐私问题的制约。目前物联网拓扑结构一般是客户端一中央服务器模型,即中心化结构。这种结构的特点是数据管理方便、执行效率高,但是,我们经常看到用户数据被有意或无意泄露,给用户隐私带来巨大的危害,究其原因,正是因为中央数据存储机构监管困难,访问权限不明确。区块链作为近年来兴起的技术,具有去信任、去中心化和可溯源特性,是一种有潜力解决物联网隐私安全的技术,因此也是国内外学术界研究的热点。
本文着重研究了区块链系统中的共识机制,对月前主流的共识机制在吞吐量、时延等方面做了量化的比较,分析了每种共识算法的优势和不足,并对目前应用广泛的权益证明(proofof stake)共识机制进行系统的研究,本文针对权益共识机制中存在的“无风险投注”问题,提出了一种新的解决策略,该策略的具体做法是允许投票节点投出支持票和反对票两种,而不是目前存在的只能投出一种票,若节点对某一分叉投支持票该分叉最后胜出,则节点获得收益,反之,若节点对某一分叉投出反对票且该分叉最后没有胜出则节点获得收益。
设计了物联网数据交易系统,提供了区块链网络中点对点之间交互的能力,在以太坊区块链上进行了智能合约部署,设计了数据存储方法。最后,本文设计了基于区块链的物联网数据交易系统,该应用通过使用智能合约实现了数据的点对点自由交易,不需要第三方参与交易,这些交易不需要人为干预,物联网数据与系统代币以太币根据智能合约制定的规则进行交换。
关键词:物联网数据交易系统;Java;SSM;MYSQL
Abstract
The Internet of Things (IoT) technology, as a model of the integrated application of communication and information of the new generation following the Internet technology, has attracted extensive attention from the academic and political and business circles for its huge application prospects. The Internet of Things technology has already had a very deep application in some traditional industries, for example, its successful application in commodity production information traceability, environmental monitoring and protection, logistics, supply chain, energy and other fields.
At the same time, the development of Internet of Things technology is also restricted by security and privacy issues. At present, the topology of the Internet of Things is generally the client central server model, namely the centralized structure. This structure is characterized by convenient data management and high execution efficiency. However, we often see that user data is leaked intentionally or unintentionally, which brings great harm to user privacy. The reason is that the central data storage organization is difficult to supervise and has unclear access rights. As a technology emerging in recent years, blockchain has the characteristics of distrust, decentralization and traceability. It is a technology that has the potential to solve the privacy security of the Internet of Things, so it is also a research hotspot in domestic and foreign academic circles.
This paper focuses on the consensus mechanism in the blockchain system, makes a quantitative comparison of the mainstream consensus mechanism in terms of throughput, delay, etc., analyzes the advantages and disadvantages of each consensus algorithm, and systematically studies the consensus mechanism of proof of stake, which is widely used at present. This paper proposes a new solution to the problem of "risk-free betting" in the equity consensus mechanism, The specific approach of this strategy is to allow voting nodes to cast support votes and negative votes, instead of only casting one vote at present. If a node votes in support of a fork and the fork finally wins, the node gains income. On the contrary, if a node votes against a fork and the fork does not win, the node gains income.
The Internet of Things data trading system is designed, which provides the ability of point-to-point interaction in the blockchain network. The smart contract is deployed on the Ethereum blockchain, and the data storage method is designed. Finally, this paper designs the Internet of Things data trading system based on the blockchain. This application realizes point-to-point free trading of data by using smart contracts, without the participation of a third party. These transactions do not require human intervention. The Internet of Things data and system token Ether are exchanged according to the rules established by the smart contract.
Keywords: Internet of Things data trading system; Java; SSM; MYSQ
目录
1 绪论
1.1 研究背景与意义
1.2 研究现状
1.3 相关技术介绍
2 基于区块链的物联网数据交易分析
2.1 可行性分析
2.1.1 技术可行性分析
2.1.2 经济可行性分析
2.2 系统需求分析
2.2.1 功能性需求分析
2.2.2 非功能性分析
2.3 系统用例分析
3 基于区块链的物联网数据交易总体设计
3.1 系统模块设计
3.2 数据库设计
3.3.1 数据库概念结构设计
3.2.2 数据库逻辑结构设计
4 基于区块链的物联网数据交易设计与实现
4.1 系统首页页面
4.2 注册页面
4.3 登录页面
4.4 平台资讯页面
4.5数据交易页面
4.6 用户管理页面
4.7 资源管理页面
4.8 数据交易管理页面
4.9 购买信息管理页面
4.10 交易记录管理页面
5基于区块链的物联网数据交易测试
5.1 调试部分问题
5.2 系统测试用例
5.3 系统测试结果
结论
参考文献
致 谢
1 绪论
1.1 研究背景与意义
2008年,化名为中本聪的学者发表划时代的论文《比特币:一种点对点电子现金系统》",标志着区块链技术的诞生。以区块链作为底层技术的比特币数字货币系统的成功将这一技术彻底将这一技术推向研究与应用的高潮,其后陆陆续续出现了一些较为成熟的区块链平台,其中有代表性的有Ethereum平台、IBM Hyperledger平台、LISK 平台等。在加密货币领域更是出现了数不胜数的应用,区块链技术的众多成功应用案例引起了更多人对这一新技术的重视,越来越多的商业机构都推出了自己的区块链应用,例如,阿里巴巴2017年便推出了商品溯源链和蚂蚁金服公益链应用,越来越多的国家将数字代币合法化,这一切都表明区块链技术所带来的技术和思维变革为多数人渐渐接受。
区块链技术的巨大潜力引起了很多传统行业的注意,其中以金融领域和物联网领域最为火热,金融领域以支付系统和数字代币为代表,出现了很多成功的结合案例,而在物联网领域目前还处于比较早期的研究阶段,少有较为成熟的应用推出,但是,我们看到物联网的建设与发展确实受到了安全隐私问题的制约,具体来说是物联网数据的隐私性、存储安全性和数据完整性问题。首先数据隐私问题,物联网在家居、个人医疗、交通等方面的应用使得原本属于一些个人隐私的数据被采集起来,这些数据与个人生活息息相关,因此,物联网在方便生活的同时,却有损个人隐私:其次,是数据安全问题,智慧城市、能源、金融等行业已经与物联网有了深层次的融合,这些关乎国计民生的行业数据的存储安全不得不引起人们的担忧,这些数据一旦被窃取或者泄露将造成很大的危害;最后是数据完整性问题,很多领域对数据完整性有着极高的要求,例如物流和商品溯源领域。这些问题是目前传统物联网架构所决定的,亟待新的解决方案。
随着区块链和物联网获得广泛认可,技术世界似乎再次融合。今天,我们分别经历了这两种颠覆性技术的使用案例。物联网的重要性正在为电子器件及其连接的物体带来期待已久的技术革命。物联网对我们的日常生活产生了更为密切的影响,预计到2020年底,将有大约200亿台设备连接在一起工作。每一项技术进步都伴随着一些漏洞, 当数十 亿设备通过中央通信通道连接时,数据安全问题可能是一项重大挑战,这会导致单点故障,这意味着如果黑客发现单个漏洞,即使安装了各种类型安全协议的大型服务器表单,也可能会遭到损害,而区块链技术是分布式数据库技术,没有中央机构,是有可能解决这一问题的方案。因此loT( Internet of Things) +区块链方案应运而生。当然,基于区块链技术的物联网改造升级并不是一个推到重来的过程,而是一个相互融合的过程。鉴于以上分析物联网所出现的问题,区块链技术解决方案将带来一下三点新的变化:
(一)数据安全隐私方面有了新的解决方案。传统的物联网架构是中心化的结构,所有的数据都被中央机构统一采集管理, 首先,这种架构本身对数据安全就是一个威胁,一旦中央管理机构出现安全漏洞将危及大量用户数据安全隐私;其次,中央管理机构掌握着数据访问权限,出于商业利益将用户数据出售的风险确实存在。而在区块链技术中,没有中心化的机构,每一个数据操作都需要用户身份验证,同时每一个数据操作的日志会被永久地记录在区块中,这样,数据管理权限就掌握在了每一个用户手中,从而彻底解决数据安全隐私问题。
(二)区块链技术使得物联网数据有了新的交易模式。区块链最大的优势就是可以去信任地进行交易,用户与用户之间可以通过智能合约制定条款直接进行数据交易,不需要人为干预,这极大地提高了数据利用效率。
(三)区块链技术降低了企业成本。物联网设备呈现儿何级增长,传统物联网架构下中央机构的计算、存储、维护等成本压力骤升,而区块链技术维护是点对点网络中每个节点完成的,分散了压力,提高容错能力。
1.2研究现状
区块链是一种去中心化,分布式账本系统。它利用密码学原理来保证信息传递和处理的安全性;同时采用智能合约实现了对资源的透明访问以及对用户权限控制等功能。基于区块链技术的物联网数据应用场景及优势:
(1)通过智能合约进行数据流转;
(2)提高数据价值的挖掘能力;
(3)提升数据存储效率。在此基础上提出一种基于区块链的物联云平台架构方案,包括底层基础设施层、应用服务器层与上层服务层三部分。该架构将区块链技术融入到传统数据中心中,可以有效解决传统数据中心所存在的问题:虚拟化程度低;数据安全风险大;无法提供统一的数据共享标准;业务连续性差等。 最后以智慧城市管理为例进行实验测试,结果表明该框架可满足海量异构数据组织、传输、存储等需求。
1.3相关技术介绍
(1)基于区块链的物联网数据交易中的web后台管理中的后端不再使用古老的jsp+javabean+servlet技术,而是使用当前主流的SSM框架,它减少java配置代码,简化编程代码,目前SSM框架也是很多企业选择的框架之一。
(2)基于区块链的物联网数据交易中的web后台管理中的前端使用的是bootstrap框架,它配合ajax和jquery可以美化页面设计。
(3)流行vue框架结合jQuery技术,在jQuery基础上扩展一些插件,通过自己定义插件更好的实现前端的设计。
(4)基于区块链的物联网数据交易中数据库用的mysql5.7,它执行效率高。
2 基于区块链的物联网数据交易分析
2.1 可行性分析
2.1.1 技术可行性分析
通过了解对基于区块链的物联网数据交易的真实需求后,将基于区块链的物联网数据交易所需要的角色划分整理成了下图2-1,图2-2和图2-
从开发工具来看,由于基于区块链的物联网数据交易是基于JAVA的,因此有很多开发工具都可以进行开发,这些功能强大的开发工具可以给我来设计基于区块链的物联网数据交易带来非常大的方便。
从基于区块链的物联网数据交易的本身技术来说,对于我来开发一个基于区块链的物联网数据交易这个毕设是不费事的。基于区块链的物联网数据交易的开发可以简单的分为前台端、后台端开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。Web后台管理使用JAVA[9]的SSM架构开发,数据库使用mysql,页面上使用javascript脚本,因此为我在开发基于区块链的物联网数据交易这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。综上所述,从技术层面来看开发基于区块链的物联网数据交易是可行的。
从用户体验来看,市面上很多被广泛使用的系统案例可以让我来参考,因此我可以综合它们的页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发基于区块链的物联网数据交易是可行的。
2.1.2 经济可行性分析
从基于区块链的物联网数据交易的开发成本来看,基于区块链的物联网数据交易的设计和开发都是我自己完成的,没有其他成本上的开销。
从基于区块链的物联网数据交易的维护成本来看,基于区块链的物联网数据交易的开发遵循一套完整的代码编写规范,并且基于区块链的物联网数据交易的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。
在基于区块链的物联网数据交易上线之后,上线前期我会根据真实需求来调查,对使用我开发的基于区块链的物联网数据交易来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他的校园当中,其他校园可以使用我的基于区块链的物联网数据交易,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。
综合以上的分析,基于区块链的物联网数据交易所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的基于区块链的物联网数据交易的市场将越来越大,基于区块链的物联网数据交易带来的利润也就越来越多。因此,从经济层面来看开发基于区块链的物联网数据交易的是可行的。
2.2 系统需求分析
2.2.1 功能性需求分析
基于区块链的物联网数据交易从角色上划分为了系统用户、管理员两种角色。
管理员用户角色:
(1)登录:管理员的账号是在数据表表中直接设置生成的,不需要进行注册;
(2)公告管理:当点击“公告管理”这一菜单的时候,会出现公告栏这一个子菜单,可以对这个模块进行增删改查操作;
(3)系统用户管理:当点击“系统用户管理”这一菜单的时候,会出现管理员+用户两个子菜单,可以对这两个模块进行增删改查操作;
(4)资源管理:当点击“资源管理”这一菜单的时候,会出现平台资讯+资讯分类这两个子菜单,可以对平台资讯进行增删改查操作;
(5)模块管理:当点击“模块管理”这一菜单的时候,会出现余额充值+数据交易+购买信息+交易记录这四个子菜单,能够对购买信息进行增删改查操作,对数据交易进行管理,以及实现对交易记录进行管理等;
系统用户角色:
(1)注册登录模块:当系统用户想要进入本基于区块链的物联网数据交易中对资讯进行查看评论以及了解药品信息等操作的时候,就必须要登录到系统当中,要是新的用户没有基于区块链的物联网数据交易的账号的话,点击“注册”按钮,就会进入到新用户注册这个界面上,用户输入对应的账号(必须填写)+密码(必须填写)+确认密码(必须填写,而且要与密码一直)+昵称+邮箱+手机号+选择用户身份等等,然后点击“注册”,系统在用户这一数据库中会查询账号是不是存在,两次密码是不是一样,都填写正确就会注册成功,然后再进行登录,如果是之前已经注册过的用户很长时间没有使用,忘记密码,也可以点击“忘记密码”进行找回;
(2)平台资讯:在首页导航栏上我们会看到“平台资讯”这一菜单,我们点击进入进去以后,会看到所有资讯列表,在这个界面,我们可以点击进入进行查看、评论、点赞等;
(3)公告消息:在首页导航栏上我们会看到“公告消息”这一菜单,我们点击进入进去以后,会看到所有管理员在后台发布的公告信息;
(4)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以对不喜欢的信息进行删除收藏;
(5)我的账户:当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置;
(6)个人中心:当用户点击右上角“我的”这个按钮,就会进入到对应的后台进行信息的管理了;
2.2.2 非功能性分析
基于区块链的物联网数据交易的非功能性需求比如基于区块链的物联网数据交易的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1基于区块链的物联网数据交易非功能需求表
安全性 | 主要指基于区块链的物联网数据交易数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指基于区块链的物联网数据交易能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响基于区块链的物联网数据交易占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着基于区块链的物联网数据交易的页面展示内容进行操作,就可以了。 |
可维护性 | 基于区块链的物联网数据交易开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3 系统用例分析
根据上一节功能分析,可以得出系统的用例,系统用户角色用例如图2.1所示。
图2.1 基于区块链的物联网数据交易中系统用户角色用例图
管理员角色用例如图2.2所示。
图2.2 基于区块链的物联网数据交易管理员角色用例图
3 基于区块链的物联网数据交易总体设计
3.1 系统模块设计
根据第二章中基于区块链的物联网数据交易的功能分析可知,基于区块链的物联网数据交易中整体功能模块图如图3.1所示,
图3.1 基于区块链的物联网数据交易功能模块图
3.2 数据库设计
3.3.1 数据库概念结构设计
下面是整个基于区块链的物联网数据交易中主要的数据库表总E-R实体关系图。
图3.2 基于区块链的物联网数据交易总E-R关系图
3.2.2 数据库逻辑结构设计
通过上一小节中基于区块链的物联网数据交易中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
(1)transaction表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
transaction_id | int | 11 | 是 | 是 | 交易记录ID |
data_name | varchar | 64 | 否 | 否 | 数据名称 |
selling_users | int | 11 | 否 | 否 | 出售用户 |
selling_price | int | 11 | 否 | 否 | 出售价格 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
user_no | varchar | 64 | 否 | 否 | 用户编号 |
buying_users | int | 11 | 否 | 否 | 购买用户 |
user_address | varchar | 64 | 否 | 否 | 用户地址 |
data_key | varchar | 64 | 否 | 否 | 数据密钥 |
equipment_type | varchar | 64 | 否 | 否 | 设备类型 |
data_type | varchar | 64 | 否 | 否 | 数据类型 |
data_hash | varchar | 64 | 否 | 否 | 数据哈希 |
incidental_information | text | 0 | 否 | 否 | 附带信息 |
order_number | varchar | 64 | 否 | 否 | 订单号 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(2)system_user表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
system_user_id | int | 11 | 是 | 是 | 系统用户ID |
full_name | varchar | 64 | 否 | 否 | 姓名 |
gender | varchar | 64 | 否 | 否 | 性别 |
user_balance | int | 11 | 否 | 否 | 用户余额 |
user_no | varchar | 64 | 是 | 否 | 用户编号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(3)recharge_balance表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
recharge_balance_id | int | 11 | 是 | 是 | 余额充值ID |
rechargeable_user | int | 11 | 否 | 否 | 充值用户 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
gender | varchar | 64 | 否 | 否 | 性别 |
user_balance | varchar | 64 | 否 | 否 | 用户余额 |
recharge_amount | int | 11 | 否 | 否 | 充值金额 |
recharging_remarks | varchar | 64 | 否 | 否 | 充值备注 |
user_no | varchar | 64 | 否 | 否 | 用户编号 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(4)purchase_informatio表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
purchase_information_id | int | 11 | 是 | 是 | 购买信息ID |
data_name | varchar | 64 | 否 | 否 | 数据名称 |
data_classification | varchar | 64 | 否 | 否 | 数据分类 |
selling_users | int | 11 | 否 | 否 | 出售用户 |
selling_price | int | 11 | 否 | 否 | 出售价格 |
buying_users | int | 11 | 否 | 否 | 购买用户 |
user_address | varchar | 64 | 否 | 否 | 用户地址 |
data_key | varchar | 64 | 否 | 否 | 数据密钥 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
user_no | varchar | 64 | 否 | 否 | 用户编号 |
order_number | varchar | 64 | 否 | 否 | 订单号 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(5)data_transaction表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
data_transaction_id | int | 11 | 是 | 是 | 数据交易ID |
data_name | varchar | 64 | 否 | 否 | 数据名称 |
data_classification | varchar | 64 | 否 | 否 | 数据分类 |
cover_photo | varchar | 255 | 否 | 否 | 封面图片 |
data_description | text | 0 | 否 | 否 | 数据描述 |
selling_users | int | 11 | 否 | 否 | 出售用户 |
selling_price | int | 11 | 否 | 否 | 出售价格 |
hits | int | 11 | 是 | 否 | 点击数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(6)comment表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
comment_id | int | 11 | 是 | 是 | 评论ID |
user_id | int | 11 | 是 | 否 | 评论人ID |
reply_to_id | int | 11 | 是 | 否 | 回复评论ID |
content | longtext | 0 | 否 | 否 | 内容 |
nickname | varchar | 255 | 否 | 否 | 昵称 |
avatar | varchar | 255 | 否 | 否 | 头像地址 |
create_time | timestamp | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
source_table | varchar | 255 | 否 | 否 | 来源表 |
source_field | varchar | 255 | 否 | 否 | 来源字段 |
source_id | int | 10 | 是 | 否 | 来源ID |
4 基于区块链的物联网数据交易设计与实现
基于区块链的物联网数据交易的详细设计与实现主要是根据前面的基于区块链的物联网数据交易的需求分析和基于区块链的物联网数据交易的总体设计来设计页面并实现业务逻辑。主要从基于区块链的物联网数据交易界面实现、业务逻辑实现这两部分进行介绍。
4.1 系统首页页面
当进入基于区块链的物联网数据交易的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4.1所示。
图4.1 系统用户界面图
4.2 注册页面
不是基于区块链的物联网数据交易中正式用户的是可以在线进行注册的,如果你没有本基于区块链的物联网数据交易的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。注册界面实现了系统用户用户的注册,其注册界面展示如下图2所示。
图4.2 注册界面图
系统用户注册逻辑代码如下:
/**
* 注册
* @return
*/
@PostMapping("register")
public Map signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map query = new HashMap();
Map map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
4.3 登录页面
基于区块链的物联网数据交易中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到基于区块链的物联网数据交易的首页中;否则将会提示相应错误信息,用户登录界面如下图4.3所示。
图4.3 登录界面图
系统用户登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map login(@RequestBody Map data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper();
Map map = new HashMap();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()