diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..81c4d70 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +/db/__pycache__/__init__.cpython-38.pyc +/db/__pycache__/tyc.cpython-38.pyc +/.idea/.gitignore +/.idea/inspectionProfiles/profiles_settings.xml +/.idea/inspectionProfiles/Project_Default.xml +/.idea/misc.xml +/.idea/modules.xml +/.idea/service_tyc.iml +/.idea/vcs.xml +/methods/__pycache__/__init__.cpython-38.pyc +/methods/__pycache__/conserve_methods.cpython-38.pyc +/methods/__pycache__/general_methods.cpython-38.pyc +/methods/__pycache__/tianyancha_api.cpython-38.pyc diff --git a/app.py b/app.py new file mode 100644 index 0000000..c896e7d --- /dev/null +++ b/app.py @@ -0,0 +1,14 @@ +from flask import Flask +from flask_cors import * + +from routes import server_tyc + +app = Flask(__name__) + +app.config['JSON_SORT_KEYS'] = False +app.register_blueprint(server_tyc, url_prefix='/server_tyc') +CORS(app, supports_credentials=True) + + +if __name__ == '__main__': + app.run() diff --git a/db/__init__.py b/db/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/db/tyc.py b/db/tyc.py new file mode 100644 index 0000000..e24f532 --- /dev/null +++ b/db/tyc.py @@ -0,0 +1,25 @@ +import time +from urllib import parse + +import pymongo + +from setting import DB_USER, DB_PASS, DB_HOST, DB_PORT + +USER = parse.quote_plus(DB_USER) +PASSWORD = parse.quote_plus(DB_PASS) + +client = pymongo.MongoClient('mongodb://%s:%s@%s:%s/' % (USER, PASSWORD, DB_HOST, DB_PORT)) + + +def update_data(**kwargs): + """ + 按条件更新数据 + """ + data = kwargs['data'] + my_col = client[kwargs['db']][kwargs['col']] + data['录入时间'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + if 'new' in kwargs: + my_col.update_one(kwargs['find'], {"$set": data}, upsert=True) + else: + my_col.update_one(kwargs['find'], {"$set": data}) + diff --git a/gitignore.txt b/gitignore.txt new file mode 100644 index 0000000..237033c --- /dev/null +++ b/gitignore.txt @@ -0,0 +1,3 @@ +/.idea +/venv +*.pyc \ No newline at end of file diff --git a/methods/__init__.py b/methods/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/methods/conserve_methods.py b/methods/conserve_methods.py new file mode 100644 index 0000000..a853d24 --- /dev/null +++ b/methods/conserve_methods.py @@ -0,0 +1,34 @@ +from db.tyc import update_data +from setting import DB_JYFX, DB_SFFX, DB_TYFX, DB_GSBJ + + +# 保存司法风险 +def conserve_judicial_risk(name, key, value): + insert_data = dict() + insert_data['企业名称'] = name + insert_data[key] = value + update_data(db=DB_SFFX, col=key, find={"企业名称": name}, data=insert_data, new=True) + + +# 保存经营风险 +def conserve_business_risk(name, key, value): + insert_data = dict() + insert_data['企业名称'] = name + insert_data[key] = value + update_data(db=DB_JYFX, col=key, find={"企业名称": name}, data=insert_data, new=True) + + +# 保存天眼风险 +def conserve_tianyan_risk(name, key, value): + insert_data = dict() + insert_data['企业名称'] = name + insert_data[key] = value + update_data(db=DB_TYFX, col=key, find={"企业名称": name}, data=insert_data, new=True) + + +# 保存公司背景 +def conserve_company_background(name, key, vlaue): + insert_data = dict() + insert_data['企业名称'] = name + insert_data[key] = vlaue + update_data(db=DB_GSBJ, col=key, find={"企业名称": name}, data=insert_data, new=True) diff --git a/methods/general_methods.py b/methods/general_methods.py new file mode 100644 index 0000000..9407da2 --- /dev/null +++ b/methods/general_methods.py @@ -0,0 +1,19 @@ +from methods.tianyancha_api import judicial_risk, serious_violation, administrative_sanction, environmental_punishment, \ + abnormal_operation, tax_arrears_announcement, tax_violation, equity_pledge, peripheral_risk, company_baseinfo + + +def save_full_data(name): + """ + 保存天眼查全量数据 + """ + judicial_risk(name) + serious_violation(name) + administrative_sanction(name) + environmental_punishment(name) + abnormal_operation(name) + tax_arrears_announcement(name) + tax_violation(name) + equity_pledge(name) + peripheral_risk(name) + company_baseinfo(name) + diff --git a/methods/tianyancha_api.py b/methods/tianyancha_api.py new file mode 100644 index 0000000..7a6d2fd --- /dev/null +++ b/methods/tianyancha_api.py @@ -0,0 +1,191 @@ +""" +天眼查API +""" +import json +import requests + +from methods.conserve_methods import conserve_judicial_risk, conserve_business_risk, conserve_tianyan_risk, \ + conserve_company_background + +token = "5407573b-e41e-4ab4-9f46-daa0032ad0a4" +headers = {'Authorization': token} + + +# 司法风险 +def judicial_risk(name): + url = 'http://open.api.tianyancha.com/services/open/cb/judicial/2.0?keyword={}' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text)['result'] + res = dict() + res['开庭公告'] = result['ktAnnouncementList'] + res['被执行人'] = result['zhixingList'] + res['法院公告'] = result['courtAnnouncementList'] + res['立案信息'] = result['courtRegisterList'] + res['失信人'] = result['dishonestList'] + res['诉讼'] = result['lawSuitList'] + res['送达公告'] = result['sendAnnouncementList'] + for key, value in res.items(): + conserve_judicial_risk(name, key, value) + except Exception: + res = dict() + res['开庭公告'] = dict() + res['被执行人'] = dict() + res['法院公告'] = dict() + res['立案信息'] = dict() + res['失信人'] = dict() + res['诉讼'] = dict() + res['送达公告'] = dict() + for key, value in res.items(): + conserve_judicial_risk(name, key, value) + + +# 经营风险-严重违法 +def serious_violation(name): + url = 'http://open.api.tianyancha.com/services/open/mr/illegalinfo/2.0?pageSize=20&keyword={}&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '严重违法', res) + except Exception: + res = dict() + conserve_business_risk(name, '严重违法', res) + + +# 经营风险-行政处罚 +def administrative_sanction(name): + url = 'http://open.api.tianyancha.com/services/open/mr/punishmentInfo/3.0?pageSize=20&keyword={}&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '行政处罚', res) + except Exception: + res = dict() + conserve_business_risk(name, '行政处罚', res) + + +# 经营风险-环保处罚 +def environmental_punishment(name): + url = 'http://open.api.tianyancha.com/services/open/mr/environmentalPenalty/2.0?name={}&pageSize=20&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '环保处罚', res) + except Exception: + res = dict() + conserve_business_risk(name, '环保处罚', res) + + +# 经营风险-经营异常 +def abnormal_operation(name): + url = 'http://open.api.tianyancha.com/services/open/mr/abnormal/2.0?pageSize=20&keyword={}&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '经营异常', res) + except Exception: + res = dict() + conserve_business_risk(name, '经营异常', res) + + +# 经营风险-欠税公告 +def tax_arrears_announcement(name): + url = 'http://open.api.tianyancha.com/services/open/mr/ownTax/2.0?pageSize=20&keyword={}&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '欠税公告', res) + except Exception: + res = dict() + conserve_business_risk(name, '欠税公告', res) + + +# 经营风险-税收违法 +def tax_violation(name): + url = 'http://open.api.tianyancha.com/services/open/mr/taxContravention/2.0?pageSize=20&keyword={}&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '税收违法', res) + except Exception: + res = dict() + conserve_business_risk(name, '税收违法', res) + + +# 经营风险-股权出质 +def equity_pledge(name): + url = 'http://open.api.tianyancha.com/services/open/mr/equityInfo/2.0?pageSize=20&keyword={}&pageNum=1' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['result'] = result['result']['items'] + res['total'] = result['result']['total'] + conserve_business_risk(name, '股权出质', res) + except Exception: + res = dict() + conserve_business_risk(name, '股权出质', res) + + +# 企业天眼风险-周边风险 +def peripheral_risk(name): + url = 'http://open.api.tianyancha.com/services/open/risk/riskInfo/2.0?keyword={}' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = dict() + res['自身风险'] = result['result']['riskList'][0] + res['周边风险'] = result['result']['riskList'][1] + res['历史风险'] = result['result']['riskList'][2] + res['预警提醒'] = result['result']['riskList'][3] + for key, value in res.items(): + conserve_tianyan_risk(name, key, value) + except Exception: + res = dict() + res['自身风险'] = dict() + res['周边风险'] = dict() + res['历史风险'] = dict() + res['预警提醒'] = dict() + for key, value in res.items(): + conserve_tianyan_risk(name, key, value) + + +# 公司背景-企业基本信息 +def company_baseinfo(name): + url = 'http://open.api.tianyancha.com/services/open/ic/baseinfo/normal?keyword={}' + url = url.format(name) + + try: + result = json.loads(requests.get(url, headers=headers).text) + res = result['result'] + conserve_company_background(name, '基本信息', res) + except Exception: + res = dict() + conserve_company_background(name, '基本信息', res) diff --git a/routes.py b/routes.py new file mode 100644 index 0000000..e9c2e1d --- /dev/null +++ b/routes.py @@ -0,0 +1,13 @@ +from flask import Blueprint, request + +from methods.general_methods import save_full_data + +server_tyc = Blueprint('server_tyc', __name__) + + +# 保存天眼查全量数据 +@server_tyc.route('/upload_tyc_data', methods=['POST']) +def upload_tyc_data(): + name = request.json['企业名称'] + save_full_data(name) + return {"info": "保存成功"}, 200 diff --git a/setting.py b/setting.py new file mode 100644 index 0000000..2eb9abd --- /dev/null +++ b/setting.py @@ -0,0 +1,14 @@ +PROJECT_NAME = 'tfse_tyc' +PROJECT_PORT = '60006' + +# 数据库配置(tyc) +DB_HOST = '116.63.130.34' +DB_USER = 'root' +DB_PASS = 'gP@DwMSVd5Sh6EiH' +DB_PORT = 27019 + +# 数据库参数 +DB_GSBJ = '公司背景' +DB_SFFX = '司法风险' +DB_JYFX = '经营风险' +DB_TYFX = '天眼风险'