fix: 调整手机号强制认证判定规则(身份触发)
This commit is contained in:
@@ -3227,83 +3227,62 @@ class CheckPhoneAuthView(APIView):
|
||||
判断当前登录用户是否需要强制手机号认证
|
||||
|
||||
规则:
|
||||
- 已认证过手机号(shoujihao_renzheng=True) → 不需要
|
||||
- 未认证时,检查用户角色及其业务指标是否达到阈值:
|
||||
打手:有会员购买记录(Huiyuangoumai 中存在记录)
|
||||
商家:发布订单总数(fabu)>= 5
|
||||
管事:充值分佣总额(chongzhifenrun)>= 15
|
||||
组长:分佣总额(fenyong_zonge)>= 2
|
||||
老板:消费总额(zonge)>= 20
|
||||
- 满足任一角色的阈值 → 需要认证
|
||||
- 否则 → 不需要认证
|
||||
- 已认证过手机号(PhoneVerified=True) → 不需要
|
||||
- 未认证时,满足以下任一条件 → 需要认证:
|
||||
打手:有会员购买记录,或押金 > 0
|
||||
商家:已是商家(存在商家扩展表)
|
||||
管事:已是管事(存在管事扩展表)
|
||||
组长:已是组长(存在组长扩展表)
|
||||
老板:有下单记录(alldingdan > 0)
|
||||
"""
|
||||
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
user = request.user # User 实例
|
||||
user = request.user
|
||||
|
||||
# 已经认证过手机号,直接放行
|
||||
if user.PhoneVerified:
|
||||
return Response({'need_auth': False})
|
||||
if getattr(user, 'PhoneVerified', False):
|
||||
return Response({'code': 0, 'need_auth': False})
|
||||
|
||||
# 检查各角色是否满足阈值条件
|
||||
if self._dashou_meets_threshold(user):
|
||||
return Response({'need_auth': True})
|
||||
return Response({'code': 0, 'need_auth': True})
|
||||
if self._shangjia_meets_threshold(user):
|
||||
return Response({'need_auth': True})
|
||||
return Response({'code': 0, 'need_auth': True})
|
||||
if self._guanshi_meets_threshold(user):
|
||||
return Response({'need_auth': True})
|
||||
return Response({'code': 0, 'need_auth': True})
|
||||
if self._zuzhang_meets_threshold(user):
|
||||
return Response({'need_auth': True})
|
||||
return Response({'code': 0, 'need_auth': True})
|
||||
if self._boss_meets_threshold(user):
|
||||
return Response({'need_auth': True})
|
||||
return Response({'code': 0, 'need_auth': True})
|
||||
|
||||
# 都不满足,无需认证
|
||||
return Response({'need_auth': False})
|
||||
|
||||
# ==================== 各角色阈值判断方法 ====================
|
||||
return Response({'code': 0, 'need_auth': False})
|
||||
|
||||
def _dashou_meets_threshold(self, user):
|
||||
"""
|
||||
打手条件:存在会员购买记录(Huiyuangoumai 表中有该用户的记录)
|
||||
"""
|
||||
"""打手:有会员记录,或押金 > 0"""
|
||||
try:
|
||||
# 先确认用户是打手
|
||||
UserDashou.query.get(user=user)
|
||||
dashou = UserDashou.query.get(user=user)
|
||||
except UserDashou.DoesNotExist:
|
||||
return False
|
||||
# 检查是否有任意会员购买记录
|
||||
if dashou.yajin and dashou.yajin > 0:
|
||||
return True
|
||||
return Huiyuangoumai.query.filter(yonghu_id=user.UserUID).exists()
|
||||
|
||||
def _shangjia_meets_threshold(self, user):
|
||||
"""商家条件:发布订单总数 fabu >= 5"""
|
||||
try:
|
||||
shop = UserShangjia.query.get(user=user)
|
||||
except UserShangjia.DoesNotExist:
|
||||
return False
|
||||
return shop.fabu >= 5
|
||||
"""商家:已是商家身份"""
|
||||
return UserShangjia.query.filter(user=user).exists()
|
||||
|
||||
def _guanshi_meets_threshold(self, user):
|
||||
"""管事条件:充值分佣总额 chongzhifenrun >= 15"""
|
||||
try:
|
||||
guanshi = UserGuanshi.query.get(user=user)
|
||||
except UserGuanshi.DoesNotExist:
|
||||
return False
|
||||
return guanshi.chongzhifenrun >= 15
|
||||
"""管事:已是管事身份"""
|
||||
return UserGuanshi.query.filter(user=user).exists()
|
||||
|
||||
def _zuzhang_meets_threshold(self, user):
|
||||
"""组长条件:分佣总额 fenyong_zonge >= 2"""
|
||||
try:
|
||||
zuzhang = UserZuzhang.query.get(user=user)
|
||||
except UserZuzhang.DoesNotExist:
|
||||
return False
|
||||
return zuzhang.fenyong_zonge >= 2
|
||||
"""组长:已是组长身份"""
|
||||
return UserZuzhang.query.filter(user=user).exists()
|
||||
|
||||
def _boss_meets_threshold(self, user):
|
||||
"""老板条件:消费总额 zonge >= 20"""
|
||||
"""老板:有下单记录"""
|
||||
try:
|
||||
boss = UserBoss.query.get(user=user)
|
||||
except UserBoss.DoesNotExist:
|
||||
return False
|
||||
return boss.zonge >= 20
|
||||
return (boss.alldingdan or 0) > 0
|
||||
Reference in New Issue
Block a user