fix: 组队强制本俱乐部隔离,修复组队分账冻结幂等键
组队接口一律校验 X-Club-Id=订单=帖;不走跨店互通。分账 biz_id 按队员区分。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -315,7 +315,7 @@ def on_order_enter_status_8(order):
|
||||
|
||||
|
||||
@transaction.atomic
|
||||
def join_recruit(*, recruit_id: int, user_uid: str, game_id: str, request=None):
|
||||
def join_recruit(*, recruit_id: int, user_uid: str, game_id: str, request=None, require_club_id=None):
|
||||
from orders.models import TeamRecruit, TeamMember, Order
|
||||
from users.models import UserDashou
|
||||
from utils.fadan_utils import check_fadan_qiangdan_eligible
|
||||
@@ -327,6 +327,9 @@ def join_recruit(*, recruit_id: int, user_uid: str, game_id: str, request=None):
|
||||
rec = TeamRecruit.objects.select_for_update().filter(id=recruit_id).first()
|
||||
if not rec:
|
||||
raise ValueError('组队不存在')
|
||||
# 组队强制本俱乐部:不认跨店互通抢单
|
||||
if require_club_id and (rec.club_id or '') != require_club_id:
|
||||
raise ValueError('仅本俱乐部可加入组队')
|
||||
if rec.status != TeamRecruit.STATUS_RECRUITING:
|
||||
raise ValueError('招募已结束')
|
||||
if int(rec.joined_count or 0) >= int(rec.need_count or 0):
|
||||
@@ -341,6 +344,8 @@ def join_recruit(*, recruit_id: int, user_uid: str, game_id: str, request=None):
|
||||
raise ValueError('订单状态不可加入')
|
||||
if (getattr(order, 'ClubID', '') or '') != rec.club_id:
|
||||
raise ValueError('俱乐部不匹配')
|
||||
if require_club_id and (order.ClubID or '') != require_club_id:
|
||||
raise ValueError('仅本俱乐部订单可加入组队')
|
||||
|
||||
# 忙碌 / 罚单
|
||||
try:
|
||||
@@ -541,6 +546,7 @@ def settle_team_or_legacy(order, *, set_idle_leader=False) -> bool:
|
||||
amount=amt,
|
||||
set_idle_status=True,
|
||||
increment_chengjiao=True,
|
||||
settle_biz_id=biz_id,
|
||||
)
|
||||
TeamSettleLedger(
|
||||
club_id=rec.club_id,
|
||||
|
||||
Reference in New Issue
Block a user