Quellcode durchsuchen

feat(参数模型): 添加AccountParam模型和token相关字段

feat(任务统计): 新增获取用户每日任务数量的功能

feat(API): 添加查询用户任务数量的接口
max_liu vor 1 Monat
Ursprung
Commit
010183f6c6
4 geänderte Dateien mit 45 neuen und 3 gelöschten Zeilen
  1. 15 0
      decode_task/topicTask.py
  2. 24 1
      main.py
  3. 2 1
      models/decode_workflow.py
  4. 4 1
      utils/params.py

+ 15 - 0
decode_task/topicTask.py

@@ -42,6 +42,21 @@ def update_topic_result_by_id(param):
     return video_id, status, video_url, title
 
 
+def get_user_count(name: str):
+    now = int(time.time())
+    lt = time.localtime(now)
+    start_of_day = time.mktime((lt.tm_year, lt.tm_mon, lt.tm_mday, 0, 0, 0, lt.tm_wday, lt.tm_yday, lt.tm_isdst))
+    start_ts = int(start_of_day)
+    end_ts = start_ts + 86400
+    sql = "SELECT COUNT(*) FROM decode_workflow WHERE account = %s AND created_at >= %s AND created_at < %s"
+    count = mysql.fetchall(sql, (name, start_ts, end_ts))
+    if not count:
+        logger.info(f"account = {name} , 任务不存在")
+        return None
+    return count[0][0]
+
+
+
 def get_topic_result_by_id(task_id:str):
     sql = "SELECT * FROM decode_workflow WHERE task_id = %s"
     task = mysql.fetchone(sql, (task_id,))

+ 24 - 1
main.py

@@ -5,7 +5,7 @@ from fastapi import FastAPI, HTTPException, Request
 from fastapi.responses import JSONResponse
 from fastapi.middleware.cors import CORSMiddleware
 from pydantic import BaseModel
-from utils.params import TaskStatusParam, DecodeListParam,TopicListParam,EvaluateListParam,EvaluateStatusParam,DecodeWorkflowParam
+from utils.params import TaskStatusParam, DecodeListParam,TopicListParam,AccountParam,EvaluateListParam,EvaluateStatusParam,DecodeWorkflowParam
 from dotenv import load_dotenv, find_dotenv
 
 
@@ -14,6 +14,7 @@ from decode_task.evaluateTask import get_evaluate_result_by_id as get_evaluate_r
 from decode_task.topicTask import get_topic_result_by_id as get_topic_result_by_id_db
 from decode_task.topicTask import update_topic_result_by_id as update_topic_result_by_id_db
 from decode_task.topicTask import search_topic_list as search_topic_list_db
+from decode_task.topicTask import get_user_count as get_user_count_db
 
 
 
@@ -126,6 +127,28 @@ def update_topic_result(param: DecodeWorkflowParam):
     }
     
 
+@app.get("/decodeWorkflow/userCount")
+def get_user_count(params: AccountParam):
+    account = params.account
+    result = get_user_count_db(account)
+    logger.info(f"\n查询账号{account}的任务数量----{result}")
+
+    if not result:
+        return {
+            "code": -1,
+            "message": '任务不存在',
+            "data": None
+        }
+
+    
+    return {
+        "code": 0,
+        "message": "success",
+        "data": result
+    }
+  
+
+
 
 @app.get("/decodeWorkflow/result")
 def get_topic_result(task_id: str):

+ 2 - 1
models/decode_workflow.py

@@ -21,7 +21,8 @@ class DecodeWorkflow(BaseModel):
     type:             Annotated[Optional[int], Field(description='任务类型', default=1)]  # 0:解码任务  /  1:评估任务
     account:          Annotated[Optional[str], Field(description='账号', default=None)]
     nick_name:        Annotated[Optional[str], Field(description='昵称', default=None)]
-
+    token_script_use: Annotated[Optional[str], Field(description='脚本使用token', default=None)]
+    token_topic_use:  Annotated[Optional[str], Field(description='选题使用token', default=None)]
 
 
     def save(self):

+ 4 - 1
utils/params.py

@@ -5,7 +5,8 @@ from typing import List, Optional
 
 class TaskStatusParam(BaseModel):
     task_id: str
-
+class AccountParam(BaseModel):
+    account: Optional[str] = None
 class EvaluateStatusParam(BaseModel):
     evaluate_id: str
 class DecodeParam(BaseModel):
@@ -30,6 +31,8 @@ class TopicListParam(BaseModel):
     account: Optional[str] = None
     nick_name: Optional[str] = None
 
+
+
 class EvaluateWorkflowParam(BaseModel):
     video_id: str
     channel_content_id: str