fix: 罚单/积分处罚归属申请人俱乐部;申请锁定分红缴纳按锁定值入账

This commit is contained in:
XingQue
2026-06-27 18:15:42 +08:00
parent 374dd26855
commit ee7867b36f
6 changed files with 139 additions and 41 deletions

View File

@@ -10,19 +10,82 @@ from jituan.services.club_context import (
from jituan.services.club_user import get_user_club_id
def resolve_penalty_club_id(order=None, penalized_user_id=None, request=None):
"""创建罚单时写入 club_id。"""
def _club_id_from_user_uid(uid):
if not uid:
return None
from users.business_models import User
u = User.query.filter(UserUID=str(uid)).first()
if u:
return get_user_club_id(u)
return None
def resolve_penalty_club_id(
order=None,
penalized_user_id=None,
request=None,
applicant_id=None,
user=None,
):
"""
创建金额罚单时写入 club_id。
归属:申请人俱乐部 > 当前操作人/请求俱乐部 > 订单俱乐部 > 被罚人俱乐部 > xq。
"""
cid = _club_id_from_user_uid(applicant_id)
if cid:
return cid
if request is not None or user is not None:
from jituan.services.club_write import resolve_club_id_for_write
u = user or getattr(request, 'user', None)
cid = resolve_club_id_for_write(request, u)
if cid:
return cid
if order is not None:
cid = getattr(order, 'ClubID', None)
if cid:
return cid
if penalized_user_id:
from users.business_models import User
u = User.query.filter(UserUID=penalized_user_id).first()
if u:
return get_user_club_id(u)
if request is not None:
return resolve_club_id_from_request(request)
cid = _club_id_from_user_uid(penalized_user_id)
if cid:
return cid
return CLUB_ID_DEFAULT
def resolve_penalty_record_club_id(
order_id=None,
player_id=None,
request=None,
applicant_id=None,
user=None,
):
"""
创建积分处罚chufajilu时写入 club_id。
归属规则与金额罚单一致:申请人俱乐部优先。
"""
cid = _club_id_from_user_uid(applicant_id)
if cid:
return cid
if request is not None or user is not None:
from jituan.services.club_write import resolve_club_id_for_write
u = user or getattr(request, 'user', None)
cid = resolve_club_id_for_write(request, u)
if cid:
return cid
if order_id:
from orders.models import Order
o = Order.query.filter(OrderID=order_id).first()
if o and getattr(o, 'ClubID', None):
return o.ClubID
cid = _club_id_from_user_uid(player_id)
if cid:
return cid
return CLUB_ID_DEFAULT
@@ -44,10 +107,9 @@ def resolve_gsfenhong_club_id(dingdan_id=None, dashouid=None, order=None, czjilu
if o and getattr(o, 'ClubID', None):
return o.ClubID
if dashouid:
from users.business_models import User
u = User.query.filter(UserUID=dashouid).first()
if u:
return get_user_club_id(u)
cid = _club_id_from_user_uid(dashouid)
if cid:
return cid
return CLUB_ID_DEFAULT
@@ -91,7 +153,7 @@ def _filter_club_penalty_like_qs(qs, request, user_id_field, order_id_field):
if not parts:
return qs.none()
combined = parts[0]
for p in parts[1:]:
for p in parts[1]:
combined |= p
return qs.filter(combined)
@@ -119,20 +181,6 @@ def forbid_penalty_out_of_scope(request, penalty):
return None
def resolve_penalty_record_club_id(order_id=None, player_id=None):
if order_id:
from orders.models import Order
o = Order.query.filter(OrderID=order_id).first()
if o and getattr(o, 'ClubID', None):
return o.ClubID
if player_id:
from users.business_models import User
u = User.query.filter(UserUID=player_id).first()
if u:
return get_user_club_id(u)
return CLUB_ID_DEFAULT
def filter_penalty_record_qs(qs, request):
"""积分处罚记录chufajilu按俱乐部过滤。"""
return _filter_club_penalty_like_qs(