Files
along_django/utils/shangjia_paifa_config.py

74 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""商家派单金额/押金要求限额 — 读 XcxSysPeizhi后台可配"""
from decimal import Decimal, InvalidOperation
from utils.xcx_sys_config import wx_cfg
DEFAULT_MIN = Decimal('10')
DEFAULT_MAX = Decimal('10000')
DEFAULT_YAJIN_MIN = Decimal('0.10')
DEFAULT_YAJIN_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 get_shangjia_paifa_yajin_limits():
"""返回派单「要求接单员押金」金额 (min, max) Decimal"""
min_v = getattr(wx_cfg, 'SHANGJIA_PAIFA_YAJIN_MIN', None) or DEFAULT_YAJIN_MIN
max_v = getattr(wx_cfg, 'SHANGJIA_PAIFA_YAJIN_MAX', None) or DEFAULT_YAJIN_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)
def validate_shangjia_paifa_yajin(yajin_str):
"""
校验派单押金要求金额
@return (ok, msg, yajin_decimal|None)
"""
if yajin_str is None or str(yajin_str).strip() == '':
return False, '押金金额不能为空', None
raw = str(yajin_str).strip()
try:
amount = Decimal(raw)
except (InvalidOperation, ValueError, TypeError):
return False, '押金格式错误', None
if '.' in raw and len(raw.split('.')[1]) > 2:
return False, '押金最多支持两位小数', None
min_v, max_v = get_shangjia_paifa_yajin_limits()
if amount < min_v or amount > max_v:
return False, f'押金需在{min_v}-{max_v}元之间', None
return True, '', amount