From 03ba0ecca3e531bdc684b20c9895bee520793422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=9D=E5=B7=9D?= Date: Thu, 14 Apr 2022 03:12:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Manage/Company/CompanyImpl.py | 77 +++++++++------------------------ Manage/Company/CompanyObj.py | 48 +++++++++++++++----- Manage/Company/CompanyRoutes.py | 61 ++++++++++++++++++-------- 3 files changed, 99 insertions(+), 87 deletions(-) diff --git a/Manage/Company/CompanyImpl.py b/Manage/Company/CompanyImpl.py index 08ce014..7e5a139 100644 --- a/Manage/Company/CompanyImpl.py +++ b/Manage/Company/CompanyImpl.py @@ -1,57 +1,18 @@ from DBHelper.MongoHelper import MongoHelper -from Manage.Company.CompanyObj import SearchCompany +from Manage.Company.CompanyObj import SearchCompanyBody, SearchCompanyResult -class SearchCompanyImpl(SearchCompany): +class SearchCompanyBodyImpl(SearchCompanyBody): """""" db = MongoHelper("tfse_v0.21") def conditions_search(self): """""" - def make_search_body(param): - search_keys = list(param.keys()) - body = dict() - - if "企业ID" in search_keys: - body['企业ID'] = param['企业ID'] - - if "企业名称" in search_keys: - body['企业名称'] = {"$regex": param['企业名称']} - - if "一级行业" in search_keys: - body['一级行业'] = {"$in": param['一级行业']} - - if "信用等级" in search_keys: - body['综信评价结果.信用等级'] = {"$in": param['信用等级']} - - if "ESG等级" in search_keys: - body['ESG评价结果.评价等级'] = {"$in": param['ESG等级']} - - return body - - # 顺序条件构造方法 - def make_sort_body(param): - if param != {}: - columns_map = { - "企业ID": "企业ID", - "企业名称": "企业名称", - "一级行业": "一级行业", - "信用等级": "综信评价结果.信用等级", - "ESG等级": "ESG评价结果.评价等级" - } - asc_or_desc = 1 if list(param.values())[0] == "asc" else -1 - sort_column = columns_map[list(param.keys())[0]] - body = {sort_column: asc_or_desc} - else: - body = {"更新时间.工商信息": -1} - - return body - - search_body = make_search_body(self.search) - sort = make_sort_body(self.sort) + search_body = self.search.make_search_body() + sort = self.sort.make_sort_body() page_size = 10 if self.page_size > 10 else self.page_size - page_no = int(self.page_no) + page_no = self.page_no total = self.db.find_all_data_with_count( "企业数据", @@ -72,24 +33,26 @@ class SearchCompanyImpl(SearchCompany): table_data = list() if records: for record in records: - company = Company() + company = SearchCompanyResult() company.cid = record['企业ID'] company.name = record['企业名称'] - company.industry_l1 = record['一级行业'] + company.industry = record['一级行业'] - if record['综信评价结果'] != {}: - company.cc_rating_result = record['综信评价结果']['信用等级'] - else: - company.cc_rating_result = None + # if record.__contains__('综信评价结果'): + try: + company.credit_level = record['综信评价结果']['信用等级'] + # else: + except KeyError: + company.credit_level = None - if record['ESG评价结果'] != {}: - company.esg_rating_result = record['ESG评价结果']['评价等级'] - else: - company.esg_rating_result = None + # if record.__contains__('ESG评价结果'): + try: + company.esg_level = record['ESG评价结果']['评价等级'] + # else: + except KeyError: + company.esg_level = None - data = company.dict_to_show(columns=["企业ID", "企业名称", "一级行业", "综信评价结果", "ESG评价结果"]) - data['信用等级'] = data.pop('综信评价结果') - data['ESG等级'] = data.pop('ESG评价结果') + data = company.dict_to_show(columns=["企业ID", "企业名称", "一级行业", "信用等级", "ESG等级"]) table_data.append(data) diff --git a/Manage/Company/CompanyObj.py b/Manage/Company/CompanyObj.py index 940bbd0..0bb7a0c 100644 --- a/Manage/Company/CompanyObj.py +++ b/Manage/Company/CompanyObj.py @@ -10,7 +10,7 @@ class SearchCompanyBody(SpecObject): cid = ValidateAttr(field='cid', type=str) name = ValidateAttr(field='name', type=str) industry = ValidateAttr(field='industry', type=str) - credit_level = ValidateAttr(field='credit_level', in_list=["AAA", "AA+", "AA", "AA-", "BBB+", "BBB", "BBB-", "BB+", "BB", "BB-", "B+", "B", "B-", "CCC+", "CCC", "CCC-", "CC+", "CC", "CC-", "C+", "C", "C-"]) + credit_level = ValidateAttr(field='credit_level', in_list=["AAA", "AA+", "AA", "AA-", "A+", "A", "A-", "BBB+", "BBB", "BBB-", "BB+", "BB", "BB-", "B+", "B", "B-", "CCC+", "CCC", "CCC-", "CC+", "CC", "CC-", "C+", "C", "C-"]) esg_level = ValidateAttr(field='esg_level', in_list=["A", "B", "C", "D", "E"]) fields_map = { @@ -45,11 +45,34 @@ class SearchCompanyBody(SpecObject): class SortBody(SpecObject): """""" - field = ValidateAttr() - sort = ValidateAttr() + field = ValidateAttr(field='field', type=str) + sort = ValidateAttr(field='sort', in_list=["asc", "desc"]) + + fields_map = { + "field": "排序字段", + "sort": "排序方式" + } + + def make_sort_body(self): + """""" + if self.__dict__ != {}: + columns_map = { + "企业ID": "企业ID", + "企业名称": "企业名称", + "一级行业": "一级行业", + "信用等级": "综信评价结果.信用等级", + "ESG等级": "ESG评价结果.评价等级" + } + asc_or_desc = 1 if self.sort == "asc" else -1 + sort_column = columns_map[self.field] + body = {sort_column: asc_or_desc} + else: + body = {"更新时间.工商信息": -1} + + return body search = ValidateAttr(field='search', type=SearchBody) - sort = ValidateAttr(field='sort', type=dict) + sort = ValidateAttr(field='sort', type=SortBody) page_size = ValidateAttr(field='page_size', type=int) page_no = ValidateAttr(field='page_no', type=int) @@ -60,19 +83,22 @@ class SearchCompanyBody(SpecObject): "page_no": "页码" } + def condition_search(self): + """条件查询""" + class SearchCompanyResult(SpecObject): """""" - cid = ValidateAttr() - name = ValidateAttr() - industry = ValidateAttr() - credit_level = ValidateAttr() - esg_level = ValidateAttr() + cid = ValidateAttr(field='cid', type=str) + name = ValidateAttr(field='name', type=str, default=None) + industry = ValidateAttr(field='industry', type=str, default=None) + credit_level = ValidateAttr(field='credit_level', type=str, default=None) + esg_level = ValidateAttr(field='esg_level', type=str, default=None) fields_map = { "cid": "企业ID", "name": "企业名称", "industry": "一级行业", - "credit_level": "综信评价", - "esg_level": "ESG评价" + "credit_level": "信用等级", + "esg_level": "ESG等级" } diff --git a/Manage/Company/CompanyRoutes.py b/Manage/Company/CompanyRoutes.py index 9c04b11..f0ecee0 100644 --- a/Manage/Company/CompanyRoutes.py +++ b/Manage/Company/CompanyRoutes.py @@ -1,6 +1,7 @@ from flask import Blueprint, request -from Manage.Company.CompanyImpl import SearchCompanyImpl +from Manage.Company.CompanyImpl import SearchCompanyBodyImpl +from Utils.ErrorUtil import ReturnConditionCheckFailed from user.user_auth import verify_token company_route = Blueprint('company', __name__) @@ -9,24 +10,46 @@ company_route = Blueprint('company', __name__) @company_route.route('/search', methods=['POST']) @verify_token def search_company(**kwargs): - """ - 企业搜索 - Parameters: - - - Returns: - info: 返回信息 - result: 返回数据 - """ - req = request.json - search_impl = SearchCompanyImpl( - req['search'], - req['sort'], - req['page_size'], - req['page_no'] - ) - search_impl.check_obj() - result = search_impl.conditions_search() - return {"info": '查询结果', "result": result}, 200 + """企业搜索""" + try: + + req = request.json + + search_body_impl = SearchCompanyBodyImpl() + search_body = SearchCompanyBodyImpl().SearchBody() + sort_body = SearchCompanyBodyImpl().SortBody() + + search = req['search'] if req.__contains__('search') else {} + sort = req['sort'] if req.__contains__('sort') else {} + + if search.__contains__('企业ID'): + search_body.cid = search['企业ID'] + + if search.__contains__('企业名称'): + search_body.name = search['企业名称'] + + if search.__contains__('一级行业'): + search_body.industry = search['一级行业'] + + if search.__contains__('综信评价'): + search_body.credit_level = search['综信评价'] + + if search.__contains__('ESG评价'): + search_body.esg_level = search['ESG评价'] + + if sort != {}: + sort_body.field = list(sort.keys())[0] + sort_body.sort = list(sort.values())[0] + + search_body_impl.search = search_body + search_body_impl.sort = sort_body + search_body_impl.page_size = req['page_size'] + search_body_impl.page_no = req['page_no'] + + result = search_body_impl.conditions_search() + return {"info": '查询结果', "result": result}, 200 + except ReturnConditionCheckFailed as e: + return {"info": e.failed_info}, e.status_code @company_route.route('/index', methods=['POST'])