diff --git a/DBHelper/DBConfig.json b/DBHelper/DBConfig.json index 0be04e6..ccdde0f 100644 --- a/DBHelper/DBConfig.json +++ b/DBHelper/DBConfig.json @@ -1,6 +1,7 @@ { "MongoDB": { - "log": "root:sromitdTW569kC#M@116.63.130.34:27018" + "log": "root:sromitdTW569kC#M@116.63.130.34:27018", + "tyc": "root:gP@DwMSVd5Sh6EiH@116.63.130.34:27019" }, "Mysql": { diff --git a/DBHelper/MongoHelperInstance.py b/DBHelper/MongoHelperInstance.py index 110931c..e0b2bcd 100644 --- a/DBHelper/MongoHelperInstance.py +++ b/DBHelper/MongoHelperInstance.py @@ -2,5 +2,6 @@ from DBHelper.MongoHelper import MongoHelper # 日志数据库 DB_TEST = MongoHelper("log") +DB_TYC = MongoHelper("tyc") diff --git a/Modules/File/FileRoutes.py b/Modules/File/FileRoutes.py index fec2bed..a53bce4 100644 --- a/Modules/File/FileRoutes.py +++ b/Modules/File/FileRoutes.py @@ -19,7 +19,7 @@ def new_file_package_route(): src_dir = impl.new_file_package(data=data) impl.write_file_to_zip(src_dir=src_dir) response = Response(impl.return_file_data(package_name=data['package_name']), content_type='application/zip') - # impl.delete_all_file() + impl.delete_all_file() return response except APIReturnError as e: return {"info": e.__str__()}, e.status_code diff --git a/Modules/TycApi/TycImpl.py b/Modules/TycApi/TycImpl.py new file mode 100644 index 0000000..348bdc9 --- /dev/null +++ b/Modules/TycApi/TycImpl.py @@ -0,0 +1,478 @@ +import math + +from Modules.TycApi.TycUtils import firest_request, page_request, business_request + +# 数据库参数 +DB_GSBJ = '公司背景' +DB_SFFX = '司法风险' +DB_JYFX = '经营风险' +DB_TYFX = '天眼风险' +DB_JYZK = '经营状况' +DB_ZSCQ = '知识产权' +DB_GSFZ = '公司发展' + + +class TycDataImpl(object): + """天眼查接口相关""" + + # 工商信息 + @staticmethod + def basic_information(**kwargs): + name = kwargs['name'] + url = 'http://open.api.tianyancha.com/services/open/ic/baseinfo/normal?keyword={name}' + url = url.format(name=name) + res = business_request(url, name, DB_GSBJ, '基本信息') + return res + + # 高管信息 + @staticmethod + def executive_information(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ic/staff/2.0?keyword={name}&pageNum={page_num}&pageSize=20' + url = url.format(name=name, page_num=page_num) + # 如果只有1页返回保存成功,如需翻页返回总条数用于计算页码 + res = firest_request(url, name, DB_GSBJ, '主要人员') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ic/staff/2.0?keyword={name}&pageNum={page}&pageSize=20' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_GSBJ, '主要人员') + return res + + # 股东信息 + @staticmethod + def shareholders_information(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ic/holder/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_GSBJ, '企业股东') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ic/holder/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_GSBJ, '企业股东') + return res + + # 对外投资 + @staticmethod + def outbound_investment(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ic/inverst/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_GSBJ, '对外投资') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ic/inverst/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_GSBJ, '对外投资') + return res + + # 分支机构 + @staticmethod + def branch_offices(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ic/branch/2.0?keyword={name}&pageNum={page_num}&pageSize=20' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_GSBJ, '分支机构') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ic/branch/2.0?keyword={name}&pageNum={page}&pageSize=20' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_GSBJ, '分支机构') + return res + + # 工商变更 + @staticmethod + def change_record(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ic/changeinfo/2.0?keyword={name}&pageNum={page_num}&pageSize=20' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_GSBJ, '变更记录') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ic/changeinfo/2.0?keyword={name}&pageNum={page}&pageSize=20' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_GSBJ, '变更记录') + return res + + # 商标信息 + @staticmethod + def trademark_information(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ipr/tm/2.0?appDateBegin={}&pageSize=20&tmClass={}&appDateEnd={}&keyword={name}&pageNum={page_num}&status=1' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_ZSCQ, '商标信息') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ipr/tm/2.0?appDateBegin={}&pageSize=20&tmClass={}&appDateEnd={}&keyword={name}&pageNum={page}&status=1' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_ZSCQ, '商标信息') + return res + + # 专利信息 + @staticmethod + def patent_information(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ipr/patents/3.0?pubDateBegin={}&appDateBegin={}&pageSize=20&pubDateEnd={}&appDateEnd={}&keyword={name}&pageNum={page_num}&patentType={}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_ZSCQ, '专利信息') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ipr/patents/3.0?pubDateBegin={}&appDateBegin={}&pageSize=20&pubDateEnd={}&appDateEnd={}&keyword={name}&pageNum={page}&patentType={}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_ZSCQ, '专利信息') + return res + + # 软件著作权 + @staticmethod + def software_copyrights(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ipr/copyReg/2.0?keyword={name}&pageNum={page_num}&pageSize=20' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_ZSCQ, '软件著作权') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ipr/copyReg/2.0?keyword={name}&pageNum={page}&pageSize=20' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_ZSCQ, '软件著作权') + return res + + # 网站备案 + @staticmethod + def website_record(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/ipr/icp/3.0?keyword={name}&pageNum={page_num}&pageSize=20' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_ZSCQ, '网站备案') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/ipr/icp/3.0?keyword={name}&pageNum={page}&pageSize=20' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_ZSCQ, '网站备案') + return res + + # 开庭公告 + @staticmethod + def hearing_announcement(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/ktannouncement/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '开庭公告') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/ktannouncement/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '开庭公告') + return res + + # 被执行人 + @staticmethod + def executor(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/zhixinginfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '被执行人') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/zhixinginfo/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '被执行人') + return res + + # 法院公告 + @staticmethod + def court_announcement(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/courtAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '法院公告') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/courtAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '法院公告') + return res + + # 立案信息 + @staticmethod + def case_filing_information(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/courtRegister/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '立案信息') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/courtRegister/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '立案信息') + return res + + # 失信人 + @staticmethod + def untrustworthy(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/dishonest/2.0?keyword={name}&pageNum={page_num}&pageSize=1' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '失信人') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/dishonest/2.0?keyword={name}&pageNum={page}&pageSize=1' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '失信人') + return res + + # 法律诉讼 + @staticmethod + def legal_proceedings(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/lawSuit/3.0?keyword={name}&pageNum={page_num}&pageSize=20' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '法律诉讼') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/lawSuit/3.0?keyword={name}&pageNum={page}&pageSize=20' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '法律诉讼') + return res + + # 送达公告 + @staticmethod + def delivery_announcement(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/sendAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '送达公告') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/sendAnnouncement/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '送达公告') + return res + + # 破产重整 + @staticmethod + def bankruptcy_reorganization(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/bankruptcy/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '破产重整') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/bankruptcy/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '破产重整') + return res + + # 限制消费令 + @staticmethod + def restricted_spending_order(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/consumptionRestriction/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '限制消费令') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/consumptionRestriction/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '限制消费令') + return res + + # 终本案件 + @staticmethod + def final_case(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/jr/endCase/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_SFFX, '终本案件') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/jr/endCase/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_SFFX, '终本案件') + return res + + # 股权出质 + @staticmethod + def equity_pledge(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/equityInfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '股权出质') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/equityInfo/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '股权出质') + return res + + # 动产抵押 + @staticmethod + def mortgage_movable_property(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/mortgageInfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '动产抵押') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/mortgageInfo/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '动产抵押') + return res + + # 土地抵押 + @staticmethod + def land_mortgage(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/landMortgage/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '土地抵押') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/landMortgage/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '土地抵押') + return res + + # 经营异常 + @staticmethod + def abnormal_operation(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/abnormal/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '经营异常') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/abnormal/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '经营异常') + return res + + # 行政处罚 + @staticmethod + def administrative_penalties(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/punishmentInfo/3.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '行政处罚') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/punishmentInfo/3.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '行政处罚') + return res + + # 严重违法 + @staticmethod + def serious_violation(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/illegalinfo/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '严重违法') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/illegalinfo/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '严重违法') + return res + + # 税收违法 + @staticmethod + def tax_violation(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/taxContravention/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '税收违法') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/taxContravention/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '税收违法') + return res + + # 欠税公告 + @staticmethod + def tax_arrears_announcement(**kwargs): + name = kwargs['name'] + page_num = 1 + url = 'http://open.api.tianyancha.com/services/open/mr/ownTax/2.0?pageSize=20&keyword={name}&pageNum={page_num}' + url = url.format(name=name, page_num=page_num) + res = firest_request(url, name, DB_JYFX, '欠税公告') + if res != '保存成功': + page_total = math.ceil(res / 20) + 1 + page_total = 20 if page_total > 20 else page_total + for page in range(2, page_total): + url = 'http://open.api.tianyancha.com/services/open/mr/ownTax/2.0?pageSize=20&keyword={name}&pageNum={page}' + url = url.format(name=name, page=page) + res = page_request(url, name, DB_JYFX, '欠税公告') + return res diff --git a/Modules/TycApi/TycRoutes.py b/Modules/TycApi/TycRoutes.py new file mode 100644 index 0000000..854d832 --- /dev/null +++ b/Modules/TycApi/TycRoutes.py @@ -0,0 +1,449 @@ +from flask import Blueprint, request + +from Modules.TycApi.TycImpl import TycDataImpl +from Utils.ErrorUtil import APIReturnError +from Utils.RouteUtil import RouteParamsCheck + +tyc_route = Blueprint('tyc', __name__) + + +@tyc_route.route('/basic_information', methods=['GET']) +def basic_information_route(): + """工商信息""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.basic_information(name=request.args['company']) + return {"info": "工商信息", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/executive_information', methods=['GET']) +def executive_information_route(): + """高管信息""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.executive_information(name=request.args['company']) + return {"info": "高管信息", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/shareholders_information', methods=['GET']) +def shareholders_information_route(): + """股东信息""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.shareholders_information(name=request.args['company']) + return {"info": "股东信息", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/outbound_investment', methods=['GET']) +def outbound_investment_route(): + """对外投资""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.outbound_investment(name=request.args['company']) + return {"info": "对外投资", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/branch_offices', methods=['GET']) +def branch_offices_route(): + """分支机构""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.branch_offices(name=request.args['company']) + return {"info": "分支机构", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/change_record', methods=['GET']) +def change_record_route(): + """工商变更""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.change_record(name=request.args['company']) + return {"info": "工商变更", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/business_information', methods=['GET']) +def business_information_route(): + """工商信息全量数据""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.basic_information(name=request.args['company']) + if result == '保存成功': + result = impl.executive_information(name=request.args['company']) + if result == '保存成功': + result = impl.shareholders_information(name=request.args['company']) + if result == '保存成功': + result = impl.outbound_investment(name=request.args['company']) + if result == '保存成功': + result = impl.branch_offices(name=request.args['company']) + if result == '保存成功': + result = impl.change_record(name=request.args['company']) + return {"info": "工商信息全量数据", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/trademark_information', methods=['GET']) +def trademark_information_route(): + """商标信息""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.trademark_information(name=request.args['company']) + return {"info": "商标信息", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/patent_information', methods=['GET']) +def patent_information_route(): + """专利信息""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.patent_information(name=request.args['company']) + return {"info": "专利信息", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/software_copyrights', methods=['GET']) +def software_copyrights_route(): + """软件著作权""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.software_copyrights(name=request.args['company']) + return {"info": "软件著作权", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/website_record', methods=['GET']) +def website_record_route(): + """网站备案""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.website_record(name=request.args['company']) + return {"info": "网站备案", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/intellectual_property', methods=['GET']) +def intellectual_property_route(): + """知识产权全量数据""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.trademark_information(name=request.args['company']) + if result == '保存成功': + result = impl.patent_information(name=request.args['company']) + if result == '保存成功': + result = impl.software_copyrights(name=request.args['company']) + if result == '保存成功': + result = impl.website_record(name=request.args['company']) + return {"info": "知识产权全量数据", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/hearing_announcement', methods=['GET']) +def hearing_announcement_route(): + """开庭公告""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.hearing_announcement(name=request.args['company']) + return {"info": "开庭公告", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/executor', methods=['GET']) +def executor_route(): + """被执行人""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.executor(name=request.args['company']) + return {"info": "被执行人", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/court_announcement', methods=['GET']) +def court_announcement_route(): + """法院公告""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.court_announcement(name=request.args['company']) + return {"info": "法院公告", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/case_filing_information', methods=['GET']) +def case_filing_information_route(): + """立案信息""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.case_filing_information(name=request.args['company']) + return {"info": "立案信息", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/untrustworthy', methods=['GET']) +def untrustworthy_route(): + """失信人""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.untrustworthy(name=request.args['company']) + return {"info": "失信人", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/legal_proceedings', methods=['GET']) +def legal_proceedings_route(): + """法律诉讼""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.legal_proceedings(name=request.args['company']) + return {"info": "法律诉讼", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/delivery_announcement', methods=['GET']) +def delivery_announcement_route(): + """送达公告""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.delivery_announcement(name=request.args['company']) + return {"info": "送达公告", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/bankruptcy_reorganization', methods=['GET']) +def bankruptcy_reorganization_route(): + """破产重整""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.bankruptcy_reorganization(name=request.args['company']) + return {"info": "破产重整", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/restricted_spending_order', methods=['GET']) +def restricted_spending_order_route(): + """限制消费令""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.restricted_spending_order(name=request.args['company']) + return {"info": "限制消费令", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/final_case', methods=['GET']) +def final_case_route(): + """终本案件""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.final_case(name=request.args['company']) + return {"info": "终本案件", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/judicial_risks', methods=['GET']) +def judicial_risks_route(): + """司法风险全量数据""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.hearing_announcement(name=request.args['company']) + if result == '保存成功': + result = impl.executor(name=request.args['company']) + if result == '保存成功': + result = impl.court_announcement(name=request.args['company']) + if result == '保存成功': + result = impl.case_filing_information(name=request.args['company']) + if result == '保存成功': + result = impl.untrustworthy(name=request.args['company']) + if result == '保存成功': + result = impl.legal_proceedings(name=request.args['company']) + if result == '保存成功': + result = impl.delivery_announcement(name=request.args['company']) + if result == '保存成功': + result = impl.bankruptcy_reorganization(name=request.args['company']) + if result == '保存成功': + result = impl.restricted_spending_order(name=request.args['company']) + if result == '保存成功': + result = impl.final_case(name=request.args['company']) + return {"info": "司法风险全量数据", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/equity_pledge', methods=['GET']) +def equity_pledge_route(): + """股权出质""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.equity_pledge(name=request.args['company']) + return {"info": "股权出质", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/mortgage_movable_property', methods=['GET']) +def mortgage_movable_property_route(): + """动产抵押""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.mortgage_movable_property(name=request.args['company']) + return {"info": "动产抵押", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/land_mortgage', methods=['GET']) +def land_mortgage_route(): + """土地抵押""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.land_mortgage(name=request.args['company']) + return {"info": "土地抵押", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/operational_risks', methods=['GET']) +def operational_risks_route(): + """经营风险全量数据""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.equity_pledge(name=request.args['company']) + if result == '保存成功': + result = impl.mortgage_movable_property(name=request.args['company']) + if result == '保存成功': + result = impl.land_mortgage(name=request.args['company']) + return {"info": "经营风险全量数据", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/abnormal_operation', methods=['GET']) +def abnormal_operation_route(): + """经营异常""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.abnormal_operation(name=request.args['company']) + return {"info": "经营异常", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/administrative_penalties', methods=['GET']) +def administrative_penalties_route(): + """行政处罚""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.administrative_penalties(name=request.args['company']) + return {"info": "行政处罚", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/serious_violation', methods=['GET']) +def serious_violation_route(): + """严重违法""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.serious_violation(name=request.args['company']) + return {"info": "严重违法", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/tax_violation', methods=['GET']) +def tax_violation_route(): + """税收违法""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.tax_violation(name=request.args['company']) + return {"info": "税收违法", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/tax_arrears_announcement', methods=['GET']) +def tax_arrears_announcement_route(): + """欠税公告""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.tax_arrears_announcement(name=request.args['company']) + return {"info": "欠税公告", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + +@tyc_route.route('/regulatory_risks', methods=['GET']) +def operational_risks_route(): + """监管风险全量数据""" + try: + RouteParamsCheck(req=request.args, params=["company"]).required() + impl = TycDataImpl() + result = impl.abnormal_operation(name=request.args['company']) + if result == '保存成功': + result = impl.administrative_penalties(name=request.args['company']) + if result == '保存成功': + result = impl.serious_violation(name=request.args['company']) + if result == '保存成功': + result = impl.tax_violation(name=request.args['company']) + if result == '保存成功': + result = impl.tax_arrears_announcement(name=request.args['company']) + return {"info": "监管风险全量数据", "result": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code \ No newline at end of file diff --git a/Modules/TycApi/TycUtils.py b/Modules/TycApi/TycUtils.py new file mode 100644 index 0000000..80cd1b0 --- /dev/null +++ b/Modules/TycApi/TycUtils.py @@ -0,0 +1,177 @@ +import json +import time + +import requests +from DBHelper.MongoHelperInstance import DB_TYC + + +def judege_api_code(code): + """ + 判断状态码 + Parameters: + code: 传入状态码,返回状态码对应状态说明 + Returns: + 状态码说明信息 + """ + if code == 0: + return '请求成功' + elif code == 300000: + return '无数据' + elif code == 300001: + return '请求失败' + elif code == 300002: + return '账号失效' + elif code == 300003: + return '账号过期' + elif code == 300004: + return '访问频率过快' + elif code == 300005: + return '无权限访问此api' + elif code == 300006: + return '余额不足' + elif code == 300007: + return '剩余次数不足' + elif code == 300008: + return '缺少必要参数' + elif code == 300009: + return '账号信息有误' + elif code == 300010: + return 'URL不存在' + elif code == 300011: + return '此IP无权限访问此api' + elif code == 300012: + return '报告生成中' + + +def business_request(url, company, db, col): + """ + 基本信息接口调用 + Parameters: + url: 传入请求链接,请求后判断状态码, + company: 企业名称 + db: 数据库名称 + col: 集合名称 + Returns: + '保存成功' + """ + headers = {'Authorization': "5407573b-e41e-4ab4-9f46-daa0032ad0a4"} + # 根据传入url进行请求 + res = json.loads(requests.get(url, headers=headers).text) + # 判断请求返回结果中的error_code + code = res['error_code'] + status = judege_api_code(code) + # status为请求成功则保存result数据 + if status == '请求成功': + # 保存首次数据,判断页码 + insert_dict = dict() + insert_dict['企业名称'] = company + insert_dict['基本信息'] = res['result'] + insert_dict['录入时间'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + DB_TYC.upsert_single_data( + db, + col, + {"企业名称": company}, + insert_dict + ) + return '保存成功' + elif status == '无数据': + insert_dict = dict() + insert_dict['企业名称'] = company + insert_dict['基本信息'] = dict() + insert_dict['录入时间'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + DB_TYC.upsert_single_data( + db, + col, + {"企业名称": company}, + insert_dict + ) + return '保存成功' + else: + return status + + +def firest_request(url, company, db, col): + """ + 翻页接口首次调用 + Parameters: + url: 传入请求链接,请求后判断状态码, + company: 企业名称 + db: 数据库名称 + col: 集合名称 + Returns: + '保存成功' + """ + headers = {'Authorization': "5407573b-e41e-4ab4-9f46-daa0032ad0a4"} + # 根据传入url进行请求 + res = json.loads(requests.get(url, headers=headers).text) + # 判断请求返回结果中的error_code + code = res['error_code'] + status = judege_api_code(code) + # status为请求成功则保存result数据 + if status == '请求成功': + # 保存首次数据,判断页码 + insert_dict = dict() + insert_dict['企业名称'] = company + insert_dict['录入时间'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + insert_dict[col] = dict() + insert_dict[col]['result'] = res['result']['items'] + insert_dict[col]['total'] = res['result']['total'] + DB_TYC.upsert_single_data( + db, + col, + {"企业名称": company}, + insert_dict + ) + if int(res['result']['total']) > 20: + return int(res['result']['total']) + else: + return '保存成功' + elif status == '无数据': + insert_dict = dict() + insert_dict['企业名称'] = company + insert_dict['录入时间'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + insert_dict[col] = dict() + insert_dict[col]['result'] = list() + insert_dict[col]['total'] = 0 + DB_TYC.upsert_single_data( + db, + col, + {"企业名称": company}, + insert_dict + ) + return '保存成功' + else: + return status + + +def page_request(url, company, db, col): + """ + 翻页接口翻页调用 + Parameters: + url: 传入请求链接,请求后判断状态码, + company: 企业名称 + db: 数据库名称 + col: 集合名称 + Returns: + '保存成功' + """ + headers = {'Authorization': "5407573b-e41e-4ab4-9f46-daa0032ad0a4"} + # 根据传入url进行请求 + res = json.loads(requests.get(url, headers=headers).text) + # 判断请求返回结果中的error_code + code = res['error_code'] + status = judege_api_code(code) + # status为请求成功则保存result数据 + if status == '请求成功': + update_data = res['result']['items'] + update_str = "{}.result".format(col) + for item in update_data: + DB_TYC.update_single_data_by_add( + db, + col, + {'企业名称': company}, + {update_str: item} + ) + return '保存成功' + else: + return status \ No newline at end of file diff --git a/Modules/TycApi/__init__.py b/Modules/TycApi/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app.py b/app.py index 49ebf48..439f228 100644 --- a/app.py +++ b/app.py @@ -10,6 +10,7 @@ from Modules.Interface.InterfaceSetRoutes import apiset_route from Modules.Models.Score.ScoreRoutes import score_model_route from Modules.Questionnaire.QuestionnaireRoutes import questionnaire_route from Modules.Questions.QuestionsRoutes import question_route +from Modules.TycApi.TycRoutes import tyc_route app = Flask(__name__) CORS(app, supports_credentials=True) @@ -25,6 +26,7 @@ app.register_blueprint(question_route, url_prefix='/rating/question') app.register_blueprint(questionnaire_route, url_prefix='/rating/questionnaire') app.register_blueprint(filters_route, url_prefix='/rating/data_filters') app.register_blueprint(file_route, url_prefix='/rating/obj_file') +app.register_blueprint(tyc_route, url_prefix='/rating/tyc_api') @app.route('/admin/version')