Browse Source

新增用户管理接口、配置管理接口

baoyubo 10 months ago
parent
commit
8063a7545f

+ 2 - 0
routers/prod_api/system/__init__.py

@@ -9,6 +9,7 @@ from . import user
 from . import menu
 from . import dic
 from . import dept
+from . import config
 
 import json
 
@@ -20,6 +21,7 @@ router.include_router(menu.router, prefix="/menu") #, dependencies=[Depends(vali
 
 router.include_router(dic.router, prefix="/dict")
 router.include_router(dept.router, prefix="/dept")
+router.include_router(config.router, prefix="/config")
 
 
 

+ 43 - 0
routers/prod_api/system/config/__init__.py

@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
+from common.security import valid_access_token
+from pydantic import BaseModel
+from database import get_db
+from sqlalchemy.orm import Session
+from typing import List
+from models import *
+from utils import *
+from utils.ry_system_util import *
+import json
+from sqlalchemy.sql import func
+from common.auth_user import *
+import traceback
+
+router = APIRouter()
+
+@router.get('/configKey/{configKey}')
+async def get_list(
+    # request: Request,
+    configKey: str ,
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    query = db.query(SysConfig)
+    # query = query.filter(SysConfig.del_flag != '2')
+    query = query.filter(SysConfig.config_key==configKey)
+
+    config= query.first()
+    if config:
+        return {
+            "code":200,
+            "data":config.config_value,
+            "msg":"操作成功"
+        }
+    return {
+        "code": 200,
+        "data": "",
+        "msg": "操作成功"
+    }

+ 12 - 11
routers/prod_api/system/dept/__init__.py

@@ -9,6 +9,7 @@ from sqlalchemy.orm import Session
 from typing import List
 from models import *
 from utils import *
+from utils.ry_system_util import *
 import json
 from sqlalchemy.sql import func
 from common.auth_user import *
@@ -17,17 +18,17 @@ import traceback
 router = APIRouter()
 
 
-def dept_id_get_dept_info(db,dept_id):
-    query = db.query(SysDept)
-    query = query.filter(SysDept.del_flag != '2')
-    query = query.filter(SysDept.dept_id == dept_id)
-    return query.first()
-
-def user_id_get_user_info(db,user_id):
-    query = db.query(SysUser)
-    query = query.filter(SysUser.del_flag != '2')
-    query = query.filter(SysUser.dept_id == user_id)
-    return query.first()
+# def dept_id_get_dept_info(db,dept_id):
+#     query = db.query(SysDept)
+#     query = query.filter(SysDept.del_flag != '2')
+#     query = query.filter(SysDept.dept_id == dept_id)
+#     return query.first()
+#
+# def user_id_get_user_info(db,user_id):
+#     query = db.query(SysUser)
+#     query = query.filter(SysUser.del_flag != '2')
+#     query = query.filter(SysUser.dept_id == user_id)
+#     return query.first()
 
 
 @router.get('/list')

+ 128 - 4
routers/prod_api/system/user/__init__.py

@@ -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}')

+ 29 - 0
utils/ry_system_util.py

@@ -0,0 +1,29 @@
+from models import *
+
+def dept_id_get_dept_info(db,dept_id):
+    query = db.query(SysDept)
+    query = query.filter(SysDept.del_flag != '2')
+    query = query.filter(SysDept.dept_id == dept_id)
+    return query.first()
+
+def user_id_get_user_info(db,user_id):
+    query = db.query(SysUser)
+    query = query.filter(SysUser.del_flag != '2')
+    query = query.filter(SysUser.dept_id == user_id)
+    return query.first()
+
+def parent_id_get_dept_info(db,parent_id,dept_id=None):
+    query = db.query(SysDept)
+    query = query.filter(SysDept.del_flag != '2')
+    query = query.filter(SysDept.parent_id == parent_id)
+
+    # 排除某些部门
+    if dept_id:
+        query = query.filter(SysDept.dept_id != dept_id)
+    return query.all()
+
+def parent_id_get_dept_info(db,parent_id):
+    query = db.query(SysDept)
+    query = query.filter(SysDept.del_flag != '2')
+    query = query.filter(SysDept.parent_id == parent_id)
+    return query.all()