python
复制代码
import os
from flask import Flask, request
from flask import jsonify
from flask_cors import CORS
from db_utils import DbUtil
from jwt_util import decode, encode
from model_search import neo4j_db
app = Flask(__name__)
CORS(app) # 允许所有域名访问
neo4j_db_handle = neo4j_db()
user_id = None
# 获取项目目录
APP_PATH = os.path.dirname(__file__)
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{APP_PATH}/database'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 初始化数据库
DbUtil.init_app(app)
@app.before_request
def before():
url = request.path # 当前请求的URL
print('url:' + url)
pass_url = ["/", "/api/login", "/api/sign_in"]
if url.startswith("/static") or url in pass_url:
pass
else:
token = request.headers.get('Token')
if not token:
return jsonify({
"code": 403,
"msg": "您还未登录,请先登录"
})
else:
global user_id
user_id = decode(token)['user_id']
@app.route('/api/login', methods=['POST'])
def login():
global user_id
user_id = 1
params = request.get_json()
handler = DbUtil()
user = handler.authentication(params)
if user:
token = encode(user.id)
return jsonify({
"code": 200,
"data": token
})
else:
return jsonify({
"code": 403,
"msg": "用户名或密码错误"
})
# 查询用户信息
@app.route('/api/userinfo', methods=['GET', 'POST'])
def userinfo():
handler = DbUtil()
global user_id
result = handler.find_user(user_id)
return jsonify({
"code": 200,
"data": result
})
@app.route('/api/sign_in', methods=['POST'])
def sign_in():
"""
注册
"""
data = request.get_json()
handler = DbUtil()
return handler.add_user(data)
@app.route('/search_name_kg', methods=['GET', 'POST'])
def search_name():
entity = request.json.get('name')
json_data = neo4j_db_handle.get_kg_new(entity)
return jsonify({
"code": 200,
"data": json_data
})
@app.route('/api/find_list', methods=['POST'])
def find_list():
# 获取前端传递的参数
current = int(request.json.get('pageNum', 1))
limit = int(request.json.get('pageSize', 10))
name_query = request.json.get('name', '')
json_data = neo4j_db_handle.find_list(current, limit, name_query)
return jsonify({
"code": 200,
"data": json_data
})
@app.route('/create_node', methods=['POST'])
def create_node():
data = request.json
node = neo4j_db_handle.create_node(data.get("type"), data.get("name"))
return jsonify({
"code": 200,
"data": node
})
@app.route('/update_node', methods=['POST'])
def update_node():
data = request.json
node = neo4j_db_handle.update_node(data.get("type"), data.get("id"), data.get("name"))
return jsonify({
"code": 200,
"data": node
})
@app.route('/delete_node', methods=['POST'])
def delete_node():
data = request.json
node = neo4j_db_handle.delete_node(data.get("type"), data.get("id"))
return jsonify({
"code": 200,
"data": node
})
if __name__ == '__main__':
app.run(debug=True, port='5000', host='127.0.0.1')