baoyubo 7 місяців тому
батько
коміт
f0d0b3c9ac
2 змінених файлів з 179 додано та 12 видалено
  1. 174 7
      routers/prod_api/system/user/__init__.py
  2. 5 5
      utils/ry_system_util.py

+ 174 - 7
routers/prod_api/system/user/__init__.py

@@ -12,6 +12,146 @@ import traceback
 
 router = APIRouter()
 
+
+@router.get('/')
+async def usercreate01(
+                    db: Session = Depends(get_db),
+                    user_id: int = Depends(valid_access_token)):
+    try:
+        return {
+            "code": 200,
+            "msg": "成功",
+            "data": {
+                "postIds":None,
+                "posts":None,
+                "roleIds":None,
+                "roles":get_role(db),
+                "user":None
+            }
+        }
+
+    except Exception as e:
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
+
+@router.post('')
+async def usercreate(
+                    db: Session = Depends(get_db),
+                    user_id: int = Depends(valid_access_token),
+                    body = Depends(remove_xss_json)
+):
+    try:
+        if 'deptId' in body:
+            deptId = body['deptId']
+        else:
+            deptId = None
+        if 'phonenumber' in body:
+            phonenumber = body['phonenumber']
+        else:
+            phonenumber = None
+        if 'email' in body:
+            email = body['email']
+        else:
+            email = None
+        if 'sex' in body:
+            sex = body['sex']
+        else:
+            sex = None
+        userName = body['userName']
+        nickName = body['nickName']
+        roleIds = body['roleIds']
+        postIds = body['postIds']
+        remark = body['remark']
+        status = body['status']
+        password = '$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne'
+
+        new_user = SysUser(
+            user_name = userName,
+            nick_name=nickName,
+            dept_id=deptId,
+            phonenumber=phonenumber,
+            email=email,
+            sex=sex,
+            remark=remark,
+            status=status,
+            password=password
+        )
+        db.add(new_user)
+        db.commit()
+        db.refresh(new_user)
+
+        # 创建新的用户角色关联
+        new_roles = [SysUserRole(user_id=new_user.user_id, role_id=role_id) for role_id in roleIds]
+        db.add_all(new_roles)
+
+        # 创建新的用户角色关联
+        new_posts = [SysUserPost(user_id=new_user.user_id, post_id=post_id) for post_id in postIds]
+        db.add_all(new_posts)
+
+        db.commit()
+        return {"code": 200, "msg": "创建成功", "data": None}
+
+
+    except Exception as e:
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
+
+@router.put('')
+async def userupdate(
+                    db: Session = Depends(get_db),
+                    user_id: int = Depends(valid_access_token),
+                    body = Depends(remove_xss_json)
+):
+    try:
+        user_id_1 = body['userId']
+        user = user_id_get_user_info(db,user_id_1)
+        nickName = body['nickName']
+        deptId = body['deptId']
+        phonenumber = body['phonenumber']
+        email = body['email']
+        sex = body['sex']
+        roleIds = body['roleIds']
+        postIds = body['postIds']
+        remark = body['remark']
+
+        user.nick_name=nickName
+        user.dept_id=deptId
+        user.phonenumber=phonenumber
+        user.email=email
+        user.sex=sex
+        user.remark=remark
+        # 解析角色ID列表
+        # role_ids_list = [int(id) for id in roleIds.split(',')]
+
+        # 清除当前用户的所有角色关联
+        db.query(SysUserRole).filter(SysUserRole.user_id == user_id_1).delete()
+
+        # 创建新的用户角色关联
+        new_roles = [SysUserRole(user_id=user_id_1, role_id=role_id) for role_id in roleIds]
+        db.add_all(new_roles)
+
+        # 解析角色ID列表
+        # post_ids_list = [int(id) for id in postIds.split(',')]
+
+        # 清除当前用户的所有角色关联
+        db.query(SysUserPost).filter(SysUserPost.user_id == user_id_1).delete()
+
+        # 创建新的用户角色关联
+        new_posts = [SysUserPost(user_id=user_id_1, post_id=post_id) for post_id in postIds]
+        db.add_all(new_posts)
+
+        db.commit()
+        return {"code": 200, "msg": "更新成功", "data": None}
+
+
+    except Exception as e:
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
+
+
+
+
+
 @router.get('/getInfo')
 async def getInfo(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
     # 用户信息
@@ -174,8 +314,12 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
         users = query.offset((page - 1) * pageSize).limit(pageSize).all()
 
         # 将查询结果转换为列表形式的字典
-        user_list = [
-            {
+        user_list = []
+        for user in users:
+            roleIds = user_id_get_user_roleIds(db, user.user_id)
+            user_roles = role_id_list_get_user_role(db,roleIds)
+
+            user_info = {
                 "userId": user.user_id,
                 "tenantId": user.tenant_id,
                 "deptId": user.dept_id,
@@ -192,13 +336,12 @@ async def userlist( deptId: int = Query(None ,description='部门id'),
                 "remark": user.remark,
                 "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
                 "deptName": user.dept_name,
-                "roles": None,
+                "roles": user_roles,
                 "roleIds": None,
                 "postIds": None,
                 "roleId": None
             }
-            for user in users
-        ]
+            user_list.append(user_info)
 
         # 返回结果
         return {
@@ -361,6 +504,30 @@ async def get_user_video_points(
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
 
+@router.put('/authRole')
+async def authRoleUpdate( userId: int = Query(None ,description='用户id'),
+                    roleIds: str = Query(None ,description='权限id'),
+                    db: Session = Depends(get_db),
+                    user_id: int = Depends(valid_access_token)):
+    try:
+
+        # 解析角色ID列表
+        role_ids_list = [int(id) for id in roleIds.split(',')]
+
+        # 清除当前用户的所有角色关联
+        db.query(SysUserRole).filter(SysUserRole.user_id == userId).delete()
+
+        # 创建新的用户角色关联
+        new_roles = [SysUserRole(user_id=userId, role_id=role_id) for role_id in role_ids_list]
+        db.add_all(new_roles)
+        db.commit()
+        return {"code": 200, "msg": "更新成功", "data": None}
+
+
+    except Exception as e:
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
+@router.get('/authRole/{user_id_1}')
 @router.get('/{user_id_1}')
 async def userlist( user_id_1: int = Query(None ,description='用户id'),
                     db: Session = Depends(get_db),
@@ -390,12 +557,12 @@ async def userlist( user_id_1: int = Query(None ,description='用户id'),
                 "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
                 "deptName": user.dept_name,
                 "roles": user_roles,
-                "roleIds": None,
+                "roleIds": roleIds,
                 "postIds": None,
                 "roleId": None
             }
 
-        roles = get_role(db)
+        roles = get_role(db,roleIds)
 
 
         # 返回结果

+ 5 - 5
utils/ry_system_util.py

@@ -26,7 +26,7 @@ def user_id_get_user_videoIds(db,user_id):
     resutl = query.all()
     return resutl
 
-def role_list_to_dict(roles):
+def role_list_to_dict(roles,role_id_list):
     return [
         {
             "roleId": role.role_id,
@@ -39,7 +39,7 @@ def role_list_to_dict(roles):
             "status": role.status,
             "remark": role.remark,
             "createTime": role.create_time.strftime('%Y-%m-%d %H:%M:%S') if role.create_time else '',
-            "flag": False,
+            "flag": role.role_id in role_id_list,
             "superAdmin": False
         }
         for role in roles
@@ -50,12 +50,12 @@ def role_id_list_get_user_role(db,role_id_list):
     # query = query.filter(SysUserRole.del_flag != '2')
     query = query.filter(SysRole.role_id.in_(role_id_list))
     resutl = query.all()
-    return role_list_to_dict(resutl)
+    return role_list_to_dict(resutl,role_id_list)
 
-def get_role(db):
+def get_role(db,role_id_list=[]):
     query = db.query(SysRole)
     query = query.filter(SysRole.del_flag != '2')
-    return role_list_to_dict(query.all())
+    return role_list_to_dict(query.all(),role_id_list)
 
 
 def parent_id_get_exclude_dept_info(db,dept_id):