1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # -*- coding: utf-8 -*-
- #!/usr/bin/env python
- import threading
- import uuid,os
- import simplejson as json
- import sys,time
- import datetime
- PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
- sys.path.insert(0, PROJECT_ROOT)
- os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"})
- import django
- django.setup()
- from script.base import init_env, get_logger
- logger = get_logger(__name__)
- from apps.web.device.models import SIMCard,Device
- from apilib.utils_datetime import to_datetime
- from apps.web.dealer.models import DealerRechargeRecord
- from apps.web.constant import Const
- import datetime
- #sim卡的全同步脚本
- logger.info('start update_device_sim_info_from_simdb ......... ')
- objs = SIMCard.objects.filter(supplier__in = ['tianyu'],expireTime__gte = datetime.datetime.now()-datetime.timedelta(days = 90)) # 有些久远过期的设备可能也包含进来,为防止万一,包括进来也不要紧
- simDict = {}
- for obj in objs:
- if not obj.expireTime:
- continue
- strTime = obj.expireTime.strftime(Const.DATE_FMT)
- if simDict.has_key(strTime):
- simDict[strTime].append(str(obj.iccid).lower())
- simDict[strTime].append(str(obj.iccid).upper())
- else:
- simDict[strTime] = [str(obj.iccid).lower(),str(obj.iccid).upper()]
- #把这个月充值的设备的状态统一改回来,否则用户充值了,系统还会让别人充值
- devNos1 = []
- startTime = to_datetime('2022-04-01 00:00:00')
- endTime = to_datetime('2022-05-12 00:00:00')
- objs = DealerRechargeRecord.objects.filter(finishedTime__gte = startTime,finishedTime__lte = endTime,status = 'Paid')
- for obj in objs:
- if 'API' in obj.name:
- continue
- for item in obj.items:
- if 'devNo' not in item:
- print obj.id
- devNos1.append(item['devNo'])
- iccids1 = []
- for dev in Device.get_collection().find({'devNo':{'$in':devNos1}},{'iccid':1}):
- if 'iccid' not in dev:
- print '!!!!!!!!!!!!!!!!!!!!!!!',dev['_id']
- continue
- iccids1.append(dev['iccid'])
-
- setIccid1 = set(iccids1)
-
- for strTime,iccids in simDict.items():
- tmTime = to_datetime(strTime + ' 00:00:00')
- iccids2 = list(set(iccids) -setIccid1 )
- Device.get_collection().update({'iccid':{'$in':iccids2}},{'$set':{'simExpireDate':tmTime,'simStatus':'updated'}},multi=True)
- devNos = [obj.devNo for obj in Device.objects.filter(iccid__in = iccids2).only('devNo')]
- Device.invalid_many_device_cache(devNos)
- print 'finished,time=%s' % strTime
- logger.info('finished update_device_sim_info_from_simdb')
|