Java开发全终端实战租房项目——项目介绍以及开发后台系统
好客租房
项目背景
近几年,我国经济的跨越性发展速度大家有目共睹,农村都在向城市化发展,农民都踊跃走出家乡投身城市的建设
中,因此也推动城市房地产和租赁行业的新发展时机。房屋租赁行业的发展离不开房屋租赁政策的支持。
财政部、国家发改委曾发布通知称,自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开发全终端实战租房项目——项目介绍以及开发后台系统相关推荐
- Java开发全终端实战租房项目
课程介绍: 本课程采用SOA架构思想进行设计,基于目前主流后端技术框架SpringBoot.SpringMVC.Mybaits.Dubbo等来实现一个完整的租房项目--好客租房.好客租房 ...
- Java开发全终端实战租房项目-服务的具体实现
新增房源信息 数据结构 搭建虚拟机环境 #拉取镜像 docker pull percona:5.7.23 #创建容器 docker run --name percona -e MYSQL_ROOT_P ...
- JAVA计算机毕业设计乐居租房网的设计与实现Mybatis+系统+数据库+调试部署
JAVA计算机毕业设计乐居租房网的设计与实现Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计乐居租房网的设计与实现Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S ...
- java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw
java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...
- 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】
学习网址:哔哩哔哩网站 微信公众号开发-Java版 微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] 微信公众号Java开发-笔记02[] 微信公众号Java开发-笔记03[] 微信公 ...
- 【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览
基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习,未经同意请勿转载 一些说明:上述项目来源于笔者我本科大三阶段2020年电子设计课程项目,在这个项目中,我主要是负责的部分有前端, ...
- linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)
linux内核开发入门二(内核KO模块介绍.开发流程以及注意事项) 一.什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核 ...
- beego model获取controller_Goweb开发-Beego框架实战教程:项目搭建及注册用户
一.搭建项目 首先打开终端进入gopath下的src目录,然后执行以下命令,创建一个beego项目: bee new myblogweb 运行效果如下: 然后通过goland打开该项目: 我们打开co ...
- 《Android 网络开发与应用实战详解》——2.3节Android系统架构
本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.3节Android系统架构,作者 王东华,更多章节内容可以访问云栖社区"异步社区"公 ...
- 校园安防之高清IP摄像头全终端无插件直播视频流媒体服务EasyNVR校园监控系统方案
校园安全逐渐成为社会关注热点,校园监控是目前保证校园安全与学生安全及事后查证的科技手段.如何有效维护校园秩序和安全,保证学校教学.科研工作的顺利进行,以及为同学们的生活和学习营造更好的安全环境,已成为 ...
最新文章
- log4j 新建日志 重启_Log4j 动态修改日志级别,不用重启服务器
- Spring Security配置错误
- python批量访问网页保存结果_Python检测批量URL状态,并将返回正常的URL保存文件...
- LeetCode算法入门- Remove Element -day20
- java文件编译为class文件需要键入什么命令_cmd命令行 编译Java 文件
- Linux Crontab内环境变量与Shell环境变量的关系及解决问题的办法
- 创建表的时候要添加目标语句use
- 深入理解HTTP协议—HTTP协议详解(真的很经典)
- DSP技术及应用 知识点整理
- 云栖大会马总演讲:《未来属于善于拥抱未来的人》
- 王牌特工:黄金圈 经典例句
- ASCII码的转换应用:
- 怎么在GIF动图中添加文字?一个方法教你快速完成GIF加字
- URLencode转换
- java计算机毕业设计在线影视系统源码+数据库+lw文档+系统+部署
- Python编程从入门到实践(第二版)课后习题自写代码
- cocos creator 实现手机震动的效果
- C语言例题——a+aa+aaa+..
- linux小红帽实验心得,小红帽读书心得
- 长亮科技带病IPO成功 另类持股承诺被疑闯关秘诀
热门文章
- mac分区合并APFS容器
- 使用VMWARE安装Mac OSX 雪豹操作系统并配置iphone开发环境
- 癌症病人不让吃鸡蛋,癌症病人营养要如何补充?
- 【Android】Doze模式识别与检测
- cdr软件百度百科_cdr是什么软件?
- 服务器违反了协议,IMAP协议违规:未知消息的EXPUNGE响应?
- LabWindows/CVI入门之第一章:LabWindows/CVI开发环境
- LabWindows图表显示
- 漫话Kubernetes的网络架构,该用NodePort还是Ingress还是load balancer?
- 苹果系统虚拟机无usb服务器,Mac上Vmware虚拟机无法识别USB Key怎么办?Mac虚拟机无法识别USB Key解决方法...