From 54f4899b6084fe31fd27885d7e4ece89f9b94639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=9D=E5=B7=9D?= Date: Thu, 17 Feb 2022 16:58:39 +0800 Subject: [PATCH] tmp --- Board/board_db.py | 95 +++++++++++++++++++++++++++++++++++++++++++ Board/board_impl.py | 68 +++++++++++++++++++++++++++++++ Board/board_obj.py | 5 ++- Board/board_routes.py | 10 ++++- 4 files changed, 176 insertions(+), 2 deletions(-) diff --git a/Board/board_db.py b/Board/board_db.py index e69de29..f36321a 100644 --- a/Board/board_db.py +++ b/Board/board_db.py @@ -0,0 +1,95 @@ +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 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 diff --git a/Board/board_impl.py b/Board/board_impl.py index 72d135a..385c5a2 100644 --- a/Board/board_impl.py +++ b/Board/board_impl.py @@ -1,3 +1,71 @@ +import time + +import pandas as pd + +from Board.board_db import FIND_DATA_COUNT, FIND_DATA, UPSERT_DATA, FIND_DATA_FILTER + def get_dashboard_data_impl(param): pass + + +def static_dashboard_data_impl(param): + + def monitor_data(): + """ + 监测数据 + """ + data = dict() + data['认证企业'] = FIND_DATA_COUNT("TFSE", "用户", "用户信息", {"已认证": "是"}) + data['服务次数'] = FIND_DATA_COUNT("TFSE", "评价", "评价记录", {"进行状态": "完成"}) + data['留言反馈'] = 0 + data['异常日志'] = 0 + UPSERT_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(): + """ + 新增企业信息 + """ + + def main_process(): + + monitor_data() + services_static() + industry_distribute() + + return 0 + + return main_process() \ No newline at end of file diff --git a/Board/board_obj.py b/Board/board_obj.py index a7a994c..5e47759 100644 --- a/Board/board_obj.py +++ b/Board/board_obj.py @@ -1,4 +1,4 @@ -from Board.board_impl import get_dashboard_data_impl +from Board.board_impl import get_dashboard_data_impl, static_dashboard_data_impl class DashBoard: @@ -8,3 +8,6 @@ class DashBoard: def get_dashboard_data(self): get_dashboard_data_impl(self) + + def static_dashboard_data(self): + static_dashboard_data_impl(self) diff --git a/Board/board_routes.py b/Board/board_routes.py index a55f116..98bd3ad 100644 --- a/Board/board_routes.py +++ b/Board/board_routes.py @@ -1,6 +1,6 @@ from flask import Blueprint, request - +from Board.board_obj import DashBoard from user.user_auth import verify_token, authority_scope board_route = Blueprint('board', __name__) @@ -17,3 +17,11 @@ def get_dashboard_data_route(**kwargs): result = json.load(f) 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"