فهرست منبع

fix: 修正统计

gatsby 3 هفته پیش
والد
کامیت
1a192bc76c

+ 29 - 4
backend/app/plugin/module_payment/account/controller.py

@@ -54,10 +54,35 @@ async def stat_transfer_amount_controller(
     auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:account:transfer"]))],
 ) -> JSONResponse:
     """统计转账金额"""
-    # 统计当天转账金额
-    amount_of_today = await AccountService.stat_transfer_amount_service(auth=auth, enterprise_id=enterprise_id, start_date=datetime.now(), end_date=datetime.now())
-    # 统计近7天转账金额
-    amount_of_7days = await AccountService.stat_transfer_amount_service(auth=auth, enterprise_id=enterprise_id, start_date=datetime.now() - timedelta(days=7), end_date=datetime.now())
+    from datetime import datetime, timedelta, date
+
+    # 1. 获取当前时间(建议统一使用 UTC 或指定时区)
+    now = datetime.now()
+    today = date.today()
+
+    # --- 1:统计当天转账金额 ---
+    # 目标:今天 00:00:00 到 明天 00:00:00 (不包含明天0点,即覆盖全天)
+    start_of_today = datetime.combine(today, datetime.min.time()) # 今天凌晨 00:00:00
+    end_of_today = start_of_today + timedelta(days=1)             # 明天凌晨 00:00:00
+
+    amount_of_today = await AccountService.stat_transfer_amount_service(
+        auth=auth, 
+        enterprise_id=enterprise_id, 
+        start_date=start_of_today, 
+        end_date=end_of_today
+    )
+
+    # --- 2:统计近 7 天转账金额 ---
+    # 目标:7天前的 00:00:00 到 今天 00:00:00 (或者到现在,看业务定义)
+    # 如果业务定义“近7天”包含今天,且截止到当前时刻:
+    start_of_7days_ago = datetime.combine(today - timedelta(days=7), datetime.min.time())
+
+    amount_of_7days = await AccountService.stat_transfer_amount_service(
+        auth=auth, 
+        enterprise_id=enterprise_id, 
+        start_date=start_of_7days_ago, 
+        end_date=now  # 截止到当前精确时间
+    )
     # 统计全部转账金额
     amount_of_all = await AccountService.stat_transfer_amount_service(auth=auth, enterprise_id=enterprise_id, start_date=None, end_date=None)
 

+ 2 - 2
backend/app/plugin/module_payment/notification/handlers/order_handler.py

@@ -84,5 +84,5 @@ class OrderHandler(BaseHandler[dict]):
             },
         }
 
-        await order_crud.create_or_update(data.order_no, order_data)
-        log.info(f"保存订单数据成功: order_no={data.order_no}")
+        await order_crud.create_or_update(data.order_no or data.pay_no, order_data)
+        log.info(f"保存订单数据成功: order_no={data.order_no or data.pay_no}")

+ 10 - 3
backend/app/plugin/module_payment/notification/schemas.py

@@ -3,7 +3,7 @@ from datetime import datetime
 
 from fastapi import Request
 from fastapi.datastructures import FormData
-from pydantic import BaseModel, Field
+from pydantic import BaseModel, Field, model_validator
 from app.core.logger import log
 
 
@@ -156,8 +156,8 @@ class OrderChangeContent(BaseModel):
     enterprise_id: str = Field(..., description="企业ID")
     employee_id: str | None = Field(None, description="员工ID")
     out_biz_no: str | None = Field(None, description="外部业务号")
-    action: str = Field(..., description="变动动作")
-    change_time: str = Field(..., description="变动时间")
+    action: str | None = Field(None, description="变动动作")
+    change_time: str | None = Field(None, description="变动时间")
     order_status: str | None = Field(None, description="订单状态")
     
     # 补充字段
@@ -176,6 +176,13 @@ class OrderChangeContent(BaseModel):
     invoice_status: str | None = Field(None, description="发票状态")
     ext_info: str | None = Field(None, description="扩展信息")
 
+    # 把order_no设置为pay_no的值
+    @model_validator(mode="before")
+    def set_order_no(cls, values):
+        if not values.get("order_no") and values.get("pay_no"):
+            values["order_no"] = values["pay_no"]
+        return values
+        
 
 class BillDetailQueryOut(BaseModel):
     """账单详情查询响应"""