Merge branch 'wsc' into 'master'
Wsc See merge request root/tfse_admin!20
This commit is contained in:
commit
8b89c9b20f
|
@ -0,0 +1,176 @@
|
||||||
|
import pymongo
|
||||||
|
|
||||||
|
DB_CLI = 'mongodb://{}:{}@{}:{}'
|
||||||
|
|
||||||
|
DB_SETTING = {
|
||||||
|
"TFSE": {"user": "root", "pass": "sromitdTW569kC#M", "host": "116.63.130.34", "port": "27018"},
|
||||||
|
"ADMIN": {"user": "root", "pass": "RYIHrqml#LSW6#!*", "host": "116.63.130.34", "port": "27020"}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def FIND_DATA_COUNT(param1, param2, param3, param4):
|
||||||
|
"""
|
||||||
|
根据查询条件查询符合条件的所有数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: obj 数据集
|
||||||
|
param4: obj 查询条件
|
||||||
|
Returns:
|
||||||
|
num: list 符合条件的数量
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
num = collection.find(param4).count()
|
||||||
|
|
||||||
|
client.close()
|
||||||
|
return num
|
||||||
|
|
||||||
|
|
||||||
|
def FIND_DATA(param1, param2, param3, param4):
|
||||||
|
"""
|
||||||
|
根据查询条件查询符合条件的所有数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: obj 数据集
|
||||||
|
param4: obj 查询条件
|
||||||
|
Returns:
|
||||||
|
records: list 符合条件的数据
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
records = list(collection.find(param4, {'_id': False}))
|
||||||
|
|
||||||
|
client.close()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
def FIND_DATA_FILTER(param1, param2, param3, param4, param5):
|
||||||
|
"""
|
||||||
|
根据查询条件查询符合条件的所有数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: obj 数据集
|
||||||
|
param4: obj 查询条件
|
||||||
|
param5: obj 显示字段/不显示字段
|
||||||
|
Returns:
|
||||||
|
records: list 符合条件的数据
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
records = list(collection.find(param4, {**{'_id': False}, **param5}))
|
||||||
|
|
||||||
|
client.close()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
def FIND_DATA_FILTER_SORT_LIMIT(param1, param2, param3, param4, param5, param6, param7):
|
||||||
|
"""
|
||||||
|
根据查询条件查询符合条件的所有数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: obj 数据集
|
||||||
|
param4: obj 查询条件
|
||||||
|
param5: obj 显示字段/不显示字段
|
||||||
|
param6: str 排序
|
||||||
|
param7: int 限制返回条数
|
||||||
|
Returns:
|
||||||
|
records: list 符合条件的数据
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
records = list(collection.find(param4, {**{'_id': False}, **param5}).sort(param6).limit(param7))
|
||||||
|
|
||||||
|
client.close()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
def UPSERT_DATA(param1, param2, param3, param4, param5):
|
||||||
|
"""
|
||||||
|
更新插入数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: obj 数据集
|
||||||
|
param4: obj 查询条件
|
||||||
|
param5: obj 插入数据
|
||||||
|
Returns:
|
||||||
|
info: 更新结果
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
res = collection.update_one(param4, {"$set": param5}, upsert=True)
|
||||||
|
info = res.raw_result['updatedExisting']
|
||||||
|
|
||||||
|
client.close()
|
||||||
|
return info
|
||||||
|
|
||||||
|
|
||||||
|
def INSERT_DATA(param1, param2, param3, param4):
|
||||||
|
"""
|
||||||
|
插入一条数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: str 数据集
|
||||||
|
param4: obj 插入数据
|
||||||
|
Returns:
|
||||||
|
True 执行成功
|
||||||
|
False 执行失败
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
collection.insert_one(param4)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def INSERT_DATA_MANY(param1, param2, param3, param4):
|
||||||
|
"""
|
||||||
|
插入多条数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: str 数据集
|
||||||
|
param4: obj 插入数据
|
||||||
|
Returns:
|
||||||
|
True 执行成功
|
||||||
|
False 执行失败
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
|
||||||
|
collection = client[param2][param3]
|
||||||
|
collection.insert_many(param4)
|
||||||
|
client.close()
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def REMOVE_COLLECTION(param1, param2, param3):
|
||||||
|
"""
|
||||||
|
清空数据表里的数据
|
||||||
|
Parameters:
|
||||||
|
param1: str 服务器
|
||||||
|
param2: str 数据库
|
||||||
|
param3: str 数据集
|
||||||
|
"""
|
||||||
|
db = DB_SETTING[param1]
|
||||||
|
client = pymongo.MongoClient(DB_CLI.format(db['user'], db['pass'], db['host'], db['port']))
|
||||||
|
collection = client[param2][param3]
|
||||||
|
collection.remove()
|
||||||
|
client.close()
|
||||||
|
return True
|
|
@ -1,3 +1,88 @@
|
||||||
|
import time
|
||||||
|
|
||||||
def get_dashboard_data_impl(param):
|
import pandas as pd
|
||||||
pass
|
|
||||||
|
from Board.board_db import FIND_DATA_COUNT, FIND_DATA, UPSERT_DATA, FIND_DATA_FILTER, FIND_DATA_FILTER_SORT_LIMIT, \
|
||||||
|
REMOVE_COLLECTION, INSERT_DATA_MANY, INSERT_DATA
|
||||||
|
|
||||||
|
|
||||||
|
def get_dashboard_data_impl():
|
||||||
|
data = dict()
|
||||||
|
|
||||||
|
data['监测数据'] = FIND_DATA("ADMIN", "看板", "监测数据", {})[0]
|
||||||
|
|
||||||
|
service_static = FIND_DATA("ADMIN", "看板", "服务统计", {})
|
||||||
|
data['服务次数'] = {"日期": [item["日期"] for item in service_static], "次数": [item["服务次数"] for item in service_static]}
|
||||||
|
|
||||||
|
industry_distribute = FIND_DATA("ADMIN", "看板", "行业分布", {})
|
||||||
|
data['行业分布'] = [{item['行业名称']: item['公司数量']} for item in industry_distribute]
|
||||||
|
|
||||||
|
data['新增企业信息'] = FIND_DATA("ADMIN", "看板", "新增企业信息", {})
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def static_dashboard_data_impl():
|
||||||
|
|
||||||
|
def monitor_data():
|
||||||
|
"""
|
||||||
|
监测数据
|
||||||
|
"""
|
||||||
|
data = dict()
|
||||||
|
data['认证企业'] = FIND_DATA_COUNT("TFSE", "用户", "用户信息", {"已认证": "是"})
|
||||||
|
data['服务次数'] = FIND_DATA_COUNT("TFSE", "评价", "评价记录", {"进行状态": "完成"})
|
||||||
|
data['留言反馈'] = 0
|
||||||
|
data['异常日志'] = 0
|
||||||
|
REMOVE_COLLECTION('ADMIN', '看板', '监测数据')
|
||||||
|
INSERT_DATA("ADMIN", "看板", "监测数据", data)
|
||||||
|
|
||||||
|
def services_static():
|
||||||
|
"""
|
||||||
|
服务次数
|
||||||
|
delta_seconds 统计服务次数的时间范围
|
||||||
|
start_date_time_stamp 统计起始时间的时间戳
|
||||||
|
start_date 统计起始日期
|
||||||
|
"""
|
||||||
|
delta_seconds = 60*60*24*365
|
||||||
|
start_date_time_stamp = time.time() - delta_seconds
|
||||||
|
start_date = time.strftime("%Y-%m-%d", time.localtime(start_date_time_stamp))
|
||||||
|
records = FIND_DATA("TFSE", "评价", "评价记录", {"进行状态": "完成", "评价时间": {"$gt": start_date}})
|
||||||
|
df_rating_times = pd.DataFrame(pd.DataFrame(records)[['评价时间']].value_counts()).sort_index()
|
||||||
|
times_statics_by_date = dict(zip([tuple_date[0] for tuple_date in df_rating_times.index.values.tolist()], df_rating_times[0].tolist()))
|
||||||
|
for item in times_statics_by_date.items():
|
||||||
|
data = dict()
|
||||||
|
data['日期'] = item[0]
|
||||||
|
data['服务次数'] = item[1]
|
||||||
|
UPSERT_DATA("ADMIN", "看板", "服务统计", {"日期": item[0]}, data)
|
||||||
|
|
||||||
|
def industry_distribute():
|
||||||
|
"""
|
||||||
|
行业分布
|
||||||
|
"""
|
||||||
|
records = FIND_DATA_FILTER("TFSE", "企业", "公司基本信息", {}, {"工商信息.行业": 1})
|
||||||
|
df_industry = pd.DataFrame([record['工商信息'] for record in records])
|
||||||
|
df_industry_count = df_industry['行业'].value_counts()
|
||||||
|
dict_industry = dict(zip(df_industry_count.index.tolist(), df_industry_count.values.tolist()))
|
||||||
|
for item in dict_industry.items():
|
||||||
|
data = dict()
|
||||||
|
data['行业名称'] = item[0]
|
||||||
|
data['公司数量'] = item[1]
|
||||||
|
UPSERT_DATA("ADMIN", "看板", "行业分布", {"行业名称": item[0]}, data)
|
||||||
|
|
||||||
|
def new_company_info():
|
||||||
|
"""
|
||||||
|
新增企业信息
|
||||||
|
"""
|
||||||
|
records = FIND_DATA_FILTER_SORT_LIMIT("TFSE", "用户", "用户信息", {"已认证": "是"}, {"企业ID": 1, "企业名称": 1, "注册时间": 1}, [("注册时间", -1)], 10)
|
||||||
|
REMOVE_COLLECTION('ADMIN', '看板', '新增企业信息')
|
||||||
|
INSERT_DATA_MANY('ADMIN', '看板', '新增企业信息', records)
|
||||||
|
|
||||||
|
def main_process():
|
||||||
|
|
||||||
|
monitor_data()
|
||||||
|
services_static()
|
||||||
|
industry_distribute()
|
||||||
|
new_company_info()
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
return main_process()
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
from Board.board_impl import get_dashboard_data_impl
|
from Board.board_impl import get_dashboard_data_impl, static_dashboard_data_impl
|
||||||
|
|
||||||
|
|
||||||
class DashBoard:
|
class DashBoard:
|
||||||
|
|
||||||
def __init__(self):
|
@staticmethod
|
||||||
pass
|
def get_dashboard_data():
|
||||||
|
return get_dashboard_data_impl()
|
||||||
|
|
||||||
def get_dashboard_data(self):
|
@staticmethod
|
||||||
get_dashboard_data_impl(self)
|
def static_dashboard_data():
|
||||||
|
static_dashboard_data_impl()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from flask import Blueprint, request
|
from flask import Blueprint, request
|
||||||
|
|
||||||
|
from Board.board_obj import DashBoard
|
||||||
from user.user_auth import verify_token, authority_scope
|
from user.user_auth import verify_token, authority_scope
|
||||||
|
|
||||||
board_route = Blueprint('board', __name__)
|
board_route = Blueprint('board', __name__)
|
||||||
|
@ -10,10 +10,15 @@ board_route = Blueprint('board', __name__)
|
||||||
@verify_token
|
@verify_token
|
||||||
def get_dashboard_data_route(**kwargs):
|
def get_dashboard_data_route(**kwargs):
|
||||||
|
|
||||||
import os
|
dash_board = DashBoard()
|
||||||
import json
|
result = dash_board.get_dashboard_data()
|
||||||
|
|
||||||
with open(os.path.abspath(os.path.dirname(__file__) + '/static/mock_data/get_dashboard_data.json'), "r", encoding='utf-8') as f:
|
|
||||||
result = json.load(f)
|
|
||||||
|
|
||||||
return {"info": "查询成功", "result": result}
|
return {"info": "查询成功", "result": result}
|
||||||
|
|
||||||
|
|
||||||
|
@board_route.route('/static_dashboard_data', methods=['GET'])
|
||||||
|
@verify_token
|
||||||
|
def static_dashboard_data_route(**kwargs):
|
||||||
|
dash_board = DashBoard()
|
||||||
|
dash_board.static_dashboard_data()
|
||||||
|
return "0"
|
||||||
|
|
Loading…
Reference in New Issue