2023-03-20 14:11:37 +08:00
|
|
|
from Mods.EditRecord.Crud import add_record
|
|
|
|
from Utils.MiddlewareUtils import format_request
|
|
|
|
from starlette.concurrency import iterate_in_threadpool
|
|
|
|
from fastapi import Request
|
|
|
|
from Context.common import auth_util, common_db
|
|
|
|
import json
|
|
|
|
|
|
|
|
from Utils.PrintUtils import print_error
|
|
|
|
|
|
|
|
from enum import Enum
|
|
|
|
|
|
|
|
|
|
|
|
class RecordTypeId(Enum):
|
|
|
|
CompanyBaseInfo = 1
|
|
|
|
CompanyControl = 2
|
|
|
|
CompanyEquityPenetration = 3
|
|
|
|
CompanyIndexMain = 4
|
|
|
|
CompanyPlusProperty = 5
|
|
|
|
CompanyShareholder = 6
|
|
|
|
CompanyBond = 7
|
|
|
|
CompanyCredit = 8
|
|
|
|
CompanyCreditRating = 9
|
|
|
|
CompanyGuarantee = 10
|
|
|
|
CompanyJudicialCase = 11
|
|
|
|
CompanyMainBusiness = 12
|
|
|
|
|
2023-03-21 14:34:38 +08:00
|
|
|
AreaIndexMain = 13
|
|
|
|
AreaGdp = 14
|
|
|
|
AreaIndustry = 15
|
|
|
|
AreaInvest = 16
|
|
|
|
AreaImportAndExport = 17
|
|
|
|
AreaLivelihood = 18
|
|
|
|
AreaDepositsAndLoans = 19
|
|
|
|
AreaFiscalRevenue = 20
|
|
|
|
AreaDebt = 21
|
|
|
|
AreaRealEstate = 22
|
|
|
|
AreaIndustrialStructure = 23
|
|
|
|
AreaMajorProject = 24
|
|
|
|
AreaDevelopmentConclusion = 25
|
|
|
|
AreaBond = 26
|
|
|
|
AreaSocialFinancing = 27
|
|
|
|
AreaSurveyConclusion = 28
|
|
|
|
|
|
|
|
# 13 区域经济 区域索引 area_index_main
|
|
|
|
# 14 区域经济 区域GDP area_gdp
|
|
|
|
# 15 区域经济 区域工业 area_industry
|
|
|
|
# 16 区域经济 区域投资 area_invest
|
|
|
|
# 17 区域经济 区域进出口 area_import_and_export
|
|
|
|
# 18 区域经济 区域民生 area_livelihood
|
|
|
|
# 19 区域经济 区域存贷款 area_deposits_and_loans
|
|
|
|
# 20 区域经济 区域财政收支 area_fiscal_revenue
|
|
|
|
# 21 区域经济 区域债务 area_debt
|
|
|
|
# 22 区域经济 区域房地产 area_real_estate
|
|
|
|
# 23 区域经济 区域产业结构 area_industrial_structure
|
|
|
|
# 24 区域经济 区域重大项目 area_major_project
|
|
|
|
# 25 区域经济 区域发展结论 area_development_conclusion
|
|
|
|
# 26 区域经济 区域债券发行情况 area_bond
|
|
|
|
# 27 区域经济 区域社会融资 area_social_financing
|
|
|
|
# 28 区域经济 区域调研结论 area_survey_conclusion
|
|
|
|
|
2023-03-20 14:11:37 +08:00
|
|
|
|
|
|
|
def get_update_data(before_data: dict, after_data: dict):
|
|
|
|
"""
|
|
|
|
获取数据变化信息
|
|
|
|
"""
|
|
|
|
update_data_before = {}
|
|
|
|
update_data_after = {}
|
|
|
|
for key, before_value in before_data.items():
|
|
|
|
if key in after_data:
|
|
|
|
after_value = after_data[key]
|
|
|
|
if before_value != after_value:
|
|
|
|
update_data_before[key] = before_value
|
|
|
|
update_data_after[key] = after_value
|
|
|
|
return update_data_before, update_data_after
|
|
|
|
|
|
|
|
|
|
|
|
async def record_middleware(req: Request, call_next):
|
|
|
|
"""
|
|
|
|
编辑记录的中间件
|
|
|
|
"""
|
|
|
|
|
|
|
|
class RecordTemp:
|
|
|
|
need_record = False
|
|
|
|
req_data = None
|
|
|
|
action = None
|
|
|
|
item_name = None
|
|
|
|
|
|
|
|
req_url_split = req.url.path.split("/")
|
|
|
|
if len(req_url_split) > 1 and req_url_split[-1] in ['delete', 'update', 'add']:
|
|
|
|
convert_str = "".join([item[0].upper() + item[1:] for item in req_url_split[-2].split("_")])
|
|
|
|
if convert_str in RecordTypeId._member_names_:
|
|
|
|
RecordTemp.need_record = True
|
|
|
|
RecordTemp.req_data = await format_request(req)
|
|
|
|
RecordTemp.item_name = convert_str
|
|
|
|
RecordTemp.action = req_url_split[-1]
|
|
|
|
res = await call_next(req)
|
|
|
|
|
|
|
|
try:
|
|
|
|
if RecordTemp.need_record:
|
|
|
|
if res.status_code == 200:
|
|
|
|
token_data = auth_util.token_data_depend(req.headers.get("Authorization"))
|
|
|
|
db = common_db.get_db_i()
|
|
|
|
try:
|
|
|
|
item_id = None
|
|
|
|
if RecordTemp.action == "add":
|
|
|
|
res_body = [chunk async for chunk in res.body_iterator]
|
|
|
|
res.body_iterator = iterate_in_threadpool(iter(res_body))
|
|
|
|
res_data = json.loads(res_body[0])
|
|
|
|
if "id" in res_data:
|
|
|
|
item_id = res_data["id"]
|
|
|
|
if "company_id" in res_data:
|
|
|
|
item_id = res_data["company_id"]
|
|
|
|
else:
|
|
|
|
if "id" in RecordTemp.req_data.data:
|
|
|
|
item_id = RecordTemp.req_data.data["id"]
|
|
|
|
if "company_id" in RecordTemp.req_data.data:
|
|
|
|
item_id = RecordTemp.req_data.data["company_id"]
|
|
|
|
item_type_id = RecordTypeId[RecordTemp.item_name].value
|
|
|
|
edit_user = token_data.email
|
|
|
|
action = RecordTemp.action
|
|
|
|
# if RecordTemp.action == "update":
|
|
|
|
# res_body = [chunk async for chunk in res.body_iterator]
|
|
|
|
# res.body_iterator = iterate_in_threadpool(iter(res_body))
|
|
|
|
# data_after = json.loads(res_body[0])
|
|
|
|
# data_after = db.query()
|
|
|
|
# update_data_before, update_data_after = get_update_data(RecordTemp.req_data.data, data_after)
|
|
|
|
add_record(db, item_type_id, action, edit_user, item_id,
|
|
|
|
# before_data=json.dumps(update_data_before),
|
|
|
|
# after_data=json.dumps(update_data_after)
|
|
|
|
)
|
|
|
|
except Exception as e:
|
|
|
|
print_error(e)
|
|
|
|
finally:
|
|
|
|
db.close()
|
|
|
|
except Exception as e:
|
|
|
|
print_error(e)
|
|
|
|
return res
|