摘 要
物联网 技能作为继互联网技能后新一代的通讯信息集成应用的范例,其巨大的应用远景受到了学术界和政商界的广泛关注。物联网 技能在一些传统行业已经有了很深入的应用,比方,其在商品生产信息溯源、环境监测掩护、物流、供应链、能源等范畴的乐成应用。
与此同时,物联网 技能的发展也受到了安全隐私标题的制约。如今物联网拓扑结构一样平常是客户端一中央折务器模子,即中央化结构。这种结构的特点是数据管理方便、实行服从高,但是,我们经常看到用户数据被故意或偶尔走漏,给用户隐私带来巨大的危害,究其缘故起因,正是由于中央数据存储机构羁系困难,访问权限不明白。区块链作为比年来鼓起的技能,具有去信托、去中央化和可溯源特性,是一种有潜力办理物联网隐私安全的技能,因此也是国表里学术界研究的热门。
本文偏重研究了区块链体系中的共识机制,对月前主流的共识机制在吞吐量、时延等方面做了量化的比力,分析了每种共识算法的上风和不敷,并对如今应用广泛的权益证实(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-3。
从开辟工具来看,由于基于区块链的物联网数据买卖业务是基于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 注册页面
不是基于区块链的物联网数据买卖业务中正式用户的是可以在线举行注册的,假如你没有本基于区块链的物联网数据买卖业务的账号的话,添加“注册”,当填写上本身的账号+暗码+确认暗码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证暗码和确认暗码是否是一样的,末了验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没标题后即可用户注册乐成。注册界面实现了体系用户用户的注册,其注册界面展示如下图4。2所示。
图4.2 注册界面图
体系用户注册逻辑代码如下:
/**
* 注册
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> 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<String,Object> 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<String,Object> 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<String, Object> login(@RequestBody Map<String, String> 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<User>();
Map<String, String> 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()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户考核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户考核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或暗码不精确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询使用,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.4 平台资讯页面
当用户点击“平台资讯”以后就会进入到以下界面,用户可以输入关键词搜刮资讯内容,检察点赞数以及点击数,然后点击到资讯的具体的界面,在这个具体界面可以点赞+批评。其出界面展示如下图4.4所示。
图4.4 平台资讯界面图
4.5数据买卖业务页面
当用户点击“数据买卖业务”以后就会给我们展示数据买卖业务的列表,选择一个数据买卖业务进入到图4.5界面中,用户可以对数据买卖业务举行购买,点击购买按钮,进入到4.6界面中,输入数据名称、数据分类、出售用户、出售代价、用户地点、订单号、用户编号等,点击“提交”按钮,就会表现购买乐成。
图4.5 数据买卖业务界面图
图4.6 购买界面图
数据买卖业务的逻辑代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
4.6 用户管理页面
此功能为管理员的功能,管理员点击“体系用户管理”菜单后,会展示出管理员+体系用户两个子菜单,任何可以对其举行增编削查使用;其界面展示如下图4.7所示。
图4.7 体系用户管理界面图
用户管理关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.7资源管理页面
此功能为管理员的功能,管理员点击“资源管理”菜单后,会展示出平台资讯+资讯分类两个子菜单,任何可以对其举行增编削查使用;其界面展示如下图4.8所示。
图4.8 资源管理界面图
4.8 数据买卖业务管理页面
此功能为管理员的功能,管理员点击“数据买卖业务”菜单后,会展示出添加数据买卖业务栏,可以对数据买卖业务信息举行增编削查使用;其界面展示如下图4.9所示。
图4.9 数据买卖业务管理界面图
4.9 购买信息管理页面
此功能为管理员的功能,管理员点击“购买信息”菜单后可以大概对购买信息举行增编削查使用;其界面展示如下图4.10所示。
图4.10 购买信息管理界面图
4.10 买卖业务纪录管理页面
此功能为管理员的功能,管理员点击“买卖业务纪录”菜单后可以大概对买卖业务纪录举行增编削查使用;其界面展示如下图4.11所示。
图4.11 买卖业务纪录管理界面图
5基于区块链的物联网数据买卖业务测试
基于区块链的物联网数据买卖业务测试是为了查验软件是否到达计划要求,是否存在错误,通过测试的方法来查抄基于区块链的物联网数据买卖业务,以便发现基于区块链的物联网数据买卖业务中的错误。测试工作是包管基于区块链的物联网数据买卖业务质量的关键。
5.1 调试部分标题
标题1:数据库无法添加中文。
办理过程:重新创建数据库,将库的编码格式改为utf8。
效果:能在新库的表中添加中文。
标题2:控制台报错前台与配景参数差异等
办理过程:查抄代码,找到报错参数完成修改,继承报错,服务器移除项目重新运行。
效果:重启项目不再报错。
标题3:报错No bean named 'sysLogServiceImpl' available找不到名为sysLogServiceImpl的bean的对象。
办理过程:扣问导师报错缘故起因,发现错误缘故起因是未添加注解@Service,必要在在impl实现类的外貌添加@Service注解。
效果:重新debug项目无报错。
标题4:启动项目时报错:Mapped Statements collection does not contain value for
办理过程:网上搜刮办理办法,堕落大概的缘故起因有多个,颠末积极排查,错误缘故起因是mapper映射地点有误。在mybatis-config里重新设置地点。
效果:项目启动正常
5.2 体系测试用例
体系测试包罗:数据买卖业务添加功能测试、购买信息功能测试、买卖业务纪录添加功能测试、余额充值功能测试这四大功能测试,如表5.1到5.4所示:
表5.1数据买卖业务添加功能测试表
| 测试名称
| 测试功能
| 使用过程
| 预期效果
| 测试效果
| | 数据买卖业务添加功能模块测试
| 管理员添加数据买卖业务功能是否正常
| 管理员登录乐成后点击“添加数据买卖业务”菜单
| 管理员根据提示并依次输入数据买卖业务名称+数据名称+数据分类+出售用户+用户编号等,后点击“提交”按钮
| 数据买卖业务添加信息功能正常
| 表5.2 购买信息功能测试表
| 测试名称
| 测试功能
| 使用过程
| 预期效果
| 测试效果
| | 购买信息添加功能模块测试
| 体系用户添加购买信息功能是否正常
| 体系用户登录乐成后点击“添加购买信息”菜单
| 体系用户根据提示并依次输入数据名称+出售代价等,后点击“提交”按钮
| 购买添加信息功能正常
| 表5.3 买卖业务纪录添加功能测试表
| 测试名称
| 测试功能
| 使用过程
| 预期效果
| 测试效果
| | 买卖业务纪录添加功能模块测试
| 买卖业务纪录添加买卖业务纪录功能是否正常
| 管理员登录乐成后点击“添加买卖业务纪录”菜单
| 管理员根据提示并依次输入用户编号+购买用户等,后+用户地点
数据范例点击“提交”按钮
| 买卖业务纪录添加信息功能正常
| 表5.4余额充值功能测试表
| 测试名称
| 测试功能
| 使用过程
| 预期效果
| 测试效果
| | 余额充值功能模块测试
| 余额充值功能是否正常
| 体系用户登录乐成后点击余额充值中的“开取”按钮
| 体系用户根据提示填写充值信息点击“提交”按钮
| 余额充值信息功能正常
| 5.3 体系测试效果
通过上面章节编写基于区块链的物联网数据买卖业务的测试用例,已经测试完毕了数据买卖业务添加功能测试、购买信息测试、买卖业务纪录添加功能测试、余额充值功能测试,通过这4大模块为基于区块链的物联网数据买卖业务的后期推广运营提供了强力的技能支持。
结论
至此,基于区块链的物联网数据买卖业务已经竣事,在开辟前做了很多的准备,在本体系的计划和开辟过程中阅览和学习了很多文献资料,从中我也劳绩了很多宝贵的方法和计划思绪,对体系的开辟也起到了很告急的作用,体系的开辟技能选用的都是本身比力认识的,好比SSM、JAVA技能、MYSQL,这些技能都是在从前的学习中学到了,此中很多的计划思绪和方法都是在从前不停地学习中探索出来的履历,实在对于我们来说工作量还是比力大的,但是正是由于之前的积聚与准备,才气顺遂的完成这个项目,由此看来,积聚履历跟做好准备黑白常告急的事变。
固然在该体系的计划与实现的过程中也离不开老师以及同砚们的资助,正是由于他们的引导与资助,我才可以大概乐成的在预期内完成了这个体系。同时在这个过程当中我也劳绩了很多东西,此体系也有必要改进的地方,但是由于专业知识的浮浅,并不能做到非常完善,盼望以后偶然机可以让其真正的投入到使用之中。
参考文献
[1]金炜,张戈力.基于技能融合-演进模子的物联网和区块链技能在能源物联网中的应用分析[J].物联网技能,2022,12(11):117-120.DOI:10.16667/j.issn.2095-1302.2022.11.035.
[2]李敦锋,肖瑶,冯勇.一种面向物联网数据买卖业务的高效PCN路由战略[J].盘算机科学,2022,49(S2):696-700.
[3]白翔,许从方,柳兴,张磊.区块链物联网安全技能综述及关键技能分析[J].信息技能,2022(10):24-30+40.DOI:10.13274/j.cnki.hdzj.2022.10.005.
[4]王棋.基于SSM框架的网上照相体系计划与实现[J].电子质量,2022(10):89-93.
[5]谢霜.基于Java技能的网络管理体系结构的应用[J].网络安全技能与应用,2022(10):14-15.
[6]苏婉怡,揣小龙,赵国松,王煜尧.基于Java技能的测验体系关键点研究[J].无线互联科技,2022,19(18):58-60.
[7]杨玉莲.基于SSM框架的智能煤质化验室综合管理体系[J].煤矿今世化,2022,31(05):100-104+109.DOI:10.13606/j.cnki.37-1205/td.2022.05.005.
[8]林佳一.肴杂式教学在高职MySQL数据库课程的实践研究[J].电脑知识与技能,2022,18(26):133-135.DOI:10.14004/j.cnki.ckt.2022.1737.
[9]李罡,周正茂. 基于Java技能实现内存键值数据管理的方法及其装置[P]. 北京市:CN114840498B,2022-09-13.
[10]王劲松,杨唯正,赵泽宁,魏佳佳.基于有向无环图的区块链技能综述[J].盘算机工程,2022,48(06):11-23.DOI:10.19678/j.issn.1000-3428.0064002.
[11]刘文妍. 面向区块链与物联网融合的数据筛选及买卖业务排序服务研究[D].山东大学,2022.DOI:10.27272/d.cnki.gshdu.2022.000754.
[12]张学典,林至锽.一种基于区块链的物联网架构计划[J].软件导刊,2022,21(05):145-150.
[13]郭红, 基于java的软件开辟环境检测软件V1.0. 湖北省,武汉东湖学院,2021-10-01.
[14]高宇波. 基于区块链与雾节点信誉的物联网访问控制和数据共享的研究[D].西安理工大学,2021.DOI:10.27398/d.cnki.gxalu.2021.000861.
[15]张亚川. 基于区块链的物联网数据共享模子与关键机制的研究与实现[D].北京工业大学,2021.DOI:10.26935/d.cnki.gbjgu.2021.000118.
[16]杨晟. 基于泛在电力物联网与区块链的综合能源服务研究[D].华北电力大学(北京),2021.DOI:10.27140/d.cnki.ghbbu.2021.001174.
[17]高翩翩. 基于区块链的物联网智能合约模子[D].江苏科技大学,2021.DOI:10.27171/d.cnki.ghdcc.2021.000383.
[18]Witsarut Sriratana,Vittaya Khagwian,Sutham Satthamsakul. Analysis of Electric Current by Using MySQL Database on Web Server for Machine Performance Evaluation: A Case Study of Air Conditioning System[J]. 제어로봇시스템학회 국제학술대회 논문집,2020.
[19]. Design and Implementation of ERP System Based on SSM Framework[J]. ,2020,440(5).
[20]Margaretha Ohyver,Jurike V. Moniaga,Iwa Sungkawa,Bonifasius Edwin Subagyo,Ian Argus Chandra. The Comparison Firebase Realtime Database and MySQL Database Performance using Wilcoxon Signed-Rank Test[J]. Procedia Computer Science,2019,157(C).
[21]Ping Wanxin,Chen Yuankun,Hou Xiaoyan. Design of Campus Bicycle Rental Management System Based on SSM Framework[J]. Journal of Physics: Conference Series,2019,1314.
致 谢
时间过的很快,不知不觉,在中北大学的学习生存即将竣事。毕业之际,我朴拙地向资助过我的老师、家人、同砚、朋侪们表达感谢。起重要感谢的是我的母校。感谢母校给了我优美的生存和良好的学习环境,使我能学到了很多知识,也不停的变得良好;感谢家人在这四年期间不停给与我的爱和无条件的支持,让我没有后顾之忧地完成学业;感谢软件学院的任课老师们给我鼓励和认可,让我有信心去做好每一件事变;感谢同砚们的资助,让我的大门生存更故意义。在此次毕业计划的实现过程中, 我得到了老师们的耐烦引导让我顺遂完成了该计划。从最初的选题和开题开始,老师就给予我很多资助,他们认真负责的态度、丰富的教学履历让我学到了很多。
同时也要感谢我敬爱的班主任和实训课程的老师,他们在各个方面都教给了我丰富的履历,在面对各种困难时怎样处理惩罚。由于本年的特殊性,老师们不但在学习中给我以经心的引导,同时还在别的方面给予我观关怀,引导老师不辞辛劳的为各人录制视频和一遍遍解说让我心怀感激之情。在此,我朴拙的感恩、感谢我的引导西席们。
还要感谢练习期间不厌其烦辅导我鼓励我的技能师傅,他引导了我各个方面的本事,尤其是编程方面,迄今我的很多本事和编写规范都有赖于他的引导、改正。
末了还要特殊感谢身边的各位同砚们,不停支持鼓励我,无论何时何种境况。我很荣幸得到同砚们的资助,也很开心可以大概和各人共度大学四年的韶光。
末了的末了,再次发自肺腑的感谢全部资助过我的人。
点赞+收藏+关注 → 私信领取本源代码、数据库
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |