From 4c41efa46f53d12443865e668f3f1090d3aa4545 Mon Sep 17 00:00:00 2001 From: youngS Date: Fri, 3 Dec 2021 17:04:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=80=85=E7=AD=96=E7=95=A5=20=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E6=9C=80=E5=B0=8F=E6=B3=A8=E5=86=8C=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=95=B0=E8=BF=9B=E8=A1=8C=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fir_ser/api/utils/app/supersignutils.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/fir_ser/api/utils/app/supersignutils.py b/fir_ser/api/utils/app/supersignutils.py index f52554b..7d328fb 100644 --- a/fir_ser/api/utils/app/supersignutils.py +++ b/fir_ser/api/utils/app/supersignutils.py @@ -13,6 +13,7 @@ from functools import wraps import xmltodict from django.core.cache import cache +from django.db.models import Count from api.models import APPSuperSignUsedInfo, AppUDID, AppIOSDeveloperInfo, AppReleaseInfo, Apps, APPToDeveloper, \ UDIDsyncDeveloper, DeveloperAppID, DeveloperDevicesID, IosDeveloperPublicPoolBill, UserInfo @@ -269,12 +270,21 @@ def get_developer_user_by_app_udid(user_objs, udid, app_obj): developer_obj.user_id) < developer_obj.usable_number: logger.info(f'app_obj:{app_obj} only and return') return developer_obj, False - + can_used_developer_pk_list = [] for developer_obj in AppIOSDeveloperInfo.objects.filter(user_id__in=user_objs, is_actived=True, certid__isnull=False).order_by("created_time"): if get_developer_udided(developer_obj)[2] + get_developer_can_used_from_public_sign( developer_obj.user_id) < developer_obj.usable_number: - logger.info(f'get suitable developer and return') + can_used_developer_pk_list.append(developer_obj.pk) + + # 查询开发者策略 按照最小注册设备数进行查找,这样可以分散,进而使应用趋向于一个开发者,为后期更新提供方便 + if can_used_developer_pk_list: + developer_obj_dict = AppIOSDeveloperInfo.objects.filter(pk__in=can_used_developer_pk_list).values( + 'udidsyncdeveloper', 'pk').annotate( + count=Count('pk')).order_by('created_time').order_by('count').first() + if developer_obj_dict: + developer_obj = AppIOSDeveloperInfo.objects.filter(pk=developer_obj_dict.get('pk')).first() + logger.info(f'get suitable developer {developer_obj} and return') return developer_obj, False return None, None