Bläddra i källkod

用户详情、查询结果转dict

zhangnaiwen 2 år sedan
förälder
incheckning
1e840c3f5a
2 ändrade filer med 27 tillägg och 25 borttagningar
  1. 18 25
      src/app/api/users.py
  2. 9 0
      src/app/utils/to_dict.py

+ 18 - 25
src/app/api/users.py

@@ -6,6 +6,7 @@ from sqlalchemy.orm import Session
 from app.defines import StatesCode
 from app.database import engine
 from app.modle.users import User
+from app.utils.to_dict import to_dict
 
 ns = Namespace('users', description='用户管理接口')
 
@@ -32,14 +33,9 @@ class GetUserListApi(Resource):
             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)
+        data = to_dict(results)
 
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
+        return jsonify(code=StatesCode.SUCCESS, message="成功", data=data)
 
 
 add_user = reqparse.RequestParser(bundle_errors=True)
@@ -159,35 +155,32 @@ class UsersApi(Resource):
         return jsonify(code=StatesCode.SUCCESS, message="删除成功")
 
 
+user_details = reqparse.RequestParser(bundle_errors=True)
+user_details.add_argument(name='id', type=int, required=True, location='args', help='用户id')
+
+
 @ns.route('/user_details')
 class GetUsersApi(Resource):
     @ns.doc(id='get_users_details', description='获取用户详情')
-    @ns.expect()
+    @ns.expect(user_details)
     def get(self):
         """获取用户详情"""
-        data = \
-            {
-                "user_name": "admin",
-                "password": "123",
-                "name": "张三",
-                "mobile": "13912345678",
-                "email": "admin@qq.com",
-                "unit": "北京电信规划院",
-                "division": "研发中心",
-                "role": "admin",
-                "permission": 1,
-                "status_in_office": 1,
-                "position": "部门主管",
-                "account_status": 1,
-                "nationality": "中国"
-            },
+        user_id = request.args.get('id')
 
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
+        if user_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id不能为空")
+
+        with Session(engine) as session:
+            stmt = select(User).where(User.id == user_id)
+            results = session.execute(stmt).scalars().all()
+
+        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
 
     @ns.doc(id='update_users_details', description='更新用户详情')
     @ns.expect()
     def put(self):
         """更新用户详情"""
+
         return {"code": StatesCode.SUCCESS, "message": "成功", "data": ""}
 
 

+ 9 - 0
src/app/utils/to_dict.py

@@ -0,0 +1,9 @@
+def to_dict(results):
+    """sqlalchemy查询结果转dict"""
+    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 data