|
@@ -1,7 +1,11 @@
|
|
|
-from flask import request
|
|
|
+from flask import request, jsonify
|
|
|
from flask_restx import Resource, Namespace, reqparse
|
|
|
+from sqlalchemy import insert, select, update, delete
|
|
|
+from sqlalchemy.orm import Session
|
|
|
|
|
|
from app.defines import StatesCode
|
|
|
+from app.database import engine
|
|
|
+from app.modle.users import User
|
|
|
|
|
|
ns = Namespace('users', description='用户管理接口')
|
|
|
|
|
@@ -20,46 +24,139 @@ class GetUserListApi(Resource):
|
|
|
status = request.args.get('status')
|
|
|
page_size = int(request.args.get('page_size', 20))
|
|
|
page = int(request.args.get('page', 1))
|
|
|
- data = [
|
|
|
- {"user_name": "admin", "mobile": "13912345678", "email": "admin@qq.com", "role": "admin", "permission": 1,
|
|
|
- "unit": "北京电信规划院", "registration_time": "2020-01-01 10:10"},
|
|
|
- {"user_name": "admin1", "mobile": "13912345679", "email": "admin1@qq.com", "role": "admin", "permission": 1,
|
|
|
- "unit": "北京电信", "registration_time": "2020-01-01 11:10"},
|
|
|
- ]
|
|
|
+
|
|
|
+ if status is None:
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message='用户状态不能为空')
|
|
|
+
|
|
|
+ with Session(engine) as session:
|
|
|
+ stmt = select(User).where(User.account_status == status).offset(page_size * (page - 1)).limit(page_size)
|
|
|
+ results = session.execute(stmt).scalars().all()
|
|
|
+
|
|
|
+ data = []
|
|
|
+ for result in results:
|
|
|
+ result_dict = result.__dict__
|
|
|
+ del result_dict['_sa_instance_state']
|
|
|
+ result_dict['register_time'] = result_dict.get('register_time').strftime("%Y-%m-%d %H:%M:%S")
|
|
|
+ data.append(result_dict)
|
|
|
+
|
|
|
return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
|
|
|
|
|
|
|
|
|
+add_user = reqparse.RequestParser(bundle_errors=True)
|
|
|
+add_user.add_argument(name='username', type=str, required=True, location='form', help='用户名')
|
|
|
+add_user.add_argument(name='password', type=str, required=True, location='form', help='密码')
|
|
|
+add_user.add_argument(name='photograph', type=str, required=False, location='form', help='照片')
|
|
|
+add_user.add_argument(name='name', type=str, required=False, location='form', help='姓名')
|
|
|
+add_user.add_argument(name='phone', type=str, required=False, location='form', help='电话')
|
|
|
+add_user.add_argument(name='email', type=str, required=False, location='form', help='邮箱')
|
|
|
+add_user.add_argument(name='company', type=str, required=False, location='form', help='公司')
|
|
|
+add_user.add_argument(name='department', type=str, required=False, location='form', help='部门')
|
|
|
+add_user.add_argument(name='role', type=str, required=False, location='form', help='角色')
|
|
|
+add_user.add_argument(name='permission', type=str, required=False, location='form', help='权限')
|
|
|
+add_user.add_argument(name='on_job_status', type=str, required=False, location='form', help='在职状态')
|
|
|
+add_user.add_argument(name='duty', type=str, required=False, location='form', help='职务')
|
|
|
+add_user.add_argument(name='nationality', type=str, required=False, location='form', help='国籍')
|
|
|
+
|
|
|
+users_status = reqparse.RequestParser(bundle_errors=True)
|
|
|
+users_status.add_argument(name='id', type=int, required=True, location='form', help='用户id')
|
|
|
+users_status.add_argument(name='status', type=int, required=True, location='form', help='用户状态')
|
|
|
+
|
|
|
+del_users = reqparse.RequestParser(bundle_errors=True)
|
|
|
+del_users.add_argument(name='id', type=int, required=True, location='form', help='用户id')
|
|
|
+
|
|
|
+
|
|
|
@ns.route('/user')
|
|
|
class UsersApi(Resource):
|
|
|
@ns.doc(id='query_users', description='搜索用户')
|
|
|
@ns.expect()
|
|
|
def get(self):
|
|
|
"""搜索用户"""
|
|
|
- data = [
|
|
|
- {"user_name": "admin", "mobile": "13912345678", "email": "admin@qq.com", "role": "admin", "permission": 1,
|
|
|
- "unit": "北京电信规划院", "registration_time": "2020-01-01 10:10"},
|
|
|
- # {"user_name": "admin1", "mobile": "13912345679", "email": "admin1@qq.com", "role": "admin", "permission": 1,
|
|
|
- # "unit": "北京电信", "registration_time": "2020-01-01 11:10"},
|
|
|
- ]
|
|
|
+ data = []
|
|
|
return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
|
|
|
|
|
|
@ns.doc(id='add_users', description='添加用户')
|
|
|
- @ns.expect()
|
|
|
+ @ns.expect(add_user)
|
|
|
def post(self):
|
|
|
"""添加用户"""
|
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": "user002"}
|
|
|
-
|
|
|
- @ns.doc(id='modify_users_details', description='修改用户状态,激活、禁用')
|
|
|
- @ns.expect()
|
|
|
+ username = request.form.get('username')
|
|
|
+ password = request.form.get('password')
|
|
|
+ photograph = request.form.get('photograph')
|
|
|
+ name = request.form.get('name')
|
|
|
+ phone = request.form.get('phone')
|
|
|
+ email = request.form.get('email')
|
|
|
+ company = request.form.get('company')
|
|
|
+ department = request.form.get('department')
|
|
|
+ role = request.form.get('role')
|
|
|
+ permission = request.form.get('permission')
|
|
|
+ on_job_status = request.form.get('on_job_status')
|
|
|
+ duty = request.form.get('duty')
|
|
|
+ nationality = request.form.get('nationality')
|
|
|
+
|
|
|
+ if username is None or password is None:
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户名或密码不能为空")
|
|
|
+
|
|
|
+ with Session(engine) as session:
|
|
|
+
|
|
|
+ # 判断用户是否存在
|
|
|
+ stmt = select(User).where(User.user_name == username)
|
|
|
+ result = session.execute(stmt).scalars().first()
|
|
|
+ if result:
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户已存在")
|
|
|
+
|
|
|
+ # 添加用户
|
|
|
+ session.execute(
|
|
|
+ insert(User).values(
|
|
|
+ user_name=username,
|
|
|
+ password=User().generate_password(password),
|
|
|
+ photograph=photograph,
|
|
|
+ name=name,
|
|
|
+ phone=phone,
|
|
|
+ email=email,
|
|
|
+ company=company,
|
|
|
+ department=department,
|
|
|
+ role=role,
|
|
|
+ permission=permission,
|
|
|
+ on_job_status=on_job_status,
|
|
|
+ duty=duty,
|
|
|
+ nationality=nationality,
|
|
|
+
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+ session.commit()
|
|
|
+
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message="添加用户成功")
|
|
|
+
|
|
|
+ @ns.doc(id='modify_users_status', description='修改用户状态,激活、禁用')
|
|
|
+ @ns.expect(users_status)
|
|
|
def put(self):
|
|
|
"""修改用户状态,激活、禁用"""
|
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": ""}
|
|
|
+ user_id = int(request.form.get('id'))
|
|
|
+ account_status = int(request.form.get('status'))
|
|
|
+
|
|
|
+ if user_id is None or account_status is None:
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id或用户状态不能为空")
|
|
|
+
|
|
|
+ with Session(engine) as session:
|
|
|
+ session.execute(update(User).where(User.id == user_id).values(account_status=account_status))
|
|
|
+ session.commit()
|
|
|
+
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message="修改用户状态成功")
|
|
|
|
|
|
@ns.doc(id='delete_users', description='删除用户')
|
|
|
- @ns.expect()
|
|
|
+ @ns.expect(del_users)
|
|
|
def delete(self):
|
|
|
"""删除用户"""
|
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": "user003"}
|
|
|
+ user_id = request.form.get('id')
|
|
|
+
|
|
|
+ if user_id is None:
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id不能为空")
|
|
|
+
|
|
|
+ with Session(engine) as session:
|
|
|
+ session.execute(delete(User).where(User.id == user_id))
|
|
|
+ session.commit()
|
|
|
+
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message="删除成功")
|
|
|
|
|
|
|
|
|
@ns.route('/user_details')
|