泰州房地产开发总公司(大开发)成立于1985年,是泰州第一家房地产开发公司,多年从事房地产二级市场的开发,公司于2003年改制,2005年成立二手房中介公司,拥有一流的管理团队。为了更好的开发本地市场,在原公司基础上,成立大开发房产经纪有限公司,诚信、稳健、品质、服务,是公司的经营理念。现在公司在泰州已有50多家门店300多号人在使用本系统.
一个偶然的机会, 2013年的时候接下了给该公司开发房源系统的工作..当时他们使用的易房大师有太多缺陷,不得已重新开发新系统.
历史两年2015完成了当时的第一个版本.第一版本完全是php开发的网页. 页面都是php生成. 在浏览器中运行.浏览器良莠不齐经常由于版本的不同出现奇奇怪怪的bug. 发现了一款名为nwjs的封装工具,可以统一浏览器内核保证运行结果一致.
2017年上半年由于公司发展迅速,房源数量和员工数量增多,第一版本执行效率日渐底下,开始重构系统. 改为html等页面文件放在本地,有更新时自动下载安装更新,完全靠ajax和后台交互json数据. 大大减轻了网络传输量和后台页面绘制的消耗.把后端完全作为一个api服务器.为此还特地写了一个专为开发api的框架.
由于行业的特殊性, 防止房源泄露, 软件需要绑定计算机. 授权过的机器才能使用. 众所周知webapp源码公开透明,就算js混淆也能摸出蛛丝马迹破解. 这时候接触了nodejs的一个非常棒的工具, 可以把js源码编译成二进制的bin文件. 这个文件不含半点源码相关的内容. 由于非常冷门,网上也找不到可以破解的方案. 由于js运行在v8虚拟机中的原因. 反汇编也异常困难, 而且在调试窗口查看bin里面export的方法函数.也提示[Native Funtion]和原生函数一样,没法查看源码.最终选择了这个方案作为机器码绑定授权的保障.加密方式非常复杂, 主要是3EDS,AES等加密,密钥也来自机器码和其他信息.而且加密后的密文防破解加入了自己研究的混淆加密算法,保证万无一失.利用加密算法向服务器发送请求,接受的请求也要用另外不同的加密方式解密后展示.
程序的主要功能有
机器码绑定.
- 初次使用会上传机器码信息到服务器,返回授权编号,管理员授权后才可继续使用.
- 与服务器交互信息以机器码等为密钥加密后传输,防止中途窃取.在此基础上通过ssl传输防止中途拦篡改.
楼盘设置
- 录入名称后自动获取gps坐标信息,方便地图展示
- 录入房源时只能选择已有楼盘,自动填充地址,城区,片区信息
出售/出租房源信息检索
- 快速检索和复杂检索,可以自定义任意条件检索
- 列表表头显示内容和顺序可以自定义设置
- 管理员可以设置指定门店员工只能查看服务范围内某几个城区的房源
- 管理员可批量设置房源状态信息等
房源信息详情查看,编辑,上传图片,写跟进
- 房源隐藏联系电话,员工主动查看电话号码后必须写跟进不然无法查看下一套号码
- 管理员可以看到房源电话主动查看情况,记录用户名和具体时间
- 员工可以编辑房源, 但是会记录下每次修改的内容,自动记录在跟进中, 任何人可查看
客户管理,员工可以把客户跟踪信息录入系统.
- 客户信息分私有,门店共有,完全公开等级别.
- 私有客户7天不跟进自动流入门店公开,同门店他人跟进后变成他人私有客户,流入门店公开后30天无人跟进流入公司公开,全公司有人跟进变成跟进人私有客户.
- 客户可设置时间提醒,首页显示距离提醒倒计时.
交易系统,录入成交房源中介费合同照片等信息.
- 可设置 “管理费,房源奖,跟进奖,户型奖,照片奖,钥匙奖,独家房源奖” 等奖项分配比例
- 自动按门店计算各门店每个人所得金额报表(可以导出excel)方便财务统计实施.(包括每个人当月应得中介费,附加奖项等)
- 设置过户时间,交房时间,放款时间. 日期临近时首页会有待办提醒倒计时
- 管理员查看修改记录,门店店长和成交人也可以修改非关键信息(涉及金额以外信息),但是状态会变成审核中需要管理员确认修改有效才纳入统计计算.
积分系统,根据近7日积分高低决定对外推广排名.
- 打考勤,回访次数,发布房源,上传照片,使用频率等自动计算积分.每一项有周期内得分上限设定
- 首页显示当前城区门店前50名员工,以及和前一天的名次变化比较
户型图绘制
- 利用的flash插件实现,虽然nwjs默认不支持flash,但是还是成功实现自己编译flash的dll实现加载flash
手机端,通过微信小程序实现
- 正常打开小程序显示的是游客端 ,可以查找房源以及房源的简单信息和图片展示, 和公司门店介绍,员工介绍等
- 通过特定二维码可以进入授权模式,初次进入获得一个授权码, 管理员授权后打开小程序便是员工模式
- 员工模式可以实现等同电脑端的房源检索功能
- 员工端可以查看电脑端的房源一切信息,可以查看,上传图片,编辑房源信息.写跟进
- 员工端和电脑端一样,查看电话号码后不写跟进无法查看下一套房源的电脑号码.
- 员工端登录和查看电话号码时自动触发gps定位上传位置信息方便发现异常.
- 员工端有楼盘踩点功能,即主动上报坐在地点位置,方便店长监督员工确实在指定时间到达过指定楼盘.
- 员工端有形象上传功能, 可以设置个人介绍, 上传个人照片,门店照片等等.
房源采集
- 采用另外一台服务器上运行的nodejs程序采集
- 采用dom元素解析,利用jq分析页面元素信息.
- 初期版本采用正则获取关键字段信息,但是网站一点小变动就会让正则失效无法获取,平均一两月要跟进一次规则, 自从采用的dom元素解析后,58同城等网站已经近1年没有需要维护更新规则了.
- 利用electron制作的采集规则编辑器, 可视化编辑各个字段的采集规则, 实现外人也可轻松更新各字段采集规则.
- 采集频率过高导致封ip的情况,采用了http代理的方式采集数据. http代理通过api一次获取100个.随机使用,同一http代理采
- 集连续错误2次自动从http代理池中删除,数量不足6成时自动补充到100个.
- 个别网站电话号码为图片的情况,通过第三方图片识别功能实现图片数字文字化.
- 目前58同城售房间隔5分钟采集一次, 其他网站20分钟采集一次. 租房30分钟采集一次.
- 此程序运行2年除了日志文件占满磁盘后崩溃, 一直稳定运行.
运行环境
- 电脑客户端支持win平台,支持xp以上系统(不包括xp如有特殊需求也可制作xp版本), 推荐客户端运行在win10.
- 电脑客户端也有mac os版本(暂未对外公开)
- 手机版本支持可以运行微信小程序的安卓,ios手机.可能内核问题有意想不到的显示方面bug,欢迎反馈.
- php7.2+mariadb+nginx 运行在宝塔面板上
- api请求直接访问服务器不通过cdn.
- 图片等资源文件上传后存在阿里云的oss储存空间中.
- 图片资源文件单独域名通过cdn加速实现快速访问及节省服务器宽带.
- 程序代码使用git.pch18.cn维护运行.实现push后服务器自动更新最新php代码.
- 如果更新了客户端的文件,只需修改客户端的版本号,客户端即自动下载最新客户端源码并执行.
- 数据库文件每天凌晨4点自动全量异地备份.暂时没有做灾备,经济原因是主要,其次程序对可用访问性要求不是特别高,数据安全才是首要.
整理下来自己都下了一跳,陆陆续续竟然做了这么多功能了.
现在程序加入了多公司版本, 其他公司可以加盟使用,门店,用户,房源,交易等全部独立.总公司抓取到的房源数据,经过回访整理及时后下发到其他加盟公司的房源库.欢迎合作,有需要请微信联系.
这个也很牛