Merge branch 'v0.21' into 'master'

用户列表

See merge request root/tfse_admin!20
This commit is contained in:
FECR-IBD 2022-03-30 08:47:28 +00:00
commit f427a7b540
6 changed files with 149 additions and 99 deletions

0
Log/__init__.py Normal file
View File

18
Log/log_utils.py Normal file
View File

@ -0,0 +1,18 @@
import functools
def error_info(func):
"""
校验token
return:
type:str
desc: token被解析后的值
"""
@functools.wraps(func)
def internal(*args, **kwargs):
try:
func()
except Exception:
return {"info": "参数异常了?"}, 500
return func(*args, **kwargs)
return internal

View File

@ -5,7 +5,6 @@ from itsdangerous import Serializer
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired, BadSignature from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired, BadSignature
from DBHelper.MongoHelper import MongoHelper from DBHelper.MongoHelper import MongoHelper
from user.user_db import FIND_DATA
TOKEN_KEY = "P0eHym@&CbaLzWkq" TOKEN_KEY = "P0eHym@&CbaLzWkq"
TOKEN_EXPIRE = 60*60*8 TOKEN_EXPIRE = 60*60*8

View File

@ -9,7 +9,111 @@ from werkzeug.security import generate_password_hash, check_password_hash
from DBHelper.MongoHelper import MongoHelper from DBHelper.MongoHelper import MongoHelper
from user.user_auth import create_token from user.user_auth import create_token
from user.user_utils import check_mail_fmt, check_pwd_fmt, decrypt_data from user.user_utils import check_mail_fmt, check_pwd_fmt, decrypt_data
from user.user_db import INSERT_DATA, FIND_DATA, UPSERT_DATA, DELETE_DATA, FIND_DATA_PAGE, UPDATE_INFO from user.user_db import DELETE_DATA, UPDATE_INFO
def list_user_impl(param1, param2, param3, param4):
"""
查询用户列表
param1:
type: dict
desc: 用户搜索条件 支持模糊查询条件
demo: {"姓名": "xxx", "邮箱": "xxx"}
param2:
type: dict
desc: 排序条件 asc正序 desc倒序
demo: {"姓名": asc}
param3:
type: int
desc: 每页数据数量
param4:
type: int
desc: 当前页数
"""
# 查询体构造方法
def make_search_body(param):
body = dict()
search_keys = list(param.keys())
if "uid" in search_keys:
body['UID'] = {"UID": param['uid']}
if "姓名" in search_keys:
body['name'] = {"$regex": param['姓名']}
if "邮箱" in search_keys:
body['email'] = {"$regex": param['邮箱']}
if "状态" in search_keys:
if param['状态'] == "正常":
body['status'] = "normal"
elif param['状态'] == "停用":
body['status'] = "disable"
else:
pass
if "角色" in search_keys:
roles = list()
role_map = {"管理员": "admin", "分析师": "analysts", "开发者": "developer", "运营人员": "operator", "访客": "guest"}
for role in list(set(param['角色'])):
roles.append(role_map[role])
body['role'] = {"$in": roles}
return body
# 顺序条件构造方法
def make_sort_body(param):
if param != {}:
columns_map = {"姓名": "name", "邮箱": "email", "状态": "status", "角色": "role", "创建时间": "create_time"}
asc_or_desc = 1 if list(param.values())[0] == "asc" else -1
sort_column = columns_map[list(param.keys())[0]]
body = {sort_column: asc_or_desc}
else:
body = {"create_time": -1}
return body
# 连接数据库
db = MongoHelper("tfse_v0.21")
search_body = make_search_body(param1)
sort = make_sort_body(param2)
page_size = int(param3)
page_no = int(param4)
total = db.find_all_data_with_count(
"管理端",
"用户",
search_body
)
records = db.find_data_by_page_with_sort(
"管理端",
"用户",
search_body,
["UID", "email", "name", "status", "role", "create_time"],
sort,
page_size,
page_no
)
if records:
for record in records:
record['uid'] = record.pop('UID')
record['邮箱'] = record.pop('email')
record['姓名'] = record.pop('name')
record['状态'] = record.pop('status')
record['角色'] = record.pop('role')
record['创建时间'] = record.pop('create_time')
else:
records = []
result = {
"records": records,
"total": total
}
return result
def create_user_impl(email, name, pwd, role): def create_user_impl(email, name, pwd, role):
@ -275,72 +379,6 @@ def send_vcode_to_user_impl(email):
return __main__() return __main__()
def list_user_impl(criteria, skip, limit):
"""
查询用户列表
Parameters:
criteria str 查询条件
Returns:
查询成功 list 用户列表
"""
def uid_query():
"""
uid查询
"""
result = FIND_DATA_PAGE("用户", "用户信息", {"UID": criteria}, skip, limit)
return result
def email_query():
"""
email查询
"""
result = FIND_DATA_PAGE("用户", "用户信息", {"email": criteria}, skip, limit)
return result
def name_query():
"""
name查询
"""
result = FIND_DATA_PAGE("用户", "用户信息", {"name": criteria}, skip, limit)
return result
def status_query():
"""
status查询
"""
result = FIND_DATA_PAGE("用户", "用户信息", {"status": criteria}, skip, limit)
return result
def role_query():
"""
role查询
"""
result = FIND_DATA_PAGE("用户", "用户信息", {"role": criteria}, skip, limit)
return result
def empty_query():
"""
空值查询
"""
result = FIND_DATA_PAGE("用户", "用户信息", {}, skip, limit)
return result
if criteria:
record = uid_query()
if len(record['data']) == 0:
record = email_query()
if len(record['data']) == 0:
record = name_query()
if len(record['data']) == 0:
record = status_query()
if len(record['data']) == 0:
record = role_query()
else:
record = empty_query()
return record
def disable_user_impl(uid): def disable_user_impl(uid):
""" """
禁用用户 禁用用户

View File

@ -26,6 +26,14 @@ class UserManage(User):
""" """
用户管理 用户管理
""" """
@staticmethod
def list_user(search, sort, page_size, page_no):
"""
用户信息列表
"""
return list_user_impl(search, sort, page_size, page_no)
def send_vcode_to_user(self): def send_vcode_to_user(self):
""" """
发送验证码 发送验证码
@ -44,12 +52,6 @@ class UserManage(User):
""" """
return create_user_impl(self.email, self.name, self.pwd, self.role) return create_user_impl(self.email, self.name, self.pwd, self.role)
def list_user(self):
"""
用户信息列表
"""
# TODO
def disable_user(self): def disable_user(self):
""" """
禁用用户 禁用用户
@ -79,9 +81,6 @@ class UserOperation(User):
self.token = None self.token = None
self.block = None self.block = None
self.vcode = None self.vcode = None
self.criteria = None
self.skip = None
self.limit = None
# 登录 # 登录
def login(self): def login(self):
@ -90,13 +89,6 @@ class UserOperation(User):
""" """
return login_impl(self.email, self.pwd, self.vcode) return login_impl(self.email, self.pwd, self.vcode)
# 查询
def query(self):
"""
查询用户信息
"""
return list_user_impl(self.criteria, self.skip, self.limit)
# 停用 # 停用
def deactivate(self): def deactivate(self):
return disable_user_impl(self.uid) return disable_user_impl(self.uid)

View File

@ -1,5 +1,6 @@
from flask import Blueprint, request from flask import Blueprint, request
from Log.log_utils import error_info
from user.user_obj import UserManage, UserOperation from user.user_obj import UserManage, UserOperation
from user.user_auth import verify_token, authority_scope from user.user_auth import verify_token, authority_scope
@ -15,6 +16,23 @@ def online_check_route(**kwargs):
return {"info": "正常"}, 200 return {"info": "正常"}, 200
@user_route.route('/list_user', methods=['POST'])
@verify_token
@authority_scope(['admin'])
@error_info
def list_user_route(**kwargs):
"""
用户信息列表接口
"""
user_manage = UserManage()
search = request.json['search']
sort = request.json['sort']
page_size = request.json['page_size']
page_no = request.json['page_no']
result = user_manage.list_user(search, sort, page_size, page_no)
return {"info": '查询结果', "result": result}, 200
@user_route.route('/send_vcode_to_user', methods=['POST']) @user_route.route('/send_vcode_to_user', methods=['POST'])
def send_vcode_to_user_route(): def send_vcode_to_user_route():
""" """
@ -66,21 +84,6 @@ def create_user_route(**kwargs):
return {"info": result}, 200 return {"info": result}, 200
@user_route.route('/list_user', methods=['GET'])
@verify_token
@authority_scope(['admin'])
def list_user_route(**kwargs):
"""
用户信息列表接口
"""
uo = UserOperation()
uo.criteria = request.args.get('criteria')
uo.skip = int(request.args.get('skip'))
uo.limit = int(request.args.get('limit'))
result = uo.query()
return {"info": '查询成功', "result": result}, 200
@user_route.route('/disable_user', methods=['GET']) @user_route.route('/disable_user', methods=['GET'])
@verify_token @verify_token
@authority_scope(['admin']) @authority_scope(['admin'])