从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代码下载

点击下载

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值