This commit is contained in:
27942
2026-03-05 22:53:19 +08:00
parent 56924bc042
commit 0def03f3cb
3 changed files with 45 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
"""
筛选配置表增加最小金额、最大金额字段,与前端请求/响应字段名统一
"""
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('server', '0004_add_followup_config'),
]
operations = [
migrations.AddField(
model_name='filterconfig',
name='min_amount',
field=models.IntegerField(blank=True, null=True, verbose_name='最小金额'),
),
migrations.AddField(
model_name='filterconfig',
name='max_amount',
field=models.IntegerField(blank=True, null=True, verbose_name='最大金额'),
),
]

View File

@@ -120,6 +120,8 @@ class FilterConfig(models.Model):
collection_min = models.IntegerField(default=10, verbose_name="收藏最少个数/天")
collection_max = models.IntegerField(default=50, verbose_name="收藏最多个数/天")
message_interval = models.IntegerField(default=30, verbose_name="打招呼间隔秒")
min_amount = models.IntegerField(null=True, blank=True, verbose_name="最小金额")
max_amount = models.IntegerField(null=True, blank=True, verbose_name="最大金额")
is_active = models.BooleanField(default=True, verbose_name="是否启用")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")

View File

@@ -91,12 +91,30 @@ class LoginSerializer(serializers.Serializer):
# ────────────────────────── 筛选配置 ──────────────────────────
# 请求中可能出现的“金额”字段别名,统一映射为 min_amount / max_amount保证请求与响应字段名一致
FILTER_AMOUNT_ALIASES = {
"minAmount": "min_amount",
"maxAmount": "max_amount",
"最小金额": "min_amount",
"最大金额": "max_amount",
}
class FilterConfigSerializer(serializers.ModelSerializer):
class Meta:
model = FilterConfig
fields = "__all__"
read_only_fields = ["id", "created_at", "updated_at"]
def to_internal_value(self, data):
"""请求中兼容 minAmount/maxAmount、最小金额/最大金额 等别名,统一为 min_amount/max_amount。"""
if isinstance(data, dict):
data = dict(data)
for alias, canonical in FILTER_AMOUNT_ALIASES.items():
if alias in data and canonical not in data:
data[canonical] = data.pop(alias)
return super().to_internal_value(data)
# ────────────────────────── 话术 ──────────────────────────