| | |
| | | "token_type": "bearer", |
| | | "username": user.username, |
| | | "nickname": "", |
| | | "user": user.to_json() |
| | | "user": user.to_login_json() |
| | | }) |
| | | |
| | | |
| | |
| | | |
| | | from app.api import Response, get_current_user |
| | | from app.models.base_model import get_db |
| | | from app.models.group_model import GroupModel, GroupData, GroupUsers |
| | | from app.models.group_model import GroupModel, GroupData, GroupUsers, GroupResource |
| | | from app.models.user import PageParameter |
| | | from app.models.user_model import UserModel |
| | | from app.service.group import create_group, group_list, edit_group_data, delete_group_data, get_group_users, \ |
| | |
| | | group_router = APIRouter() |
| | | |
| | | |
| | | @group_router.post("/group_list", response_model=Response) |
| | | async def user_group_list(paras: PageParameter, current_user: UserModel = Depends(get_current_user), |
| | | @group_router.get("/list", response_model=Response) |
| | | async def user_group_list(current:int, pageSize:int, keyword="", current_user: UserModel = Depends(get_current_user), |
| | | db=Depends(get_db)): |
| | | return Response(code=200, msg="", data=await group_list(db, paras.page_size, paras.page_index, paras.keyword, current_user.permission, current_user.id)) |
| | | return Response(code=200, msg="", data=await group_list(db, pageSize, current, keyword, current_user.permission, current_user.id)) |
| | | |
| | | |
| | | @group_router.post("/add_group", response_model=Response) |
| | |
| | | return Response(code=200, msg="group create successfully", data={"group_name": group.group_name}) |
| | | |
| | | |
| | | @group_router.post("/edit_group", response_model=Response) |
| | | @group_router.put("/edit_group", response_model=Response) |
| | | async def edit_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | if not group.group_name: |
| | | return Response(code=400, msg="The group_name cannot be empty!") |
| | |
| | | return Response(code=200, msg="group edit successfully", data={"group_name": group.group_name}) |
| | | |
| | | |
| | | @group_router.post("/edit_group_status", response_model=Response) |
| | | @group_router.put("/edit_group_status", response_model=Response) |
| | | async def edit_group_status(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | if group.group_status not in ["0", "1"]: |
| | | return Response(code=400, msg="The status cannot be {}!".format(group.group_status)) |
| | |
| | | return Response(code=200, msg="group status edit successfully", data={"group_name": group.group_name}) |
| | | |
| | | |
| | | @group_router.post("/delete_group", response_model=Response) |
| | | async def delete_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == group.id).first() |
| | | @group_router.delete("/delete_group/{groupId}", response_model=Response) |
| | | async def delete_group(groupId, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == groupId).first() |
| | | if not db_group: |
| | | return Response(code=200, msg="group does not exist") |
| | | is_edit = await delete_group_data(db, group.id) |
| | | is_edit = await delete_group_data(db, groupId) |
| | | if not is_edit: |
| | | return Response(code=200, msg="group delete failure", data={}) |
| | | return Response(code=200, msg="group delete successfully", data={}) |
| | |
| | | if not is_success: |
| | | return Response(code=500, msg="save user to group failure", data={}) |
| | | return Response(code=200, msg="success", data={}) |
| | | |
| | | |
| | | @group_router.post("/group_resource", response_model=Response) |
| | | async def group_resource(group_resource: GroupResource, current_user: UserModel = Depends(get_current_user), |
| | | db=Depends(get_db)): |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == group_resource.id).first() |
| | | if not db_group: |
| | | return Response(code=200, msg="group does not exist") |
| | | # is_success = await save_group_resource(db, current_user.id, group_resource.id, group_resource.agents, group_resource.dialogs, group_resource.knowledges) |
| | | # if not is_success: |
| | | # return Response(code=500, msg="save user to group failure", data={}) |
| | | return Response(code=200, msg="success", data={}) |
| | |
| | | |
| | | |
| | | @dept_router.get("/list", response_model=Response) |
| | | async def organization_list(paras: DeptList,current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | return Response(code=200, msg="", data=await get_organization_list(db, paras.deptName)) |
| | | async def organization_list(deptName="",current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | return Response(code=200, msg="", data=await get_organization_list(db, deptName)) |
| | | |
| | | |
| | | @dept_router.post("/add_dept", response_model=Response) |
| | |
| | | role_router = APIRouter() |
| | | |
| | | @role_router.get("/list", response_model=Response) |
| | | async def user_group_list(current, pageSize, keyword="", current_user: UserModel = Depends(get_current_user), |
| | | async def user_group_list(current:int, pageSize:int, keyword="", current_user: UserModel = Depends(get_current_user), |
| | | db=Depends(get_db)): |
| | | |
| | | return Response(code=200, msg="", data=await role_list(db, pageSize, current, keyword, current_user.permission, current_user.id)) |
| | |
| | | |
| | | |
| | | @user_router.get("/list", response_model=Response) |
| | | async def user_list(current, pageSize, keyword="", current_user: UserModel = Depends(get_current_user), |
| | | async def user_list(current:int, pageSize:int, keyword="", current_user: UserModel = Depends(get_current_user), |
| | | db=Depends(get_db)): |
| | | return Response(code=200, msg="", data=await get_user_list(db, current, pageSize, keyword, |
| | | current_user.permission, current_user.id)) |
| | |
| | | id: int |
| | | user_list: list |
| | | |
| | | |
| | | class GroupResource(BaseModel): |
| | | id: int |
| | | agents: list |
| | | dialogs: list |
| | | knowledges: list |
| | | |
| | |
| | | remark: Optional[str] = "" |
| | | roleName: str |
| | | roleKey: Optional[str] = "" |
| | | dataScope: Optional[str] = "" |
| | | dataScope: Optional[int] = 0 |
| | | |
| | | |
| | | class RoleStatus(BaseModel): |
| | |
| | | # 'phoneNumber': self.phone_number |
| | | } |
| | | parent_dict = {} |
| | | resources = [] |
| | | children_dict = {} |
| | | for role in self.roles: |
| | | for r in role.to_json().get("resources", []): |
| | | if not r["parentId"]: |
| | | resources.append(r) |
| | | continue |
| | | if r["parentId"] in parent_dict: |
| | | parent_dict[r["parentId"]].append(r) |
| | | if r["menuType"] != "1": |
| | | parent_dict[r["menuId"]] = r |
| | | else: |
| | | parent_dict[r["parentId"]] = [r] |
| | | |
| | | # roles = [role.to_json() for role in self.roles] |
| | | if r["parentId"] in children_dict: |
| | | children_dict[r["parentId"]].append(r) |
| | | else: |
| | | children_dict[r["parentId"]] = [r] |
| | | organization_roles = [role.to_json() for organization in self.organizations for role in |
| | | organization.roles] |
| | | for role in organization_roles: |
| | | for r in role.to_json().get("resources", []): |
| | | if not r["parentId"]: |
| | | resources.append(r) |
| | | continue |
| | | if r["parentId"] in parent_dict: |
| | | parent_dict[r["parentId"]].append(r) |
| | | if r["menuType"] != "1": |
| | | parent_dict[r["menuId"]] = r |
| | | else: |
| | | parent_dict[r["parentId"]] = [r] |
| | | |
| | | |
| | | # for resource in resources: |
| | | # if resource["menuId"] in parent_dict: |
| | | # resource[] |
| | | |
| | | if r["parentId"] in children_dict: |
| | | children_dict[r["parentId"]].append(r) |
| | | else: |
| | | children_dict[r["parentId"]] = [r] |
| | | resources = [] |
| | | for resource in parent_dict.values(): |
| | | resource["children"] = children_dict.get(resource["menuId"], []) |
| | | resources.append(resource) |
| | | json['resources'] = resources |
| | | return json |
| | | |
| | |
| | | query = query.filter(GroupModel.group_name.like('%{}%'.format(keyword))) |
| | | items = query.order_by(GroupModel.id.desc()).limit(page_size).offset( |
| | | (page_index - 1) * page_size).all() |
| | | # items_list = [item.to_dict() for item in items] |
| | | # groups = [i["id"] for i in items_list] |
| | | # group_dict = {} |
| | | # for group_user in db.query(GroupModel.group_id, UserModel.id, UserModel.username).outerjoin(UserModel, |
| | | # UserModel.id == UserGroupModel.user_id).filter( |
| | | # GroupModel.group_id.in_(groups)).all(): |
| | | # if group_user.group_id in group_dict: |
| | | # group_dict[group_user.group_id].append({"user_id": group_user.id, "user_name": group_user.username}) |
| | | # else: |
| | | # group_dict[group_user.group_id] = [{"user_id": group_user.id, "user_name": group_user.username}] |
| | | # for item in items_list: |
| | | # item["users"] = group_dict.get(item["id"], []) |
| | | |
| | | return {"total": query.count(), "items": [item.to_json() for item in items]} |
| | | |
| | | |
| | |
| | | |
| | | async def create_role(db, role_name: str, description: str, role_key, data_scope, user_id): |
| | | try: |
| | | role_model = RoleModel(id=str(uuid.uuid4()),name=role_name, description=description,creator=user_id, data_scope=data_scope) |
| | | role_model = RoleModel(id=str(uuid.uuid4()),name=role_name, description=description,creator=user_id, dataScope=data_scope) |
| | | if role_key: |
| | | role_model.roleKey = role_key |
| | | db.add(role_model) |
| | |
| | | if role_key: |
| | | role.roleKey = role_key |
| | | if data_scope: |
| | | role.data_scope = data_scope |
| | | role.dataScope = data_scope |
| | | else: |
| | | role.resources = [db.get(ResourceModel, resourcesId) for resourcesId in resources] |
| | | db.add(role) |