|
@@ -1,12 +1,14 @@
|
|
|
#!/usr/bin/env python3
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
-from fastapi import APIRouter, Request, Depends
|
|
|
+from fastapi import APIRouter, Request, Depends,Query,HTTPException
|
|
|
from database import get_db
|
|
|
from sqlalchemy.orm import Session
|
|
|
from models import *
|
|
|
from utils import *
|
|
|
+from utils.ry_system_util import *
|
|
|
from common.security import valid_access_token
|
|
|
+import traceback
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
@@ -84,13 +86,135 @@ async def getInfo(request: Request,db: Session = Depends(get_db), user_id: int =
|
|
|
|
|
|
@router.get('/deptTree')
|
|
|
async def deptTree(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
|
|
|
- pass
|
|
|
+ def build_dept_tree(depts, parent_dept):
|
|
|
+ dept_tree = []
|
|
|
+ for dept_info in depts:
|
|
|
+ dept = {
|
|
|
+ "id": dept_info.dept_id,
|
|
|
+ "label": dept_info.dept_name,
|
|
|
+ "parentId": dept_info.parent_id,
|
|
|
+ "weight": dept_info.order_num
|
|
|
+ }
|
|
|
+ # print(dept_info.dept_id)
|
|
|
+ children = parent_id_get_dept_info(db, dept_info.dept_id)
|
|
|
+ if len(children) > 0:
|
|
|
+ children_depts = build_dept_tree(children, dept)
|
|
|
+ dept["children"] = children_depts
|
|
|
+ dept_tree.append(dept)
|
|
|
+ return dept_tree
|
|
|
+
|
|
|
+ result = build_dept_tree(parent_id_get_dept_info(db, 0),None)
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "操作成功",
|
|
|
+ "data": result
|
|
|
+ }
|
|
|
|
|
|
+# def get_query_params(params: dict):
|
|
|
+# return params
|
|
|
+# def get_time_params(params: dict = Depends(get_query_params)):
|
|
|
+# try:
|
|
|
+# begin_time = params.get("beginTime")
|
|
|
+# end_time = params.get("endTime")
|
|
|
+# return begin_time, end_time
|
|
|
+# except:
|
|
|
+# return None,None
|
|
|
|
|
|
@router.get('/list')
|
|
|
-async def userlist(request: Request,db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
|
|
|
- pass
|
|
|
+async def userlist( deptId: int = Query(None ,description='部门id'),
|
|
|
+ userName: str = Query(None, description='用户名'),
|
|
|
+ status: int = Query(None, description='用户状态'),
|
|
|
+ phonenumber : str = Query(None, description='手机号'),
|
|
|
+ # params:dict = Query(None, description='创建日期'),
|
|
|
+ # beginTime: str = Depends(get_time_params),
|
|
|
+ # endTime: str = Depends(get_time_params),
|
|
|
+ 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(SysUser)
|
|
|
+ query = query.filter(SysUser.del_flag != '2')
|
|
|
+ # 应用查询条件
|
|
|
+
|
|
|
+ # if beginTime:
|
|
|
+ # query = query.filter(SysUser.create_time >= beginTime)
|
|
|
+ # if endTime:
|
|
|
+ # query = query.filter(SysUser.create_time <= endTime)
|
|
|
+ # if params:
|
|
|
+ # query = query.filter(SysUser.create_time >= params.get("beginTime"))
|
|
|
+ # query = query.filter(SysUser.create_time <= params.get("endTime"))
|
|
|
+ if userName:
|
|
|
+ query =query.filter(SysUser.user_name.like(f'%{userName}%'))
|
|
|
+ if status:
|
|
|
+ query =query.filter(SysUser.status==status)
|
|
|
+ if phonenumber:
|
|
|
+ query =query.filter(SysUser.phonenumber.like(f'%{phonenumber}%'))
|
|
|
+
|
|
|
+ def get_dept_chli(dept_list : list,parent_id : int):
|
|
|
+
|
|
|
+ depts = parent_id_get_dept_info(db,parent_id)
|
|
|
+ if depts:
|
|
|
+ for dept in depts:
|
|
|
+ dept_list.append(dept.dept_id)
|
|
|
+ get_dept_chli(dept_list, dept.dept_id)
|
|
|
+ return dept_list
|
|
|
+
|
|
|
+ if deptId:
|
|
|
+ query = query.filter(SysUser.dept_id.in_(get_dept_chli([],deptId)))
|
|
|
+
|
|
|
+ # 计算总条目数
|
|
|
+ total_items = query.count()
|
|
|
+
|
|
|
+ # 排序
|
|
|
+
|
|
|
+ query = query.order_by(SysUser.create_time.desc())
|
|
|
+ # 执行分页查询
|
|
|
+ users = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ user_list = [
|
|
|
+ {
|
|
|
+ "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": None,
|
|
|
+ "roleIds": None,
|
|
|
+ "postIds": None,
|
|
|
+ "roleId": None
|
|
|
+ }
|
|
|
+ for user in users
|
|
|
+ ]
|
|
|
+
|
|
|
+ # 返回结果
|
|
|
+ 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('/list/dept/{dept_id}')
|