背景調研
為中介帶來諸多優勢,能借助它打造專屬小程序,方便及時更新核實租賃信息,確保信息準確無誤,像房屋的大致地址、租金數額、租賃條件、房源優缺點等關鍵信息都能清晰呈現。還可上傳房屋拍攝照片,這樣用戶能提前了解房屋狀況,從而減少實地看房時間,中介也能借此降低人力成本,實現雙贏。
功能規劃
- 小區管理:后臺錄入小區的地圖位置,地段,主要特點,戶型,交通地鐵,外觀圖片,在售在租房源等。
- 房源管理:后臺錄入房源的地圖位置,地段,主要特點,水電氣費用,戶型,面積,樓層,上傳室內圖片等。
- 中介管理:后臺錄入金牌中介經紀人的信息,包括特點,聯系方式等。
用戶端:根據多種條件查看房源信息,地圖導航位置等
數據字典
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代碼下載
點擊下載