好客租房

项目背景

近几年,我国经济的跨越性发展速度大家有目共睹,农村都在向城市化发展,农民都踊跃走出家乡投身城市的建设
中,因此也推动城市房地产和租赁行业的新发展时机。房屋租赁行业的发展离不开房屋租赁政策的支持。
财政部、国家发改委曾发布通知称,自2015年11月1日起,在全国统一取消和暂停征收包括房屋租赁手续费等在内
的37项行政事业性收费,以及自2016年1月1日起,取消人力资源社会保障等部门所属公共就业和人才服务机构收
取的人才集体户口管理服务费。取消和暂停征收上述收费后,有关部门及所属事业单位依法履行管理职能资金投入
量,安排合理中央在房屋租赁方面的财政预算,保证工作顺利完成,各级政府相关价格管理部门要加强对房地产市
场的价格监控,消除不合理乱收费现象,坚决取缔多于的政府公共事业单位,升级改革行政人员体系使其精英化,
严厉杜绝各种乱收费现象。
北上广地区的城市外来人口众多,租房问题急需解决,租房供不应求,根据数据分析,国内的一线都市每年对房屋
的需求高达650套,我国在进行第六次人口普及调查中,在北上广和珠三角发达区域,外来人口户数占据成熟人口
接近一半的比重。2015年北京和上海平均家庭规模约为2.42人。基于房产网站搜索的出租房源数据,北京出租房
平均合租户数为2.04。如果按照一线城市标准,我国房屋租赁市场有着极大的发展前景

项目介绍

好客租房是直接促成房东与租户对接的生活服务平台,它包含房东发布房源,租户多维度寻找房源,智能匹配房
源,近期行情查询等功能。减少中间环节产生的费用,提高房东与租户匹配的成功率。
《好客租房项目》采用SOA架构思想进行设计,采用SpringBoot、SpringMVC、Mybaits、Dubbo等技术框架实
现,好客租房是直接促成房东与租户对接的生活服务平台,他包含房东发布房源,租户多维度寻找房源,智能匹配
房源,近期行情查询等功能。减少中间环节产生的费用,提高房东与租户匹配的成功率。
《好客租房项目》融合了RPC、大数据等相技术,如SpringBoot、SpringMVC、Mybaits、Dubbo、React.js、
GraphQL、RocketMQ、Flume、ELK等技术,实现了移动web应用、微信小程序应用、后台管理应用等功能

技术架构

后端架构:SpringBoot+StringMVC+Dubbo+Mybatis+ELK+区块链
前端架构:React.js+html5+百度地图+微信小程序

系统架构

后台系统搭建

前端搭建

创建工程

第一步,将资料文件中的itcast-haoke-manage-web.zip解压到指定目录(我的是F:\code\itcast-haoke);
第二步,导入到Idea中
第三步,执行命令导入相关的依赖

tyarn install #安装相关依赖
#如果tyarn install安装失败(提示Integrity check failed for "antd" (computed integrity doesn't match our records),那么运行此命令
yarn cache clean
yarn --update-checksums
tyarn start #启动服务

修改logo以及版权信息

全局的布局文件在这,打开看代码,发现,左侧的菜单是自定义组件

打开/components/SiderMenu文件:

在Footer.js文件中修改版权信息:

编写左侧菜单

根据需求,修改左侧的菜单:

      { //房源管理path: '/house',name: 'house',icon: 'home',routes: [{path: '/house/resource',name: 'resource',component: './haoke/House/Resource'},{path: '/house/addResource',name: 'addResource',component: './haoke/House/AddResource'},{path: '/house/kanfang',name: 'kanfang',component: './haoke/House/KanFang'},{path: '/house/zufang',name: 'zufang',component: './haoke/House/ZuFang'}]},{ //房东管理path: '/fangdong',name: 'fangdong',icon: 'key',routes: [{path: '/fangdong/list',name: 'list',component: './haoke/FangDong/List'}]},{ //用户管理path: '/users',name: 'users',icon: 'user',routes: [{path: '/users/list',name: 'list',component: './haoke/Users/List'}]},{ //合约管理path: '/heyue',name: 'heyue',icon: 'file-text',routes: [{path: '/heyue/list',name: 'list',component: './haoke/HeYue/List'}]},{ //资讯管理path: '/news',name: 'news',icon: 'message',routes: [{path: '/news/list',name: 'list',component: './haoke/News/List'}]},{ //问答管理path: '/qa',name: 'qa',icon: 'question-circle',routes: [{path: '/news/list',name: 'list',component: './haoke/News/List'}]},{ //财务管理path: '/finance',name: 'finance',icon: 'money-collect',routes: [{path: '/finance/bill',name: 'bill',component: './haoke/Finance/Bill'},{path: '/finance/tixian',name: 'tixian',component: './haoke/Finance/TiXian'}]},{ //系统管理path: '/system',name: 'system',icon: 'laptop',routes: [{path: '/system/interface',name: 'interface',component: './haoke/System/Interface'},{path: '/system/dict',name: 'dict',component: './haoke/System/Dict'},{path: '/system/contract',name: 'contract',component: './haoke/System/Contract'}]},

在src/pages目录下创建haoke文件夹,项目中的页面代码均放在此目录中:


修改,进入系统后,默认打开房源管理页面:

新增房源

数据结构

楼盘数据(estate)

字段 类型 备注
id Long 楼盘id
name String 楼盘名称
province String 所在省
city String 所在市
area String 所在区
address String 具体地址
year String 建筑年代
type String 建筑类型
propertyCost String 物业费
propertyCompany String 物业公司
developers String 开发商
created datetime 创建时间
updated datetime 更新时间

房源数据(houseResources)

字段 类型 备注
id Long 房源id
title String 房源标题,如:南北通透,两室朝南,主卧带阳台
estateId Long 楼盘id
buildingNum String 楼号(栋)
buildingUnit String 单元号
buildingFloorNum String 门牌号
rent int 租金
rentMethod int 租赁方式,1-整租,2-合租
paymentMethod int 支付方式,1-付一押一,2-付三押一,3-付六押一,4-年付押一,5-其它
houseType String 户型,如:2室1厅1卫
coveredArea String 建筑面积
useArea String 使用面积
floor String 楼层,如:8/26
orientation int 朝向:东、南、西、北
decoration String 装修,1-精装,2-简装,3-毛坯
facilities String 配套设施, 如:1,2,3
pic String 图片,最多5张
desc String 房源描述,如:出小区门,门口有时代联华超市,餐饮有川菜馆,淮南牛肉汤,黄焖鸡沙县小吃等;可到达亲水湾城市生活广场,里面有儿童乐园,台球室和康桥健身等休闲娱乐;生活广场往北沿御水路往北步行一公里就是御桥路,旁边就是御桥地铁站,地铁站商场…
contact String 联系人
mobile String 手机号
time int 看房时间,1-上午,2-中午,3-下午,4-晚上,5-全天
propertyCost String 物业费
created datetime 创建时间
updated datetime 更新时间

编写页面“新增房源”

form组件

在页面中,通过@Form.create()对页面进行了包装,包装之后,会在this.props中增加form对象,该对象将包含有丰富的功能。
在from表单中,需要通过getFieldDecorator(表单数据双向绑定)方法进行包装注册,才能获取到其值

                        <FormItem {...formItemLayout} label="支付方式">{getFieldDecorator('paymentMethod',{initialValue:'1',rules:[{ required: true, message:"此项为必填项" }]})(<Select style={{ width: '50%' }}><Option value="1">付一押一</Option><Option value="2">付三押一</Option><Option value="3">付六押一</Option><Option value="4">年付押一</Option><Option value="5">其它</Option></Select>)}</FormItem>

在getFieldDecorator的参数中可以增加校验规则

{initialValue:'1',rules:[{ required: true, message:"此项为必填项" }]}

表单提交

表单的提交通过submit按钮完成,通过onSubmit方法进行拦截处理。

    handleSubmit = e => {const { dispatch, form } = this.props;e.preventDefault();console.log(this.state.fileList);form.validateFieldsAndScroll((err, values) => {if (!err) {if(values.facilities){values.facilities = values.facilities.join(",");}if(values.floor_1 && values.floor_2){values.floor = values.floor_1 + "/" + values.floor_2;}values.houseType = values.houseType_1 + "室" + values.houseType_2 + "厅"+ values.houseType_3 + "卫" + values.houseType_4 + "厨"+ values.houseType_2 + "阳台";delete values.floor_1;delete values.floor_2;delete values.houseType_1;delete values.houseType_2;delete values.houseType_3;delete values.houseType_4;delete values.houseType_5;dispatch({type: 'form/submitRegularForm',payload: values,});}});};

通过form.validateFieldsAndScroll()对表单进行校验,通过values获取表单中输入的值。通过dispatch()调用model中定义的方法。

自动完成

const estateMap = new Map([['中远两湾城','1001|上海市,上海市,普陀区,远景路97弄'],['上海康城','1002|上海市,上海市,闵行区,莘松路958弄'],['保利西子湾','1003|上海市,上海市,松江区,广富林路1188弄'],['万科城市花园','1004|上海市,上海市,闵行区,七莘路3333弄2区-15区'],['上海阳城','1005|上海市,上海市,闵行区,罗锦路888弄']
]);<FormItem {...formItemLayout} label="楼盘名称"><AutoCompletestyle={{ width: '100%' }}dataSource={this.state.estateDataSource}placeholder="搜索楼盘"onSelect={(value, option)=>{let v = estateMap.get(value);this.setState({estateAddress: v.substring(v.indexOf('|')+1),estateId : v.substring(0,v.indexOf('|'))});}}onSearch={this.handleSearch}filterOption={(inputValue, option) => option.props.children.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1}/></FormItem>handleSearch = (value)=>{let arr = new Array();if(value.length > 0 ){estateMap.forEach((v, k) => {if(k.startsWith(value)){arr.push(k);}});}this.setState({estateDataSource: arr});} ;


图片上传

图片上传通过自定义组件PicturesWall完成,在PicturesWall中,通过Upload组件实现

在代码实现中,需要解决的问题是:父组件如何获取子组件中的数据。
解决思路:父组件通过属性的方式进行引用子组件,在bind方法中改变this的引用为父组件,在子组件中,通过this.props获取传入的函数,进行调用,即可把数据传递到父组件中

 <FormItem {...formItemLayout} label="上传室内图"><PicturesWall handleFileList={this.handleFileList.bind(this)}/></FormItem>
    handleChange = ({ fileList }) => {this.setState({ fileList });this.props.handleFileList(this.state.fileList);}
  handleFileList = (obj)=>{console.log(obj, "图片列表");}

源代码

链接:https://pan.baidu.com/s/1VJZwJdnMGNzeuWH4nbBDRw?pwd=3i3x
提取码:3i3x
–来自百度网盘超级会员V3的分享

Java开发全终端实战租房项目——项目介绍以及开发后台系统相关推荐

  1. Java开发全终端实战租房项目

    课程介绍:        本课程采用SOA架构思想进行设计,基于目前主流后端技术框架SpringBoot.SpringMVC.Mybaits.Dubbo等来实现一个完整的租房项目--好客租房.好客租房 ...

  2. Java开发全终端实战租房项目-服务的具体实现

    新增房源信息 数据结构 搭建虚拟机环境 #拉取镜像 docker pull percona:5.7.23 #创建容器 docker run --name percona -e MYSQL_ROOT_P ...

  3. JAVA计算机毕业设计乐居租房网的设计与实现Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计乐居租房网的设计与实现Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计乐居租房网的设计与实现Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S ...

  4. java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...

  5. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】

    学习网址:哔哩哔哩网站 微信公众号开发-Java版 微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] 微信公众号Java开发-笔记02[] 微信公众号Java开发-笔记03[] 微信公 ...

  6. 【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览

    基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习,未经同意请勿转载 一些说明:上述项目来源于笔者我本科大三阶段2020年电子设计课程项目,在这个项目中,我主要是负责的部分有前端, ...

  7. linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)

    linux内核开发入门二(内核KO模块介绍.开发流程以及注意事项) 一.什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核 ...

  8. beego model获取controller_Goweb开发-Beego框架实战教程:项目搭建及注册用户

    一.搭建项目 首先打开终端进入gopath下的src目录,然后执行以下命令,创建一个beego项目: bee new myblogweb 运行效果如下: 然后通过goland打开该项目: 我们打开co ...

  9. 《Android 网络开发与应用实战详解》——2.3节Android系统架构

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.3节Android系统架构,作者 王东华,更多章节内容可以访问云栖社区"异步社区"公 ...

  10. 校园安防之高清IP摄像头全终端无插件直播视频流媒体服务EasyNVR校园监控系统方案

    校园安全逐渐成为社会关注热点,校园监控是目前保证校园安全与学生安全及事后查证的科技手段.如何有效维护校园秩序和安全,保证学校教学.科研工作的顺利进行,以及为同学们的生活和学习营造更好的安全环境,已成为 ...

最新文章

  1. log4j 新建日志 重启_Log4j 动态修改日志级别,不用重启服务器
  2. Spring Security配置错误
  3. python批量访问网页保存结果_Python检测批量URL状态,并将返回正常的URL保存文件...
  4. LeetCode算法入门- Remove Element -day20
  5. java文件编译为class文件需要键入什么命令_cmd命令行 编译Java 文件
  6. Linux Crontab内环境变量与Shell环境变量的关系及解决问题的办法
  7. 创建表的时候要添加目标语句use
  8. 深入理解HTTP协议—HTTP协议详解(真的很经典)
  9. DSP技术及应用 知识点整理
  10. 云栖大会马总演讲:《未来属于善于拥抱未来的人》
  11. 王牌特工:黄金圈 经典例句
  12. ASCII码的转换应用:
  13. 怎么在GIF动图中添加文字?一个方法教你快速完成GIF加字
  14. URLencode转换
  15. java计算机毕业设计在线影视系统源码+数据库+lw文档+系统+部署
  16. Python编程从入门到实践(第二版)课后习题自写代码
  17. cocos creator 实现手机震动的效果
  18. C语言例题——a+aa+aaa+..
  19. linux小红帽实验心得,小红帽读书心得
  20. 长亮科技带病IPO成功 另类持股承诺被疑闯关秘诀

热门文章

  1. mac分区合并APFS容器
  2. 使用VMWARE安装Mac OSX 雪豹操作系统并配置iphone开发环境
  3. 癌症病人不让吃鸡蛋,癌症病人营养要如何补充?
  4. 【Android】Doze模式识别与检测
  5. cdr软件百度百科_cdr是什么软件?
  6. 服务器违反了协议,IMAP协议违规:未知消息的EXPUNGE响应?
  7. LabWindows/CVI入门之第一章:LabWindows/CVI开发环境
  8. LabWindows图表显示
  9. 漫话Kubernetes的网络架构,该用NodePort还是Ingress还是load balancer?
  10. 苹果系统虚拟机无usb服务器,Mac上Vmware虚拟机无法识别USB Key怎么办?Mac虚拟机无法识别USB Key解决方法...