Commit 76db09d1 authored by 方斌's avatar 方斌
parents a51c67d4 165778da
Pipeline #6139 passed with stage
in 5 seconds
...@@ -16,13 +16,13 @@ class RentalHouseController extends Controller { ...@@ -16,13 +16,13 @@ class RentalHouseController extends Controller {
const device_login_id = ctx.device_login_id; const device_login_id = ctx.device_login_id;
const headers = { const headers = {
app_user_id: app_user_id, app_user_id: app_user_id,
device_id: device_id || 'f8b3b16b-6901-4a8e-95af-607ec7c47aa8', device_id: device_id || '0ef939ea-9bb7-4d21-b98a-53bdad418ad9',
device_login_id: device_login_id, device_login_id: device_login_id,
token: token, token: token,
uid: user_id, uid: user_id,
} }
// house_h5_rental_home_banners // house_h5_rental_home_banners
const banners_result = await ctx.helper.send_request(this.config.NODE_URL + '/51app/api/block/all', { alias: 'cnd_app_discovery_audit_banners' }, { method: 'GET', dataType: 'json', headers: headers }); const banners_result = await ctx.helper.send_request(this.config.NODE_BASE_URL + '/51app/api/block/all', { alias: '51fangc_rental_home_banners' }, { method: 'GET', dataType: 'json', headers: headers });
let banners = []; let banners = [];
if (banners_result.status === 200) { if (banners_result.status === 200) {
banners = banners_result.data.results; banners = banners_result.data.results;
......
'use strict'; 'use strict';
const cheerio = require('cheerio'); const cheerio = require('cheerio');
const request = require('request');
const Controller = require('egg').Controller; const Controller = require('egg').Controller;
const USER_AGENT = [ const USER_AGENT = [
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36',
...@@ -173,7 +174,7 @@ class ToolController extends Controller { ...@@ -173,7 +174,7 @@ class ToolController extends Controller {
floor: { type: 'string', required: true }, floor: { type: 'string', required: true },
total_floor: { type: 'string', required: true }, total_floor: { type: 'string', required: true },
}; };
ctx.validate(rule, input_params); // ctx.validate(rule, input_params);
const residential_id = input_params.residential_id; const residential_id = input_params.residential_id;
const residential_name = input_params.residential_name; const residential_name = input_params.residential_name;
const area = input_params.area; const area = input_params.area;
...@@ -181,26 +182,28 @@ class ToolController extends Controller { ...@@ -181,26 +182,28 @@ class ToolController extends Controller {
const floor = input_params.floor; const floor = input_params.floor;
const total_floor = input_params.total_floor; const total_floor = input_params.total_floor;
const qfang_url_area = 'https://hangzhou.qfang.com/fangjia/area'; const qfang_url_area = 'https://hangzhou.qfang.com/fangjia/area';
const qfang_url_chaxun = 'https://hangzhou.qfang.com/fangjia/chaxun?userName=&gardenId=&gardenInternalID=1f552c71-2747-4539-aeaa-0fc37a6dcd10&name=%E4%B8%87%E9%83%BD%E6%99%B6%E5%BA%A7&area=12&floor=2&totlaFloor=10&directionStr=SOUTHEAST&buildingId=&building=&roomNoId=&roomNo=&subQueryType=quick'; // const query_string = encodeURIComponent(`userName=&gardenId=&gardenInternalID=${residential_id}&name=${residential_name}&area=${area}&floor=${floor}&totlaFloor=${total_floor}&directionStr=${direction_str}&buildingId=&building=&roomNoId=&roomNo=&subQueryType=quick`);
// const qfang_url_chaxun = 'https://hangzhou.qfang.com/fangjia/chaxun?userName=&gardenId=&gardenInternalID=1f552c71-2747-4539-aeaa-0fc37a6dcd10&name=%E4%B8%87%E9%83%BD%E6%99%B6%E5%BA%A7&area=12&floor=2&totlaFloor=10&directionStr=SOUTHEAST&buildingId=&building=&roomNoId=&roomNo=&subQueryType=quick';
const qfang_url_chaxun = `https://hangzhou.qfang.com/fangjia/chaxun?userName=&gardenId=&gardenInternalID=${residential_id}&name=${encodeURIComponent(residential_name)}&area=${area}&floor=${floor}&totlaFloor=${total_floor}&directionStr=${direction_str}&buildingId=&building=&roomNoId=&roomNo=&subQueryType=quick`;
console.info(qfang_url_chaxun); console.info(qfang_url_chaxun);
const data = { // const data = {
userName: '', // userName: '',
gardenId: '', // gardenId: '',
gardenInternalID: 'c1283359-9995-4a52-ae76-ca06135b825c', // gardenInternalID: 'c1283359-9995-4a52-ae76-ca06135b825c',
name: '中天九溪诚品', // name: '中天九溪诚品',
area: 100, // area: 100,
floor: 2, // floor: 2,
totlaFloor: 6, // totlaFloor: 6,
directionStr: 'SOUTHEAST', // directionStr: 'SOUTHEAST',
buildingId: '', // buildingId: '',
building: '', // building: '',
roomNoId: '', // roomNoId: '',
roomNo: '', // roomNo: '',
subQueryType: 'quick', // subQueryType: 'quick',
} // }
await this.httprequest(qfang_url_chaxun, data); // await this.httprequest(qfang_url_chaxun, data);
return; // return;
const ret1 = await ctx.curl(qfang_url_area, { method: 'POST' }); const ret1 = await ctx.curl(qfang_url_area, { method: 'POST' });
const headers = ret1.headers; const headers = ret1.headers;
const cookies = headers['set-cookie']; const cookies = headers['set-cookie'];
...@@ -212,52 +215,70 @@ class ToolController extends Controller { ...@@ -212,52 +215,70 @@ class ToolController extends Controller {
const user_agent_length = USER_AGENT.length; const user_agent_length = USER_AGENT.length;
const random = Math.floor(Math.random() * user_agent_length); const random = Math.floor(Math.random() * user_agent_length);
const user_agent = USER_AGENT[random]; const user_agent = USER_AGENT[random];
console.info(ret1);
const ret2 = await ctx.curl(qfang_url_chaxun, { const ret2 = await new Promise((resolve, reject) => {
headers: { request({
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', url: qfang_url_chaxun,
'accept-encoding': 'gzip, deflate, br', jar: request.jar(),
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', headers: {
'cache-control': 'max-age=0', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'cookie': cookie, 'accept-encoding': 'gzip, deflate, br',
'referer': 'https://hangzhou.qfang.com/fangjia/chaxun?userName=&gardenId=&gardenInternalID=F3365A31BBB6F477E040A8C112002A44&name=%E5%9F%8E%E4%B8%AD%E8%8A%B1%E5%9B%AD&area=100&floor=1&totlaFloor=12&directionStr=NORTHSOUTH&buildingId=&building=&roomNoId=&roomNo=&subQueryType=quick', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'upgrade-insecure-requests': 1, 'cache-control': 'max-age=0',
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 'cookie': cookie,
} 'referer': qfang_url_chaxun,
'upgrade-insecure-requests': 1,
'user-agent': user_agent,
}
}, function (error, response, body) {
ctx.logger.info('qfang_url_chaxun_result: ' + JSON.stringify(response));
// ctx.logger.info('qfang_url_chaxun_html: ' + body);
if (!error && response.statusCode == 200) {
var resultStr = body.replace(/\ +/g, ""); //去掉空格
resultStr = resultStr.replace(/[ ]/g, ""); //去掉空格
resultStr = resultStr.replace(/[\r\n]/g, ""); //去掉回车换行
resultStr = resultStr.replace(/[\n]/g, ""); //去掉换行
resultStr = resultStr.replace(/[\r]/g, ""); //去掉回车
resolve(body) // 请求成功的处理逻辑
}
});
}); });
// ctx.success(ret2);
// return ;
ctx.logger.info('qfang_url_chaxun_result: ' + JSON.stringify(ret2));
const html = ret2.data.toString('utf8');
//console.info(html);
if (ret2.status !== 200) {
ctx.failed('估算过程中出了点错,请稍后再试。');
}
// const html = ret2.data.toString('utf8'); let average_price = 0;
const $ = cheerio.load(html); let average_price_unit = '';
const average_price = $('p.title-result').text(); let total_price = 0;
// const total_price = $('#targetNum').html(); let total_price_unit = '';
const total_price = $('span.average-price', '.fl').text();
if (!average_price || !total_price) { if (ret2 && ret2.length !== 0) {
ctx.failed('估算过程中出了点错,请稍后再试!'); const $ = cheerio.load(ret2);
average_price_unit = $('p.title-result span').text();
average_price = parseFloat($('.average-price-data p.title-result').text().replace(average_price_unit, ''));
total_price = parseFloat($('#targetNum').text());
total_price_unit = $('span.average-price', '.fl').text().replace(total_price, '');
if (!average_price || !total_price) {
average_price = 0;
average_price_unit = '';
total_price = 0;
total_price_unit = '';
}
} }
ctx.success({ average_price, total_price }); ctx.success({ average_price, average_price_unit, total_price, total_price_unit });
} }
async httprequest(url, data){
//并无实际用途 只用于调试测试用
async httprequest(url, data) {
const { ctx } = this; const { ctx } = this;
let ret2 = await ctx.curl('https://hangzhou.qfang.com/fangjia/area', { method: 'POST', data: data}); let ret2 = await ctx.curl('https://hangzhou.qfang.com/fangjia/area', { method: 'POST', data: data });
var cookies = ret2.headers['set-cookie']; var cookies = ret2.headers['set-cookie'];
var cookie = ''; var cookie = '';
for(let item in cookies) { for (let item in cookies) {
let cookie_items = cookies[item].split(';'); let cookie_items = cookies[item].split(';');
cookie += cookie_items[0] + '; '; cookie += cookie_items[0] + '; ';
} }
var request = require('request');
console.log(url) console.log(url)
request({ request({
url: url, url: url,
...@@ -273,11 +294,11 @@ class ToolController extends Controller { ...@@ -273,11 +294,11 @@ class ToolController extends Controller {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
} }
}, function(error, response, body) { }, function (error, response, body) {
//console.log(error) //console.log(error)
console.log(response) console.log(response)
if (!error && response.statusCode == 200) { if (!error && response.statusCode == 200) {
var resultStr = body.replace(/\ +/g, ""); //去掉空格 var resultStr = body.replace(/\ +/g, ""); //去掉空格
resultStr = resultStr.replace(/[ ]/g, ""); //去掉空格 resultStr = resultStr.replace(/[ ]/g, ""); //去掉空格
...@@ -290,7 +311,7 @@ class ToolController extends Controller { ...@@ -290,7 +311,7 @@ class ToolController extends Controller {
} }
}); });
}; };
async getQFangAreaList() { async getQFangAreaList() {
......
...@@ -84,7 +84,7 @@ module.exports = () => { ...@@ -84,7 +84,7 @@ module.exports = () => {
deviceLoginId = typeof (ctx.request.header.device_login_id) !== 'undefined' ? ctx.request.header.device_login_id : undefined; deviceLoginId = typeof (ctx.request.header.device_login_id) !== 'undefined' ? ctx.request.header.device_login_id : undefined;
} }
// if((deviceId == undefined || !deviceId || deviceId.length === 0) && input_params.device_id != undefined){ // if ((deviceId == undefined || !deviceId || deviceId.length === 0) && input_params.device_id != undefined) {
// deviceId = input_params.device_id; // deviceId = input_params.device_id;
// } // }
// 校验 // 校验
...@@ -96,7 +96,7 @@ module.exports = () => { ...@@ -96,7 +96,7 @@ module.exports = () => {
device_login_id: deviceLoginId, device_login_id: deviceLoginId,
}; };
const result = await ctx.helper.send_request(ctx.app.config.NODE_URL + '/user_api/v1/user/auth', params, { const result = await ctx.helper.send_request(ctx.app.config.NODE_URL + '/user/auth', params, {
method: 'POST', method: 'POST',
}); });
// ctx.logger.info('appUserId: ' + appUserId); // ctx.logger.info('appUserId: ' + appUserId);
...@@ -104,10 +104,10 @@ module.exports = () => { ...@@ -104,10 +104,10 @@ module.exports = () => {
ctx.logger.info('user_auth_params: ' + JSON.stringify(params)); ctx.logger.info('user_auth_params: ' + JSON.stringify(params));
ctx.logger.info('user_auth_result: ' + JSON.stringify(result)); ctx.logger.info('user_auth_result: ' + JSON.stringify(result));
console.log(result); console.log(result);
// if (result.status !== 201) { if (result.status !== 201) {
// ctx.failed('无效用户'); ctx.failed('无效用户');
// return; return;
// } }
// const data = result.data.data; // const data = result.data.data;
let data = result.data.data; let data = result.data.data;
......
...@@ -99,6 +99,7 @@ class FootPrintService extends Service { ...@@ -99,6 +99,7 @@ class FootPrintService extends Service {
foot_print_records.push({ foot_print_records.push({
id: foot_print.id, id: foot_print.id,
house_id: house.id,
name: house.name, name: house.name,
time: time, time: time,
type: type, type: type,
......
...@@ -34,11 +34,18 @@ class OrderService extends Service { ...@@ -34,11 +34,18 @@ class OrderService extends Service {
operator: "equal" operator: "equal"
}, },
], ],
orderConditions: [], orderConditions: [{
key: 'createdAt',
orderSequence: 'desc',
}],
} }
let orderHistory = await service.houseCommon.order.all(filter); let orderHistory = await service.houseCommon.order.all(filter);
if (orderHistory.rowCount > 0) { if (orderHistory.rowCount > 0) {
ctx.failed('已经预约过'); let ret = {
id: orderHistory.results[0].id,
msg: '已经预约过',
};
return ret;
} }
let data = { let data = {
userId: ctx.userId, userId: ctx.userId,
...@@ -52,7 +59,7 @@ class OrderService extends Service { ...@@ -52,7 +59,7 @@ class OrderService extends Service {
remark: inputParams.remark || '' remark: inputParams.remark || ''
}; };
let ret = await service.houseCommon.order.add(data); let ret = await service.houseCommon.order.add(data);
return { id: ret.id }; return { id: ret.id, msg: '预约成功' };
} }
/** /**
......
...@@ -82,8 +82,9 @@ class RentalHouseService extends Service { ...@@ -82,8 +82,9 @@ class RentalHouseService extends Service {
value: 1, value: 1,
operator: "equal" operator: "equal"
}); });
const pageSize = condition.page_size || 30;
const filter = { const filter = {
pageSize: 30, pageSize: pageSize,
queryConditions: queryConditions, queryConditions: queryConditions,
orderConditions: [{ orderConditions: [{
key: 'price', key: 'price',
......
...@@ -55,6 +55,7 @@ module.exports = appInfo => { ...@@ -55,6 +55,7 @@ module.exports = appInfo => {
config.CDN_BASE_URL = 'https://r.51gjj.com/image/'; config.CDN_BASE_URL = 'https://r.51gjj.com/image/';
config.NODE_URL = process.env.NODE_URL; config.NODE_URL = process.env.NODE_URL;
config.NODE_BASE_URL = process.env.NODE_BASE_URL;
config.PHP_URL = process.env.PHP_URL; config.PHP_URL = process.env.PHP_URL;
config.HOUSE_SERVICE_API = process.env.HOUSE_SERVICE_API; // 房产 config.HOUSE_SERVICE_API = process.env.HOUSE_SERVICE_API; // 房产
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
"node-cache": "^4.2.0", "node-cache": "^4.2.0",
"parameter": "^3.3.1", "parameter": "^3.3.1",
"ramda": "^0.25.0", "ramda": "^0.25.0",
"request": "^2.88.0",
"uuid": "^3.3.2" "uuid": "^3.3.2"
}, },
"devDependencies": { "devDependencies": {
......
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