商家派单押金要求改为后台可配限额,去掉写死的 0.1-50。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-22 19:36:17 +08:00
parent fa62b5515c
commit edcb235828
7 changed files with 135 additions and 41 deletions

View File

@@ -1,10 +1,12 @@
"""商家派单金额限额 — 读 XcxSysPeizhi后台可配"""
"""商家派单金额/押金要求限额 — 读 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():
@@ -18,6 +20,17 @@ def get_shangjia_paifa_jiage_limits():
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):
"""
校验派单金额
@@ -37,3 +50,24 @@ def validate_shangjia_paifa_jiage(jiage_str):
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

View File

@@ -142,6 +142,20 @@ class WxConfig:
return row.shangjia_paifa_jiage_max
return Decimal('10000')
@property
def SHANGJIA_PAIFA_YAJIN_MIN(self):
row = _load_row()
if row is not None and getattr(row, 'shangjia_paifa_yajin_min', None) is not None:
return row.shangjia_paifa_yajin_min
return Decimal('0.10')
@property
def SHANGJIA_PAIFA_YAJIN_MAX(self):
row = _load_row()
if row is not None and getattr(row, 'shangjia_paifa_yajin_max', None) is not None:
return row.shangjia_paifa_yajin_max
return Decimal('10000')
wx_cfg = WxConfig()