feat: 会员充值明细接口与俱乐部一键创建总会员
新增 hy-recharge-records 查询 czjilu 会员单并关联 gsfenhong 分红;hy-bundle-create 支持俱乐部一步创建总会员;会员数据分析页权限改为 3300a。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -44,7 +44,7 @@ from .views.products import (
|
||||
from .views.members import (
|
||||
GetMemberListView, UpdateMemberView, AddMemberView,
|
||||
ClubMemberCatalogView, ClubMemberEnableView, ClubMemberDisableView,
|
||||
MemberCardImageUploadView,
|
||||
MemberCardImageUploadView, MemberRechargeRecordsView, MemberBundleCreateView,
|
||||
)
|
||||
from .views.guanli import (
|
||||
GetGuanliListView, GetGuanliDetailView, PromoteGuanshiToZuzhangView,
|
||||
@@ -103,7 +103,7 @@ __all__ = [
|
||||
# members
|
||||
'GetMemberListView', 'UpdateMemberView', 'AddMemberView',
|
||||
'ClubMemberCatalogView', 'ClubMemberEnableView', 'ClubMemberDisableView',
|
||||
'MemberCardImageUploadView',
|
||||
'MemberCardImageUploadView', 'MemberRechargeRecordsView', 'MemberBundleCreateView',
|
||||
# guanli
|
||||
'GetGuanliListView', 'GetGuanliDetailView', 'PromoteGuanshiToZuzhangView',
|
||||
'UpdateGuanliView',
|
||||
|
||||
@@ -377,3 +377,81 @@ class MemberCardImageUploadView(APIView):
|
||||
return Response({'code': 0, 'msg': '上传成功', 'data': data})
|
||||
|
||||
|
||||
class MemberRechargeRecordsView(APIView):
|
||||
"""POST /jituan/houtai/hy-recharge-records — 会员充值记录明细 + 分红"""
|
||||
permission_classes = []
|
||||
parser_classes = [JSONParser]
|
||||
|
||||
def post(self, request):
|
||||
username = (request.data.get('username') or request.data.get('phone') or '').strip()
|
||||
if not username:
|
||||
return Response({'code': 401, 'msg': '缺少username'})
|
||||
kefu, permissions = verify_kefu_permission(request, username)
|
||||
if kefu is None:
|
||||
return permissions
|
||||
if '3300a' not in permissions:
|
||||
return Response({'code': 403, 'msg': '无权限查看会员充值记录'})
|
||||
|
||||
from jituan.services.member_recharge_records import build_member_recharge_records_payload
|
||||
|
||||
filters = request.data.get('filters') or {}
|
||||
for key in (
|
||||
'dingdan_id', 'yonghuid', 'buyer_keyword', 'huiyuan_id', 'is_trial',
|
||||
'zhuangtai', 'date_from', 'date_to', 'jine_min', 'jine_max',
|
||||
'guanshi_id', 'zuzhang_id', 'keyword', 'is_bundle', 'has_fenhong', 'club_id',
|
||||
):
|
||||
if request.data.get(key) not in (None, ''):
|
||||
filters[key] = request.data.get(key)
|
||||
|
||||
payload = build_member_recharge_records_payload(
|
||||
request,
|
||||
filters=filters,
|
||||
page=request.data.get('page', 1),
|
||||
page_size=request.data.get('page_size', 20),
|
||||
)
|
||||
return Response({'code': 0, 'data': payload})
|
||||
|
||||
|
||||
class MemberBundleCreateView(APIView):
|
||||
"""POST /jituan/houtai/hy-bundle-create — 俱乐部一键创建总会员并上架"""
|
||||
permission_classes = []
|
||||
parser_classes = [JSONParser]
|
||||
|
||||
def post(self, request):
|
||||
username = (request.data.get('username') or request.data.get('phone') or '').strip()
|
||||
if not username:
|
||||
return Response({'code': 401, 'msg': '缺少username'})
|
||||
kefu, permissions = verify_kefu_permission(request, username)
|
||||
if kefu is None:
|
||||
return permissions
|
||||
if '3300a' not in permissions:
|
||||
return Response({'code': 403, 'msg': '无权限'})
|
||||
|
||||
jieshao = (request.data.get('jieshao') or '').strip()
|
||||
if not jieshao:
|
||||
return Response({'code': 400, 'msg': '会员名称不能为空'})
|
||||
|
||||
try:
|
||||
jiage = Decimal(str(request.data.get('jiage')))
|
||||
guanshifc = Decimal(str(request.data.get('guanshifc')))
|
||||
zuzhangfc = Decimal(str(request.data.get('zuzhangfc')))
|
||||
except Exception:
|
||||
return Response({'code': 400, 'msg': '金额格式错误'})
|
||||
|
||||
from jituan.services.club_member_admin import create_bundle_member_for_club
|
||||
|
||||
data, err = create_bundle_member_for_club(
|
||||
request,
|
||||
jieshao=jieshao,
|
||||
jiage=jiage,
|
||||
guanshifc=guanshifc,
|
||||
zuzhangfc=zuzhangfc,
|
||||
jtjieshao=(request.data.get('jtjieshao') or '').strip(),
|
||||
formal_days=int(request.data.get('formal_days') or 30),
|
||||
included_huiyuan_ids=request.data.get('included_huiyuan_ids') or [],
|
||||
)
|
||||
if err:
|
||||
return Response({'code': 400, 'msg': err})
|
||||
return Response({'code': 0, 'msg': '总会员创建并上架成功', 'data': data})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user