from typing import List from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from mooc.api import deps from mooc.crud.crud_uni_account import ( uni_account, uni_account_extra_modules, uni_account_group, uni_account_menus, uni_account_modules, uni_account_modules_shortcut, uni_account_users, uni_group, uni_link_uniacid, uni_modules, uni_verifycode, uni_settings ) from mooc.schemas.uni_account import ( UniAccountCreate, UniAccountRead, UniAccountUpdate, UniAccountExtraModulesCreate, UniAccountExtraModulesRead, UniAccountExtraModulesUpdate, UniAccountGroupCreate, UniAccountGroupRead, UniAccountGroupUpdate, UniAccountMenusCreate, UniAccountMenusRead, UniAccountMenusUpdate, UniAccountModulesCreate, UniAccountModulesRead, UniAccountModulesUpdate, UniAccountModulesShortcutCreate, UniAccountModulesShortcutRead, UniAccountModulesShortcutUpdate, UniAccountUsersCreate, UniAccountUsersRead, UniAccountUsersUpdate, UniGroupCreate, UniGroupRead, UniGroupUpdate, UniLinkUniacidCreate, UniLinkUniacidRead, UniLinkUniacidUpdate, UniModulesCreate, UniModulesRead, UniModulesUpdate, UniVerifycodeCreate, UniVerifycodeRead, UniVerifycodeUpdate, UniSettingsCreate, UniSettingsRead, UniSettingsUpdate ) uni_account_router = APIRouter() # UniAccount 路由 @uni_account_router.post("/", response_model=UniAccountRead) def create_uni_account( *, db: Session = Depends(deps.get_db), uni_account_in: UniAccountCreate, ): """ 创建统一公众号账户 """ return uni_account.create(db=db, obj_in=uni_account_in) @uni_account_router.get("/{uniacid}", response_model=UniAccountRead) def read_uni_account( *, db: Session = Depends(deps.get_db), uniacid: int, ): """ 获取统一公众号账户信息 """ db_uni_account = uni_account.get(db=db, id=uniacid) if not db_uni_account: raise HTTPException( status_code=404, detail="UniAccount not found" ) return db_uni_account @uni_account_router.put("/{uniacid}", response_model=UniAccountRead) def update_uni_account( *, db: Session = Depends(deps.get_db), uniacid: int, uni_account_in: UniAccountUpdate, ): """ 更新统一公众号账户信息 """ db_uni_account = uni_account.get(db=db, id=uniacid) if not db_uni_account: raise HTTPException( status_code=404, detail="UniAccount not found" ) return uni_account.update(db=db, db_obj=db_uni_account, obj_in=uni_account_in) @uni_account_router.delete("/{uniacid}", response_model=UniAccountRead) def delete_uni_account( *, db: Session = Depends(deps.get_db), uniacid: int, ): """ 删除统一公众号账户 """ db_uni_account = uni_account.get(db=db, id=uniacid) if not db_uni_account: raise HTTPException( status_code=404, detail="UniAccount not found" ) return uni_account.delete(db=db, id=uniacid) # UniAccountExtraModules 路由 @uni_account_router.post("/modules", response_model=UniAccountExtraModulesRead) def create_extra_modules( *, db: Session = Depends(deps.get_db), modules_in: UniAccountExtraModulesCreate, ): """ 创建账户额外模块 """ return uni_account_extra_modules.create(db=db, obj_in=modules_in) @uni_account_router.get("/modules/{id}", response_model=UniAccountExtraModulesRead) def read_extra_modules( *, db: Session = Depends(deps.get_db), id: int, ): """ 获取账户额外模块信息 """ db_modules = uni_account_extra_modules.get(db=db, id=id) if not db_modules: raise HTTPException( status_code=404, detail="Extra modules not found" ) return db_modules @uni_account_router.get("/modules/by-uniacid/{uniacid}", response_model=UniAccountExtraModulesRead) def read_extra_modules_by_uniacid( *, db: Session = Depends(deps.get_db), uniacid: int, ): """ 通过uniacid获取账户额外模块信息 """ db_modules = uni_account_extra_modules.get_by_uniacid(db=db, uniacid=uniacid) if not db_modules: raise HTTPException( status_code=404, detail="Extra modules not found" ) return db_modules @uni_account_router.put("/modules/{id}", response_model=UniAccountExtraModulesRead) def update_extra_modules( *, db: Session = Depends(deps.get_db), id: int, modules_in: UniAccountExtraModulesUpdate, ): """ 更新账户额外模块信息 """ db_modules = uni_account_extra_modules.get(db=db, id=id) if not db_modules: raise HTTPException( status_code=404, detail="Extra modules not found" ) return uni_account_extra_modules.update(db=db, db_obj=db_modules, obj_in=modules_in) @uni_account_router.delete("/modules/{id}", response_model=UniAccountExtraModulesRead) def delete_extra_modules( *, db: Session = Depends(deps.get_db), id: int, ): """ 删除账户额外模块 """ db_modules = uni_account_extra_modules.get(db=db, id=id) if not db_modules: raise HTTPException( status_code=404, detail="Extra modules not found" ) return uni_account_extra_modules.delete(db=db, id=id) # UniAccountGroup 路由 @uni_account_router.post("/groups", response_model=UniAccountGroupRead) def create_group( *, db: Session = Depends(deps.get_db), group_in: UniAccountGroupCreate, ): """创建账户组关联""" return uni_account_group.create(db=db, obj_in=group_in) @uni_account_router.get("/groups/{id}", response_model=UniAccountGroupRead) def read_group(*, db: Session = Depends(deps.get_db), id: int): """获取账户组关联信息""" group = uni_account_group.get(db=db, id=id) if not group: raise HTTPException(status_code=404, detail="Account group not found") return group @uni_account_router.put("/groups/{id}", response_model=UniAccountGroupRead) def update_group( *, db: Session = Depends(deps.get_db), id: int, group_in: UniAccountGroupUpdate, ): """更新账户组关联信息""" group = uni_account_group.get(db=db, id=id) if not group: raise HTTPException(status_code=404, detail="Account group not found") return uni_account_group.update(db=db, db_obj=group, obj_in=group_in) @uni_account_router.delete("/groups/{id}", response_model=UniAccountGroupRead) def delete_group(*, db: Session = Depends(deps.get_db), id: int): """删除账户组关联""" group = uni_account_group.get(db=db, id=id) if not group: raise HTTPException(status_code=404, detail="Account group not found") return uni_account_group.delete(db=db, id=id) # UniAccountMenus 路由 @uni_account_router.post("/menus", response_model=UniAccountMenusRead) def create_menu( *, db: Session = Depends(deps.get_db), menu_in: UniAccountMenusCreate, ): """创建账户菜单""" return uni_account_menus.create(db=db, obj_in=menu_in) @uni_account_router.get("/menus/{id}", response_model=UniAccountMenusRead) def read_menu(*, db: Session = Depends(deps.get_db), id: int): """获取账户菜单信息""" menu = uni_account_menus.get(db=db, id=id) if not menu: raise HTTPException(status_code=404, detail="Account menu not found") return menu @uni_account_router.get("/menus/by-uniacid/{uniacid}", response_model=UniAccountMenusRead) def read_menu_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取账户菜单信息""" menu = uni_account_menus.get_by_uniacid(db=db, uniacid=uniacid) if not menu: raise HTTPException(status_code=404, detail="Account menu not found") return menu @uni_account_router.put("/menus/{id}", response_model=UniAccountMenusRead) def update_menu( *, db: Session = Depends(deps.get_db), id: int, menu_in: UniAccountMenusUpdate, ): """更新账户菜单信息""" menu = uni_account_menus.get(db=db, id=id) if not menu: raise HTTPException(status_code=404, detail="Account menu not found") return uni_account_menus.update(db=db, db_obj=menu, obj_in=menu_in) @uni_account_router.delete("/menus/{id}", response_model=UniAccountMenusRead) def delete_menu(*, db: Session = Depends(deps.get_db), id: int): """删除账户菜单""" menu = uni_account_menus.get(db=db, id=id) if not menu: raise HTTPException(status_code=404, detail="Account menu not found") return uni_account_menus.delete(db=db, id=id) # UniAccountModules 路由 @uni_account_router.post("/modules", response_model=UniAccountModulesRead) def create_module( *, db: Session = Depends(deps.get_db), module_in: UniAccountModulesCreate, ): """创建账户模块""" return uni_account_modules.create(db=db, obj_in=module_in) @uni_account_router.get("/modules/{id}", response_model=UniAccountModulesRead) def read_module(*, db: Session = Depends(deps.get_db), id: int): """获取账户模块信息""" module = uni_account_modules.get(db=db, id=id) if not module: raise HTTPException(status_code=404, detail="Account module not found") return module @uni_account_router.get("/modules/by-uniacid/{uniacid}", response_model=UniAccountModulesRead) def read_module_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取账户模块信息""" module = uni_account_modules.get_by_uniacid(db=db, uniacid=uniacid) if not module: raise HTTPException(status_code=404, detail="Account module not found") return module @uni_account_router.put("/modules/{id}", response_model=UniAccountModulesRead) def update_module( *, db: Session = Depends(deps.get_db), id: int, module_in: UniAccountModulesUpdate, ): """更新账户模块信息""" module = uni_account_modules.get(db=db, id=id) if not module: raise HTTPException(status_code=404, detail="Account module not found") return uni_account_modules.update(db=db, db_obj=module, obj_in=module_in) @uni_account_router.delete("/modules/{id}", response_model=UniAccountModulesRead) def delete_module(*, db: Session = Depends(deps.get_db), id: int): """删除账户模块""" module = uni_account_modules.get(db=db, id=id) if not module: raise HTTPException(status_code=404, detail="Account module not found") return uni_account_modules.delete(db=db, id=id) # UniAccountModulesShortcut 完整路由 @uni_account_router.post("/modules-shortcut", response_model=UniAccountModulesShortcutRead) def create_module_shortcut( *, db: Session = Depends(deps.get_db), shortcut_in: UniAccountModulesShortcutCreate, ): """创建模块快捷方式""" return uni_account_modules_shortcut.create(db=db, obj_in=shortcut_in) @uni_account_router.get("/modules-shortcut/{id}", response_model=UniAccountModulesShortcutRead) def read_module_shortcut(*, db: Session = Depends(deps.get_db), id: int): """获取模块快捷方式""" shortcut = uni_account_modules_shortcut.get(db=db, id=id) if not shortcut: raise HTTPException(status_code=404, detail="Module shortcut not found") return shortcut @uni_account_router.get("/modules-shortcut/by-uniacid/{uniacid}", response_model=UniAccountModulesShortcutRead) def read_module_shortcut_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取模块快捷方式""" shortcut = uni_account_modules_shortcut.get_by_uniacid(db=db, uniacid=uniacid) if not shortcut: raise HTTPException(status_code=404, detail="Module shortcut not found") return shortcut @uni_account_router.put("/modules-shortcut/{id}", response_model=UniAccountModulesShortcutRead) def update_module_shortcut( *, db: Session = Depends(deps.get_db), id: int, shortcut_in: UniAccountModulesShortcutUpdate, ): """更新模块快捷方式""" shortcut = uni_account_modules_shortcut.get(db=db, id=id) if not shortcut: raise HTTPException(status_code=404, detail="Module shortcut not found") return uni_account_modules_shortcut.update(db=db, db_obj=shortcut, obj_in=shortcut_in) @uni_account_router.delete("/modules-shortcut/{id}", response_model=UniAccountModulesShortcutRead) def delete_module_shortcut(*, db: Session = Depends(deps.get_db), id: int): """删除模块快捷方式""" shortcut = uni_account_modules_shortcut.get(db=db, id=id) if not shortcut: raise HTTPException(status_code=404, detail="Module shortcut not found") return uni_account_modules_shortcut.delete(db=db, id=id) # UniAccountUsers 完整路由 @uni_account_router.post("/users", response_model=UniAccountUsersRead) def create_account_user( *, db: Session = Depends(deps.get_db), user_in: UniAccountUsersCreate, ): """创建账户用户关联""" return uni_account_users.create(db=db, obj_in=user_in) @uni_account_router.get("/users/{id}", response_model=UniAccountUsersRead) def read_account_user(*, db: Session = Depends(deps.get_db), id: int): """获取账户用户关联信息""" user = uni_account_users.get(db=db, id=id) if not user: raise HTTPException(status_code=404, detail="Account user not found") return user @uni_account_router.get("/users/by-uniacid/{uniacid}", response_model=UniAccountUsersRead) def read_account_user_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取账户用户关联信息""" user = uni_account_users.get_by_uniacid(db=db, uniacid=uniacid) if not user: raise HTTPException(status_code=404, detail="Account user not found") return user @uni_account_router.get("/users/by-uid/{uid}", response_model=UniAccountUsersRead) def read_account_user_by_uid(*, db: Session = Depends(deps.get_db), uid: int): """通过uid获取账户用户关联信息""" user = uni_account_users.get_by_uid(db=db, uid=uid) if not user: raise HTTPException(status_code=404, detail="Account user not found") return user @uni_account_router.put("/users/{id}", response_model=UniAccountUsersRead) def update_account_user( *, db: Session = Depends(deps.get_db), id: int, user_in: UniAccountUsersUpdate, ): """更新账户用户关联信息""" user = uni_account_users.get(db=db, id=id) if not user: raise HTTPException(status_code=404, detail="Account user not found") return uni_account_users.update(db=db, db_obj=user, obj_in=user_in) @uni_account_router.delete("/users/{id}", response_model=UniAccountUsersRead) def delete_account_user(*, db: Session = Depends(deps.get_db), id: int): """删除账户用户关联""" user = uni_account_users.get(db=db, id=id) if not user: raise HTTPException(status_code=404, detail="Account user not found") return uni_account_users.delete(db=db, id=id) # UniGroup 完整路由 @uni_account_router.post("/groups", response_model=UniGroupRead) def create_uni_group( *, db: Session = Depends(deps.get_db), group_in: UniGroupCreate, ): """创建统一公众号组""" return uni_group.create(db=db, obj_in=group_in) @uni_account_router.get("/groups/{id}", response_model=UniGroupRead) def read_uni_group(*, db: Session = Depends(deps.get_db), id: int): """获取统一公众号组信息""" group = uni_group.get(db=db, id=id) if not group: raise HTTPException(status_code=404, detail="Uni group not found") return group @uni_account_router.get("/groups/by-uniacid/{uniacid}", response_model=UniGroupRead) def read_uni_group_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取统一公众号组信息""" group = uni_group.get_by_uniacid(db=db, uniacid=uniacid) if not group: raise HTTPException(status_code=404, detail="Uni group not found") return group @uni_account_router.get("/groups/by-owner/{owner_uid}", response_model=UniGroupRead) def read_uni_group_by_owner(*, db: Session = Depends(deps.get_db), owner_uid: int): """通过owner_uid获取统一公众号组信息""" group = uni_group.get_by_owner(db=db, owner_uid=owner_uid) if not group: raise HTTPException(status_code=404, detail="Uni group not found") return group @uni_account_router.put("/groups/{id}", response_model=UniGroupRead) def update_uni_group( *, db: Session = Depends(deps.get_db), id: int, group_in: UniGroupUpdate, ): """更新统一公众号组信息""" group = uni_group.get(db=db, id=id) if not group: raise HTTPException(status_code=404, detail="Uni group not found") return uni_group.update(db=db, db_obj=group, obj_in=group_in) @uni_account_router.delete("/groups/{id}", response_model=UniGroupRead) def delete_uni_group(*, db: Session = Depends(deps.get_db), id: int): """删除统一公众号组""" group = uni_group.get(db=db, id=id) if not group: raise HTTPException(status_code=404, detail="Uni group not found") return uni_group.delete(db=db, id=id) # UniLinkUniacid 路由 @uni_account_router.post("/links", response_model=UniLinkUniacidRead) def create_link_uniacid( *, db: Session = Depends(deps.get_db), link_in: UniLinkUniacidCreate, ): """创建公众号链接关系""" return uni_link_uniacid.create(db=db, obj_in=link_in) @uni_account_router.get("/links/{id}", response_model=UniLinkUniacidRead) def read_link_uniacid(*, db: Session = Depends(deps.get_db), id: int): """获取公众号链接关系""" link = uni_link_uniacid.get(db=db, id=id) if not link: raise HTTPException(status_code=404, detail="Link uniacid not found") return link @uni_account_router.get("/links/by-uniacid/{uniacid}", response_model=UniLinkUniacidRead) def read_link_uniacid_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取公众号链接关系""" link = uni_link_uniacid.get_by_uniacid(db=db, uniacid=uniacid) if not link: raise HTTPException(status_code=404, detail="Link uniacid not found") return link @uni_account_router.put("/links/{id}", response_model=UniLinkUniacidRead) def update_link_uniacid( *, db: Session = Depends(deps.get_db), id: int, link_in: UniLinkUniacidUpdate, ): """更新公众号链接关系""" link = uni_link_uniacid.get(db=db, id=id) if not link: raise HTTPException(status_code=404, detail="Link uniacid not found") return uni_link_uniacid.update(db=db, db_obj=link, obj_in=link_in) @uni_account_router.delete("/links/{id}", response_model=UniLinkUniacidRead) def delete_link_uniacid(*, db: Session = Depends(deps.get_db), id: int): """删除公众号链接关系""" link = uni_link_uniacid.get(db=db, id=id) if not link: raise HTTPException(status_code=404, detail="Link uniacid not found") return uni_link_uniacid.delete(db=db, id=id) # UniModules 路由 @uni_account_router.post("/uni-modules", response_model=UniModulesRead) def create_uni_module( *, db: Session = Depends(deps.get_db), module_in: UniModulesCreate, ): """创建统一模块""" return uni_modules.create(db=db, obj_in=module_in) @uni_account_router.get("/uni-modules/{id}", response_model=UniModulesRead) def read_uni_module(*, db: Session = Depends(deps.get_db), id: int): """获取统一模块信息""" module = uni_modules.get(db=db, id=id) if not module: raise HTTPException(status_code=404, detail="Uni module not found") return module @uni_account_router.get("/uni-modules/by-uniacid/{uniacid}", response_model=UniModulesRead) def read_uni_module_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取统一模块信息""" module = uni_modules.get_by_uniacid(db=db, uniacid=uniacid) if not module: raise HTTPException(status_code=404, detail="Uni module not found") return module @uni_account_router.put("/uni-modules/{id}", response_model=UniModulesRead) def update_uni_module( *, db: Session = Depends(deps.get_db), id: int, module_in: UniModulesUpdate, ): """更新统一模块信息""" module = uni_modules.get(db=db, id=id) if not module: raise HTTPException(status_code=404, detail="Uni module not found") return uni_modules.update(db=db, db_obj=module, obj_in=module_in) @uni_account_router.delete("/uni-modules/{id}", response_model=UniModulesRead) def delete_uni_module(*, db: Session = Depends(deps.get_db), id: int): """删除统一模块""" module = uni_modules.get(db=db, id=id) if not module: raise HTTPException(status_code=404, detail="Uni module not found") return uni_modules.delete(db=db, id=id) # UniVerifycode 路由 @uni_account_router.post("/verifycodes", response_model=UniVerifycodeRead) def create_verifycode( *, db: Session = Depends(deps.get_db), verifycode_in: UniVerifycodeCreate, ): """创建验证码""" return uni_verifycode.create(db=db, obj_in=verifycode_in) @uni_account_router.get("/verifycodes/{id}", response_model=UniVerifycodeRead) def read_verifycode(*, db: Session = Depends(deps.get_db), id: int): """获取验证码信息""" verifycode = uni_verifycode.get(db=db, id=id) if not verifycode: raise HTTPException(status_code=404, detail="Verifycode not found") return verifycode @uni_account_router.get("/verifycodes/by-uniacid/{uniacid}", response_model=UniVerifycodeRead) def read_verifycode_by_uniacid(*, db: Session = Depends(deps.get_db), uniacid: int): """通过uniacid获取验证码信息""" verifycode = uni_verifycode.get_by_uniacid(db=db, uniacid=uniacid) if not verifycode: raise HTTPException(status_code=404, detail="Verifycode not found") return verifycode @uni_account_router.get("/verifycodes/by-receiver/{receiver}", response_model=UniVerifycodeRead) def read_verifycode_by_receiver(*, db: Session = Depends(deps.get_db), receiver: str): """通过接收者获取验证码信息""" verifycode = uni_verifycode.get_by_receiver(db=db, receiver=receiver) if not verifycode: raise HTTPException(status_code=404, detail="Verifycode not found") return verifycode @uni_account_router.put("/verifycodes/{id}", response_model=UniVerifycodeRead) def update_verifycode( *, db: Session = Depends(deps.get_db), id: int, verifycode_in: UniVerifycodeUpdate, ): """更新验证码信息""" verifycode = uni_verifycode.get(db=db, id=id) if not verifycode: raise HTTPException(status_code=404, detail="Verifycode not found") return uni_verifycode.update(db=db, db_obj=verifycode, obj_in=verifycode_in) @uni_account_router.delete("/verifycodes/{id}", response_model=UniVerifycodeRead) def delete_verifycode(*, db: Session = Depends(deps.get_db), id: int): """删除验证码""" verifycode = uni_verifycode.get(db=db, id=id) if not verifycode: raise HTTPException(status_code=404, detail="Verifycode not found") return uni_verifycode.delete(db=db, id=id) # UniSettings 路由 @uni_account_router.post("/settings", response_model=UniSettingsRead) def create_settings( *, db: Session = Depends(deps.get_db), settings_in: UniSettingsCreate, ): """创建公众号设置""" # 检查是否已存在该uniacid的设置 existing_settings = uni_settings.get_by_uniacid(db=db, uniacid=settings_in.uniacid) if existing_settings: raise HTTPException( status_code=400, detail="Settings for this uniacid already exists" ) return uni_settings.create_with_uniacid(db=db, obj_in=settings_in) @uni_account_router.get("/settings/{uniacid}", response_model=UniSettingsRead) def read_settings(*, db: Session = Depends(deps.get_db), uniacid: int): """获取公众号设置""" settings = uni_settings.get_by_uniacid(db=db, uniacid=uniacid) if not settings: raise HTTPException(status_code=404, detail="Settings not found") return settings @uni_account_router.put("/settings/{uniacid}", response_model=UniSettingsRead) def update_settings( *, db: Session = Depends(deps.get_db), uniacid: int, settings_in: UniSettingsUpdate, ): """更新公众号设置""" settings = uni_settings.get_by_uniacid(db=db, uniacid=uniacid) if not settings: raise HTTPException(status_code=404, detail="Settings not found") return uni_settings.update(db=db, db_obj=settings, obj_in=settings_in) @uni_account_router.delete("/settings/{uniacid}", response_model=UniSettingsRead) def delete_settings(*, db: Session = Depends(deps.get_db), uniacid: int): """删除公众号设置""" settings = uni_settings.get_by_uniacid(db=db, uniacid=uniacid) if not settings: raise HTTPException(status_code=404, detail="Settings not found") return uni_settings.delete(db=db, id=uniacid)