feat: 总会员(包含式)模型、迁移、抢单校验与后台配置

- Huiyuan.is_bundle + club_huiyuan_bundle_include 表
- 购买/到期逻辑不变,抢单时总会员覆盖子会员类型
- dshyhq/clumber 返回 is_bundle 与 included_huiyuan_ids

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-05 18:12:57 +08:00
parent 5754a69e0b
commit 37bc8f960a
10 changed files with 228 additions and 21 deletions

View File

@@ -527,16 +527,17 @@ class QiangdanView(APIView):
return {'success': True, 'message': '验证通过'}
def _validate_huiyuan_requirement(self, order, dashou_yonghuid):
from jituan.services.huiyuan_bundle import user_has_huiyuan_access
from jituan.services.club_context import resolve_effective_club_id
club_id = None
try:
huiyuan_record = Huiyuangoumai.query.get(
huiyuan_id=order.MembershipID,
yonghu_id=dashou_yonghuid
)
if huiyuan_record.jiance_shifou_daoqi() or huiyuan_record.huiyuan_zhuangtai != 1:
return {'success': False, 'message': '会员已过期或未开通对应会员'}
club_id = resolve_effective_club_id(self.request, self.request.user)
except Exception:
pass
if user_has_huiyuan_access(dashou_yonghuid, order.MembershipID, club_id=club_id):
return {'success': True, 'message': '会员验证通过'}
except Huiyuangoumai.DoesNotExist:
return {'success': False, 'message': '未开通对应会员,无法抢此订单'}
return {'success': False, 'message': '未开通对应会员,无法抢此订单'}
def _validate_yajin_requirement(self, order, dashou_profile):
yajin_required = order.CommissionReq or 0