Просмотр исходного кода

fix: 额度创建时用out_biz_no作为quota_id初始值,解决三条路径INSERT未设quota_id导致为空

alphah 1 неделя назад
Родитель
Сommit
f1b1b1d188

+ 6 - 2
backend/app/plugin/module_payment/expense/institution/scope_sync.py

@@ -98,10 +98,12 @@ async def _sync_employee_quota(
                 existing = await auth.db.execute(check)
                 if not existing.scalar_one_or_none():
                     total, available, status = _compute_quota_status(inst)
+                    out_biz_no = f"scope_{inst_id}_{employee_id}"
                     stmt = insert(QuotaModel).values(
                         employee_id=employee_id,
                         institution_id=inst_id,
-                        out_biz_no=f"scope_{inst_id}_{employee_id}",
+                        out_biz_no=out_biz_no,
+                        quota_id=out_biz_no,
                         total_amount=total,
                         available_amount=available,
                         status=status,
@@ -214,9 +216,11 @@ async def sync_employee_to_all_institution(
             if existing.scalar_one_or_none():
                 continue
             total, available, status = _compute_quota_status(inst)
+            out_biz_no = f"all_{inst_id}_{employee_id}"
             stmt = insert(QuotaModel).values(
                 employee_id=employee_id, institution_id=inst_id,
-                out_biz_no=f"all_{inst_id}_{employee_id}",
+                out_biz_no=out_biz_no,
+                quota_id=out_biz_no,
                 total_amount=total, available_amount=available,
                 status=status,
                 enterprise_id=enterprise_id, tenant_id=tenant_id,

+ 3 - 1
backend/app/plugin/module_payment/expense/quota/service.py

@@ -480,13 +480,15 @@ class QuotaService:
                         quota_amount = Decimal("0")
 
                     # 每次都新增独立记录,不覆盖已有记录
+                    out_biz_no = f"batch_{data.batch_no}_{emp_id}"
                     stmt = insert(QuotaModel).values(
                         employee_id=emp_id,
                         institution_id=data.institution_id,
                         quota_type=data.quota_type,
                         target_type="INSTITUTION",
                         target_id=data.institution_id,
-                        out_biz_no=f"batch_{data.batch_no}_{emp_id}",
+                        out_biz_no=out_biz_no,
+                        quota_id=out_biz_no,  # 先用 out_biz_no 作初始值,后续支付宝回调更新
                         total_amount=quota_amount,
                         available_amount=quota_amount,
                         status=QuotaStatusEnum.QUOTA_ACTIVE.value,