diff --git a/config/views.py b/config/views.py index 181cd56..44437ed 100644 --- a/config/views.py +++ b/config/views.py @@ -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 \ No newline at end of file + return (boss.alldingdan or 0) > 0 \ No newline at end of file