feat: 假单按俱乐部开关,并按商品类型会员资格展示

This commit is contained in:
XingQue
2026-07-30 19:55:19 +08:00
parent 6f4e458871
commit bb74140150
6 changed files with 128 additions and 15 deletions

View File

@@ -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))

View 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