from fastapi import APIRouter,Request,HTTPException from pydantic import BaseModel from fastapi import APIRouter, Depends from pydantic import BaseModel, ValidationError from model.models import AgentConfig,validate_wxid,auth_required_time import threading import asyncio import time,random from typing import Dict, Tuple, Any label_router = APIRouter(prefix="/api/label") class LabelAddRequest(BaseModel): wxid: str labelName: str class LabelDelRequest(BaseModel): wxid: str labelIds: list class LabelListRequest(BaseModel): wxid: str class LabelModifyRequest(BaseModel): wxid: str labelIds: list wxIds: list @label_router.post("/add", response_model=None) async def add_label(request: Request, body: LabelAddRequest): wxid = body.wxid label_name = body.labelName if not wxid: return {"code": 400, "message": "wxid 不能为空"} k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid) if not k: return {"code":404,"message":f"{wxid} 没有对应的登录信息"} login_status=loginfo.get('status','0') if login_status != '1': return {"code": 401, "message": f"{wxid} 已经离线"} token_id=loginfo.get('tokenId','') app_id=loginfo.get('appId','') ret,msg,data=await request.app.state.gewe_service.label_add_async(token_id,app_id,label_name) if ret!=200: return {'code':ret,'message':msg} return { "labelName":data.get('labelName'),"labelId":data.get('labelId')} @label_router.post("/delete", response_model=None) async def delete_label(request: Request, body: LabelDelRequest, ): wxid = body.wxid label_ids= body.labelIds if not wxid: return {"code": 400, "message": "wxid 不能为空"} k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid) if not k: return {"code":404,"message":f"{wxid} 没有对应的登录信息"} login_status=loginfo.get('status','0') if login_status != '1': return {"code": 401, "message": f"{wxid} 已经离线"} token_id=loginfo.get('tokenId','') app_id=loginfo.get('appId','') ret,msg,data=await request.app.state.gewe_service.label_delete_async(token_id,app_id,label_ids) if ret!=200: return {'code':ret,'message':msg} return {"message":"操作成功"} @label_router.post("/list", response_model=None) async def list_label(request: Request, body: LabelListRequest, ): wxid = body.wxid if not wxid: return {"code": 400, "message": "wxid 不能为空"} k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid) if not k: return {"code":404,"message":f"{wxid} 没有对应的登录信息"} login_status=loginfo.get('status','0') if login_status != '1': return {"code": 401, "message": f"{wxid} 已经离线"} token_id=loginfo.get('tokenId','') app_id=loginfo.get('appId','') ret,msg,data=await request.app.state.gewe_service.label_list_async(token_id,app_id) if ret!=200: return {'code':ret,'message':msg} return {"labelList":data.get('labelList',[]) if data!=None else []} @label_router.post("/modifymembers", response_model=None) async def modifymembers_label(request: Request, body: LabelModifyRequest, ): wxid = body.wxid label_ids= body.labelIds wxids= body.wxIds wxid = body.wxid if not wxid: return {"code": 400, "message": "wxid 不能为空"} k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid) if not k: return {"code":404,"message":f"{wxid} 没有对应的登录信息"} login_status=loginfo.get('status','0') if login_status != '1': return {"code": 401, "message": f"{wxid} 已经离线"} token_id=loginfo.get('tokenId','') app_id=loginfo.get('appId','') ret,msg,data=await request.app.state.gewe_service.label_modify_members_async(token_id,app_id,label_ids,wxids) if ret!=200: return {'code':ret,'message':msg} return {"message":"操作成功"}