feat: 假单按俱乐部开关,并按商品类型会员资格展示
This commit is contained in:
@@ -113,6 +113,7 @@ def build_fake_order_list_payload(request, leixing_id=None, page=1, page_size=20
|
||||
'scope': resolve_club_scope(request),
|
||||
'scope_error': CLUB_READ_SCOPE_MSG,
|
||||
'leixing_options': build_leixing_options(),
|
||||
'fake_grab_enabled': False,
|
||||
**list_response_meta(request),
|
||||
}
|
||||
|
||||
@@ -129,6 +130,8 @@ def build_fake_order_list_payload(request, leixing_id=None, page=1, page_size=20
|
||||
rows = list(qs[offset:offset + page_size])
|
||||
names = _leixing_name_map()
|
||||
|
||||
from jituan.services.fake_grab_switch import is_club_fake_grab_enabled
|
||||
|
||||
return {
|
||||
'list': [_row_to_dict(r, names) for r in rows],
|
||||
'total': total,
|
||||
@@ -137,10 +140,35 @@ def build_fake_order_list_payload(request, leixing_id=None, page=1, page_size=20
|
||||
'club_id': club_id,
|
||||
'scope': resolve_club_scope(request),
|
||||
'leixing_options': build_leixing_options(),
|
||||
'fake_grab_enabled': is_club_fake_grab_enabled(club_id),
|
||||
**list_response_meta(request),
|
||||
}
|
||||
|
||||
|
||||
def set_fake_grab_enabled(request, enabled):
|
||||
"""开启/关闭本俱乐部打手侧假单功能。"""
|
||||
if club_write_blocked(request):
|
||||
return None, CLUB_WRITE_SCOPE_MSG
|
||||
|
||||
from jituan.models import Club
|
||||
from jituan.services.fake_grab_switch import (
|
||||
is_club_fake_grab_enabled,
|
||||
set_club_fake_grab_enabled,
|
||||
)
|
||||
|
||||
club_id = club_id_for_write(request)
|
||||
club = Club.query.filter(club_id=club_id).first()
|
||||
if not club:
|
||||
return None, '俱乐部不存在'
|
||||
|
||||
set_club_fake_grab_enabled(club, bool(enabled))
|
||||
club.save(update_fields=['config_json'])
|
||||
return {
|
||||
'club_id': club_id,
|
||||
'fake_grab_enabled': is_club_fake_grab_enabled(club_id),
|
||||
}, None
|
||||
|
||||
|
||||
def _parse_decimal(value, field_name='金额'):
|
||||
try:
|
||||
val = Decimal(str(value))
|
||||
|
||||
36
jituan/services/fake_grab_switch.py
Normal file
36
jituan/services/fake_grab_switch.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""俱乐部级假单功能开关(config_json.fake_grab_order_enabled)。"""
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CONFIG_KEY = 'fake_grab_order_enabled'
|
||||
|
||||
|
||||
def is_club_fake_grab_enabled(club_id: str) -> bool:
|
||||
"""某俱乐部是否对打手侧开启假单池。默认关闭。"""
|
||||
cid = (club_id or '').strip()
|
||||
if not cid:
|
||||
return False
|
||||
try:
|
||||
from django.conf import settings
|
||||
if not getattr(settings, 'FAKE_GRAB_ORDER_POOL_ENABLED', True):
|
||||
return False
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
from jituan.models import Club
|
||||
club = Club.query.filter(club_id=cid).first()
|
||||
if not club:
|
||||
return False
|
||||
cfg = club.config_json or {}
|
||||
return bool(cfg.get(CONFIG_KEY))
|
||||
except Exception:
|
||||
logger.exception('read fake_grab_order_enabled failed club=%s', cid)
|
||||
return False
|
||||
|
||||
|
||||
def set_club_fake_grab_enabled(club, enabled: bool) -> None:
|
||||
"""写入 club.config_json,调用方负责 save。"""
|
||||
cfg = dict(getattr(club, 'config_json', None) or {})
|
||||
cfg[CONFIG_KEY] = bool(enabled)
|
||||
club.config_json = cfg
|
||||
Reference in New Issue
Block a user