从0到100:房产中介小程序开发笔记(中)

背景调研

为中介带来诸多优势,能借助它打造专属小程序,方便及时更新核实租赁信息,确保信息准确无误,像房屋的大致地址、租金数额、租赁条件、房源优缺点等关键信息都能清晰呈现。还可上传房屋拍摄照片,这样用户能提前了解房屋状况,从而减少实地看房时间,中介也能借此降低人力成本,实现双赢。

功能规划

  • 小区管理:后台录入小区的地图位置,地段,主要特点,户型,交通地铁,外观图片,在售在租房源等。
  • 房源管理:后台录入房源的地图位置,地段,主要特点,水电气费用,户型,面积,楼层,上传室内图片等。
  • 中介管理:后台录入金牌中介经纪人的信息,包括特点,联系方式等。
    用户端:根据多种条件查看房源信息,地图导航位置等
    在这里插入图片描述

数据字典

ProductModel.DB_STRUCTURE = {_pid: 'string|true',PRODUCT_ID: 'string|true',PRODUCT_TITLE: 'string|true|comment=标题',PRODUCT_STATUS: 'int|true|default=1|comment=状态 0=未启用,1=使用中',PRODUCT_CATE_ID: 'string|true|default=0|comment=分类',PRODUCT_CATE_NAME: 'string|false|comment=分类冗余',PRODUCT_ORDER: 'int|true|default=9999',PRODUCT_VOUCH: 'int|true|default=0', PRODUCT_FORMS: 'array|true|default=[]',PRODUCT_OBJ: 'object|true|default={}',PRODUCT_QR: 'string|false',PRODUCT_VIEW_CNT: 'int|true|default=0',PRODUCT_ADD_TIME: 'int|true',PRODUCT_EDIT_TIME: 'int|true',PRODUCT_ADD_IP: 'string|false',PRODUCT_EDIT_IP: 'string|false',
};
CateModel.DB_STRUCTURE = {_pid: 'string|true',CATE_ID: 'string|true',CATE_TITLE: 'string|false|comment=标题',CATE_STATUS: 'int|true|default=1|comment=状态 0/1',CATE_CNT: 'int|true|default=0',CATE_FORMS: 'array|true|default=[]',CATE_OBJ: 'object|true|default={}',CATE_ADDRESS_DETAIL: 'string|false|comment=详细地址',CATE_ADDRESS: 'object|false|comment=详细地址坐标参数', CATE_ORDER: 'int|true|default=9999',CATE_VOUCH: 'int|true|default=0',CATE_QR: 'string|false',CATE_ADD_TIME: 'int|true',CATE_EDIT_TIME: 'int|true',CATE_ADD_IP: 'string|false',CATE_EDIT_IP: 'string|false',
};

代码实现

在这里插入代码片

class CateService extends BaseProjectService {

async getAllCateOptions(status = 1) {let cateList = await CateModel.getAll({ CATE_STATUS: status }, '*', { 'CATE_ORDER': 'asc', 'CATE_ADD_TIME': 'desc' });let arr = [];for (let k in cateList) {let cateId = cateList[k]._id;let cateNode = {level: 1,label: cateList[k].CATE_TITLE,val: cateId,order: cateList[k].CATE_ORDER,obj: cateList[k].CATE_OBJ,parentId: ''}arr.push(cateNode);}return arr;
}async getCateList({query,search, // 搜索条件sortType, // 搜索菜单sortVal, // 搜索菜单orderBy, // 排序 page,size,isTotal = true,oldTotal
}) {orderBy = orderBy || {'CATE_ORDER': 'asc','CATE_ADD_TIME': 'desc'};let fields = '*';let where = {};where.and = {_pid: this.getProjectId() //复杂的查询在此处标注PID};where.and.CATE_STATUS = 1; // 状态    if (query && query.line && query.line.length > 0) {where.and['CATE_OBJ.line'] = ['in', query.line];}if (query && query.tag && query.tag.length > 0) {where.and['CATE_OBJ.tag'] = ['in', query.tag];}if (query && query.type && query.type.length > 0) {where.and['CATE_OBJ.type'] = ['in', query.type];}if (query && query.area && query.area.length > 0) {where.and['CATE_OBJ.area'] = ['in', query.area];}if (query && query.cate && query.cate.length > 0) {where.and['CATE_OBJ.cate'] = ['in', query.cate];}where.and['CATE_OBJ.rentmin'] = ['>=', Number(query.rentmin)];where.and['CATE_OBJ.rentmax'] = ['<=', Number(query.rentmax)];if (util.isDefined(search) && search) {where.or = [{ 'CATE_OBJ.station': ['like', search] },{ CATE_TITLE: ['like', search] },];} else if (sortType && util.isDefined(sortVal)) {// 搜索菜单switch (sortType) {case 'sort': {// 排序orderBy = this.fmtOrderBySort(sortVal, 'CATE_ADD_TIME');break;}case 'trade': {where.and['CATE_OBJ.trade'] = sortVal;break;}case 'size': {where.and['CATE_OBJ.size'] = sortVal;break;}case 'type': {where.and['CATE_OBJ.type'] = sortVal;break;}case 'star': {where.and['CATE_OBJ.star'] = sortVal;break;}}}return await CateModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal);
}async viewCate(id) {let fields = '*';let where = {_id: id,CATE_STATUS: 1}let cate = await CateModel.getOne(where, fields);if (!cate) return null;let list = await ProductModel.getAll({ PRODUCT_CATE_ID: id, PRODUCT_STATUS: 1 });cate.list = list;return cate;
}

}

UI设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

git代码下载

点击下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87063.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI 时代的网络爬虫新形态与防护思路研究】

网络爬虫原理与攻击防护的深度研究报告 网络爬虫技术已进入AI驱动的4.0时代&#xff0c;全球自动化请求流量占比突破51%&#xff0c;传统防御手段在面对高度仿真的AI爬虫时已显疲态。基于2025年最新数据&#xff0c;深入剖析网络爬虫的基本原理、工作流程、分类与攻击方式&…

低代码平台架构设计与关键组件

低代码平台的架构设计是其核心能力的关键支撑&#xff0c;需要平衡可视化开发的便捷性、生成应用的健壮性与性能、可扩展性以及企业级需求&#xff08;如安全、多租户、集成&#xff09;。以下是一个典型的企业级低代码平台架构概览及其关键组件&#xff1a; https://example.…

电商 ERP 系统集成接口指南

电商 ERP 系统的高效运行依赖于与多个业务系统的无缝对接&#xff0c;需要集成的核心接口包括&#xff1a;商品管理、订单处理、库存同步、物流配送、客户管理、财务结算等。这些接口是实现数据互通、业务协同的关键桥梁。 一、电商 ERP 系统集成所需接口类型 &#xff08;一…

Python实现对WPS协作群进行群消息自动推送

前言 本文是该专栏的第59篇,后面会持续分享python的各种干货知识,值得关注。 相信有些同学在工作或者项目中,都会使用到“WPS协作”作为办公聊天软件。如果说,有些项目的监控预警正好需要你同步到WPS协作群,这个时候需要怎么去做呢? 而本文,笔者将基于WPS协作,通过Py…

js严格模式和非严格模式

好的&#xff0c;这是一个非常基础且重要的概念。我们来详细解析一下 JavaScript 中的严格模式&#xff08;Strict Mode&#xff09;和非严格模式&#xff08;Sloppy Mode&#xff09;。 可以把它想象成参加一场考试&#xff1a; 非严格模式&#xff1a;就像是开卷、不计时的…

板凳-------Mysql cookbook学习 (十一--------1)

第11章&#xff1a;生成和使用序列 11.0 引言 11.1 创建一个序列列并生成序列值 CREATE TABLE insect ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)&#xff0c;name VARCHAR(30) NOT NULL,date DATE NOT NULL,origin VARCHAR(30) NOT NULL); 字段说明 ‌id…

Vue3 中 Excel 导出的性能优化与实战指南

文章目录 Vue3 中 Excel 导出的性能优化与实战指南引言&#xff1a;为什么你的导出功能会卡死浏览器&#xff1f;一、前端导出方案深度剖析1.1 xlsx (SheetJS) - 轻量级冠军1.2 exceljs - 功能强大的重量级选手 二、后端导出方案&#xff1a;大数据处理的救星2.1 为什么大数据需…

安卓RecyclerView实现3D滑动轮播效果全流程实战

安卓RecyclerView实现3D滑动轮播效果全流程实战 1. 前言 作为一名学习安卓的人,在接触之前和之后两种完全不同的想法: 好看和怎么实现 当初接触到RecyclerView就觉得这个控件就可以把关于列表的所有UI实现,即便不能,也是功能十分强大 放在现在依然是应用最广的滑动列表控…

电机控制——电机位置传感器零位标定

在有感FOC算法中电机位置是一个重要的输入&#xff0c;电机位置传感器的作用就是测量电机的旋转角度&#xff0c;通常是输出sin(Theta)和cos(Theta)两路模拟信号&#xff0c;根据这两路模拟信号测得电机旋转绝对角度。注意传感器测量的是机械角度&#xff0c;不是电角度。 关于…

生物化学(实验流程) PCR聚合酶链式反应: DNA 凝胶电泳实验原理 实验流程方法 实操建议笔记

凝胶电泳是分子生物学中最常用的技术之一&#xff0c;广泛用于 DNA 片段的可视化、分离与识别。在获取DNA 凝胶电泳相关设备&#xff08;电泳设备 & DNA样品染料 & 凝胶 & 染料&#xff09;之后&#xff0c;可以考虑进行电泳操作。 整体电泳操作流程&#xff08;从…

Python应用指南:利用高德地图API获取公交+地铁可达圈(三)

副标题&#xff1a;基于模型构建器的批处理多份CSV转换为点、线、面图层 在地理信息系统&#xff08;GIS&#xff09;的实际应用中&#xff0c;我们经常需要处理大量以表格形式存储的数据&#xff0c;例如人口统计数据、兴趣点&#xff08;POI&#xff09;信息和监测站点记录等…

每日算法刷题Day38 6.25:leetcode前缀和3道题,用时1h40min

5. 1749.任意子数组和的绝对值的最大值(中等,学习) 1749. 任意子数组和的绝对值的最大值 - 力扣&#xff08;LeetCode&#xff09; 思想 1.给你一个整数数组 nums 。一个子数组 [numsl, numsl1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl numsl1 ... numsr-1 nu…

创客匠人视角下创始人 IP 打造的底层逻辑与实践路径

在知识付费行业蓬勃发展的当下&#xff0c;创始人 IP 已成为连接用户与商业价值的核心纽带。创客匠人创始人老蒋在与行业头部 IP 洪鑫的对话中揭示了一个关键命题&#xff1a;IP 打造的成败&#xff0c;始于发心与理念的根基。从洪鑫教育中心营收超 6000 万的案例来看&#xff…

2022/7 N2 jlpt词汇

気力&#xff08;きりょく&#xff09; 清く&#xff08;きよく&#xff09; 記録&#xff08;きろく&#xff09; 記憶&#xff08;きおく&#xff09; 賢い&#xff08;かしこい&#xff09; 偉い&#xff08;えらい&#xff09; 凄い&#xff08;すごい&#xff09; 鋭い&am…

系统性能优化-8 TCP缓冲区与拥塞控制

每个 TCP 连接都有发送缓冲区和接收缓冲区&#xff0c;发送缓冲区存已发送未确认数据和待发送数据&#xff0c;接收缓冲区存接收但是没有被上层服务读取的数据。 # cat /proc/net/sockstat sockets: used 1885 TCP: inuse 537 orphan 0 tw 3 alloc 959 mem 10其中 mem 代表当前…

【前端】vue工程环境配置

环境准备(Windows版本) nodejs安装 (base) PS C:\Users\Administrator> nvm install 18.8.0 (base) PS C:\Users\Administrator> nvm use 18.8.0 Now using node v18.8.0 (64-bit) (base) PS C:\Users\Administrator> npm -v 8.18.0 (base) PS C:\Users\Administrat…

什么是data version control?为什么需要它?它能解决什么问题?

Data Version Control (DVC) 是一个开源工具&#xff0c;专为数据科学和机器学习项目设计。它的核心目标是像 Git 管理代码一样来管理机器学习项目中的数据和模型文件。 简单来说&#xff0c;DVC 是什么&#xff1f; Git for Data & Models&#xff1a; 它扩展了 Git 的功…

简约计生用品商城简介

计生用品商城简介&#xff1a;uniapp结合thinkphp实现的全开源代码&#xff0c; 内置基本功能&#xff1a;1.后台商品excel一键导入 2.分销利润&#xff0c;按照利润加个分红

go中自动补全插件安装-gopls

vscode中安装gopls失败&#xff0c;导致go中代码无提示&#xff0c;无法自动补全引用 环境变量中设置go的代理&#xff1a;setx GOPROXY “https://goproxy.cn,direct”go install golang.org/x/tools/goplslatest

力扣寻找数组中心索引-性能优化思考

如下代码 var pivotIndex function(nums) {// 空数组返回-1if (nums.length 0) return -1// 计算数组总和const totalSum nums.reduce((sum, num) > sum num, 0);let leftSum 0;// 遍历数组查找中心索引for (let i 0; i < nums.length; i) {// 右侧和 总和 - 左侧…