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
4bd643a3
Commit
4bd643a3
authored
Jun 05, 2019
by
李尚科
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
house v2
parent
62a385ca
Pipeline
#8552
passed with stage
in 10 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
345 additions
and
0 deletions
+345
-0
house_image.js
app/service/house/v2/house_image.js
+28
-0
rental_house.js
app/service/house/v2/rental_house.js
+317
-0
No files found.
app/service/house/v2/house_image.js
0 → 100644
View file @
4bd643a3
'use strict'
;
const
Service
=
require
(
'egg'
).
Service
;
const
R
=
require
(
'ramda'
);
class
HouseImageService
extends
Service
{
/**
* 获取图片相册
* @param {object} condition {type: XX, connect_id: XX}
* @param {object} elements [id, path, ...]//需要筛选出的元素
*/
async
getAll
(
condition
,
elements
=
[])
{
const
{
ctx
}
=
this
;
const
{
type
,
connect_id
}
=
condition
;
if
(
type
===
undefined
||
!
connect_id
)
{
return
[];
}
let
ret
=
await
ctx
.
realestateModel
.
HouseImage
.
all
({
where
:
{
status
:
'online'
,
valid
:
1
,
type
:
type
,
connect_id
:
connect_id
}
});
if
(
Array
.
isArray
(
elements
)
&&
elements
.
length
!==
0
)
{
ret
=
R
.
project
(
elements
)(
ret
);
}
return
ret
;
}
}
module
.
exports
=
HouseImageService
;
app/service/house/v2/rental_house.js
0 → 100644
View file @
4bd643a3
'use strict'
;
const
Service
=
require
(
'egg'
).
Service
;
const
R
=
require
(
'ramda'
);
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
RentalHouseService
extends
Service
{
async
getRentalHouseByFilter_V2
(
condition
)
{
const
{
ctx
}
=
this
;
const
{
brand
,
price
,
house_type
,
area_code
,
name
,
}
=
condition
;
let
where
=
{};
if
(
brand
)
{
const
residentials
=
await
ctx
.
service
.
house
.
residential
.
getResidentialByDeveloper
({
developer_id
:
brand
});
const
residentials_ids
=
R
.
pluck
(
'id'
,
residentials
);
}
if
(
area_code
)
{
}
if
(
house_type
)
{
}
if
(
name
)
{
where
.
name
=
{
$like
:
`%
${
name
}
%`
};
}
}
async
getRentalHousesByFilter
(
condition
)
{
const
{
ctx
}
=
this
;
const
queryConditions
=
[];
if
(
condition
.
brand
)
{
queryConditions
.
push
({
key
:
'developerid'
,
value
:
parseInt
(
condition
.
brand
),
operator
:
'equal'
,
});
}
if
(
condition
.
price
&&
condition
.
price
.
max
)
{
queryConditions
.
push
({
key
:
'price'
,
value
:
condition
.
price
.
min
,
operator
:
'greaterEqual'
,
});
queryConditions
.
push
({
key
:
'price'
,
value
:
condition
.
price
.
max
,
operator
:
'lessEqual'
,
});
}
if
(
condition
.
house_type
)
{
queryConditions
.
push
({
key
:
'type'
,
value
:
parseInt
(
condition
.
house_type
),
operator
:
'equal'
,
});
}
if
(
condition
.
area_code
)
{
//城市\区域\商圈筛选
if
(
condition
.
area_code
.
hasOwnProperty
(
'city_code'
)
&&
condition
.
area_code
.
city_code
!==
''
)
{
queryConditions
.
push
({
key
:
'city'
,
value
:
condition
.
area_code
.
city_code
,
operator
:
'equal'
,
});
}
if
(
condition
.
area_code
.
hasOwnProperty
(
'district_code'
)
&&
condition
.
area_code
.
district_code
!==
''
)
{
queryConditions
.
push
({
key
:
'county'
,
value
:
condition
.
area_code
.
district_code
,
operator
:
'equal'
,
});
}
if
(
condition
.
area_code
.
hasOwnProperty
(
'bizcircle_code'
)
&&
condition
.
area_code
.
bizcircle_code
!==
''
)
{
queryConditions
.
push
({
key
:
'region'
,
value
:
condition
.
area_code
.
bizcircle_code
,
operator
:
'equal'
,
});
}
}
if
(
condition
.
name
)
{
await
ctx
.
service
.
house
.
searchHistory
.
addSearchHistory
({
type
:
2
,
key_word
:
condition
.
name
});
//增加搜索历史
queryConditions
.
push
({
key
:
'name'
,
value
:
condition
.
name
,
operator
:
'contains'
,
});
}
queryConditions
.
push
({
key
:
"state"
,
value
:
0
,
operator
:
"notEqual"
});
const
pageSize
=
parseInt
(
condition
.
page_size
)
?
parseInt
(
condition
.
page_size
)
:
30
;
const
page
=
parseInt
(
condition
.
page
)
?
parseInt
(
condition
.
page
)
:
1
;
const
filter
=
{
pageSize
:
pageSize
,
pageIndex
:
page
,
queryConditions
:
queryConditions
,
orderConditions
:
[{
key
:
'price'
,
orderSequence
:
'asc'
,
},],
}
const
rental_houses_results
=
await
ctx
.
service
.
houseCommon
.
rentalHouse
.
all
(
filter
);
let
rental_houses
=
await
this
.
formatRentalHouseBasic
(
rental_houses_results
.
results
);
rental_houses
=
R
.
project
([
'id'
,
'image'
,
'name'
,
'address'
,
'price'
,
'tags'
,
'favourable_info'
])(
rental_houses
);
return
{
results
:
rental_houses
,
count
:
rental_houses_results
.
rowCount
};
}
//房源详细信息
async
getRentalHouse
(
rental_house_id
)
{
const
{
ctx
}
=
this
;
//获取房源基本信息
let
house_basic_result
=
await
ctx
.
service
.
houseCommon
.
rentalHouse
.
one
(
rental_house_id
);
if
(
!
house_basic_result
||
!
house_basic_result
.
id
)
{
ctx
.
failed
(
'house not found'
);
}
rental_house_id
=
house_basic_result
.
id
;
//获取房源图片信息
const
p_house_images
=
this
.
getRentalHouseImages
(
rental_house_id
);
//获取房源类型
const
p_house_types
=
this
.
formatRentHouseTypes
(
house_basic_result
.
rentalHouseType
);
const
p_ret
=
await
Promise
.
all
([
p_house_images
,
p_house_types
]).
then
(
result
=>
{
//等待所有异步内容获取完成
return
result
;
}).
catch
(
error
=>
{
ctx
.
failed
(
error
);
});
const
house_images
=
p_ret
[
0
];
const
house_types
=
p_ret
[
1
];
//处理房源基本信息格式
let
house_basic
=
await
this
.
formatRentalHouseBasic
([
house_basic_result
]);
house_basic
=
house_basic
[
0
];
//是否关注
const
collectionFilter
=
{
type
:
2
,
id
:
rental_house_id
}
const
collection
=
await
ctx
.
service
.
house
.
collection
.
getCollection
(
collectionFilter
);
ctx
.
service
.
house
.
footPrint
.
addFootPrint
({
id
:
rental_house_id
,
type
:
2
});
//添加用户足迹记录
const
city
=
await
ctx
.
blockModel
.
City
.
one
({
where
:
{
code
:
house_basic_result
.
residential
.
city
}
});
const
county
=
await
ctx
.
blockModel
.
HouseDistrict
.
one
({
where
:
{
id
:
house_basic_result
.
residential
.
county
}
});
const
region
=
await
ctx
.
blockModel
.
HouseBizcircle
.
one
({
where
:
{
id
:
house_basic_result
.
residential
.
region
}
});
const
city_name
=
(
city
&&
city
.
name
)
?
city
.
name
:
''
;
const
county_name
=
(
county
&&
county
.
name
)
?
county
.
name
:
''
;
const
region_name
=
(
region
&&
region
.
name
)
?
region
.
name
:
''
;
let
address
=
city_name
+
county_name
+
region_name
+
house_basic
.
address
;
let
gps_result
=
await
ctx
.
helper
.
getGPS
(
address
,
city_name
);
if
(
!
gps_result
.
lat
||
!
gps_result
.
lng
)
{
address
=
city_name
+
county_name
+
region_name
;
gps_result
=
await
ctx
.
helper
.
getGPS
(
address
,
city_name
);
}
let
longitude
=
0
;
let
latitude
=
0
;
if
(
gps_result
)
{
longitude
=
gps_result
.
lng
;
latitude
=
gps_result
.
lat
;
}
house_basic
.
longitude
=
longitude
;
house_basic
.
latitude
=
latitude
;
return
{
house_basic
,
house_images
,
house_types
,
collection
:
collection
.
rowCount
>
0
?
true
:
false
,
};
}
//获取房源画册
async
getRentalHouseImages
(
rental_house_id
)
{
const
{
ctx
}
=
this
;
const
house_image_filter
=
{
pageSize
:
10000
,
queryConditions
:
[
{
key
:
'state'
,
value
:
1
,
operator
:
'equal'
},
{
key
:
'type'
,
value
:
0
,
operator
:
'equal'
},
{
key
:
'connectId'
,
value
:
rental_house_id
,
operator
:
'equal'
},
],
};
const
house_images_results
=
await
ctx
.
service
.
houseCommon
.
houseImage
.
all
(
house_image_filter
);
const
house_images
=
R
.
project
([
'id'
,
'path'
,
'description'
])(
house_images_results
.
results
);
return
house_images
;
}
//格式化户型数据
async
formatRentHouseTypes
(
house_types
)
{
if
(
!
Array
.
isArray
(
house_types
)
||
house_types
.
length
===
0
)
{
return
[];
}
const
{
ctx
}
=
this
;
let
house_types_tmp
=
{};
for
(
let
i
in
house_types
)
{
const
house_type
=
house_types
[
i
];
if
(
house_type
.
state
===
0
)
{
continue
;
}
const
house_type_image_filter
=
{
pageSize
:
10000
,
queryConditions
:
[
{
key
:
'state'
,
value
:
1
,
operator
:
'equal'
},
{
key
:
'type'
,
value
:
3
,
operator
:
'equal'
,
},
{
key
:
'connectId'
,
value
:
house_type
.
id
,
operator
:
'equal'
,
}
],
};
const
house_type_images_results
=
await
ctx
.
service
.
houseCommon
.
houseImage
.
all
(
house_type_image_filter
);
const
type
=
house_type
.
type
||
1
;
const
house_type_value
=
HOUSE_TYPE
[
type
];
if
(
!
house_types_tmp
[
type
])
{
house_types_tmp
[
type
]
=
{
name
:
house_type_value
.
name
,
results
:
[],
count
:
0
,
}
}
house_types_tmp
[
type
].
results
.
push
({
id
:
house_type
.
id
,
name
:
house_type
.
name
,
area
:
house_type
.
area
,
price
:
house_type
.
price
,
images
:
R
.
project
([
'id'
,
'path'
,
'description'
])(
house_type_images_results
.
results
),
});
house_types_tmp
[
type
].
count
++
;
}
const
ret
=
[];
for
(
let
i
in
house_types_tmp
)
{
ret
.
push
(
house_types_tmp
[
i
])
}
return
ret
;
}
async
formatRentalHouseBasic
(
rental_houses
)
{
const
{
ctx
}
=
this
;
if
(
!
rental_houses
||
!
Array
.
isArray
(
rental_houses
)
||
rental_houses
.
length
===
0
)
{
return
[];
}
const
ret
=
[];
for
(
let
i
in
rental_houses
)
{
const
rental_house
=
rental_houses
[
i
];
const
temp_rental_house
=
{
id
:
rental_house
.
id
,
name
:
rental_house
.
name
,
//房源名称
image
:
rental_house
.
image
,
//列表展示图片
residential_id
:
rental_house
.
residentialId
,
//小区id
address
:
rental_house
.
address
,
//详细地址
price
:
rental_house
.
price
,
//价格
discount
:
rental_house
.
discount
,
//折扣
// business_license: rental_house.businessLicense,
tags
:
rental_house
.
tags
?
eval
(
rental_house
.
tags
)
:
[],
//房源特点
favourable_info
:
rental_house
.
favourableInfo
,
//优惠信息
introduce
:
rental_house
.
description
||
`该社区亮点:
1、房源介绍:精装公寓,家电齐全,独立卫生间,南通北透,独门独户。
2、房型说明:独门独户,拎包入住,满足各种需求,采光
3、社区配套:健身房、休憩区、小影院、娱乐室、商务区、无人商店、快递柜。
4、房间配套:空调、Wifi、洗衣机、热水器、冰箱、床、衣柜、电脑桌、沙发。`
,
room_configuration
:
ctx
.
helper
.
JsonParse
(
rental_house
.
roomConfiguration
),
//房间配置
// room_configuration: rental_house.roomConfiguration,//房间配置
notice
:
rental_house
.
notice
,
//入住须知
};
ret
.
push
(
temp_rental_house
);
}
return
ret
;
}
}
module
.
exports
=
RentalHouseService
;
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