mirror of
https://gitee.com/BDWare/agent-backend
synced 2025-01-10 01:44:14 +00:00
1503 lines
56 KiB
Plaintext
1503 lines
56 KiB
Plaintext
import "naiveDAC/naiveDAC.yjs"
|
||
@LogType("Arg")
|
||
contract AppDataSource {
|
||
function onCreate(){
|
||
initDAC(requester);
|
||
}
|
||
function queryDB(db) {
|
||
db = JSON.parse(db);
|
||
var conn = YancloudUtil.getMysqlConnection(db["ip"], db["user"], db["passwd"]);
|
||
if (conn != undefined && !conn.isClosed()) {
|
||
print("successfully connected");
|
||
}
|
||
else return null;
|
||
var sql = "select * from " + db["dbname"] + "." + db["formname"];
|
||
var statement = conn.createStatement();
|
||
var resultSet = statement.executeQuery(sql);
|
||
var resultList = [];
|
||
var meta = resultSet.getMetaData();
|
||
for (; resultSet.next();) {
|
||
var line = {
|
||
};
|
||
for (var j = 1; j <= meta.getColumnCount(); j++) {
|
||
line[meta.getColumnName(j)] = resultSet.getString(j);
|
||
}
|
||
resultList.push(line);
|
||
}
|
||
return resultList;
|
||
}
|
||
function queryElemeProvider(arg) {
|
||
if (!checkPermission(requester)){
|
||
return "access denied";
|
||
}
|
||
var ret = JSON.parse(executeContract("ElemeProvider", "queryDB", arg));
|
||
if (ret.status == "Success") {
|
||
return JSON.parse(ret.result);
|
||
}
|
||
else return null;
|
||
}
|
||
export function connectDBAndQuery(args) {
|
||
if (!checkPermission(requester)){
|
||
return "access denied";
|
||
}
|
||
//{"action":"connectDBAndQuery", "arg":"{\"type\":\"takeout\",\"detail\":\"overall\",\"district\":\"海淀\"}"}
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "takeout") {
|
||
print("takeout");
|
||
if (this.waimailist_waimai == null) {
|
||
this.waimailist_waimai = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"newele\",\"formname\":\"data\"}",requester);
|
||
if (this.waimailist_waimai == null) {
|
||
print("failed");
|
||
return null;
|
||
}
|
||
}
|
||
var waimailist = (this.waimailist_waimai);
|
||
if (this.districtDict_waimai == null) {
|
||
var districtDict = {
|
||
};
|
||
var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g;
|
||
for (var i = 0; i < waimailist.length; i++) {
|
||
var addr = waimailist[i]["address"];
|
||
addr = addr.replace("北京", "");
|
||
addr = addr.replace("市", "");
|
||
var district = addr.match(pattern);
|
||
if (district == null)
|
||
continue;
|
||
district = district[0];
|
||
if (district.length > 5)
|
||
continue;
|
||
if (districtDict[district] == null)
|
||
districtDict[district] = [];
|
||
var item = {
|
||
}
|
||
if (waimailist[i]["avgPrice"] == null)
|
||
continue;
|
||
var avgPrice = waimailist[i]["avgPrice"].replace("¥", "").replace("/人", "");
|
||
avgPrice = parseInt(avgPrice);
|
||
if (waimailist[i]["monthlySalesNum"] == null)
|
||
continue;
|
||
item["orderNum"] = parseInt(waimailist[i]["monthlySalesNum"]);
|
||
item["saleNum"] = item["orderNum"] * avgPrice;
|
||
if (item["saleNum"] == null || item["orderNum"] == null)
|
||
continue;
|
||
if (!(item["saleNum"] > 0 && item["saleNum"] <= 500000))
|
||
continue;
|
||
if (waimailist[i]["overallRating"] == null)
|
||
continue;
|
||
item["score"] = waimailist[i]["overallRating"];
|
||
item["shopName"] = waimailist[i]["shopName"];
|
||
item["categories"] = waimailist[i]["categories"];
|
||
item["address"] = waimailist[i]["address"];
|
||
districtDict[district].push(item);
|
||
}
|
||
this.districtDict_waimai = districtDict;
|
||
}
|
||
districtDict = this.districtDict_waimai;
|
||
if (args["detail"] == "overall") {
|
||
var fig1 = [];
|
||
var dictkeys = Object.keys(districtDict);
|
||
for (var j = 0; j < dictkeys.length; j++) {
|
||
var key = dictkeys[j];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
if (key == "延庆" || key == "密云")
|
||
name = key + "县";
|
||
item["name"] = name;
|
||
item["value"] = [];
|
||
item["value"].push(districtDict[key].length);
|
||
var wholeOrder = 0;
|
||
var wholeSale = 0;
|
||
for (var i = 0; i < districtDict[key].length; i++) {
|
||
if (districtDict[key][i]["orderNum"] == null || districtDict[key][i]["saleNum"] == null)
|
||
continue;
|
||
wholeOrder += districtDict[key][i]["orderNum"];
|
||
wholeSale += districtDict[key][i]["saleNum"];
|
||
}
|
||
item["value"].push(wholeOrder);
|
||
item["value"].push(wholeSale);
|
||
fig1.push(item);
|
||
}
|
||
var fig2 = [];
|
||
var cateDict = {
|
||
};
|
||
if (args["district"] == "") {
|
||
for (var i = 0; i < waimailist.length; i++) {
|
||
if (waimailist[i]["categories"] == null)
|
||
continue;
|
||
var category = waimailist[i]["categories"].split("/")[0];
|
||
if (cateDict[category] == null)
|
||
cateDict[category] = 0;
|
||
cateDict[category] += 1;
|
||
}
|
||
}
|
||
else {
|
||
args["district"] = args["district"].replace("区", "").replace("县", "");
|
||
for (var i = 0; i < districtDict[args["district"]].length; i++) {
|
||
if (districtDict[args["district"]][i]["categories"] == null)
|
||
continue;
|
||
var category = districtDict[args["district"]][i]["categories"].split("/")[0];
|
||
if (cateDict[category] == null)
|
||
cateDict[category] = 0;
|
||
cateDict[category] += 1;
|
||
}
|
||
}
|
||
var cateDictKeys = Object.keys(cateDict);
|
||
for (var j = 0; j < cateDictKeys.length; j++) {
|
||
var key = cateDictKeys[j];
|
||
var item = {
|
||
};
|
||
item["name"] = key;
|
||
item["value"] = cateDict[key];
|
||
fig2.push(item);
|
||
}
|
||
var fig3 = {
|
||
};
|
||
var desc2 = function (x, y) {
|
||
return (x["val"] < y["val"]) ? 1 : -1;
|
||
}
|
||
var shopList = [];
|
||
var dictKeys = Object.keys(districtDict);
|
||
if (args["district"] == "") {
|
||
for (var j = 0; j < dictKeys.length; j++) {
|
||
var key = dictKeys[j];
|
||
var districtItem = districtDict[key];
|
||
for (var i = 0; i < districtItem.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = districtItem[i]["shopName"];
|
||
item["val"] = districtItem[i]["saleNum"];
|
||
shopList.push(item);
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
var districtItem = districtDict[args["district"]];
|
||
for (var i = 0; i < districtItem.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = districtItem[i]["shopName"];
|
||
item["val"] = districtItem[i]["saleNum"];
|
||
shopList.push(item);
|
||
}
|
||
}
|
||
shopList.sort(desc2);
|
||
var lineData = [];
|
||
var nameData = [];
|
||
for (var i = 14; i >= 0; i--) {
|
||
lineData.push(shopList[i]["val"]);
|
||
nameData.push(shopList[i]["name"]);
|
||
}
|
||
fig3["lineData"] = lineData;
|
||
fig3["nameData"] = nameData;
|
||
var ret = {
|
||
};
|
||
ret["fig1"] = fig1;
|
||
ret["fig2"] = fig2;
|
||
ret["fig3"] = fig3;
|
||
ret["district"] = args["district"];
|
||
return JSON.stringify(ret);
|
||
}
|
||
else if (args["detail"] == "rating") {
|
||
if (this.districtRateDict == null) {
|
||
var connRate = YancloudUtil.getMysqlConnection("39.106.6.6:3306", "loushuai", "loushuai");
|
||
if (connRate != undefined && !connRate.isClosed()) {
|
||
print("successfully connected");
|
||
}
|
||
else return "connect failed";
|
||
var sqlRate = "select * from newele.catering";
|
||
var statementRate = connRate.createStatement();
|
||
var resultSet_rate = statementRate.executeQuery(sqlRate);
|
||
var rateshoplist = [];
|
||
var meta_rate = resultSet_rate.getMetaData();
|
||
for (; resultSet_rate.next();) {
|
||
var line = {
|
||
};
|
||
for (var j = 1; j <= meta_rate.getColumnCount(); j++) {
|
||
line[meta_rate.getColumnName(j)] = resultSet_rate.getString(j);
|
||
}
|
||
rateshoplist.push(line);
|
||
}
|
||
var addrDict = {
|
||
};
|
||
var pattern_addr = /([^区]{1,})区/g;
|
||
for (var i = 0; i < rateshoplist.length; i++) {
|
||
var addr = rateshoplist[i]["address"].replace(pattern_addr, "");
|
||
addrDict[addr] = rateshoplist[i]["quantization_level"];
|
||
}
|
||
this.districtRateDict = {
|
||
};
|
||
var dictkeys = Object.keys(districtDict);
|
||
for (var i = 0; i < dictkeys.length; i++) {
|
||
districtRateDict[dictkeys[i]] = [];
|
||
var districtItem = districtDict[dictkeys[i]];
|
||
for (var j = 0; j < districtItem.length; j++) {
|
||
var addr = districtItem[j]["address"];
|
||
addr = addr.replace(pattern_addr, "");
|
||
if (addrDict[addr] != null) {
|
||
var item = districtItem[j];
|
||
item["rate"] = addrDict[addr];
|
||
districtRateDict[dictkeys[i]].push(item);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
var dictkeys = Object.keys(districtDict);
|
||
var fig1 = [];
|
||
for (var i = 0; i < dictkeys.length; i++) {
|
||
var key = dictkeys[i];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
if (key == "延庆" || key == "密云")
|
||
name = key + "县";
|
||
item["name"] = name;
|
||
item["value"] = [];
|
||
item["value"].push(districtRateDict[key].length);
|
||
var a = 0;
|
||
var b = 0;
|
||
var c = 0;
|
||
for (var j = 0; j < districtRateDict[key].length; j++) {
|
||
var shopItem = districtRateDict[key][j];
|
||
if (shopItem["rate"].search("A") >= 0)
|
||
a += 1;
|
||
if (shopItem["rate"].search("B") >= 0)
|
||
b += 1;
|
||
if (shopItem["rate"].search("C") >= 0)
|
||
c += 1;
|
||
}
|
||
item["value"].push(a);
|
||
item["value"].push(b);
|
||
item["value"].push(c);
|
||
fig1.push(item);
|
||
}
|
||
var fig2 = [];
|
||
var rateOrderDict = {
|
||
"A1": [],
|
||
"A2": [],
|
||
"A3": [],
|
||
"B1": [],
|
||
"B2": [],
|
||
"B3": [],
|
||
"C1": [],
|
||
"C2": [],
|
||
"C3": []
|
||
};
|
||
var rateSaleDict = {
|
||
"A1": [],
|
||
"A2": [],
|
||
"A3": [],
|
||
"B1": [],
|
||
"B2": [],
|
||
"B3": [],
|
||
"C1": [],
|
||
"C2": [],
|
||
"C3": []
|
||
};
|
||
var districtList = [];
|
||
if (args["district"] == "") {
|
||
districtList = Object.keys(districtRateDict);
|
||
}
|
||
else {
|
||
args["district"] = args["district"].replace("区", "").replace("县", "");
|
||
districtList.push(args["district"]);
|
||
}
|
||
for (var i = 0; i < districtList.length; i++) {
|
||
for (var j = 0; j < districtRateDict[districtList[i]].length; j++) {
|
||
var shopItem = districtRateDict[districtList[i]][j];
|
||
if (rateOrderDict[shopItem["rate"]] == null)
|
||
continue;
|
||
if (rateSaleDict[shopItem["rate"]] == null)
|
||
continue;
|
||
rateOrderDict[shopItem["rate"]].push(shopItem["orderNum"]);
|
||
rateSaleDict[shopItem["rate"]].push(shopItem["saleNum"]);
|
||
}
|
||
}
|
||
var rateList = Object.keys(rateOrderDict);
|
||
for (var i = 0; i < rateList.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = rateList[i];
|
||
item["value"] = rateOrderDict[rateList[i]];
|
||
fig2.push(item);
|
||
}
|
||
var fig3 = []
|
||
for (var i = 0; i < rateList.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = rateList[i];
|
||
item["value"] = rateSaleDict[rateList[i]];
|
||
fig3.push(item);
|
||
}
|
||
var fig4 = {
|
||
};
|
||
var pie1_shop = {
|
||
"A1": 0, "A2": 0, "A3": 0, "B1": 0, "B2": 0, "B3": 0, "C1": 0, "C2": 0, "C3": 0};
|
||
var pie1_order = {
|
||
"A1": 0, "A2": 0, "A3": 0, "B1": 0, "B2": 0, "B3": 0, "C1": 0, "C2": 0, "C3": 0};
|
||
var pie1_sale = {
|
||
"A1": 0, "A2": 0, "A3": 0, "B1": 0, "B2": 0, "B3": 0, "C1": 0, "C2": 0, "C3": 0};
|
||
for (var i = 0; i < districtList.length; i++) {
|
||
for (var j = 0; j < districtRateDict[districtList[i]].length; j++) {
|
||
var shopItem = districtRateDict[districtList[i]][j];
|
||
pie1_shop[shopItem["rate"]] += 1;
|
||
pie1_order[shopItem["rate"]] += shopItem["orderNum"];
|
||
pie1_sale[shopItem["rate"]] += shopItem["saleNum"];
|
||
}
|
||
}
|
||
fig4["shopNum_9"] = [];
|
||
fig4["orderNum_9"] = [];
|
||
fig4["saleNum_9"] = [];
|
||
for (var i = 0; i < rateList.length; i++) {
|
||
fig4["shopNum_9"].push({
|
||
"name": rateList[i], "value": pie1_shop[rateList[i]]}
|
||
);
|
||
fig4["orderNum_9"].push({
|
||
"name": rateList[i], "value": pie1_order[rateList[i]]}
|
||
);
|
||
fig4["saleNum_9"].push({
|
||
"name": rateList[i], "value": pie1_sale[rateList[i]]}
|
||
);
|
||
}
|
||
fig4["shopNum_3"] = [];
|
||
fig4["orderNum_3"] = [];
|
||
fig4["saleNum_3"] = [];
|
||
var nameList = ["A", "B", "C"];
|
||
for (var i = 0; i < 3; i++) {
|
||
var itemShop = {
|
||
"name": nameList[i]};
|
||
var itemOrder = {
|
||
"name": nameList[i]};
|
||
var itemSale = {
|
||
"name": nameList[i]};
|
||
itemShop["value"] = fig4["shopNum_9"][i * 3]["value"] + fig4["shopNum_9"][i * 3 + 1]["value"] + fig4["shopNum_9"][i * 3 + 2]["value"];
|
||
itemOrder["value"] = fig4["orderNum_9"][i * 3]["value"] + fig4["orderNum_9"][i * 3 + 1]["value"] + fig4["orderNum_9"][i * 3 + 2]["value"];
|
||
itemSale["value"] = fig4["saleNum_9"][i * 3]["value"] + fig4["saleNum_9"][i * 3 + 1]["value"] + fig4["saleNum_9"][i * 3 + 2]["value"];
|
||
fig4["shopNum_3"].push(itemShop);
|
||
fig4["orderNum_3"].push(itemOrder);
|
||
fig4["saleNum_3"].push(itemSale);
|
||
}
|
||
var ret = {
|
||
};
|
||
ret["fig1"] = fig1;
|
||
ret["fig2"] = fig2;
|
||
ret["fig3"] = fig3;
|
||
ret["fig4"] = fig4;
|
||
ret["district"] = args["district"];
|
||
return JSON.stringify(ret);
|
||
}
|
||
}
|
||
}
|
||
export function connectDBAndQueryTianjin(args) {
|
||
//{"action":"connectDBAndQueryTianjin", "arg":"{\"type\":\"takeout\",\"detail\":\"overall\",\"district\":\"南开\"}"}
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "takeout") {
|
||
if (this.waimailist_tianjin == null) {
|
||
this.waimailist_tianjin = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"tianjin\",\"formname\":\"match_ele\"}");
|
||
if (this.waimailist_waimai == null) return null;
|
||
}
|
||
var waimailist = this.waimailist_tianjin;
|
||
if (this.districtDict_waimai_tianjin == null) {
|
||
var districtDict = {
|
||
};
|
||
var pattern = /和平|河西|河东|河北|红桥|南开|滨海新/g;
|
||
var pattern_addr = /([^区]{1,})区/g;
|
||
var score_pattern = /(([^)]{1,}))/g;
|
||
for (var i = 0; i < waimailist.length; i++) {
|
||
var addr = waimailist[i]["address"];
|
||
addr = addr.replace("天津", "");
|
||
addr = addr.replace("市", "");
|
||
var district = addr.match(pattern);
|
||
if (district == null)
|
||
continue;
|
||
district = district[0];
|
||
if (district.length > 5)
|
||
continue;
|
||
if (districtDict[district] == null)
|
||
districtDict[district] = [];
|
||
var item = {
|
||
}
|
||
if (waimailist[i]["agentFee"] == null)
|
||
continue;
|
||
var avgPrice = waimailist[i]["agentFee"];
|
||
avgPrice = parseFloat(avgPrice);
|
||
if (waimailist[i]["monthlySalesNum"] == null)
|
||
continue;
|
||
item["orderNum"] = parseInt(waimailist[i]["monthlySalesNum"]);
|
||
item["saleNum"] = item["orderNum"] * avgPrice;
|
||
if (item["saleNum"] == null || item["orderNum"] == null)
|
||
continue;
|
||
if (!(item["saleNum"] > 0 && item["saleNum"] <= 5000000))
|
||
continue;
|
||
if (waimailist[i]["overallRating"] == null)
|
||
continue;
|
||
item["score"] = waimailist[i]["overallRating"];
|
||
item["shopName"] = waimailist[i]["shopName"];
|
||
item["address"] = waimailist[i]["address"].replace(pattern_addr, "");
|
||
;
|
||
item["rate"] = waimailist[i]["score"].replace(score_pattern, "")
|
||
districtDict[district].push(item);
|
||
}
|
||
this.districtDict_waimai_tianjin = districtDict;
|
||
}
|
||
districtDict = this.districtDict_waimai_tianjin;
|
||
// 获取天津市互联网餐饮活跃地图数据
|
||
var dictkeys = Object.keys(districtDict);
|
||
// fig1 获取天津市互联网餐饮活跃地图数据
|
||
var fig1 = [];
|
||
// 两个循环用于获取每一个区的优良中差数据
|
||
for (var i = 0; i < dictkeys.length; i++) {
|
||
var key = dictkeys[i];
|
||
var item = {
|
||
};
|
||
var name = key + "区";
|
||
item["name"] = name;
|
||
item["value"] = {
|
||
"all": districtDict[key].length, "优秀": 0, "良好": 0, "一般": 0, "不合格": 0};
|
||
item["unqualified_shop_list"] = [];
|
||
for (var j = 0; j < districtDict[key].length; j++) {
|
||
var shopItem = districtDict[key][j];
|
||
if (shopItem["rate"].search("一般") >= 0)
|
||
item["value"]["一般"] += 1;
|
||
if (shopItem["rate"].search("良好") >= 0)
|
||
item["value"]["良好"] += 1;
|
||
if (shopItem["rate"].search("不合格") >= 0){
|
||
item["value"]["不合格"] += 1;
|
||
var shop_unqualified = {
|
||
};
|
||
shop_unqualified["shopName"] = shopItem["shopName"];
|
||
shop_unqualified["address"] = shopItem["address"];
|
||
shop_unqualified["score"] = shopItem["score"];
|
||
item["unqualified_shop_list"].push(shop_unqualified);
|
||
}
|
||
if (shopItem["rate"].search("优秀") >= 0)
|
||
item["value"]["优秀"] += 1;
|
||
}
|
||
fig1.push(item);
|
||
}
|
||
var fig2 = [];
|
||
var rateOrderDict = {
|
||
"优秀": [], "良好": [], "一般": [], "不合格": []};
|
||
var rateSaleDict = {
|
||
"优秀": [], "良好": [], "一般": [], "不合格": []};
|
||
var districtList = [];
|
||
if (args["district"] == "") {
|
||
districtList = Object.keys(districtDict);
|
||
}
|
||
else {
|
||
args["district"] = args["district"].replace("区", "").replace("县", "");
|
||
districtList.push(args["district"]);
|
||
}
|
||
for (var i = 0; i < districtList.length; i++) {
|
||
for (var j = 0; j < districtDict[districtList[i]].length; j++) {
|
||
var shopItem = districtDict[districtList[i]][j];
|
||
if (rateOrderDict[shopItem["rate"]] == null)
|
||
continue;
|
||
if (rateSaleDict[shopItem["rate"]] == null)
|
||
continue;
|
||
rateOrderDict[shopItem["rate"]].push(shopItem["orderNum"]);
|
||
rateSaleDict[shopItem["rate"]].push(shopItem["saleNum"]);
|
||
}
|
||
}
|
||
var rateList = Object.keys(rateOrderDict);
|
||
for (var i = 0; i < rateList.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = rateList[i];
|
||
item["value"] = rateOrderDict[rateList[i]];
|
||
fig2.push(item);
|
||
}
|
||
var fig3 = []
|
||
for (var i = 0; i < rateList.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = rateList[i];
|
||
item["value"] = rateSaleDict[rateList[i]];
|
||
fig3.push(item);
|
||
}
|
||
var fig4 = {
|
||
};
|
||
var pie1_shop = {
|
||
"优秀": 0, "良好": 0, "一般": 0, "不合格": 0};
|
||
var pie1_order = {
|
||
"优秀": 0, "良好": 0, "一般": 0, "不合格": 0};
|
||
var pie1_sale = {
|
||
"优秀": 0, "良好": 0, "一般": 0, "不合格": 0};
|
||
for (var i = 0; i < districtList.length; i++) {
|
||
for (var j = 0; j < districtDict[districtList[i]].length; j++) {
|
||
var shopItem = districtDict[districtList[i]][j];
|
||
pie1_shop[shopItem["rate"]] += 1;
|
||
pie1_order[shopItem["rate"]] += shopItem["orderNum"];
|
||
pie1_sale[shopItem["rate"]] += shopItem["saleNum"];
|
||
}
|
||
}
|
||
fig4["shopNum"] = [];
|
||
fig4["orderNum"] = [];
|
||
fig4["saleNum"] = [];
|
||
for (var i = 0; i < rateList.length; i++) {
|
||
fig4["shopNum"].push({
|
||
"name": rateList[i], "value": pie1_shop[rateList[i]]}
|
||
);
|
||
fig4["orderNum"].push({
|
||
"name": rateList[i], "value": pie1_order[rateList[i]]}
|
||
);
|
||
fig4["saleNum"].push({
|
||
"name": rateList[i], "value": pie1_sale[rateList[i]]}
|
||
);
|
||
}
|
||
var fig5 = [];
|
||
var dictkeys = Object.keys(districtDict);
|
||
for (var j = 0; j < dictkeys.length; j++) {
|
||
var key = dictkeys[j];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
item["name"] = name;
|
||
item["value"] = [];
|
||
item["value"].push(districtDict[key].length);
|
||
var wholeOrder = 0;
|
||
var wholeSale = 0;
|
||
for (var i = 0; i < districtDict[key].length; i++) {
|
||
if (districtDict[key][i]["orderNum"] == null || districtDict[key][i]["saleNum"] == null)
|
||
continue;
|
||
wholeOrder += districtDict[key][i]["orderNum"];
|
||
wholeSale += districtDict[key][i]["saleNum"];
|
||
}
|
||
item["value"].push(wholeOrder);
|
||
item["value"].push(wholeSale);
|
||
fig5.push(item);
|
||
}
|
||
var ret = {
|
||
};
|
||
ret["fig1"] = fig1;
|
||
ret["fig2"] = fig2;
|
||
ret["fig3"] = fig3;
|
||
ret["fig4"] = fig4;
|
||
ret["fig5"] = fig5;
|
||
ret["district"] = args["district"];
|
||
return JSON.stringify(ret);
|
||
}
|
||
else return null;
|
||
}
|
||
export function connectDBAndQueryHouse(args) {
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "house") {
|
||
if (this.ret_ershou != null && this.ret_ershou[args["district"]] != null)
|
||
return JSON.stringify(this.ret_ershou[args["district"]]);
|
||
if (this.districtDict_ershou == null || this.houselist_ershou == null) {
|
||
var houselist = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"HouseSale\",\"formname\":\"ershoufang\"}");
|
||
var districtDict = {
|
||
};
|
||
var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g;
|
||
for (var i = 0; i < houselist.length; i++) {
|
||
var addr = houselist[i]["district"];
|
||
var district = addr.match(pattern);
|
||
if (district == null)
|
||
continue;
|
||
district = district[0];
|
||
if (district.length > 5)
|
||
continue;
|
||
if (districtDict[district] == null)
|
||
districtDict[district] = [];
|
||
var item = {
|
||
}
|
||
if (houselist[i]["unitPrice"] == null || houselist[i]["totalPrice"] == null)
|
||
continue;
|
||
if (houselist[i]["roomNum"] == null || houselist[i]["area"] == null)
|
||
continue;
|
||
var unitPrice = houselist[i]["unitPrice"].replace("元", "").replace("/平", "");
|
||
unitPrice = parseInt(unitPrice);
|
||
var totalPrice = houselist[i]["totalPrice"].replace("万", "");
|
||
totalPrice = parseInt(totalPrice);
|
||
houselist[i]["totalPrice"] = totalPrice;
|
||
houselist[i]["unitPrice"] = unitPrice;
|
||
item["unitPrice"] = unitPrice;
|
||
item["totalPrice"] = totalPrice;
|
||
item["roomNum"] = houselist[i]["roomNum"];
|
||
item["area"] = parseInt(houselist[i]["area"].replace("m²", ""));
|
||
houselist[i]["area"] = item["area"];
|
||
item["district"] = houselist[i]["district"];
|
||
item["bussiness"] = houselist[i]["bussiness"];
|
||
districtDict[district].push(item);
|
||
}
|
||
this.districtDict_ershou = districtDict;
|
||
this.houselist_ershou = houselist;
|
||
}
|
||
var districtDict = this.districtDict_ershou;
|
||
var houselist = this.houselist_ershou;
|
||
var districtkeys = Object.keys(districtDict);
|
||
var fig1 = [];
|
||
for (var j = 0; j < districtkeys.length; j++) {
|
||
var key = districtkeys[j];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
if (key == "延庆" || key == "密云")
|
||
name = key + "县";
|
||
item["name"] = name;
|
||
item["value"] = {
|
||
};
|
||
item["value"]["num"] = districtDict[key].length;
|
||
var sumPrice = 0;
|
||
for (var i = 0; i < districtDict[key].length; i++) {
|
||
if (districtDict[key][i]["unitPrice"] >= 0 && districtDict[key][i]["unitPrice"] <= 10000000)
|
||
sumPrice += districtDict[key][i]["unitPrice"];
|
||
}
|
||
var avgPrice = sumPrice / districtDict[key].length;
|
||
item["value"]["avgPrice"] = avgPrice.toFixed(2);
|
||
fig1.push(item);
|
||
}
|
||
if (args["district"] != "" && districtDict[args["district"]] != null)
|
||
houselist = districtDict[args["district"]];
|
||
var fig2 = [];
|
||
var priceInterval = ["200万以下", "200-300万", "300-500万", "500-700万", "700-1000万", "1000万以上"];
|
||
var houseNum = [0, 0, 0, 0, 0, 0];
|
||
for (var i = 0; i < houselist.length; i++) {
|
||
if (houselist[i]["totalPrice"] < 200) {
|
||
houseNum[0] += 1;
|
||
}
|
||
if (houselist[i]["totalPrice"] >= 200 && houselist[i]["totalPrice"] < 300) {
|
||
houseNum[1] += 1;
|
||
}
|
||
if (houselist[i]["totalPrice"] >= 300 && houselist[i]["totalPrice"] < 500) {
|
||
houseNum[2] += 1;
|
||
}
|
||
if (houselist[i]["totalPrice"] >= 500 && houselist[i]["totalPrice"] < 700) {
|
||
houseNum[3] += 1;
|
||
}
|
||
if (houselist[i]["totalPrice"] >= 700 && houselist[i]["totalPrice"] < 1000) {
|
||
houseNum[4] += 1;
|
||
}
|
||
if (houselist[i]["totalPrice"] >= 1000) {
|
||
houseNum[5] += 1;
|
||
}
|
||
}
|
||
var cnt = 0;
|
||
for (var i = 0; i < 6; i++) {
|
||
var item = {
|
||
};
|
||
cnt += houseNum[i];
|
||
item["name"] = priceInterval[i];
|
||
item["value"] = cnt;
|
||
fig2.push(item);
|
||
}
|
||
var fig3 = [];
|
||
var areaNumDict = {
|
||
};
|
||
var areaPriceDict = {
|
||
};
|
||
for (var i = 0; i < houselist.length; i++) {
|
||
var area = houselist[i]["bussiness"];
|
||
if (areaNumDict[area] == null) {
|
||
areaNumDict[area] = 0;
|
||
areaPriceDict[area] = 0;
|
||
}
|
||
if (!(houselist[i]["unitPrice"] >= 0 && houselist[i]["unitPrice"] < 10000000))
|
||
continue;
|
||
areaNumDict[area] += 1;
|
||
areaPriceDict[area] += houselist[i]["unitPrice"];
|
||
}
|
||
var areaKeys = Object.keys(areaNumDict);
|
||
var tmpList = [];
|
||
var desc = function (x, y) {
|
||
return (x["value"] < y["value"]) ? 1 : -1;
|
||
}
|
||
for (var i = 0; i < areaKeys.length; i++) {
|
||
var item = {
|
||
"name": areaKeys[i]};
|
||
item["value"] = areaNumDict[areaKeys[i]];
|
||
if (item["value"] >= 0 && item["value"] < 10000000000)
|
||
tmpList.push(item);
|
||
}
|
||
tmpList.sort(desc);
|
||
var len = tmpList.length;
|
||
if (len > 50) len = 50;
|
||
for (var i = 0; i < len; i++) {
|
||
fig3.push(tmpList[i]);
|
||
}
|
||
var fig4 = [];
|
||
var roomTypeName = ["一居", "二居", "三居", "四居及以上"];
|
||
var areaSizeName = ["50m2以下", "50-80m2", "80-110m2", "110-150m2", "150m2以上"];
|
||
var unitPriceName = ["<1w", "1-2w", "2-3w", "3-4w", "4-5w", "5-6w", "6-7w", "7-8w", "8-9w", "9-10w", ">10w"];
|
||
var totalPriceName = ["200万以下", "200-300万", "300-500万", "500-700万", "700-1000万", "1000万以上"];
|
||
for (var k = 0; k < districtkeys.length; k++) {
|
||
var district = districtkeys[k];
|
||
var districtItem = {
|
||
"name": district};
|
||
districtItem["value"] = {
|
||
"roomType": [], "areaSize": [], "unitPrice": [], "totalPrice": []};
|
||
var roomTypeNum = [0, 0, 0, 0];
|
||
var areaSizeNum = [0, 0, 0, 0, 0];
|
||
var unitPriceNum = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
||
var totalPriceNum = [0, 0, 0, 0, 0, 0];
|
||
for (var j = 0; j < districtDict[district].length; j++) {
|
||
var house = districtDict[district][j];
|
||
var flag = false;
|
||
if (house["roomNum"].match("1室") != null) {
|
||
roomTypeNum[0] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("2室") != null) {
|
||
roomTypeNum[1] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("3室") != null) {
|
||
roomTypeNum[2] += 1;
|
||
flag = true;
|
||
}
|
||
if (flag == false) {
|
||
roomTypeNum[3] += 1;
|
||
}
|
||
if (house["area"] < 50)
|
||
areaSizeNum[0] += 1;
|
||
if (house["area"] >= 50 && house["area"] < 80)
|
||
areaSizeNum[1] += 1;
|
||
if (house["area"] >= 80 && house["area"] < 110)
|
||
areaSizeNum[2] += 1;
|
||
if (house["area"] >= 110 && house["area"] < 150)
|
||
areaSizeNum[3] += 1;
|
||
if (house["area"] >= 150)
|
||
areaSizeNum[4] += 1;
|
||
var idx = parseInt(house["unitPrice"] / 10000);
|
||
if (idx > 10)
|
||
idx = 10;
|
||
unitPriceNum[idx] += 1;
|
||
if (house["totalPrice"] < 200)
|
||
totalPriceNum[0] += 1;
|
||
if (house["totalPrice"] >= 200 && house["totalPrice"] < 300)
|
||
totalPriceNum[1] += 1;
|
||
if (house["totalPrice"] >= 300 && house["totalPrice"] < 500)
|
||
totalPriceNum[2] += 1;
|
||
if (house["totalPrice"] >= 500 && house["totalPrice"] < 700)
|
||
totalPriceNum[3] += 1;
|
||
if (house["totalPrice"] >= 700 && house["totalPrice"] < 1000)
|
||
totalPriceNum[4] += 1;
|
||
if (house["totalPrice"] >= 100)
|
||
totalPriceNum[5] += 1;
|
||
}
|
||
for (var i = 0; i < 4; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = roomTypeName[i];
|
||
item["value"] = roomTypeNum[i];
|
||
districtItem["value"]["roomType"].push(item);
|
||
}
|
||
for (var i = 0; i < 5; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = areaSizeName[i];
|
||
item["value"] = areaSizeNum[i];
|
||
districtItem["value"]["areaSize"].push(item);
|
||
}
|
||
for (var i = 0; i < 11; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = unitPriceName[i];
|
||
item["value"] = unitPriceNum[i];
|
||
districtItem["value"]["unitPrice"].push(item);
|
||
}
|
||
for (var i = 0; i < 6; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = totalPriceName[i];
|
||
item["value"] = totalPriceNum[i];
|
||
districtItem["value"]["totalPrice"].push(item);
|
||
}
|
||
fig4.push(districtItem);
|
||
}
|
||
var ret = {
|
||
};
|
||
ret["fig1"] = fig1;
|
||
ret["fig2"] = fig2;
|
||
ret["fig3"] = fig3;
|
||
ret["fig4"] = fig4;
|
||
if (this.ret_ershou == null)
|
||
this.ret_ershou = {
|
||
}
|
||
if (this.ret_ershou[args["district"]] == null)
|
||
this.ret_ershou[args["district"]] = ret;
|
||
return JSON.stringify(ret);
|
||
}
|
||
else
|
||
return null;
|
||
}
|
||
export function connectDBAndQueryZufang(args) {
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "zufang") {
|
||
if (this.ret_zufang != null && this.ret_zufang[args["district"]] != null) {
|
||
print("find!");
|
||
return JSON.stringify(this.ret_zufang[args["district"]]);
|
||
}
|
||
if (this.houselist_zufang == null || this.districtDict_zufang == null || this.bussinessDict_zufang == null) {
|
||
this.houselist_zufang = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"HouseSale\",\"formname\":\"zufang\"}")
|
||
var houselist = this.houselist_zufang;
|
||
var districtDict = {
|
||
};
|
||
var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g;
|
||
var bussinessDict2 = {
|
||
};
|
||
for (var i = 0; i < houselist.length; i++) {
|
||
var addr = houselist[i]["district"];
|
||
var district = addr.match(pattern);
|
||
if (district == null)
|
||
continue;
|
||
district = district[0];
|
||
if (district.length > 5)
|
||
continue;
|
||
if (districtDict[district] == null)
|
||
districtDict[district] = [];
|
||
if (bussinessDict2[district] == null)
|
||
bussinessDict2[district] = {
|
||
};
|
||
var buss = houselist[i]["bussiness"];
|
||
if (bussinessDict2[district][buss] == null)
|
||
bussinessDict2[district][buss] = [];
|
||
var item = {
|
||
}
|
||
if (houselist[i]["price"] == null || houselist[i]["area"] == null)
|
||
continue;
|
||
if (houselist[i]["roomNum"] == null)
|
||
continue;
|
||
var unitPrice = houselist[i]["price"].replace("元", "").replace("/月", "");
|
||
unitPrice = parseInt(unitPrice);
|
||
houselist[i]["price"] = unitPrice;
|
||
item["price"] = unitPrice;
|
||
item["roomNum"] = houselist[i]["roomNum"];
|
||
item["area"] = parseInt(houselist[i]["area"].replace("m²", ""));
|
||
houselist[i]["area"] = item["area"];
|
||
item["district"] = houselist[i]["district"];
|
||
item["bussiness"] = houselist[i]["bussiness"];
|
||
districtDict[district].push(item);
|
||
bussinessDict2[district][buss].push(item);
|
||
}
|
||
districtDict["延庆"] = [];
|
||
districtDict["怀柔"] = [];
|
||
districtDict["密云"] = [];
|
||
bussinessDict2["延庆"] = {
|
||
};
|
||
bussinessDict2["怀柔"] = {
|
||
};
|
||
bussinessDict2["密云"] = {
|
||
};
|
||
this.districtDict_zufang = districtDict;
|
||
var districtnames = Object.keys(districtDict);
|
||
var bussinessDict = {
|
||
};
|
||
for (var i = 0; i < districtnames.length; i++) {
|
||
var district = districtnames[i];
|
||
bussinessDict[district] = {
|
||
};
|
||
var desc = function (a, b) {
|
||
return (bussinessDict2[district][a].length < bussinessDict2[district][b].length) ? 1 : -1;
|
||
};
|
||
var bussnames = (Object.keys(bussinessDict2[district])).sort(desc);
|
||
var len = bussnames.length;
|
||
if (len > 20)
|
||
len = 20;
|
||
for (j = 0; j < len; j++) {
|
||
bussinessDict[district][bussnames[j]] = bussinessDict2[district][bussnames[j]];
|
||
}
|
||
}
|
||
this.bussinessDict_zufang = bussinessDict;
|
||
}
|
||
var houselist = this.houselist_zufang;
|
||
var districtDict = this.districtDict_zufang;
|
||
var bussinessDict = this.bussinessDict_zufang;
|
||
var districtkeys = Object.keys(districtDict);
|
||
var fig1 = [];
|
||
for (var j = 0; j < districtkeys.length; j++) {
|
||
var key = districtkeys[j];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
if (key == "延庆" || key == "密云")
|
||
name = key + "县";
|
||
item["name"] = name;
|
||
item["value"] = {
|
||
};
|
||
item["value"]["num"] = districtDict[key].length;
|
||
var sumPrice = 0;
|
||
for (var i = 0; i < districtDict[key].length; i++) {
|
||
if (districtDict[key][i]["price"] >= 0 && districtDict[key][i]["price"] <= 10000000)
|
||
sumPrice += districtDict[key][i]["price"];
|
||
}
|
||
var avgPrice = 0;
|
||
if (districtDict[key].length > 0) {
|
||
avgPrice = sumPrice / districtDict[key].length;
|
||
}
|
||
item["value"]["avgPrice"] = avgPrice.toFixed(2);
|
||
fig1.push(item);
|
||
}
|
||
var houselist2 = houselist;
|
||
if (args["district"] != "" && districtDict[args["district"]] != null) {
|
||
houselist2 = districtDict[args["district"]];
|
||
}
|
||
var fig2 = [];
|
||
var priceInterval = ["<1500", "1500-2500", "2500-3500", "3500-5000", "5000-8000", "8000-10000", ">10000"];
|
||
var houseNum = [0, 0, 0, 0, 0, 0, 0];
|
||
for (var i = 0; i < houselist2.length; i++) {
|
||
if (houselist2[i]["price"] < 1500) {
|
||
houseNum[0] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 1500 && houselist2[i]["price"] < 2500) {
|
||
houseNum[1] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 2500 && houselist2[i]["price"] < 3500) {
|
||
houseNum[2] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 3500 && houselist2[i]["price"] < 5000) {
|
||
houseNum[3] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 5000 && houselist2[i]["price"] < 8000) {
|
||
houseNum[4] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 8000 && houselist2[i]["price"] < 10000) {
|
||
houseNum[5] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 10000) {
|
||
houseNum[6] += 1;
|
||
}
|
||
}
|
||
var cnt = 0;
|
||
for (var i = 0; i < priceInterval.length; i++) {
|
||
var item = {
|
||
};
|
||
cnt += houseNum[i];
|
||
item["name"] = priceInterval[i];
|
||
item["value"] = cnt;
|
||
fig2.push(item);
|
||
}
|
||
var districtDict2 = districtDict;
|
||
if (args["district"] != "" && districtDict[args["district"]] != null) {
|
||
districtDict2 = bussinessDict[args["district"]];
|
||
districtkeys = Object.keys(bussinessDict[args["district"]]);
|
||
}
|
||
var fig3 = [];
|
||
var tmpList = [];
|
||
var desc = function (x, y) {
|
||
return (x["value"] < y["value"]) ? 1 : -1;
|
||
}
|
||
for (var i = 0; i < districtkeys.length; i++) {
|
||
var item = {
|
||
"name": districtkeys[i]};
|
||
item["value"] = districtDict2[districtkeys[i]].length;
|
||
if (item["value"] >= 0 && item["value"] < 10000000000)
|
||
tmpList.push(item);
|
||
}
|
||
tmpList.sort(desc);
|
||
var len = tmpList.length;
|
||
if (len > 50) len = 50;
|
||
for (var i = 0; i < len; i++) {
|
||
fig3.push(tmpList[i]);
|
||
}
|
||
var fig4 = [];
|
||
var roomTypeName = ["一居", "二居", "三居", "四居及以上"];
|
||
var areaSizeName = ["20m2以下", "20-50m2", "50-80m2", "80-110m2", "110-150m2", "150m2以上"];
|
||
var priceName = ["<1500", "1500-2500", "2500-3500", "3500-5000", "5000-8000", "8000-10000", ">10000"];
|
||
for (var k = 0; k < districtkeys.length; k++) {
|
||
var district = districtkeys[k];
|
||
var districtItem = {
|
||
"name": district};
|
||
districtItem["value"] = {
|
||
"roomType": [], "areaSize": [], "price": []};
|
||
var roomTypeNum = [0, 0, 0, 0];
|
||
var areaSizeNum = [0, 0, 0, 0, 0, 0];
|
||
var priceNum = [0, 0, 0, 0, 0, 0, 0];
|
||
for (var j = 0; j < districtDict2[district].length; j++) {
|
||
var house = districtDict2[district][j];
|
||
var flag = false;
|
||
if (house["roomNum"].match("1室") != null) {
|
||
roomTypeNum[0] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("2室") != null) {
|
||
roomTypeNum[1] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("3室") != null) {
|
||
roomTypeNum[2] += 1;
|
||
flag = true;
|
||
}
|
||
if (flag == false) {
|
||
roomTypeNum[3] += 1;
|
||
}
|
||
if (house["area"] < 20)
|
||
areaSizeNum[0] += 1;
|
||
if (house["area"] >= 20 && house["area"] < 50)
|
||
areaSizeNum[1] += 1;
|
||
if (house["area"] >= 50 && house["area"] < 80)
|
||
areaSizeNum[2] += 1;
|
||
if (house["area"] >= 80 && house["area"] < 110)
|
||
areaSizeNum[3] += 1;
|
||
if (house["area"] >= 110 && house["area"] < 150)
|
||
areaSizeNum[4] += 1;
|
||
if (house["area"] >= 150)
|
||
areaSizeNum[5] += 1;
|
||
if (house["price"] < 1500)
|
||
priceNum[0] += 1;
|
||
if (house["price"] >= 1500 && house["price"] < 2500)
|
||
priceNum[1] += 1;
|
||
if (house["price"] >= 2500 && house["price"] < 3500)
|
||
priceNum[2] += 1;
|
||
if (house["price"] >= 3500 && house["price"] < 5000)
|
||
priceNum[3] += 1;
|
||
if (house["price"] >= 5000 && house["price"] < 8000)
|
||
priceNum[4] += 1;
|
||
if (house["price"] >= 8000 && house["price"] < 10000)
|
||
priceNum[5] += 1;
|
||
if (house["price"] >= 10000)
|
||
priceNum[6] += 1;
|
||
}
|
||
for (var i = 0; i < roomTypeName.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = roomTypeName[i];
|
||
item["value"] = roomTypeNum[i];
|
||
districtItem["value"]["roomType"].push(item);
|
||
}
|
||
for (var i = 0; i < areaSizeName.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = areaSizeName[i];
|
||
item["value"] = areaSizeNum[i];
|
||
districtItem["value"]["areaSize"].push(item);
|
||
}
|
||
for (var i = 0; i < priceNum.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = priceName[i];
|
||
item["value"] = priceNum[i];
|
||
districtItem["value"]["price"].push(item);
|
||
}
|
||
fig4.push(districtItem);
|
||
}
|
||
if (this.ret_zufang == null)
|
||
this.ret_zufang = {
|
||
};
|
||
var res = {
|
||
};
|
||
res["fig1"] = fig1;
|
||
res["fig2"] = fig2;
|
||
res["fig3"] = fig3;
|
||
res["fig4"] = fig4;
|
||
if (this.ret_zufang[args["district"]] == null)
|
||
this.ret_zufang[args["district"]] = res;
|
||
return JSON.stringify(res);
|
||
}
|
||
else
|
||
return null;
|
||
}
|
||
export function connectDBAndQueryChengjiao(args) {
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "chengjiao") {
|
||
//TODO change!
|
||
if (this.ret_chengjiao != null && this.ret_chengjiao[args["district"]] != null) {
|
||
print("find!");
|
||
return JSON.stringify(this.ret_chengjiao[args["district"]]);
|
||
}
|
||
if (this.houselist_chengjiao == null || this.districtDict_chengjiao == null || this.bussinessDict_chengjiao == null) {
|
||
this.houselist_chengjiao = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"HouseSale\",\"formname\":\"chengjiao\"}")
|
||
var houselist = this.houselist_chengjiao;
|
||
var districtDict = {
|
||
};
|
||
var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g;
|
||
var bussinessDict2 = {
|
||
};
|
||
for (var i = 0; i < houselist.length; i++) {
|
||
var addr = houselist[i]["district"];
|
||
var district = addr.match(pattern);
|
||
if (district == null)
|
||
continue;
|
||
district = district[0];
|
||
if (district.length > 5)
|
||
continue;
|
||
if (districtDict[district] == null)
|
||
districtDict[district] = [];
|
||
if (bussinessDict2[district] == null)
|
||
bussinessDict2[district] = {
|
||
};
|
||
var buss = houselist[i]["bussiness"];
|
||
if (bussinessDict2[district][buss] == null)
|
||
bussinessDict2[district][buss] = [];
|
||
var item = {
|
||
}
|
||
if (houselist[i]["price"] == null || houselist[i]["area"] == null)
|
||
continue;
|
||
if (houselist[i]["roomNum"] == null)
|
||
continue;
|
||
var unitPrice = houselist[i]["price"].replace("挂牌", "").replace("万", "");
|
||
unitPrice = parseInt(unitPrice);
|
||
houselist[i]["price"] = unitPrice;
|
||
item["price"] = unitPrice;
|
||
item["roomNum"] = houselist[i]["roomNum"];
|
||
item["area"] = parseInt(houselist[i]["area"].replace("平米", ""));
|
||
houselist[i]["area"] = item["area"];
|
||
item["district"] = houselist[i]["district"];
|
||
item["bussiness"] = houselist[i]["bussiness"];
|
||
item["buildingAge"] = houselist[i]["buildingAge"].replace("塔结合", "").replace("年建板", "").replace("楼", "");
|
||
districtDict[district].push(item);
|
||
bussinessDict2[district][buss].push(item);
|
||
}
|
||
districtDict["延庆"] = [];
|
||
districtDict["怀柔"] = [];
|
||
bussinessDict2["延庆"] = {
|
||
};
|
||
bussinessDict2["怀柔"] = {
|
||
};
|
||
this.districtDict_chengjiao = districtDict;
|
||
var districtnames = Object.keys(districtDict);
|
||
var bussinessDict = {
|
||
};
|
||
for (var i = 0; i < districtnames.length; i++) {
|
||
var district = districtnames[i];
|
||
bussinessDict[district] = {
|
||
};
|
||
var desc = function (a, b) {
|
||
return (bussinessDict2[district][a].length < bussinessDict2[district][b].length) ? 1 : -1;
|
||
};
|
||
var bussnames = (Object.keys(bussinessDict2[district])).sort(desc);
|
||
var len = bussnames.length;
|
||
if (len > 20)
|
||
len = 20;
|
||
for (j = 0; j < len; j++) {
|
||
bussinessDict[district][bussnames[j]] = bussinessDict2[district][bussnames[j]];
|
||
}
|
||
}
|
||
this.bussinessDict_chengjiao = bussinessDict;
|
||
}
|
||
var houselist = this.houselist_chengjiao;
|
||
var districtDict = this.districtDict_chengjiao;
|
||
var bussinessDict = this.bussinessDict_chengjiao;
|
||
var districtkeys = Object.keys(districtDict);
|
||
var fig1 = [];
|
||
for (var j = 0; j < districtkeys.length; j++) {
|
||
var key = districtkeys[j];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
if (key == "延庆" || key == "密云")
|
||
name = key + "县";
|
||
item["name"] = name;
|
||
item["value"] = {
|
||
};
|
||
item["value"]["num"] = districtDict[key].length;
|
||
var sumPrice = 0;
|
||
for (var i = 0; i < districtDict[key].length; i++) {
|
||
if (districtDict[key][i]["price"] >= 0 && districtDict[key][i]["price"] <= 10000000)
|
||
sumPrice += districtDict[key][i]["price"];
|
||
}
|
||
var avgPrice = 0;
|
||
if (districtDict[key].length > 0) {
|
||
avgPrice = sumPrice / districtDict[key].length;
|
||
}
|
||
item["value"]["avgPrice"] = avgPrice.toFixed(2);
|
||
fig1.push(item);
|
||
}
|
||
var houselist2 = houselist;
|
||
if (args["district"] != "" && districtDict[args["district"]] != null) {
|
||
houselist2 = districtDict[args["district"]];
|
||
}
|
||
var fig2 = [];
|
||
var priceInterval = ["<200w", "200-400w", "400-600w", "600-800w", "800-1000w", ">1000w"];
|
||
var houseNum = [0, 0, 0, 0, 0, 0, 0];
|
||
for (var i = 0; i < houselist2.length; i++) {
|
||
if (houselist2[i]["price"] < 200) {
|
||
houseNum[0] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 200 && houselist2[i]["price"] < 400) {
|
||
houseNum[1] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 400 && houselist2[i]["price"] < 600) {
|
||
houseNum[2] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 600 && houselist2[i]["price"] < 800) {
|
||
houseNum[3] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 800 && houselist2[i]["price"] < 1000) {
|
||
houseNum[4] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 1000) {
|
||
houseNum[5] += 1;
|
||
}
|
||
}
|
||
var cnt = 0;
|
||
for (var i = 0; i < priceInterval.length; i++) {
|
||
var item = {
|
||
};
|
||
cnt += houseNum[i];
|
||
item["name"] = priceInterval[i];
|
||
item["value"] = cnt;
|
||
fig2.push(item);
|
||
}
|
||
var districtDict2 = districtDict;
|
||
if (args["district"] != "" && districtDict[args["district"]] != null) {
|
||
districtDict2 = bussinessDict[args["district"]];
|
||
districtkeys = Object.keys(bussinessDict[args["district"]]);
|
||
}
|
||
var fig3 = [];
|
||
var tmpList = [];
|
||
var desc = function (x, y) {
|
||
return (x["value"] < y["value"]) ? 1 : -1;
|
||
}
|
||
for (var i = 0; i < districtkeys.length; i++) {
|
||
var item = {
|
||
"name": districtkeys[i]};
|
||
item["value"] = districtDict2[districtkeys[i]].length;
|
||
if (item["value"] >= 0 && item["value"] < 10000000000)
|
||
tmpList.push(item);
|
||
}
|
||
tmpList.sort(desc);
|
||
var len = tmpList.length;
|
||
if (len > 50) len = 50;
|
||
for (var i = 0; i < len; i++) {
|
||
fig3.push(tmpList[i]);
|
||
}
|
||
var fig4 = [];
|
||
var roomTypeName = ["一居", "二居", "三居", "四居及以上"];
|
||
var areaSizeName = ["50m2以下", "50-80m2", "80-110m2", "110-150m2", "150-300m2", ">300m2"];
|
||
var priceName = ["<200w", "200-400w", "400-600w", "600-800w", "800-1000w", ">1000w"];
|
||
var yearName = ["<5年", "5-10年", "10-15年", "15-20年", "20-30年", ">30年"];
|
||
for (var k = 0; k < districtkeys.length; k++) {
|
||
var district = districtkeys[k];
|
||
var districtItem = {
|
||
"name": district};
|
||
districtItem["value"] = {
|
||
"roomType": [], "areaSize": [], "price": [], "age": []};
|
||
var roomTypeNum = [0, 0, 0, 0];
|
||
var areaSizeNum = [0, 0, 0, 0, 0, 0];
|
||
var priceNum = [0, 0, 0, 0, 0, 0];
|
||
var yearNum = [0, 0, 0, 0, 0, 0];
|
||
for (var j = 0; j < districtDict2[district].length; j++) {
|
||
var house = districtDict2[district][j];
|
||
var flag = false;
|
||
if (house["roomNum"].match("1室") != null) {
|
||
roomTypeNum[0] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("2室") != null) {
|
||
roomTypeNum[1] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("3室") != null) {
|
||
roomTypeNum[2] += 1;
|
||
flag = true;
|
||
}
|
||
if (flag == false) {
|
||
roomTypeNum[3] += 1;
|
||
}
|
||
if (house["area"] < 50)
|
||
areaSizeNum[0] += 1;
|
||
if (house["area"] >= 50 && house["area"] < 80)
|
||
areaSizeNum[1] += 1;
|
||
if (house["area"] >= 80 && house["area"] < 110)
|
||
areaSizeNum[2] += 1;
|
||
if (house["area"] >= 110 && house["area"] < 150)
|
||
areaSizeNum[3] += 1;
|
||
if (house["area"] >= 150 && house["area"] < 300)
|
||
areaSizeNum[4] += 1;
|
||
if (house["area"] >= 300)
|
||
areaSizeNum[5] += 1;
|
||
if (house["price"] < 200)
|
||
priceNum[0] += 1;
|
||
if (house["price"] >= 200 && house["price"] < 400)
|
||
priceNum[1] += 1;
|
||
if (house["price"] >= 400 && house["price"] < 800)
|
||
priceNum[2] += 1;
|
||
if (house["price"] >= 800 && house["price"] < 1000)
|
||
priceNum[3] += 1;
|
||
if (house["price"] >= 1000)
|
||
priceNum[4] += 1;
|
||
var age = 2019 - house["buildingAge"];
|
||
if (age < 5)
|
||
yearNum[0] += 1;
|
||
if (age >= 5 && age < 10)
|
||
yearNum[1] += 1;
|
||
if (age >= 10 && age < 15)
|
||
yearNum[2] += 1;
|
||
if (age >= 15 && age < 20)
|
||
yearNum[3] += 1;
|
||
if (age >= 20 && age < 30)
|
||
yearNum[4] += 1;
|
||
if (age >= 30)
|
||
yearNum[5] += 1;
|
||
}
|
||
for (var i = 0; i < roomTypeName.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = roomTypeName[i];
|
||
item["value"] = roomTypeNum[i];
|
||
districtItem["value"]["roomType"].push(item);
|
||
}
|
||
for (var i = 0; i < areaSizeName.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = areaSizeName[i];
|
||
item["value"] = areaSizeNum[i];
|
||
districtItem["value"]["areaSize"].push(item);
|
||
}
|
||
for (var i = 0; i < priceNum.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = priceName[i];
|
||
item["value"] = priceNum[i];
|
||
districtItem["value"]["price"].push(item);
|
||
}
|
||
for (var i = 0; i < yearNum.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = yearName[i];
|
||
item["value"] = yearNum[i];
|
||
districtItem["value"]["age"].push(item);
|
||
}
|
||
fig4.push(districtItem);
|
||
}
|
||
if (this.ret_chengjiao == null)
|
||
this.ret_chengjiao = {
|
||
};
|
||
var res = {
|
||
};
|
||
res["fig1"] = fig1;
|
||
res["fig2"] = fig2;
|
||
res["fig3"] = fig3;
|
||
res["fig4"] = fig4;
|
||
if (this.ret_chengjiao[args["district"]] == null)
|
||
this.ret_chengjiao[args["district"]] = res;
|
||
return JSON.stringify(res);
|
||
}
|
||
else
|
||
return null;
|
||
}
|
||
export function connectDBAndQueryNeimeng(args) {
|
||
//{"action":"connectDBAndQueryNeimeng", "arg":"{\"type\":\"takeout\",\"detail\":\"overall\"}"}
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "takeout") {
|
||
if (this.waimailist_xlgl == null) {
|
||
var init_data = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"xlglm\",\"formname\":\"meituanwaimai\"}");
|
||
var waimailist = [];
|
||
for (var i = 0; i < init_data.length; i++) {
|
||
if (init_data[i]["avgPrice"] == null || init_data[i]["monthlySalesNum"] == null)
|
||
continue;
|
||
var price = parseInt(init_data[i]["avgPrice"].replace("人均 ¥", ""));
|
||
var saleNum = parseInt(init_data[i]["monthlySalesNum"].replace("月售", ""));
|
||
var sale = price * saleNum;
|
||
var item = init_data[i];
|
||
if (sale >= 0 && sale < 500000000000) {
|
||
item["sale"] = sale;
|
||
waimailist.push(item);
|
||
}
|
||
}
|
||
this.waimailist_xlgl = waimailist;
|
||
if (this.waimailist_xlgl == null) return null;
|
||
}
|
||
if (this.areadict_xlgl == null) {
|
||
var arealist = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"xlglm\",\"formname\":\"meituan\"}");
|
||
var areaDict = {
|
||
};
|
||
for (var i = 0; i < arealist.length; i++) {
|
||
var area = arealist[i]["areaName"];
|
||
if (area == null)
|
||
continue;
|
||
if (areaDict[area] == null) {
|
||
areaDict[area] = [];
|
||
}
|
||
areaDict[area].push(arealist[i]);
|
||
}
|
||
this.areadict_xlgl = areaDict;
|
||
}
|
||
var waimailist = this.waimailist_xlgl;
|
||
var fig1 = [];
|
||
var cateDict = {
|
||
};
|
||
for (var i = 0; i < waimailist.length; i++) {
|
||
if (waimailist[i]["categories"] == null)
|
||
continue;
|
||
var category = waimailist[i]["categories"].split("/")[0];
|
||
if (cateDict[category] == null)
|
||
cateDict[category] = 0;
|
||
cateDict[category] += 1;
|
||
}
|
||
var cateDictKeys = Object.keys(cateDict);
|
||
for (var j = 0; j < cateDictKeys.length; j++) {
|
||
var key = cateDictKeys[j];
|
||
var item = {
|
||
};
|
||
item["name"] = key;
|
||
item["value"] = cateDict[key];
|
||
fig1.push(item);
|
||
}
|
||
var fig2 = {
|
||
};
|
||
var desc2 = function (x, y) {
|
||
return (x["val"] < y["val"]) ? 1 : -1;
|
||
}
|
||
var shopList = [];
|
||
for (var j = 0; j < waimailist.length; j++) {
|
||
var item = {
|
||
};
|
||
item["name"] = waimailist[j]["shopName"];
|
||
item["val"] = waimailist[j]["sale"];
|
||
shopList.push(item);
|
||
}
|
||
shopList.sort(desc2);
|
||
var lineData = [];
|
||
var nameData = [];
|
||
for (var i = 14; i >= 0; i--) {
|
||
lineData.push(shopList[i]["val"]);
|
||
nameData.push(shopList[i]["name"]);
|
||
}
|
||
fig2["lineData"] = lineData;
|
||
fig2["nameData"] = nameData;
|
||
var fig3 = [];
|
||
var areaDict = this.areadict_xlgl;
|
||
var areaKeys = Object.keys(areaDict);
|
||
for (var i = 0; i < areaKeys.length; i++) {
|
||
var item = {
|
||
};
|
||
item["area"] = areaKeys[i];
|
||
item["shopNum"] = areaDict[areaKeys[i]].length;
|
||
var sum = 0;
|
||
for (var j = 0; j < item["shopNum"]; j++) {
|
||
var price = parseInt(areaDict[areaKeys[i]][j]["avgPrice"]);
|
||
if (price >= 0 && price < 50000000) {
|
||
sum += price;
|
||
}
|
||
}
|
||
if (sum == 0)
|
||
continue;
|
||
item["saleNum"] = sum * 79;
|
||
fig3.push(item);
|
||
}
|
||
var fig4 = {
|
||
};
|
||
var desc2 = function (x, y) {
|
||
return (x["val"] < y["val"]) ? 1 : -1;
|
||
}
|
||
var shopList = [];
|
||
for (var j = 0; j < waimailist.length; j++) {
|
||
var item = {
|
||
};
|
||
item["name"] = waimailist[j]["shopName"];
|
||
item["val"] = parseFloat(waimailist[j]["overallRating"]);
|
||
shopList.push(item);
|
||
}
|
||
shopList.sort(desc2);
|
||
var lineData = [];
|
||
var nameData = [];
|
||
for (var i = 14; i >= 0; i--) {
|
||
lineData.push(shopList[i]["val"]);
|
||
nameData.push(shopList[i]["name"]);
|
||
}
|
||
fig4["lineData"] = lineData;
|
||
fig4["nameData"] = nameData;
|
||
var ret = {
|
||
};
|
||
ret["fig1"] = fig1;
|
||
ret["fig2"] = fig2;
|
||
ret["fig3"] = fig3;
|
||
ret["fig4"] = fig4;
|
||
return JSON.stringify(ret);
|
||
}
|
||
else return null;
|
||
}
|
||
}
|