Commit 3b706e0c authored by 李尚科's avatar 李尚科
parents b5311abb e13f3b99
Pipeline #5974 passed with stage
in 2 seconds
......@@ -3,22 +3,6 @@
const Controller = require('egg').Controller;
class NewHouseController extends Controller {
/**
* 新房列表
* 全部all 在售sale 最近开盘open 优惠favourtable 首页home
*/
async getNewHouseListByType() {
const { ctx } = this;
let inputParams = ctx.params;
const rule = {
type: { type: 'string', required: true },
};
ctx.validate(rule, inputParams);
const ret = await ctx.service.house.newHouse.getNewHouseListByType(inputParams.type);
ctx.success(ret);
}
/**
* 根据筛选条件获得新房列表
*/
......@@ -26,16 +10,25 @@ class NewHouseController extends Controller {
const { ctx } = this;
let inputParams = ctx.request.body;
const rule = {
page: { type: 'string', required: false },//页面
page_size: { type: 'string', required: false },//条数
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 },//条数
//通过type选择指定内容 全部all 在售sale 最近开盘open 优惠favourtable 首页home,和上面的筛选项互斥
type: { type: 'string', required: false },//
};
ctx.validate(rule, inputParams);
const ret = await ctx.service.house.newHouse.getNewHouseList(inputParams);
let ret = {};
if (inputParams.hasOwnProperty('type') && inputParams.type !== '') {
ret = await ctx.service.house.newHouse.getNewHouseListByType(inputParams);
} else {
ret = await ctx.service.house.newHouse.getNewHouseList(inputParams);
}
ctx.success(ret);
}
......
......@@ -17,7 +17,6 @@ module.exports = app => {
//新房
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');//新房户型
......
......@@ -10,6 +10,7 @@ class MineService extends Service {
async getMineInfo() {
const { ctx, service } = this;
let ret = {
login: false,
user: {
nickname: '',
avatar: '',
......@@ -18,15 +19,15 @@ class MineService extends Service {
classification: {
foot_print: {
count: 0,
neme: '浏览足迹'
name: '浏览足迹'
},
collection: {
count: 0,
neme: '关注的房产'
name: '关注的房产'
},
order: {
count: 0,
neme: '预约记录'
name: '预约记录'
},
}
}
......@@ -42,6 +43,7 @@ class MineService extends Service {
if (phone.length > 0) {
phone = phone.substing(0, 2) + phone.substing(7, 10);
}
ret.login = true;
ret.user.nickname = appUserInfo.nickname || '';
ret.user.avatar = appUserInfo.avatar || '';
ret.user.avatar = phone;
......
......@@ -57,7 +57,7 @@ class NewHouseService extends Service {
}
}
//户型信息
let newHouseType = await this.formatNewHouseTypeList(newHouseInfo.newHouseType);
let newHouseType = await this.formatNewHouseTypeList(newHouseInfo);
//是否关注
let collectionFilter = { type: 1, id: id }
let collection = await service.house.collection.getCollection(collectionFilter);
......@@ -103,13 +103,18 @@ class NewHouseService extends Service {
*/
async formatNewHouse(data) {
const { ctx, service } = this;
ctx.logger.info(data);
const saleType = { 0: '未开售', 1: '售罄', 2: '预售', 3: '在售' };
const decorationType = { 1: '毛坯', 2: '简装', 3: '精装' }
const archType = { 1: '板楼', 2: '塔楼' };
const houseType = { 1: '住宅', 2: '公寓' };
let ret = {};
if (Object.keys(data).length > 0) {
//开发商整理
let developer = [];
let developerinfo = data.residential.residentialDeveloper
for (let i in developerinfo) {
developer.push(developerinfo[i].developer.name);
}
ret.basic = {
id: data.id,
name: data.name,//标题
......@@ -118,14 +123,14 @@ class NewHouseService extends Service {
favourable_info: data.favourableInfo,//优惠
reference_avg_price: data.referenceAvgPrice,//均价
reference_total_price: data.referenceTotalPrice,//总价
property_type: houseType[data.houseType],//物业类型
property_type: houseType[data.houseType] || '',//物业类型
}
ret.info = {
open_date: data.openDate,//开盘时间
due_date: data.dueDate,//交房时间
house_area: data.houseArea,//建筑面积
decoration: decorationType[data.decorationType],//装修情况,1 毛坯,2简装,3精装
decoration: decorationType[data.decorationType] || '',//装修情况,1 毛坯,2简装,3精装
green_ratio: data.greenRatio,//绿化
area_ratio: data.areaRatio,//容积
address: data.address,//地址
......@@ -134,16 +139,16 @@ class NewHouseService extends Service {
basic: {
reference_avg_price: data.referenceAvgPrice,//均价
tags: data.tags.split(','),//项目特色
property_type: houseType[data.houseType],//物业类型
property_type: houseType[data.houseType] || '',//物业类型
property_right_years: data.residential.propertyRightYears,//产权年限
build_type: archType[data.residential.ArchType],//建筑类型 1 板楼 2塔楼'
decoration: decorationType[data.decorationType],//装修情况,1 毛坯,2简装,3精装
build_type: archType[data.residential.archType] || '',//建筑类型 1 板楼 2塔楼'
decoration: decorationType[data.decorationType] || '',//装修情况,1 毛坯,2简装,3精装
},
sale: {
sale_type: saleType[data.saleType],//销售状态 0未开售,1售罄,2预售,3在售
sale_type: saleType[data.saleType] || '',//销售状态 0未开售,1售罄,2预售,3在售
address: data.address,//地址
sale_address: data.saleAddress,//售楼地址
developer: '',//开发商
developer: developer,//开发商
open_date: data.openDate,//开盘时间
due_date: data.dueDate,//交房时间
},
......@@ -175,13 +180,15 @@ class NewHouseService extends Service {
* 对newHouseTypeList格式化
* @param {object} newHouseTypeList
*/
async formatNewHouseTypeList(newHouseTypeList) {
async formatNewHouseTypeList(newHouseInfo) {
const { ctx, service } = this;
let newHouseTypeList = newHouseInfo.newHouseType;
//数据格式化
let retList = [];
if (newHouseTypeList.length > 0) {
let taskList = [];
for (let i in newHouseTypeList) {
newHouseTypeList[i].houseType = newHouseInfo.houseType;
taskList[i] = this.formatNewHouseType(newHouseTypeList[i]);
}
......@@ -228,15 +235,17 @@ class NewHouseService extends Service {
async formatNewHouseType(data) {
const { ctx } = this;
const saleType = { 0: '未开售', 1: '售罄', 2: '预售', 3: '在售' };
const houseType = { 1: '住宅', 2: '公寓' };
let ret = {};
if (Object.keys(data).length > 0) {
ret = {
id: data.id,
newHouseId: data.newHouseId,
type: data.type,//类型,如三居、四居
house_type: houseType[data.houseType] || '',
image: data.image,
apartment: data.apartment,//户型,如4室2厅3卫
sale_type: saleType[data.saleType],
sale_type: saleType[data.saleType] || '',
area: data.area,//面积
orientation: data.orientation,//朝向
num: data.num,//房源数量
......@@ -303,13 +312,13 @@ class NewHouseService extends Service {
if (condition.area) {//面积
filter.queryConditions.push(
{
key: 'area',
key: 'houseArea',
value: condition.area.min,
operator: 'greaterEqual',
},
{
key: 'area',
value: condition.area.min,
key: 'houseArea',
value: condition.area.max,
operator: 'lessEqual',
})
;
......@@ -347,94 +356,70 @@ class NewHouseService extends Service {
* 根据不同筛选获取列表
* @param {*} type 四种默认的按钮筛选 全部all 在售sale 最近开盘open 优惠favourable 首页home
*/
async getNewHouseListByType(type) {
const { ctx } = this;
async getNewHouseListByType(condition) {
const { ctx, service } = this;
let types = ['all', 'sale', 'open', 'favourable', 'home'];
if (!types.includes(type)) {
ctx.failed('error list type');
if (!condition.hasOwnProperty('type') || !types.includes(condition.type)) {
ctx.failed('error or empty list type');
}
let type = condition.type;
let page = Number(condition.page) || 1;
let pageSize = Number(condition.page_size) || 30;
let filter = {
pageIndex: page,
pageSize: pageSize,
queryConditions: [{
key: "state",
value: 1,
operator: "equal"
},],
orderConditions: [],
}
let newHouseList = [];
let condition = {};
if (type === 'home') {
//为您推荐只展示50条在售楼盘的数据,根据排序序号取数,数字小的排在前面,数字一样的情况下根据时间逆序排列,时间也一样的情况下随机排列;
condition = {
pageSize: 50,
orderConditions: [{
filter.pageSize = Number(condition.page_size) || 50;
filter.orderConditions.push({
key: 'orderNum',
orderSequence: 'asc',
}, {
key: 'createdAt',
orderSequence: 'desc',
},]
};
});
} else if (type === 'all') {
condition = {
orderConditions: [{
filter.orderConditions.push({
key: 'saleType',
orderSequence: 'desc',
},]
};
});
} else if (type === 'sale') {
//点击在售楼盘进入列表页面且只展示当前销售状态为在售的楼盘
condition = {
queryConditions: [{
filter.queryConditions.push({
key: "saleType",
value: '3',
operator: "equal"
}],
};
});
} else if (type === 'open') {
//只展示最近三个月内开盘的楼盘,往前追溯三个月,列表单次加载30条楼盘数据,滑到底部再次加载30条
let endDate = moment().subtract(30, 'days').format('YYYY-MM-DD HH:mm:ss');
condition = {
queryConditions: [{
filter.queryConditions.push({
key: "openDate",
value: endDate,
operator: "greater"
}],
orderConditions: [{
});
filter.orderConditions.push({
key: 'saleType',
orderSequence: 'desc',
},]
};
})
} else if (type === 'favourable') {
//点击优惠好盘只展示有优惠的楼盘,列表单次加载30条楼盘数据,滑到底部再次加载30条
condition = {
queryConditions: [{
filter.queryConditions.push({
key: "favourableInfo",
value: false,
operator: "isnull"
}],
orderConditions: [{
});
filter.orderConditions.push({
key: 'saleType',
orderSequence: 'desc',
},]
};
}
newHouseList = await this.getNewHouseByFilter(condition);
return newHouseList;
}
async getNewHouseByFilter(condition) {
const { ctx, service } = this;
let page = Number(condition.page) || 1;
let pageSize = Number(condition.pageSize) || 30;
let filter = {
pageIndex: page,
pageSize: pageSize,
queryConditions: [{
key: "state",
value: 1,
operator: "equal"
},],
orderConditions: [],
}
if (condition.hasOwnProperty('queryConditions')) {
filter.queryConditions = filter.queryConditions.concat(condition.queryConditions);
}
if (condition.hasOwnProperty('orderConditions')) {
filter.orderConditions = filter.orderConditions.concat(condition.orderConditions);
});
}
let newHouseList = await service.houseCommon.newHouse.all(filter);
let list = [];
......
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