Parcourir la source

获取角色成员、移除角色成员、批量移除角色成员
调整获取当前时间函数位置

zhangnaiwen il y a 2 ans
Parent
commit
705f0b4763

+ 53 - 18
src/app/api/role.py

@@ -21,7 +21,6 @@ role_list.add_argument(name='page', type=int, location='args', required=False, h
 
 @ns.route('/role_list')
 class GetUserListApi(Resource):
-
     method_decorators = [login_required]
 
     @ns.doc(id='get_role_list', description='获取角色列表')
@@ -48,7 +47,6 @@ role.add_argument(name='role_permission', type=str, location='form', required=Fa
 
 @ns.route('/role')
 class RoleApi(Resource):
-
     method_decorators = [login_required]
 
     @ns.doc(id='get_role', description='搜索角色')
@@ -140,43 +138,80 @@ class RoleApi(Resource):
         return jsonify(code=StatesCode.SUCCESS, message="删除角色成功")
 
 
+get_member = reqparse.RequestParser(bundle_errors=True)
+get_member.add_argument(name='role_id', type=int, location='args', required=False, help='角色id')
+
+del_member = reqparse.RequestParser(bundle_errors=True)
+del_member.add_argument(name='user_id', type=int, location='form', required=False, help='用户id')
+
+batch_del_member = reqparse.RequestParser(bundle_errors=True)
+batch_del_member.add_argument(name='users_id', type=str, location='form', required=False, help='用户ids')
+
+
 @ns.route('/member')
 class RoleMemberApi(Resource):
 
     method_decorators = [login_required]
 
     @ns.doc(id='get_role_member', description='获取角色成员')
-    @ns.expect()
+    @ns.expect(get_member)
     def get(self):
         """获取角色成员"""
-        data = {
-            'id': '1',
-            'name': '张三',
-            'modle': '13999999999',
-            'email': '123@test.com',
-            'organization': '北京',
-            'register_time': '2020-10-01',
-            'status': 1,
+        role_id = request.args.get('role_id')
 
-        }
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
+        if role_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message='角色id不能为空')
+
+        with Session(engine) as session:
+            stmt = select(User).where(User.role == role_id)
+            results = session.execute(stmt).scalars().all()
+
+        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
 
     @ns.doc(id='delete_role_member', description='移除角色成员')
-    @ns.expect()
+    @ns.expect(del_member)
     def put(self):
         """移除角色成员"""
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": '移除成功'}
+        user_id = request.form.get('user_id')
+
+        if user_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message='用户id不能为空')
+
+        with Session(engine) as session:
+            stmt = update(User).where(User.id == user_id).values(role=None)
+            session.execute(stmt)
+            session.commit()
 
+        return jsonify(code=StatesCode.SUCCESS, message="移除成功")
+
+    # class BatchDeleteRoleMember(Resource):
     @ns.doc(id='batch_delete_role_member', description='批量移除角色成员')
-    @ns.expect()
+    @ns.expect(batch_del_member)
     def delete(self):
         """批量移除角色成员"""
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": '批量移除成功'}
+        users_id = request.form.get('users_id')
+
+        if users_id is not None:
+            users_id = json.loads(users_id)
+        else:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message='用户id不能为空')
+
+        values = []
+        for user_id in users_id:
+            values.append({"id": user_id, "role": None})
+
+        with Session(engine) as session:
+            session.execute(
+                update(User),
+                values
+            )
+            session.commit()
+
+        return jsonify(code=StatesCode.SUCCESS, message='批量移除成功')
 
 
 @ns.route('/role_permission')
 class RolePermissionApi(Resource):
-
     method_decorators = [login_required]
 
     @ns.doc(id='get_role_permission', description='获取权限配置信息')

+ 1 - 1
src/app/api/users.py

@@ -44,7 +44,7 @@ class GetUserListApi(Resource):
 
 
 add_user = reqparse.RequestParser(bundle_errors=True)
-add_user.add_argument(name='id', type=str, required=True, location='form', help='用户id')
+add_user.add_argument(name='id', type=str, required=False, location='form', help='用户id')
 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='照片')

+ 1 - 1
src/app/modle/role.py

@@ -1,4 +1,4 @@
-from sqlalchemy import String, Column, Integer, DateTime, JSON, create_engine
+from sqlalchemy import String, Column, Integer, JSON
 
 from app.modle import Base
 

+ 2 - 6
src/app/modle/users.py

@@ -4,11 +4,7 @@ from sqlalchemy import String, Column, Integer, DateTime
 from werkzeug.security import check_password_hash, generate_password_hash
 
 from app.modle import Base
-
-
-def cnNow():
-    """获取时间,年月日时分秒格式"""
-    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
+from app.utils.now import cn_now
 
 
 class User(Base):
@@ -31,7 +27,7 @@ class User(Base):
     account_status = Column(Integer, nullable=True, unique=False, index=False, default=0,
                             doc='账户状态,0为正常,1为禁用')
     nationality = Column(String, nullable=True, unique=False, index=False, doc='国籍')
-    register_time = Column(DateTime, nullable=True, unique=False, index=False, default=cnNow(), doc='注册时间')
+    register_time = Column(DateTime, nullable=True, unique=False, index=False, default=cn_now(), doc='注册时间')
 
     # 赋值password,则自动加密存储。
     def generate_password(self, value):

+ 2 - 2
src/app/utils/jwt_util.py

@@ -39,8 +39,8 @@ def verify_jwt(token):
     except jwt.DecodeError:
         payload = None
 
-    # except jwt.InvalidSignatureError:
-    #     payload = None
+    except jwt.ExpiredSignatureError:
+        payload = None
 
     return payload
 

+ 6 - 0
src/app/utils/now.py

@@ -0,0 +1,6 @@
+from datetime import datetime
+
+
+def cn_now():
+    """获取时间,年月日时分秒格式"""
+    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")