feat: 商家派单金额限额改为后台可配置,派单接口读取XcxSysPeizhi
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
39
utils/shangjia_paifa_config.py
Normal file
39
utils/shangjia_paifa_config.py
Normal 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)
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user