Commit 769dc2b9 authored by Hsinli's avatar Hsinli

adddd

parent 74fbd7cf
Pipeline #5888 passed with stage
in 6 seconds
......@@ -8,10 +8,34 @@ class NewHouseController extends Controller {
* 新房列表
* 全部all 在售sale 最近开盘open 优惠favourtable 首页home
*/
async getNewHouseList() {
async getNewHouseListByType() {
const { ctx } = this;
let inputParams = ctx.params;
const ret = await ctx.service.house.newHouse.getNewHouseList(inputParams.type);
const rule = {
type: { type: 'string', required: true },
};
ctx.validate(rule, inputParams);
const ret = await ctx.service.house.newHouse.getNewHouseListByType(inputParams.type);
ctx.success(ret);
}
/**
* 根据筛选条件获得新房列表
*/
async getNewHouseList() {
const { ctx } = this;
let inputParams = ctx.request.body;
const rule = {
area_code: { type: 'string', required: false },//区域
unit_price: { type: 'object', required: false },//价格
total_price: { type: 'object', required: false },//总价
area: { type: 'object', required: false },//面积
house_type: { type: 'string', required: false },//房型
page: { type: 'string', required: false },//页面
page_size: { type: 'string', required: false },//条数
};
ctx.validate(rule, inputParams);
const ret = await ctx.service.house.newHouse.getNewHouseList(inputParams);
ctx.success(ret);
}
......
......@@ -16,9 +16,11 @@ module.exports = app => {
//新房
router.get('/new_house/list/:type', 'house.newHouse.getNewHouseList');//列表
router.get('/new_house/list/:type', 'house.newHouse.getNewHouseListByType');//某个指定列表
router.post('/new_house/list', 'house.newHouse.getNewHouseList');//根据条件筛选列表
router.get('/new_house/:id', 'house.newHouse.getNewHouse');//新房具体信息
router.get('/new_house_type/:id', 'house.newHouse.getNewHouseType');//新房户型
router.get('/new_house/options/:city_code', 'house.options.getNewHouseOptions');//筛选项信息
//预约
router.post('/order', loginAuth, 'house.order.addOrder');//预约
......
......@@ -3,6 +3,16 @@
const Service = require('egg').Service;
const moment = require('moment');
const HOUSE_TYPE = [
{ name: '不限', min: 0, max: 0, value: 0, },
{ name: '1室', min: 1, max: 1, value: 1, },
{ name: '2室', min: 2, max: 2, value: 2, },
{ name: '3室', min: 3, max: 3, value: 3, },
{ name: '4室', min: 4, max: 4, value: 4, },
{ name: '5室', min: 4, max: 4, value: 5, },
{ name: '5室以上', min: 5, max: 10000, value: 6, },
{ name: '别墅', min: 10000, max: 10000000, value: 7, },
]
class NewHouseService extends Service {
......@@ -10,7 +20,7 @@ class NewHouseService extends Service {
* 根据不同筛选获取列表
* @param {*} type 四种默认的按钮筛选 全部all 在售sale 最近开盘open 优惠favourable 首页home
*/
async getNewHouseList(type) {
async getNewHouseListByType(type) {
const { ctx } = this;
let types = ['all', 'sale', 'open', 'favourable', 'home'];
if (!types.includes(type)) {
......@@ -19,7 +29,17 @@ class NewHouseService extends Service {
let newHouseList = [];
if (type === 'home') {
//为您推荐只展示50条在售楼盘的数据,根据排序序号取数,数字小的排在前面,数字一样的情况下根据时间逆序排列,时间也一样的情况下随机排列;
let condition = { pageSize: 50 };
let condition = {
pageSize: 50,
orderConditions: [{
key: 'orderNum',
orderSequence: 'asc',
},
{
key: 'createdAt',
orderSequence: 'desc',
},]
};
newHouseList = await this.getNewHouseByFilter(condition);
} else if (type === 'all') {
......@@ -192,7 +212,6 @@ class NewHouseService extends Service {
}
let newHouseTypeList = await service.houseCommon.newHouseType.all(filter);
//数据格式化
ctx.logger.info(newHouseTypeList);
let retList = [];
if (newHouseTypeList.rowCount > 0) {
let taskList = [];
......@@ -206,24 +225,65 @@ class NewHouseService extends Service {
ctx.failed(error);
});
}
//TODO需要根据几居室区分
let typeFormat = {};
for (let i in retList) {
let type = retList[i].type;
if (!typeFormat.hasOwnProperty(type)) {
typeFormat[type] = {
name: HOUSE_TYPE[type].name,
results: [],
count: 0
};
}
typeFormat[type].results.push(retList[i]);
typeFormat[type].count++;
}
let ret = {
all: {
results: retList,
count: retList.count
count: retList.length
}
};
Object.assign(ret, typeFormat);
return ret;
}
/**
* 根据筛选条件newHouseType列表来获取newHouse
* newHouseType数据整理
* @param {object} data
*/
async formatNewHouseType(data) {
const { ctx } = this;
let ret = {};
if (Object.keys(data).length > 0) {
ret = {
id: data.id,
newHouseId: data.newHouseId,
type: data.type,//类型,如三居、四居
image: data.image,
house_type: data.houseType,//住宅类型,如住宅,公寓
apartment: data.apartment,//户型,如4室2厅3卫
sale_type: data.saleType,//销售类型,0未开售,1预售,2在售,3售罄
area: data.area,//面积
orientation: data.orientation,//朝向
num: data.num,//房源数量
price: data.price,//价格
discount: data.discount,//折扣
// tag: data.tags.split(','),//特点
}
}
return ret;
}
/**
* 根据筛选条件来获取newHouse
* @param {*} condition
*/
async getNewHouseByTypeFilter(condition) {
async getNewHouseList(condition) {
const { ctx, service } = this;
let page = Number(condition.page) || 1;
let pageSize = Number(condition.pageSize) || 30;
let pageSize = Number(condition.page_size) || 30;
let filter = {
pageIndex: page,
pageSize: pageSize,
......@@ -232,40 +292,38 @@ class NewHouseService extends Service {
value: 1,
operator: "equal"
}],
orderConditions: [{
key: 'orderNum',
orderSequence: 'asc',
},
{
key: 'createdAt',
orderSequence: 'desc',
}],
orderConditions: [
// {//根据楼盘在售的在前、预售的在后、售罄的在最后
// key: 'saleType',
// orderSequence: 'desc',
// }
],
}
//是否有值来增加筛选项
if (condition.unitPrice) {//单价
//是否有值来增加筛选项
if (condition.unit_price) {//单价
filter.queryConditions.push(
{
key: 'referenceAvgPrice',
value: condition.unitPrice.min,
value: condition.unit_price.min,
operator: 'greaterEqual',
},
{
key: 'referenceAvgPrice',
value: condition.unitPrice.max,
value: condition.unit_price.max,
operator: 'lessEqual',
}
);
}
if (condition.totalPrice) {//总价
if (condition.total_price) {//总价
filter.queryConditions.push(
{
key: 'referenceTotalPrice',
value: condition.totalPrice.min,
value: condition.total_price.min,
operator: 'greaterEqual',
},
{
key: 'referenceTotalPrice',
value: condition.totalPrice.max,
value: condition.total_price.max,
operator: 'lessEqual',
}
);
......@@ -291,21 +349,19 @@ class NewHouseService extends Service {
operator: 'equal',
});
}
let newHouseTypeList = await service.houseCommon.newHouse.all(filter);
let newHouseList = await service.houseCommon.newHouse.all(filter);
let list = [];
if (newHouseTypeList.rowCount !== 0) {
for (let i in newHouseTypeList) {
let newHouseInfo = await service.houseCommon.newHouse.one(newHouseTypeList[i].NewHouseId);
if (newHouseInfo.length > 0) {
let tmp = {
id: newHouseInfo.id,
name: newHouseInfo.name,
address: newHouseInfo.address,
tags: newHouseInfo.tags,
name: newHouseInfo.Image,
}
list.push(tmp);
}
if (newHouseList.rowCount > 0) {
for (let i in newHouseList.results) {
let tmp = {
id: newHouseList.results[i].id,
name: newHouseList.results[i].name,
address: newHouseList.results[i].address,
tags: newHouseList.results[i].tags.split(','),
image: newHouseList.results[i].image,
price: newHouseList.results[i].referenceAvgPrice,
};
list.push(tmp);
}
}
let ret = {
......@@ -327,14 +383,7 @@ class NewHouseService extends Service {
value: 1,
operator: "equal"
},],
orderConditions: [{
key: 'orderNum',
orderSequence: 'asc',
},
{
key: 'createdAt',
orderSequence: 'desc',
},],
orderConditions: [],
}
if (condition.hasOwnProperty('queryConditions')) {
filter.queryConditions = filter.queryConditions.concat(condition.queryConditions);
......@@ -352,6 +401,7 @@ class NewHouseService extends Service {
address: newHouseList.results[i].address,
tags: newHouseList.results[i].tags.split(','),
image: newHouseList.results[i].image,
price: newHouseList.results[i].referenceAvgPrice,
};
list.push(tmp);
}
......@@ -363,30 +413,6 @@ class NewHouseService extends Service {
return ret;
}
async formatNewHouseType(data) {
const { ctx } = this;
let ret = {};
if (Object.keys(data).length > 0) {
ret = {
id: data.id,
newHouseId: data.newHouseId,
type: data.type,//类型,如三居、四居
image: data.image,
house_type: data.houseType,//住宅类型,如住宅,公寓
apartment: data.apartment,//户型,如4室2厅3卫
sale_type: data.saleType,//销售类型,0未开售,1预售,2在售,3售罄
area: data.area,//面积
orientation: data.orientation,//朝向
num: data.num,//房源数量
price: data.price,//价格
discount: data.discount,//折扣
// tag: data.tags.split(','),//特点
}
}
return ret;
}
}
module.exports = NewHouseService;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment