当下,许多行业采取互联网技能将事情流程信息化、数字化,提高了干系职员的做事质量和效率,节约了干系行业的人力、财力、物力等资源,与此同时,人们获取外界的干系信息紧张依赖于主流的信息化技能和工具。人们对生活的需求也在不断的发生着变革,为了应对用户的多样化需求,许多干系的第三家当应运而生,管理信息化也逐渐的盛行起来,比如电子商务行业。本人通过查询大量学习资料,理解基本的开拓系统的基本背景和关键任务,学习与节制Java措辞、web技能、AJAX技能、HTML措辞等开拓技能,设计系统功能模块,以及MySQL数据库的干系语法和工具,创建和存储数据表格,反响和关联表格之间相互存在的关系,由此对网上房屋中介管理系统进行研发和实现。 ## 1.2国内外研究现状 大概在20世纪90年代,我国才开始研发网上房屋中介管理系统,与一些发达国家比较,系统研发起步比较晚。当时的打算机技能刚开始发展起来,国家经济力量比较薄弱,各地区的经济发展水平不平衡,再加上干系的网络运用技能不太前辈,我国也利用了一段较长的韶光对网络信息化管理进行探索[3]。近些年,由于国家非常重视和支持第三家当的发展,以及人们的日常生活需求越来越离不开信息管理技能的利用,以是我国的信息管理系统行业发展速率非常快,并且干系的系统编制法规也正在不断地被完善和改进。新时期背景下,根据人们的干系需求,不断地促进着干系家当的产生与发展,一系列电子产品、运用软件、信息管理系统等新时期的产物逐渐涌如今人们的视野中,并且在近几年景长迅速,日渐趋于成熟[4]。
与海内比较,国外网上房屋中介管理系统领域发展较早。国外的打算机技能发展比较成熟,以是系统干系的设计也比较完善。19世纪60年代旁边,国外就开始研发网上房屋中介管理系统,并且不久之后,迅速将其投入市场进行利用。美国、英国等一些发达国家快速发展打算机技能,促进了网上房屋中介管理系统管理行业信息化培植[5]。而后随着干系的技能不断地发展,覆盖面非常广泛,运用领域比较多,促进着网上房屋中介管理系统等干系的信息管理系统不断地发展和完善,并且其所设计的系统功能构造也比较合理、全面。相对而言,国外系统的研发在干系领域上还是霸占着较大的上风[6]。因此,我们须要接管国外系统开拓领域中的较好的技能精华,发展我国的信息化管理系统,使得其面向大众,能够更好的、更全面的做事于干系的事情职员。 ## 1.3研究内容 现今,互联网在我们的日常生活霸占着日益主要的地位,我们也越来越离不开对移动设备、电脑等上网设备的利用。传统的网上房屋中介管理系统模式紧张依赖管理职员纯手工记录的干系信息,比较繁琐,未便利查找,也非常随意马虎涌现缺点。如今,如果再通过手工记录房屋,将大大不利于网上房屋中介管理系统行业管理干系的网上房屋中介管理系统信息,严重影响网上房屋中介管理系统行业的发展。因此,本人结合传统的网上房屋中介管理系统业务模式和前辈的电子信息管理模式,利用Java措辞编程设计功能模块,AJAX实现前台和后台之间的交互,MySQL数据库创建和存储数据表格,对网上房屋中介管理系统进行设计和开拓。本系统的设计有利于干系行业实现最大化的资源管理与共享,促进干系行业的信息互换、分工互助,提高干系事情职员的事情效率,终极实现全体网上房屋中介管理系统行业做事的信息化管理。 ## 1.4论文构造 本文环绕着网上房屋中介管理系统的全体开拓过程,展开了详细的描述息争释,设计和实现本系统的紧张事情有:首先剖析研究背景、研究状态,其次先容设计系统时利用到的干系技能,然后通过系统剖析确定系统的功能需求,接着通过编码事情详细设计和实现系统,末了再通过系统测试,找出系统存在的问题和解决问题的方法,不断地修正和完善系统。论文内容的组织构造设计如下。
第一章绪论,通过先容本系统的研究背景、研究现状等内容,帮助用户理解和认识本系统的发展过程。

第二章干系技能先容,紧张先容了Java措辞、B/S模式、MySQL数据库等干系的开拓技能,为后期系统的功能实现供应技能上的支持。
第三章系统剖析,剖析用户的利用需求,以及系统实现的可行性,末了通过用例建模剖析与系统干系的参与者及其用例之间的关系。
第四章系统设计,紧张根据系统总体功能设计,确定将要设计的系统功能模块,设计干系的数据表格。
第五章系统实现,通过干系的功能模块运行图,展现出系统的紧张功能模块操作流程。
第六章系统测试,紧张利用功能测试的办法,测试系统的干系功能运行和利用的详细情形。
第七章总结与展望,通过本文的各章节描述总结得出,基本上完成了系统的设计,展望未来将学习和利用更加前辈的技能,提高系统的实用性,使得系统更好的做事于利用职员。 ## 1.5本章小结 本章紧张先容了课题的研究背景与意义,研究现状,研究内容等内容,末了先容了本论文的组织构造设计。信息化管理模式顺应了信息化时期的变革,本人以现在主流的管理模式为条件,根据利用者的干系需求,设计出一款符合大众需求的网上房屋中介管理系统。
2理论根本2.1 B/S模式
B/S模式(Browser/Server)是一种比较常用的网络构造模式[7]。B/S模式是由模型、视图、掌握器(Model-View-Controller,MVC)构造组成[8]。模型紧张是指业务模型,视图紧张是指用户界面,掌握器紧张是掌握担保视图和模型的同步实行。B/S模式的三层构造是相互独立的,换句话说,当某一个模块发生修正和更新,其不会对其他模块产生影响。根据B/S的这一特点,可以将对业务逻辑的处理以及约束条件集中到中间层中,便于前端增加对模型和方法的调用和复用。并且可以直接通过中间层对数据库进行干系的操作处理,大大减少了数据库的连接数,节省了打算机的对干系的资源配置空间。
利用B/S模式可以节省系统资源配置,提高研发事情效率,减少开拓韶光,因而大大提高了我们开拓软件的可能性。B/S模式有针对性的改变了传统的客户端/做事器模式(Client/Server,C/S模式),也可以说这是对C/S模式进行了扩展。在这种构造模式中,用户不用再向利用C/S模式一样,下载客户端,其可以直接通过利用浏览器的办法,打开网站地址,即可访问和利用干系的系统功能做事。 ## 2.2 IDEA开拓环境 软件开拓利用的编程措辞有许多种,而每种编程措辞须要通过与其相对应的开拓平台进行编译和运行。IDEA平台都是目前比较常用的开拓环境。IDEA平台是开源的,具有功能强大、可扩展性强等特点,可以运用于C/S模式软件的开拓,但是它所霸占的内存容量比较大,运行较慢,并且其并未供应Tomcat做事器,运行过程中须要将代码发布到Tomcat做事器中,测试利用的韶光较长,故而不太适用于B/S模式软件的开拓。
IDEA平台是建立在IDEA平台的根本之上,增加了许多的运用插件,比如Tomcat插件、mail组件等。IDEA平台增加了Tomcat插件,代码编写完成或者更新完成时,程序员无需将代码发布到Tomcat做事器中,可以直接通过调试实现程序的运行。IDEA平台增加了Mail组件,该组件可以为本程序供应标准的邮件方法,便于开拓职员完成与邮件功能干系的编译事情。IDEA平台霸占的内存空间较小,同时其也具有较高的可扩展性,编程职员可以根据须要添加和利用干系的插件。可以支持主流的开源产品和干系的开拓框架,被广泛利用到干系的移动系统、web运用系统等开拓中。比较于IDEA平台,本系统比较适宜利用IDEA平台进行编程和开拓。 ## 2.3 MySQL数据库 MySQL是一种小型的关系型数据库管理系统,由于其运行速率快,占用内存空间小,并且源代码也是开源的,运行和掩护本钱低,系统性能稳定,受到了许多开拓职员的喜好[9]。考虑到MySQL数据库开拓本钱低,功能完好等成分,大多中小型网站选择利用MySQL数据库管理数据信息。
SQL Server也是近几年利用较多的关系型数据库,其与MySQL数据库存在的不同之处紧张有,在环境方面,SQL Server数据库比较适宜于.NET环境,而MySQL数据库适用于险些所有的措辞;在本钱方面,SQL Server数据库是商业化的,其运行多个数据库可许证,虽然有一个免费版,但是只能让你对关系型数据库管理系统有一定的认识与理解,熟习干系的利用流程。如果要想利用SQL Server数据库的话,就须要支付干系用度,而MySQL数据库是开源的,其对付用户来说,利用是完备免费;在实际运用方面,SQL Server数据库和MySQL数据库均支持Java措辞、PHP措辞、C++措辞等多种编程措辞,但是MySQL数据库除了支持上述SQL Server数据库能支持的编程措辞外,还支持Scheme、Eiffel等其他编程措辞,故而MySQL数据库受欢迎程度比SQL Server数据库更高。 ## 2.4 Java措辞 Java措辞是一种面向工具的编程措辞,其紧张具有继续、封装、多态等特色,从而提高编程事情效率,实现软件的设计和开拓[10]。继续机制可以继续干系的类和方法,新的类可以在继续已经定义的类的干系特性根本上,扩展自己新的数据和功能,进而提高自身的能力。封装机制可以提高程序的安全性,其隐蔽工具的干系属性和行为,对外只供应一个接口,用户直接通过访问相应的接口来实现自己须要的功能操作。多态机制可以描述工具的多样性,大略的来说便是引用相同的工具做不同的事务。Java措辞具有安全高效的优点,并且其通过依赖Java虚拟机,可以实现跨平台操作[11]。Java措辞比较随意马虎学习和节制,就目前软件开拓所利用的开拓类措辞而言,Java措辞比较受程序员喜好,运用比较广泛。
2.5本章小结本章紧张先容了实现网上房屋中介管理系统的干系理论根本以及开拓工具。本系统采取B/S模式,利用Java措辞、AJAX技能、MySQL数据库等工具,设计系统功能、页面布局、后台数据等。开拓本系统所利用的干系技能操作大略、随意马虎节制,Java措辞具有跨平台性,可以支持在不同的浏览器利用本系统,MySQL数据库是开源的,减少了本系统的开拓本钱。 # 3需求剖析 ## 3.1功能需求剖析 需求剖析过程是系统能否成功投入市场,也能否被用户所接管和利用的非常关键的一个步骤。功能需求剖析是通过设计系统功能来实现干系的业务事变,详细剖析用户的实际须要,确定须要设计的干系业务事变,其是系统实现的关键,本系统存在的紧张功能需求包括用户注册管理、用户信息管理、密码信息管理等。 ## 3.2技能需求剖析 本系统须要利用Java措辞编码设计干系的功能模块,MySQL数据库创建和存储数据表格,AJAX实现前台和后台之间的交互,并且须要在IDEA开拓环境中,编写干系的Java代码等系统程序文件,利用MySQL数据库存储数据信息,然后通过利用连接代码完成与MySQL数据库的搭建事情,再通过利用开拓环境中的Tomcat插件,完成与Tomcat做事器的发布事情,末了通过与Tomcat做事器的交互行为可以实当代码调试事情。知足以上干系的技能需求,本系统才可以在浏览器上进行访问和利用。 ## 3.3数据需求剖析 在设计系统功能模块时,须要网络与系统有关的数据信息,并且对采集的数据信息进行组织和存储,剖析系统功能设计,筛选有代价的数据,而后形成数据字典。个中,从弘大的数据信息中筛选出有代价的数据是比较耗时,也是非常主要的一步,紧张依据信息的来源、信息的有效性、信息的扩充性、信息的真实性等内容筛选数据。数据需求剖析阶段,为系统的开拓事情做好进一步准备,便于更好的设计和完成系统。 ## 3.4安全需求剖析 安全需求剖析是在系统利用过程中对性能的详细哀求,对功能需求的一个补充内容,也是对功能需求的一个补充内容,紧张包括相应需求、安全性需求、稳定性需求、可扩展性需求等内容。安全需求是在系统功能需求以外的其他必要的需求内容,其不论在系统设计过程,还是在系统投入市场过程,都起到了极其主要的浸染。 ## 3.5可行性剖析 ### 3.5.1经济可行性 经济可行性是决定是否研发系统的关键性成分。我们紧张通过比较实际的收益和本钱的方法,来确定一个别系是否具有经济可行性。在利用系统的过程中,当得到的收益大于开拓的本钱时,解释此系统的研发在经济上是可行的。由于本系统的开拓利用的技能基本上是开源的,得到技能上的支持是没有多少问题的,在软件实现方面所花费的本钱是很低的,乃至不须要花费本钱。研发系统的本钱紧张是来自调研、硬件和技能职员等方面。如果系统中须要存储的数据量不是很大,仅须要配置一台普通的做事器,即可知足干系需求。如果须要存储的数据量很大,则须要配置一台具有独立功能的做事器,比如管理数据库须要单独的数据库做事器,卖力接入网站须要web做事器等等,但是一台做事器的价格是比较贵的。考虑到数据量和本钱,我们利用小型集群做事器,这样既可以充分利用干系的资源,又可以让系统正常访问做事器。 ### 3.5.2技能可行性 Java措辞具有跨平台性,本系统紧张通过Java措辞进行编码实现的,以是本系统可以支持在多个操作系统或者多个浏览器上运行和利用[14]。MySQL数据库是可以被免费利用的,并且MySQL数据库的日常运行和掩护事情比较大略,这样有利于降落本系统的开拓本钱[15]。在学校期间,本人已经学习和节制了Java措辞、MySQL数据库、AJAX技能等干系的技能干系知识以及用法,因此在技能可行性方面,本系统是可以实现被设计与实现的。 ### 3.5.3操作可行性 本系统所采取网络构造是B/S模式,对付开拓职员来说,可以直接复用干系的代码,或者轻微对原代码进行修正,使得其知足于本系统的干系需求,如此便可大大节约了开拓韶光,在最优最短的韶光内完成对系统的设计。对付用户来说,在传统的模式下,须要下载客户端才可利用系统。现在,在新型的模式下,利用本系统,就不须要下载,直接选择浏览器打开网址,即可访问和利用本系统。并且,用户可以根据自身的事情须要,选择干系的菜单按钮操作本系统。在系统的一些功能模块中,本人还添加了干系的利用提示信息,方便用户更好更快的理解和利用本系统。因此,本系统的设计和实现是具备操作可行性的。 ## 3.6本章小结 需求剖析在软件开拓周期中是耗时最长的一个环节,系统的全体设计和实现过程紧张依赖于需求剖析报告。调查网络出不同用户对本系统的干系利用需求,由此设计干系的功能模块,从而期望实现用户满意度较高的实用型系统。本章紧张从功能需求、技能需求、数据需求、安全需求、可行性剖析等方面,对系统进行需求剖析,确保设计出一款实用代价比较高的管理系统。
4系统设计4.1系统功能设计
本系统紧张通过利用Java措辞编码设计系统功能,MySQL数据库管理数据,AJAX技能设计简洁的、友好的网址页面,然后在IDEA开拓平台中,编写干系的Java代码文件,接着通过连接措辞完成与数据库的搭建事情,再通过平台供应的Tomcat插件完成信息的交互,末了在浏览器中打开系统网址便可利用本系统。本系统的利用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修正用户信息,发布新闻等功能,系统总体功能设计图如图4-1所示。
网上房屋中介管理系统
系统设置管理
公告管理
房屋收藏管理
用户管理
房屋管理
个人信息设置
密码信息设置管理
房屋添加
房屋删除
房屋修正
房屋收藏添加
房屋收藏删除
用户添加
用户修正
用户删除
公告添加
公告修正
公告删除
图4-1系统总体功能设计图
4.2 数据库设计
开拓一个别系也须要提前设计数据库。这里的数据库是干系数据的凑集,存储在一起的这些数据也是按照一定的组织办法进行的。目前,数据库能够做事于多种运用程序,则是源于它存储办法最佳,具备数据冗余率低的上风。虽然数据库为程序供应信息存储做事,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段韶光的发展,从最初的不为人知,到现在的人尽皆知,其干系技能也加倍成熟,同时也拥有着坚实的理论根本。
4.2.1 数据库观点设计
这部分内容须要借助数据库关系图来完成,也须要利用专门绘制数据库关系图的工具,比如Visio工具就可以设计E-R图(数据库关系图)。设计数据库,也须要按照设计的流程进行,首先还是要根据需求完成实体的确定,剖析实体具有的特色,还有对实体间的关联关系进行确定。末了才是利用E-R模型的表示方法,绘制本系统的E-R图。不管是利用亿图软件,还是Visio工具,对付E-R模型的表示符号都一样,常日矩形代表实体,实体间存在的关系用菱形符号表示,实体的属性也便是实体的特色用符号椭圆表示。末了利用直线将矩形,菱形和椭圆等符号连接起来。接下来就开始对本系统的E-R图进行绘制。
(1)下图是房屋实体和其具备的属性。
图4.1 房屋实体属性图
(2)下图是房屋留言实体和其具备的属性。
图4.2 房屋留言实体属性图
(3)下图是用户实体和其具备的属性。
图4.3 用户实体属性图
(4)下图是公告实体和其具备的属性。
图4.4 公告实体属性图
(5)下图是房屋收藏实体和其具备的属性。
图4.5 房屋收藏实体属性图
(6)下图是房屋订单实体和其具备的属性。
图4.6 房屋订单实体属性图
4.2.2逻辑设计本系统利用MySQL数据库管理与系统干系的数据信息。逻辑设计阶段是将上一个阶段中的观点数据模型,转换为方便数据库进行存储的关系模型,即基本表的形式,方便开拓职员后期对数据模型进行优化和管理[20]。逻辑设计阶段是全体数据库设计设计的关键,与系统有关的信息将会在这一阶段中被存储在数据库中,当用户利用本系统进行干系的功能操作时,与之有关的数据信息所在的基本表会发生相应的更新变革。数据库的逻辑设计阶段紧张任务是将与系统干系的数据信息,设计成为方便数据库存储和管理的基本表格的形式,详细内容如下。
表4.1字典表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
dic_code
String
字段
是
3
dic_name
String
字段名
是
4
code_index
Integer
编码
是
5
index_name
String
编码名字
是
6
super_id
Integer
父字段id
是
7
beizhu
String
备注
是
8
create_time
Date
创建韶光
是
表4.2房屋表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
fangwu_name
String
房屋名称
是
3
fangwu_uuid_number
String
房屋编号
是
4
fangwu_photo
String
房屋照片
是
5
fangwu_address
String
房屋位置
是
6
fangwu_types
Integer
房屋类型
是
7
quyu_types
Integer
区域
是
8
huxing_types
Integer
户型
是
9
fangwu_pingfang
BigDecimal
平方
是
10
fangwu_danjia
BigDecimal
单价/平方
是
11
fangwu_old_money
BigDecimal
房屋原总价
是
12
fangwu_new_money
BigDecimal
现总价
是
13
fangwu_clicknum
Integer
房屋热度
是
14
fangwu_content
String
房屋先容
是
15
fangwuzhuangtai_types
Integer
房屋状态
是
16
shangxia_types
Integer
是否上架
是
17
fangwu_delete
Integer
逻辑删除
是
18
create_time
Date
创建韶光
是
表4.3房屋收藏表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
fangwu_id
Integer
房屋
是
3
yonghu_id
Integer
用户
是
4
fangwu_collection_types
Integer
类型
是
5
insert_time
Date
收藏韶光
是
6
create_time
Date
创建韶光
是
表4.4房屋留言表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
fangwu_id
Integer
房屋
是
3
yonghu_id
Integer
用户
是
4
fangwu_liuyan_text
String
留言内容
是
5
insert_time
Date
留言韶光
是
6
reply_text
String
回答内容
是
7
update_time
Date
回答韶光
是
8
create_time
Date
创建韶光
是
表4.5房屋订单表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
fangwu_order_uuid_number
String
订单号
是
3
fangwu_id
Integer
房屋
是
4
yonghu_id
Integer
用户
是
5
fangwu_order_true_price
BigDecimal
实付价格
是
6
fangwu_order_types
Integer
订单类型
是
7
insert_time
Date
订单创建韶光
是
8
create_time
Date
创建韶光
是
表4.6公告表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
gonggao_name
String
公告名称
是
3
gonggao_photo
String
公告图片
是
4
gonggao_types
Integer
公告类型
是
5
insert_time
Date
公告发布韶光
是
6
gonggao_content
String
公告详情
是
7
create_time
Date
创建韶光
是
表4.7用户表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
yonghu_name
String
用户姓名
是
3
yonghu_phone
String
用户手机号
是
4
yonghu_id_number
String
用户身份证号
是
5
yonghu_photo
String
用户头像
是
6
yonghu_email
String
电子邮箱
是
7
new_money
BigDecimal
余额
是
8
create_time
Date
创建韶光
是
表4.8管理员表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
username
String
用户名
是
3
password
String
密码
是
4
role
String
角色
是
5
addtime
Date
新增韶光
是
4.3本章小结本章紧张先容了系统功能设计、数据库设计等内容。通过设计系统的总体功能框架,确定系统的功能设计紧张包括房屋等模块。数据库设计紧张分为观点设计阶段和逻辑设计阶段,个中,观点设计是将现实天下中的数据转变为信息天下中的观点模型,逻辑设计是将观点设计中的观点模型转变成可以被数据库存储的数据表格。系统功能设计好坏是系统得以被编码实现的主要依据。数据库设计是否符合规范,是系统能够成功运行的基本保障,也是用户和系统实现交互处理的主要条件。 # 5系统实现 ## 5.1管理员功能模块实现 ### 5.1.1管理员登录 管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使干系的管理权限,管理员登录界面设计如图5-1所示。
图5-1管理员登录界面 ### 5.1.2房屋管理 管理员可以通过选择房屋管理,管理干系的房屋信息记录,比如进行查看房屋信息标题,修正房屋信息来源等操作,房屋管理界面设计如图5-2所示。
图5-2房屋管理界面
5.1.3公告管理管理员可以通过选择公告管理,管理干系的公告信息记录,比如进行查看公告详情,删除缺点的公告信息,发布公告等操作,公告管理界面如图5-3所示。
图5-3 公告管理界面 ### 5.1.4公告类型管理 管理员可以通过选择公告类型管理,管理干系的公告类型信息,比如查看所有公告类型,删除无用公告类型,修正公告类型,添加公告类型等操作,公告类型管理界面设计如图5-4所示。
图5-4公告类型管理界面 # 系
BaiduUtil.javapackage com.utils;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.HashMap;import java.util.List;import java.util.Map;import org.json.JSONObject;/ @author yangliyuan @version 创建韶光:2020年2月7日 下午9:37:05 类解释 : /public class BaiduUtil { / 根据经纬度得到省市区信息 @param lon 纬度 @param lat 经度 @param coordtype 经纬度坐标系 @return / public static Map<String, String> getCityByLonLat(String key, String lng, String lat) { String location = lat + "," + lng; try { //拼装url String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak="+key+"&output=json&coordtype=wgs84ll&location="+location; String result = HttpClientUtils.doGet(url); JSONObject o = new JSONObject(result); Map<String, String> area = new HashMap<>(); area.put("province", o.getJSONObject("result").getJSONObject("addressComponent").getString("province")); area.put("city", o.getJSONObject("result").getJSONObject("addressComponent").getString("city")); area.put("district", o.getJSONObject("result").getJSONObject("addressComponent").getString("district")); area.put("street", o.getJSONObject("result").getJSONObject("addressComponent").getString("street")); return area; }catch (Exception e) { e.printStackTrace(); } return null; } / 获取API访问token 该token有一定的有效期,须要自行管理,当失落效时需重新获取. @param ak - 百度云官网获取的 API Key @param sk - 百度云官网获取的 Securet Key @return assess_token / public static String getAuth(String ak, String sk) { // 获取token地址 String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; String getAccessTokenUrl = authHost // 1. grant_type为固定参数 + "grant_type=client_credentials" // 2. 官网获取的 API Key + "&client_id=" + ak // 3. 官网获取的 Secret Key + "&client_secret=" + sk; try { URL realUrl = new URL(getAccessTokenUrl); // 打开和URL之间的连接 HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); connection.setRequestMethod("GET"); connection.connect(); // 获取所有相应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的相应头字段 for (String key : map.keySet()) { System.err.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的相应 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String result = ""; String line; while ((line = in.readLine()) != null) { result += line; } / 返回结果示例 / System.err.println("result:" + result); org.json.JSONObject jsonObject = new org.json.JSONObject(result); String access_token = jsonObject.getString("access_token"); return access_token; } catch (Exception e) { System.err.printf("获取token失落败!
FangwuOrderServiceImpl.java
"); e.printStackTrace(System.err); } return null; }}
package com.service.impl;import com.utils.StringUtil;import org.springframework.stereotype.Service;import java.lang.reflect.Field;import java.util.;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import org.springframework.transaction.annotation.Transactional;import com.utils.PageUtils;import com.utils.Query;import org.springframework.web.context.ContextLoader;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import com.dao.FangwuOrderDao;import com.entity.FangwuOrderEntity;import com.service.FangwuOrderService;import com.entity.view.FangwuOrderView;/ 房屋订单 做事实现类 /@Service("fangwuOrderService")@Transactionalpublic class FangwuOrderServiceImpl extends ServiceImpl<FangwuOrderDao, FangwuOrderEntity> implements FangwuOrderService { @Override public PageUtils queryPage(Map<String,Object> params) { if(params != null && (params.get("limit") == null || params.get("page") == null)){ params.put("page","1"); params.put("limit","10"); } Page<FangwuOrderView> page =new Query<FangwuOrderView>(params).getPage(); page.setRecords(baseMapper.selectListView(page,params)); return new PageUtils(page); }}
UsersServiceImpl.java
package com.service.impl;import java.util.List;import java.util.Map;import com.service.UsersService;import org.springframework.stereotype.Service;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.mapper.Wrapper;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import com.dao.UsersDao;import com.entity.UsersEntity;import com.utils.PageUtils;import com.utils.Query;/ 系统用户 @author /@Service("userService")public class UsersServiceImpl extends ServiceImpl<UsersDao, UsersEntity> implements UsersService { @Override public PageUtils queryPage(Map<String, Object> params) { Page<UsersEntity> page = this.selectPage( new Query<UsersEntity>(params).getPage(), new EntityWrapper<UsersEntity>() ); return new PageUtils(page); } @Override public List<UsersEntity> selectListView(Wrapper<UsersEntity> wrapper) { return baseMapper.selectListView(wrapper); } @Override public PageUtils queryPage(Map<String, Object> params, Wrapper<UsersEntity> wrapper) { Page<UsersEntity> page =new Query<UsersEntity>(params).getPage(); page.setRecords(baseMapper.selectListView(page,wrapper)); PageUtils pageUtil = new PageUtils(page); return pageUtil; }}
add-or-update.vue
<template> <div class="addEdit-block"> <el-form class="detail-form-content" ref="ruleForm" :model="ruleForm" :rules="rules" label-width="80px" :style="{backgroundColor:addEditForm.addEditBoxColor}" > <el-row> <el-col :span="12"> <el-form-item class="input" v-if="type!='info'" label="高下架编码" prop="codeIndex"> <el-input v-model="ruleForm.codeIndex" placeholder="高下架编码" clearable :readonly="ro.codeIndex"></el-input> </el-form-item> <div v-else> <el-form-item class="input" label="高下架编码" prop="codeIndex"> <el-input v-model="ruleForm.codeIndex" placeholder="高下架编码" readonly></el-input> </el-form-item> </div> </el-col> <el-col :span="12"> <el-form-item class="input" v-if="type!='info'" label="高下架" prop="indexName"> <el-input v-model="ruleForm.indexName" placeholder="高下架" clearable :readonly="ro.indexName"></el-input> </el-form-item> <div v-else> <el-form-item class="input" label="高下架" prop="indexName"> <el-input v-model="ruleForm.indexName" placeholder="高下架" readonly></el-input> </el-form-item> </div> </el-col> <!--<el-col :span="12"> <el-form-item class="input" v-if="type!='info'" label="备注" prop="beizhu"> <el-input v-model="ruleForm.beizhu" placeholder="备注" clearable :readonly="ro.beizhu"></el-input> </el-form-item> <div v-else> <el-form-item class="input" label="备注" prop="beizhu"> <el-input v-model="ruleForm.beizhu" placeholder="备注" readonly></el-input> </el-form-item> </div> </el-col>--> </el-row> <el-form-item class="btn"> <el-button v-if="type!='info'" type="primary" class="btn-success" @click="onSubmit">提交</el-button> <el-button v-if="type!='info'" class="btn-close" @click="back()">取消</el-button> <el-button v-if="type=='info'" class="btn-close" @click="back()">返回</el-button> </el-form-item> </el-form> </div></template><script> import styleJs from "../../../utils/style.js"; // 数字,邮件,手机,url,身份证校验 import { isNumber,isIntNumer,isEmail,isPhone, isMobile,isURL,checkIdCard } from "@/utils/validate"; export default { data() { let self = this return { addEditForm:null, id: '', type: '', ro:{ codeIndex : true, indexName : false, superId : false, beizhu : false, }, ruleForm: { codeIndex: '', indexName: '', superId : '', beizhu : '', }, rules: { /beizhu: [ { required: true, message: '备注不能为空', trigger: 'blur' }, { pattern: /^[1-9]\d$/, message: '备注只能为正整数', trigger: 'blur' } ],/ } }; }, props: ["parent"], computed: { }, created() { this.addEditForm = styleJs.addStyle(); this.addEditStyleChange() this.addEditUploadStyleChange() }, methods: { // 初始化 init(id,type) { if (id) { this.id = id; this.type = type; } if(this.type=='info'||this.type=='else'){ this.info(id); }else{ //查询最大值 start this.$http({ url: `dictionary/maxCodeIndex`, method: "post", data: {"dicCode":"shangxia_types"} }).then(({ data }) => { if (data && data.code === 0) { this.ruleForm.codeIndex = data.maxCodeIndex; } else { this.$message.error(data.msg); } }); //查询最大值 end } }, // 多级联动参数 info(id) { this.$http({ url: `dictionary/info/${id}`, method: "get" }).then(({ data }) => { if (data && data.code === 0) { this.ruleForm = data.data; //办理前台上传图片后台不显示的问题 let reg=new RegExp('../../../upload','g')//g代表全部 } else { this.$message.error(data.msg); } }); }, // 提交 onSubmit() { if((!this.ruleForm.indexName)){ this.$message.error('高下架不能为空'); return } this.$refs["ruleForm"].validate(valid => { if (valid) { let ruleForm = this.ruleForm; ruleForm["dicCode"]="shangxia_types"; ruleForm["dicName"]="高下架"; this.$http({ url: `dictionary/${!this.ruleForm.id ? "save" : "update"}`, method: "post", data: ruleForm }).then(({ data }) => { if (data && data.code === 0) { this.$message({ message: "操作成功", type: "success", duration: 1500, onClose: () => { this.parent.showFlag = true; this.parent.addOrUpdateFlag = false; this.parent.dictionaryCrossAddOrUpdateFlag = false; this.parent.search(); this.parent.contentStyleChange(); } }); } else { this.$message.error(data.msg); } }); } }); }, // 返回 back() { this.parent.showFlag = true; this.parent.addOrUpdateFlag = false; this.parent.dictionaryCrossAddOrUpdateFlag = false; this.parent.contentStyleChange(); }, addEditStyleChange() { this.$nextTick(()=>{ // input document.querySelectorAll('.addEdit-block .input .el-input__inner').forEach(el=>{ el.style.height = this.addEditForm.inputHeight el.style.color = this.addEditForm.inputFontColor el.style.fontSize = this.addEditForm.inputFontSize el.style.borderWidth = this.addEditForm.inputBorderWidth el.style.borderStyle = this.addEditForm.inputBorderStyle el.style.borderColor = this.addEditForm.inputBorderColor el.style.borderRadius = this.addEditForm.inputBorderRadius el.style.backgroundColor = this.addEditForm.inputBgColor }) document.querySelectorAll('.addEdit-block .input .el-form-item__label').forEach(el=>{ el.style.lineHeight = this.addEditForm.inputHeight el.style.color = this.addEditForm.inputLableColor el.style.fontSize = this.addEditForm.inputLableFontSize }) // select document.querySelectorAll('.addEdit-block .select .el-input__inner').forEach(el=>{ el.style.height = this.addEditForm.selectHeight el.style.color = this.addEditForm.selectFontColor el.style.fontSize = this.addEditForm.selectFontSize el.style.borderWidth = this.addEditForm.selectBorderWidth el.style.borderStyle = this.addEditForm.selectBorderStyle el.style.borderColor = this.addEditForm.selectBorderColor el.style.borderRadius = this.addEditForm.selectBorderRadius el.style.backgroundColor = this.addEditForm.selectBgColor }) document.querySelectorAll('.addEdit-block .select .el-form-item__label').forEach(el=>{ el.style.lineHeight = this.addEditForm.selectHeight el.style.color = this.addEditForm.selectLableColor el.style.fontSize = this.addEditForm.selectLableFontSize }) document.querySelectorAll('.addEdit-block .select .el-select__caret').forEach(el=>{ el.style.color = this.addEditForm.selectIconFontColor el.style.fontSize = this.addEditForm.selectIconFontSize }) // date document.querySelectorAll('.addEdit-block .date .el-input__inner').forEach(el=>{ el.style.height = this.addEditForm.dateHeight el.style.color = this.addEditForm.dateFontColor el.style.fontSize = this.addEditForm.dateFontSize el.style.borderWidth = this.addEditForm.dateBorderWidth el.style.borderStyle = this.addEditForm.dateBorderStyle el.style.borderColor = this.addEditForm.dateBorderColor el.style.borderRadius = this.addEditForm.dateBorderRadius el.style.backgroundColor = this.addEditForm.dateBgColor }) document.querySelectorAll('.addEdit-block .date .el-form-item__label').forEach(el=>{ el.style.lineHeight = this.addEditForm.dateHeight el.style.color = this.addEditForm.dateLableColor el.style.fontSize = this.addEditForm.dateLableFontSize }) document.querySelectorAll('.addEdit-block .date .el-input__icon').forEach(el=>{ el.style.color = this.addEditForm.dateIconFontColor el.style.fontSize = this.addEditForm.dateIconFontSize el.style.lineHeight = this.addEditForm.dateHeight }) // upload let iconLineHeight = parseInt(this.addEditForm.uploadHeight) - parseInt(this.addEditForm.uploadBorderWidth) 2 + 'px' document.querySelectorAll('.addEdit-block .upload .el-upload--picture-card').forEach(el=>{ el.style.width = this.addEditForm.uploadHeight el.style.height = this.addEditForm.uploadHeight el.style.borderWidth = this.addEditForm.uploadBorderWidth el.style.borderStyle = this.addEditForm.uploadBorderStyle el.style.borderColor = this.addEditForm.uploadBorderColor el.style.borderRadius = this.addEditForm.uploadBorderRadius el.style.backgroundColor = this.addEditForm.uploadBgColor }) document.querySelectorAll('.addEdit-block .upload .el-form-item__label').forEach(el=>{ el.style.lineHeight = this.addEditForm.uploadHeight el.style.color = this.addEditForm.uploadLableColor el.style.fontSize = this.addEditForm.uploadLableFontSize }) document.querySelectorAll('.addEdit-block .upload .el-icon-plus').forEach(el=>{ el.style.color = this.addEditForm.uploadIconFontColor el.style.fontSize = this.addEditForm.uploadIconFontSize el.style.lineHeight = iconLineHeight el.style.display = 'block' }) // 多文本输入框 document.querySelectorAll('.addEdit-block .textarea .el-textarea__inner').forEach(el=>{ el.style.height = this.addEditForm.textareaHeight el.style.color = this.addEditForm.textareaFontColor el.style.fontSize = this.addEditForm.textareaFontSize el.style.borderWidth = this.addEditForm.textareaBorderWidth el.style.borderStyle = this.addEditForm.textareaBorderStyle el.style.borderColor = this.addEditForm.textareaBorderColor el.style.borderRadius = this.addEditForm.textareaBorderRadius el.style.backgroundColor = this.addEditForm.textareaBgColor }) document.querySelectorAll('.addEdit-block .textarea .el-form-item__label').forEach(el=>{ // el.style.lineHeight = this.addEditForm.textareaHeight el.style.color = this.addEditForm.textareaLableColor el.style.fontSize = this.addEditForm.textareaLableFontSize }) // 保存 document.querySelectorAll('.addEdit-block .btn .btn-success').forEach(el=>{ el.style.width = this.addEditForm.btnSaveWidth el.style.height = this.addEditForm.btnSaveHeight el.style.color = this.addEditForm.btnSaveFontColor el.style.fontSize = this.addEditForm.btnSaveFontSize el.style.borderWidth = this.addEditForm.btnSaveBorderWidth el.style.borderStyle = this.addEditForm.btnSaveBorderStyle el.style.borderColor = this.addEditForm.btnSaveBorderColor el.style.borderRadius = this.addEditForm.btnSaveBorderRadius el.style.backgroundColor = this.addEditForm.btnSaveBgColor }) // 返回 document.querySelectorAll('.addEdit-block .btn .btn-close').forEach(el=>{ el.style.width = this.addEditForm.btnCancelWidth el.style.height = this.addEditForm.btnCancelHeight el.style.color = this.addEditForm.btnCancelFontColor el.style.fontSize = this.addEditForm.btnCancelFontSize el.style.borderWidth = this.addEditForm.btnCancelBorderWidth el.style.borderStyle = this.addEditForm.btnCancelBorderStyle el.style.borderColor = this.addEditForm.btnCancelBorderColor el.style.borderRadius = this.addEditForm.btnCancelBorderRadius el.style.backgroundColor = this.addEditForm.btnCancelBgColor }) }) }, addEditUploadStyleChange() { this.$nextTick(()=>{ document.querySelectorAll('.addEdit-block .upload .el-upload-list--picture-card .el-upload-list__item').forEach(el=>{ el.style.width = this.addEditForm.uploadHeight el.style.height = this.addEditForm.uploadHeight el.style.borderWidth = this.addEditForm.uploadBorderWidth el.style.borderStyle = this.addEditForm.uploadBorderStyle el.style.borderColor = this.addEditForm.uploadBorderColor el.style.borderRadius = this.addEditForm.uploadBorderRadius el.style.backgroundColor = this.addEditForm.uploadBgColor }) }) }, } };</script><style lang="scss">.editor{ height: 500px; & /deep/ .ql-container { height: 310px; } } .amap-wrapper { width: 100%; height: 500px; } .search-box { position: absolute; } .addEdit-block { margin: -10px; } .detail-form-content { padding: 12px; } .btn .el-button { padding: 0; }</style>
声明
本博客适用于广泛的学术和教诲用场,包括但不限于个人学习、开拓设计,产品设计。仅供学习参考,旨在为读者供应深入理解和学术研究的材料。
java系统设计,毕设辅导