feat: 管事自助更换组长(配额、记录、小程序与后台接口)

This commit is contained in:
XingQue
2026-07-31 10:10:12 +08:00
parent 1cc3f07480
commit 62f121f438
9 changed files with 579 additions and 5 deletions

View File

@@ -74,6 +74,11 @@ from .role_agreement_mp import (
RoleAgreementSignView,
)
from .change_leader_mp import (
GuanshiChangeZuzhangInfoView,
GuanshiChangeZuzhangView,
)
from .admin import (
AdGetOrderList,
AdGetOrderTypes,

View File

@@ -0,0 +1,61 @@
"""小程序:管事更换组长。"""
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from users.services.change_leader import build_change_leader_info, change_leader_by_invite
class GuanshiChangeZuzhangInfoView(APIView):
"""
POST /yonghu/gs_huan_zuzhang_info
当前组长 + 剩余更换次数
"""
permission_classes = [IsAuthenticated]
def post(self, request):
result = build_change_leader_info(request, request.user)
if not result.get('ok'):
return Response({
'code': result.get('code', 403),
'msg': result.get('msg', '失败'),
'data': None,
})
return Response({
'code': 200,
'msg': result.get('msg', 'ok'),
'data': result.get('data'),
})
class GuanshiChangeZuzhangView(APIView):
"""
POST /yonghu/gs_huan_zuzhang
body: { inviteCode: 组长邀请码 }
"""
permission_classes = [IsAuthenticated]
def post(self, request):
invite = (
request.data.get('inviteCode')
or request.data.get('yaoqingma')
or ''
)
result = change_leader_by_invite(
request,
request.user,
invite,
source='miniapp',
operator=getattr(request.user, 'UserUID', '') or '',
)
if not result.get('ok'):
return Response({
'code': result.get('code', 400),
'msg': result.get('msg', '更换失败'),
'data': None,
})
return Response({
'code': 200,
'msg': result.get('msg', '更换组长成功'),
'data': result.get('data'),
})