diff --git a/config/views.py b/config/views.py index c3557ad..fb28c7a 100644 --- a/config/views.py +++ b/config/views.py @@ -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 diff --git a/jituan/services/club_member_admin.py b/jituan/services/club_member_admin.py index 364a063..a4b3e77 100644 --- a/jituan/services/club_member_admin.py +++ b/jituan/services/club_member_admin.py @@ -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), } diff --git a/jituan/services/display_config.py b/jituan/services/display_config.py index b62cfa2..55adf56 100644 --- a/jituan/services/display_config.py +++ b/jituan/services/display_config.py @@ -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 diff --git a/products/views.py b/products/views.py index efe672f..a7bfed8 100644 --- a/products/views.py +++ b/products/views.py @@ -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. 返回数据