Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
5
51business
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
方斌
51business
Commits
769dc2b9
Commit
769dc2b9
authored
Apr 11, 2019
by
Hsinli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adddd
parent
74fbd7cf
Pipeline
#5888
passed with stage
in 6 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
72 deletions
+124
-72
new_house.js
app/controller/house/new_house.js
+26
-2
house.js
app/router/house.js
+3
-1
new_house.js
app/service/house/new_house.js
+95
-69
No files found.
app/controller/house/new_house.js
View file @
769dc2b9
...
...
@@ -8,10 +8,34 @@ class NewHouseController extends Controller {
* 新房列表
* 全部all 在售sale 最近开盘open 优惠favourtable 首页home
*/
async
getNewHouseList
()
{
async
getNewHouseList
ByType
()
{
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
);
}
...
...
app/router/house.js
View file @
769dc2b9
...
...
@@ -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'
);
//预约
...
...
app/service/house/new_house.js
View file @
769dc2b9
...
...
@@ -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
getNewHouseList
ByType
(
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
getNewHouse
ByTypeFilter
(
condition
)
{
async
getNewHouse
List
(
condition
)
{
const
{
ctx
,
service
}
=
this
;
let
page
=
Number
(
condition
.
page
)
||
1
;
let
pageSize
=
Number
(
condition
.
page
S
ize
)
||
30
;
let
pageSize
=
Number
(
condition
.
page
_s
ize
)
||
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
.
unit
P
rice
)
{
//单价
//是否有值来增加筛选项
if
(
condition
.
unit
_p
rice
)
{
//单价
filter
.
queryConditions
.
push
(
{
key
:
'referenceAvgPrice'
,
value
:
condition
.
unit
P
rice
.
min
,
value
:
condition
.
unit
_p
rice
.
min
,
operator
:
'greaterEqual'
,
},
{
key
:
'referenceAvgPrice'
,
value
:
condition
.
unit
P
rice
.
max
,
value
:
condition
.
unit
_p
rice
.
max
,
operator
:
'lessEqual'
,
}
);
}
if
(
condition
.
total
P
rice
)
{
//总价
if
(
condition
.
total
_p
rice
)
{
//总价
filter
.
queryConditions
.
push
(
{
key
:
'referenceTotalPrice'
,
value
:
condition
.
total
P
rice
.
min
,
value
:
condition
.
total
_p
rice
.
min
,
operator
:
'greaterEqual'
,
},
{
key
:
'referenceTotalPrice'
,
value
:
condition
.
total
P
rice
.
max
,
value
:
condition
.
total
_p
rice
.
max
,
operator
:
'lessEqual'
,
}
);
...
...
@@ -291,21 +349,19 @@ class NewHouseService extends Service {
operator
:
'equal'
,
});
}
let
newHouse
Type
List
=
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
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment