feat: 商家派单金额限额改为后台可配置,派单接口读取XcxSysPeizhi

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-01 11:00:33 +08:00
parent d53ddf51cc
commit 47c6e3b024
7 changed files with 134 additions and 13 deletions

View File

@@ -0,0 +1,39 @@
"""商家派单金额限额 — 读 XcxSysPeizhi后台可配"""
from decimal import Decimal, InvalidOperation
from utils.xcx_sys_config import wx_cfg
DEFAULT_MIN = Decimal('10')
DEFAULT_MAX = Decimal('10000')
def get_shangjia_paifa_jiage_limits():
"""返回 (min, max) Decimal"""
min_v = getattr(wx_cfg, 'SHANGJIA_PAIFA_JIAGE_MIN', None) or DEFAULT_MIN
max_v = getattr(wx_cfg, 'SHANGJIA_PAIFA_JIAGE_MAX', None) or DEFAULT_MAX
min_v = Decimal(str(min_v))
max_v = Decimal(str(max_v))
if min_v > max_v:
min_v, max_v = max_v, min_v
return min_v, max_v
def validate_shangjia_paifa_jiage(jiage_str):
"""
校验派单金额
@return (ok, msg, jiage_float|None)
"""
if jiage_str is None or str(jiage_str).strip() == '':
return False, '缺少价格', None
jiage_raw = str(jiage_str).strip()
try:
jiage = Decimal(jiage_raw)
except (InvalidOperation, ValueError, TypeError):
return False, '价格格式错误', None
if '.' in jiage_raw and len(jiage_raw.split('.')[1]) > 2:
return False, '最多支持两位小数', None
min_v, max_v = get_shangjia_paifa_jiage_limits()
if jiage < min_v or jiage > max_v:
return False, f'价格需在{min_v}-{max_v}元之间', None
return True, '', float(jiage)

View File

@@ -3,6 +3,8 @@
"""
import logging
from decimal import Decimal
from django.conf import settings
from django.core.cache import cache
@@ -126,6 +128,20 @@ class WxConfig:
return int(row.shangpin_shenhe_mode)
return 2
@property
def SHANGJIA_PAIFA_JIAGE_MIN(self):
row = _load_row()
if row is not None and row.shangjia_paifa_jiage_min is not None:
return row.shangjia_paifa_jiage_min
return Decimal('10')
@property
def SHANGJIA_PAIFA_JIAGE_MAX(self):
row = _load_row()
if row is not None and row.shangjia_paifa_jiage_max is not None:
return row.shangjia_paifa_jiage_max
return Decimal('10000')
wx_cfg = WxConfig()