俱乐部隔离:展示配置/会员可售/手机认证阈值;修复小程序轮播

This commit is contained in:
XingQue
2026-06-24 23:49:25 +08:00
parent d56c85bca9
commit 4714e2259b
4 changed files with 41 additions and 20 deletions

View File

@@ -65,7 +65,8 @@ class GetDynamicConfigView(APIView):
def post(self, request):
try:
# 从 settings 获取配置
from jituan.services.display_config import get_tupianpeizhi_url
cos_oss_url = getattr(settings, 'COS_DOMAIN', '')
if cos_oss_url and not cos_oss_url.endswith('/'):
cos_oss_url += '/'
@@ -75,8 +76,10 @@ class GetDynamicConfigView(APIView):
goeasy_appkey = getattr(settings, 'GOEASY_APPKEY', '')
kefu_link = getattr(settings, 'KEFU_LINK', '')
kefu_enterprise_id = getattr(settings, 'KEFU_ENTERPRISE_ID', '')
morentouxiang = 'beijing/morentouxiang.jpg'
dashouguize = 'a_long/dashouguize.jpg'
rule_img = get_tupianpeizhi_url(request, 1)
avatar_img = get_tupianpeizhi_url(request, 2)
morentouxiang = avatar_img or 'beijing/morentouxiang.jpg'
dashouguize = rule_img or 'a_long/dashouguize.jpg'
# 构造返回数据
data = {
@@ -2697,8 +2700,12 @@ class GuanZhuAListView(APIView):
def post(self, request):
try:
# 查询类型为3的所有记录
qs = Tupianpeizhi.query.filter(ImageType=3)
from jituan.services.club_context import resolve_club_id_from_request
club_id = resolve_club_id_from_request(request)
qs = Tupianpeizhi.query.filter(ImageType=3, club_id=club_id)
if not qs.exists() and club_id != 'xq':
qs = Tupianpeizhi.query.filter(ImageType=3, club_id='xq')
if not qs.exists():
return Response({
'code': 0,
@@ -3283,7 +3290,9 @@ class CheckPhoneAuthView(APIView):
return False
if dashou.yajin and dashou.yajin > 0:
return True
if Huiyuangoumai.query.filter(yonghu_id=user.UserUID).exists():
from jituan.services.club_context import resolve_club_id_from_request
club_id = resolve_club_id_from_request(self.request)
if Huiyuangoumai.query.filter(yonghu_id=user.UserUID, club_id=club_id).exists():
return True
if (dashou.jiedanzongliang or 0) > 0 or (dashou.chengjiaozongliang or 0) > 0:
return True

View File

@@ -72,10 +72,10 @@ def build_member_list_payload(request):
'club_id': club_id,
'scope': scope,
'price_note': (
'当前展示俱乐部专属售价club_huiyuan_price;与星阙相同说明尚未单独改价,'
'在本俱乐部视图下编辑即可覆盖'
f'当前俱乐部 {club_id} 专属售价(club_huiyuan_price'
'若与星阙相同,是创建时从 xq 复制的默认值,请在本俱乐部视图下修改价格'
if scope != DATA_SCOPE_ALL else
'集团汇总视图展示全局默认价切换具体俱乐部查看/编辑各俱乐部售价。'
'集团汇总展示全局默认价。请切换具体俱乐部查看/编辑专属价。'
),
**list_response_meta(request),
}

View File

@@ -66,6 +66,17 @@ def list_response_meta(request):
return _meta(request)
def get_tupianpeizhi_url(request, image_type):
"""按俱乐部读图片配置(无则 xq 回退,避免 xzj 未配时全空)。"""
from config.models import Tupianpeizhi
club_id = resolve_club_id_from_request(request)
row = Tupianpeizhi.query.filter(club_id=club_id, ImageType=image_type).first()
if not row and club_id != CLUB_ID_DEFAULT:
row = Tupianpeizhi.query.filter(club_id=CLUB_ID_DEFAULT, ImageType=image_type).first()
return (row.ImageURL or '').strip() if row else ''
def copy_display_config(template_club_id, new_club_id):
"""从模板俱乐部复制轮播/公告/弹窗/图片配置到新俱乐部。"""
from config.models import Gonggao, Lunbo, PopupConfig, PopupImage, PopupPage, Tupianpeizhi

View File

@@ -266,23 +266,24 @@ class DashouHuiyuanList(APIView):
'message': '账号状态异常,无法购买会员'
}, status=status.HTTP_400_BAD_REQUEST)
# 3. 查询所有会员数据ORM查询确保性能
# 3. 仅返回本俱乐部可售会员club_huiyuan_price 已配置且启用
from jituan.services.member_recharge import club_huiyuan_sellable
club_id = resolve_club_id_from_request(request)
huiyuan_queryset = Huiyuan.query.all().only(
'huiyuan_id', # 会员ID
'jieshao', # 会员名字注意jieshao字段实际存储的是会员名字
'jtjieshao', # 会员具体介绍
'jiage' # 会员价格
).order_by('jiage') # 按价格排序
'huiyuan_id', 'jieshao', 'jtjieshao', 'jiage',
).order_by('jiage')
# 4. 构建返回数据列表
huiyuan_list = []
for huiyuan in huiyuan_queryset:
sellable, club_price = club_huiyuan_sellable(club_id, huiyuan.huiyuan_id)
if not sellable or not club_price:
continue
huiyuan_list.append({
'id': huiyuan.huiyuan_id, # 会员ID对应前端id
'mingzi': huiyuan.jieshao, # 会员名字对应前端mingzi
'jiage': float(get_huiyuan_price(club_id, huiyuan.huiyuan_id, huiyuan)),
'jieshao': huiyuan.jtjieshao # 会员介绍对应前端jieshao
'id': huiyuan.huiyuan_id,
'mingzi': huiyuan.jieshao,
'jiage': float(club_price),
'jieshao': huiyuan.jtjieshao,
})
# 5. 返回数据