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

点击下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值