diff --git a/services/wallet-service/internal/storage/mysql/host_salary_settlement.go b/services/wallet-service/internal/storage/mysql/host_salary_settlement.go index f954f6b9..071955b3 100644 --- a/services/wallet-service/internal/storage/mysql/host_salary_settlement.go +++ b/services/wallet-service/internal/storage/mysql/host_salary_settlement.go @@ -437,16 +437,16 @@ func (r *Repository) queryActiveHostSalaryPolicy(ctx context.Context, q hostSala modeClause := "" triggerClause := "" args := []any{appcode.FromContext(ctx), regionID, nowMs, nowMs} - if strings.TrimSpace(settlementMode) != "" { - // 结算任务必须精确匹配结算模式;H5 展示不传模式时只按区域取最新生效政策。 - modeClause = "AND settlement_mode = ?" - args = append(args, settlementMode) - } if strings.TrimSpace(triggerMode) != "" { // H5 展示不传 trigger 时 automatic/manual 都可展示;结算任务传 trigger 时仍精确匹配。 triggerClause = "AND settlement_trigger_mode = ?" args = append(args, triggerMode) } + if strings.TrimSpace(settlementMode) != "" { + // SQL 里 trigger 条件排在 mode 前面,所以参数也按 trigger -> mode 追加;否则 manual half-month 会被查成 trigger=half_month。 + modeClause = "AND settlement_mode = ?" + args = append(args, settlementMode) + } query := fmt.Sprintf(` SELECT policy_id, name, region_id, status, settlement_mode, settlement_trigger_mode, CAST(gift_coin_to_diamond_ratio AS CHAR),