
import osfrom flask import Flask, request
from flask import jsonify
from flask_cors import CORSfrom db_utils import DbUtil
from jwt_util import decode, encode
from model_search import neo4j_dbapp = 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 print('url:' + url)pass_url = ["/", "/api/login", "/api/sign_in"]if url.startswith("/static") or url in pass_url:passelse:token = request.headers.get('Token')if not token:return jsonify({"code": 403,"msg": "您还未登录,请先登录"})else:global user_iduser_id = decode(token)['user_id']@app.route('/api/login', methods=['POST'])
def login():global user_iduser_id = 1params = 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_idresult = 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.jsonnode = 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.jsonnode = 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.jsonnode = 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')