```
feat: 添加飞书用户模块和订阅功能支持 - 新增feishu_users模块用于处理飞书用户身份验证和权限管理 - 新增subscriptions模块用于处理订阅相关功能 - 新增personalization模块用于个性化服务 - 在alembic迁移配置中注册新的模型模块 - 在API路由器中添加feishu_users和subscriptions路由 - 实现事件调度服务的改进,包括错误处理和状态更新优化 - 添加飞书命令处理的权限检查机制 - 实现飞书应用票据事件处理 - 改进审计日志记录功能 ```
This commit is contained in:
80
app/modules/feishu_users/routes.py
Normal file
80
app/modules/feishu_users/routes.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.application.feishu.personal_data import FeishuPersonalDataService
|
||||
from app.core.database import get_db
|
||||
from app.core.security import ApiPrincipal, require_api_key
|
||||
from app.modules.feishu_users.constants import FeishuUserRole, FeishuUserStatus
|
||||
from app.modules.feishu_users.schemas import (
|
||||
FeishuUserListRead,
|
||||
FeishuUserRead,
|
||||
FeishuUserUpdate,
|
||||
)
|
||||
from app.modules.feishu_users.services import FeishuUserManagementService
|
||||
from app.modules.personalization.schemas import ErasureResult
|
||||
|
||||
router = APIRouter(prefix="/users", dependencies=[Depends(require_api_key)])
|
||||
|
||||
|
||||
@router.get("", response_model=FeishuUserListRead)
|
||||
def list_users(
|
||||
role: FeishuUserRole | None = None,
|
||||
status_filter: FeishuUserStatus | None = Query(default=None, alias="status"),
|
||||
tenant_key: str | None = None,
|
||||
limit: int = Query(default=100, ge=1, le=500),
|
||||
offset: int = Query(default=0, ge=0),
|
||||
db: Session = Depends(get_db),
|
||||
principal: ApiPrincipal = Depends(require_api_key),
|
||||
) -> dict:
|
||||
items, total = FeishuUserManagementService(db).list_users(
|
||||
role=role,
|
||||
status_filter=status_filter,
|
||||
tenant_key=tenant_key,
|
||||
limit=limit,
|
||||
offset=offset,
|
||||
actor=principal.actor,
|
||||
)
|
||||
return {
|
||||
"items": items,
|
||||
"total": total,
|
||||
"limit": limit,
|
||||
"offset": offset,
|
||||
}
|
||||
|
||||
|
||||
@router.get("/{code}", response_model=FeishuUserRead)
|
||||
def get_user(
|
||||
code: str,
|
||||
db: Session = Depends(get_db),
|
||||
principal: ApiPrincipal = Depends(require_api_key),
|
||||
) -> FeishuUserRead:
|
||||
return FeishuUserManagementService(db).get_user(
|
||||
code,
|
||||
actor=principal.actor,
|
||||
)
|
||||
|
||||
|
||||
@router.patch("/{code}", response_model=FeishuUserRead)
|
||||
def update_user(
|
||||
code: str,
|
||||
payload: FeishuUserUpdate,
|
||||
db: Session = Depends(get_db),
|
||||
principal: ApiPrincipal = Depends(require_api_key),
|
||||
) -> FeishuUserRead:
|
||||
return FeishuUserManagementService(db).update_user(
|
||||
code,
|
||||
changes=payload.model_dump(exclude_unset=True),
|
||||
actor=principal.actor,
|
||||
)
|
||||
|
||||
|
||||
@router.delete("/{code}/personal-data", response_model=ErasureResult)
|
||||
def erase_user_personal_data(
|
||||
code: str,
|
||||
db: Session = Depends(get_db),
|
||||
principal: ApiPrincipal = Depends(require_api_key),
|
||||
) -> ErasureResult:
|
||||
return FeishuPersonalDataService(db).erase_by_user_code(
|
||||
code,
|
||||
actor=principal.actor,
|
||||
)
|
||||
Reference in New Issue
Block a user