40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
"""商家派单金额限额 — 读 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)
|