Commit c49ac26f authored by Jalin's avatar Jalin

增加用户,统计,应用接口

parent 5d492c8e
...@@ -61,6 +61,9 @@ class Config: ...@@ -61,6 +61,9 @@ class Config:
EMAIL_SERVER_USER = '' EMAIL_SERVER_USER = ''
EMAIL_SERVER_PASSWORD = '' EMAIL_SERVER_PASSWORD = ''
WEB_ENABLE = 0
WEB_USER = {}
envs = [] envs = []
retry_time = 5 retry_time = 5
last_modify_time = 0 last_modify_time = 0
......
...@@ -17,7 +17,7 @@ class QueryLog(BaseLog): ...@@ -17,7 +17,7 @@ class QueryLog(BaseLog):
quick_log = [] quick_log = []
data = { data = {
'query_count': 1, 'query_count': 0,
'last_time': '', 'last_time': '',
} }
data_path = None data_path = None
......
from flask import Blueprint, request
from flask.json import jsonify
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity)
from py12306.config import Config
from py12306.query.query import Query
from py12306.user.user import User
app = Blueprint('app', __name__)
@app.route('/app/menus', methods=['GET'])
@jwt_required
def menus():
"""
菜单列表
"""
menus = [
{"id": 10, "name": "首页", "url": "/", "icon": "fa fa-tachometer-alt"},
{"id": 40, "name": "数据分析", "url": "/analyze", "icon": "fa fa-signature"},
{"id": 50, "name": "帮助中心", "url": "/help", "icon": "fa fa-search"}
]
return jsonify(menus)
@app.route('/app/actions', methods=['GET'])
@jwt_required
def actions():
"""
操作列表
"""
actions = [
{"text": "退出登录", "link": "", "icon": "fa fa-sign-out-alt"}
]
return jsonify(actions)
from flask import Blueprint, request
from flask.json import jsonify
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity)
from py12306.config import Config
from py12306.query.query import Query
from py12306.user.user import User
stat = Blueprint('stat', __name__)
@stat.route('/stat/dashboard', methods=['GET'])
@jwt_required
def dashboard():
"""
状态统计
任务数量,用户数量,查询次数
节点信息(TODO)
:return:
"""
from py12306.log.query_log import QueryLog
query_job_count = len(Query().jobs)
user_job_count = len(User().users)
query_count = QueryLog().data.get('query_count')
return jsonify({
'query_job_count': query_job_count,
'user_job_count': user_job_count,
'query_count': query_count
})
...@@ -4,14 +4,44 @@ from flask_jwt_extended import ( ...@@ -4,14 +4,44 @@ from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token, JWTManager, jwt_required, create_access_token,
get_jwt_identity) get_jwt_identity)
from py12306.config import Config
from py12306.user.job import UserJob
from py12306.user.user import User
user = Blueprint('user', __name__) user = Blueprint('user', __name__)
@user.route('/login', methods=['POST']) @user.route('/login', methods=['POST'])
def login(): def login():
"""
用户登录
:return:
"""
username = request.json.get('username', None) username = request.json.get('username', None)
password = request.json.get('password', None) password = request.json.get('password', None)
if username and password and username == '1': if username and password and username == Config().WEB_USER.get('username') and password == Config().WEB_USER.get(
'password'):
access_token = create_access_token(identity=username) access_token = create_access_token(identity=username)
return jsonify(access_token=access_token) return jsonify(access_token=access_token)
return jsonify({"msg": "用户名或密码错误"}), 401 return jsonify({"msg": "用户名或密码错误"}), 401
@user.route('/users', methods=['GET'])
def users():
"""
用户任务列表
:return:
"""
jobs = User().users
result = map(convert_job_to_info, jobs)
return jsonify(result)
def convert_job_to_info(job: UserJob):
return {
'key': job.key,
'user_name': job.user_name,
'is_ready': job.is_ready,
'is_loaded': job.user_loaded, # 是否成功加载 ready 是当前是否可用
'last_heartbeat': job.last_heartbeat
}
...@@ -5,23 +5,50 @@ from flask_jwt_extended import ( ...@@ -5,23 +5,50 @@ from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token, JWTManager, jwt_required, create_access_token,
get_jwt_identity) get_jwt_identity)
from py12306.web.handler.user import user from py12306.helpers.func import *
app = Flask(__name__)
app.register_blueprint(user)
# app.config['JWT_TOKEN_LOCATION'] = ['json'] # app.config['JWT_TOKEN_LOCATION'] = ['json']
app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
jwt = JWTManager(app)
@app.route('/', methods=['GET']) # @flask.route('/', methods=['GET'])
def test(): # def test():
print(111111) # print(111111)
def run(port=8080):
app.run(debug=True, port=port if port else 8080, host='0.0.0.0') # def run(port=8080):
# flask.run(debug=True, port=port if port else 8080, host='0.0.0.0')
@singleton
class Web:
session = None
jwt = None
def __init__(self):
self.session = Flask(__name__)
self.register_blueprint()
self.session.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
self.jwt = JWTManager(self.session)
pass
def register_blueprint(self):
from py12306.web.handler.user import user
from py12306.web.handler.stat import stat
from py12306.web.handler.app import app
self.session.register_blueprint(user)
self.session.register_blueprint(stat)
self.session.register_blueprint(app)
@classmethod
def run(cls):
self = cls()
self.start()
pass
def start(self):
self.session.run(debug=True, port=8080, host='0.0.0.0')
if __name__ == '__main__': if __name__ == '__main__':
run() Web.run()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment