|
@@ -4,6 +4,7 @@
|
|
|
from fastapi import APIRouter, Request, Depends,Query,HTTPException
|
|
|
from database import get_db
|
|
|
from sqlalchemy.orm import Session
|
|
|
+from sqlalchemy import not_
|
|
|
from fastapi.responses import JSONResponse
|
|
|
from models import *
|
|
|
from utils import *
|
|
@@ -209,7 +210,10 @@ async def getmunutreeselect(request: Request,roleId:int,db: Session = Depends(ge
|
|
|
}
|
|
|
|
|
|
@router.get('/authUser/allocatedList')
|
|
|
-async def userlist( roleId: int = Query(None ,description='部门id'),
|
|
|
+async def userlist(
|
|
|
+ userName:str = Query(None,description='用户名称'),
|
|
|
+ phonenumber:str= Query(None,description='用户手机号'),
|
|
|
+ roleId: int = Query(None ,description='部门id'),
|
|
|
page: int = Query(1, gt=0, description='页码'),
|
|
|
pageSize: int = Query(10, gt=0, description='每页条目数量'),
|
|
|
db: Session = Depends(get_db),
|
|
@@ -219,14 +223,99 @@ async def userlist( roleId: int = Query(None ,description='部门id'),
|
|
|
# query = query.filter(SysUserRole.del_flag != '2')
|
|
|
query = query.filter(SysUserRole.role_id == roleId)
|
|
|
resutl = query.all()
|
|
|
- users = [i.dept_id for i in resutl]
|
|
|
+ users = [i.user_id for i in resutl]
|
|
|
# 构建查询
|
|
|
query = db.query(SysUser)
|
|
|
query = query.filter(SysUser.del_flag != '2')
|
|
|
# 应用查询条件
|
|
|
query = query.filter(SysUser.user_id.in_(users))
|
|
|
|
|
|
+ if userName is not None:
|
|
|
+ query = query.filter(SysUser.user_name.like(f'%{userName}%'))
|
|
|
+ if phonenumber is not None:
|
|
|
+ query = query.filter(SysUser.phonenumber.like(f'%{phonenumber}%'))
|
|
|
+ #
|
|
|
+ # print(query)
|
|
|
+ # 计算总条目数
|
|
|
+ total_items = query.count()
|
|
|
+
|
|
|
+ # 排序
|
|
|
+
|
|
|
+ query = query.order_by(SysUser.create_time.desc())
|
|
|
+ # 执行分页查询
|
|
|
+ users = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ 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,
|
|
|
+ "userName": user.user_name,
|
|
|
+ "nickName": user.nick_name,
|
|
|
+ "userType": user.user_type,
|
|
|
+ "email": user.email,
|
|
|
+ "phonenumber": user.phonenumber,
|
|
|
+ "sex": user.sex,
|
|
|
+ "avatar": user.avatar,
|
|
|
+ "status": user.status,
|
|
|
+ "loginIp": user.login_ip,
|
|
|
+ "loginDate": user.login_date.strftime('%Y-%m-%d %H:%M:%S') if user.login_date else '',
|
|
|
+ "remark": user.remark,
|
|
|
+ "createTime": user.create_time.strftime('%Y-%m-%d %H:%M:%S') if user.create_time else '',
|
|
|
+ "deptName": user.dept_name,
|
|
|
+ "roles": user_roles,
|
|
|
+ "roleIds": roleIds,
|
|
|
+ "postIds": None,
|
|
|
+ "roleId": None
|
|
|
+ }
|
|
|
+ user_list.append(user_info)
|
|
|
+
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功用户列表",
|
|
|
+ "rows": user_list,
|
|
|
+ "total": total_items,
|
|
|
+ "page": page,
|
|
|
+ "pageSize": pageSize,
|
|
|
+ "totalPages": (total_items + pageSize - 1) // pageSize
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
+
|
|
|
+@router.get('/authUser/unallocatedList')
|
|
|
+async def userlist(
|
|
|
+ userName:str = Query(None,description='用户名称'),
|
|
|
+ phonenumber:str= Query(None,description='用户手机号'),
|
|
|
+ roleId: int = Query(None ,description='部门id'),
|
|
|
+ page: int = Query(1, gt=0, description='页码'),
|
|
|
+ pageSize: int = Query(10, gt=0, description='每页条目数量'),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token)):
|
|
|
+ try:
|
|
|
+ query = db.query(SysUserRole)
|
|
|
+ # query = query.filter(SysUserRole.del_flag != '2')
|
|
|
+ query = query.filter(SysUserRole.role_id == roleId)
|
|
|
+ resutl = query.all()
|
|
|
+ users = [i.user_id for i in resutl]
|
|
|
+ # 构建查询
|
|
|
+ query = db.query(SysUser)
|
|
|
+ query = query.filter(SysUser.del_flag != '2')
|
|
|
+ # 应用查询条件
|
|
|
+ query = query.filter(not_(SysUser.user_id.in_(users)))
|
|
|
+
|
|
|
+ if userName is not None:
|
|
|
+ query = query.filter(SysUser.user_name.like(f'%{userName}%'))
|
|
|
+ if phonenumber is not None:
|
|
|
+ query = query.filter(SysUser.phonenumber.like(f'%{phonenumber}%'))
|
|
|
+ #
|
|
|
+ # print(query)
|
|
|
# 计算总条目数
|
|
|
total_items = query.count()
|
|
|
|
|
@@ -281,6 +370,31 @@ async def userlist( roleId: int = Query(None ,description='部门id'),
|
|
|
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
|
|
|
|
|
|
+@router.put('/authUser/selectAll')
|
|
|
+async def cancel_user_role(
|
|
|
+ roleId: str = Query(None),
|
|
|
+ userIds:str=Query(None),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id: int = Depends(valid_access_token),
|
|
|
+ body = Depends(remove_xss_json)
|
|
|
+):
|
|
|
+ try:
|
|
|
+
|
|
|
+ userIdList=userIds.split(',')
|
|
|
+
|
|
|
+ new_roles = [SysUserRole(user_id=user_id, role_id=roleId) for user_id in userIdList]
|
|
|
+ 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.put('/authUser/cancel')
|
|
|
async def cancel_user_role(
|
|
|
db: Session = Depends(get_db),
|
|
@@ -306,8 +420,8 @@ async def cancel_user_role(
|
|
|
|
|
|
@router.put('/authUser/cancelAll')
|
|
|
async def cancel_user_role(
|
|
|
- roleId: str = Query(),
|
|
|
- userIds:str=Query(),
|
|
|
+ roleId: str = Query(None),
|
|
|
+ userIds:str=Query(None),
|
|
|
db: Session = Depends(get_db),
|
|
|
user_id: int = Depends(valid_access_token),
|
|
|
body = Depends(remove_xss_json)
|