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