# -*- coding: utf-8 -*- #!/usr/bin/env python """ 将重复的用户按组归并 """ import os import sys 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.testing"}) import django django.setup() from apps.web.dealer.models import DealerRechargeRecord from apps.web.device.models import Device,SIMCard from apps.web.constant import Const print u'导入所有充值的设备数据,以修改simStatus字段' #先更新所有充值过的设备的sim卡状态为chargedUnupdated.这样在升级期间,可以保证不会影响用户的使用 chargedDevNos = [] objs = DealerRechargeRecord.objects.filter(status = 'Paid') countAll,devCount = 0,0 for obj in objs: chargedDevNos.extend([item['devNo'] for item in obj.items]) Device.get_collection().update({'devNo':{'$in':chargedDevNos}},{'$set':{'simStatus':'chargedUnupdated'}},multi = True) Device.invalid_many_device_cache(chargedDevNos) print u'完成导入已经充值的数据' print u'将sim卡的超时时间同步到设备上' #更新sim卡的相关信息。把所有sim卡信息导入device表。没有sim卡过期时间的,以expireTime为准。确保所有的卡都有sim卡过期时间 simObjs = SIMCard.objects.all() simList = [obj for obj in simObjs] count = 0 for simObj in simList:#这个地方有问题,请参考导入excel的任务,需要更新simStatus expireTime = simObj.expireTime iccid = simObj.iccid try: #直接查询device的数据,检查是否需要更新 devObj = Device.objects(iccid = iccid).only('simExpireDate','simStatus').get() except Exception,e: continue #6月份过期的,不要修改simStatus,等到15号sim卡的数据出来后,再刷新 if expireTime.month == 2019 and expireTime.month == 6: continue try: if (devObj.simExpireDate - expireTime).days > 0 : print iccid,'device sim ',devObj.simExpireDate,'sim',expireTime count += 1 except Exception,e: print('save dev obj iccid =%s error=%s' % (iccid,e)) if count % 300 == 0: print u'同步sim卡超时时间数目为: ',count ########################## print u'完成 sim卡的超时时间同步' print u'将没有sim卡超时时间的数据,用expireDate替换掉' objs = Device.objects.filter(ownerId__nin = [None, ""], simExpireDate__in = [None, ""]) count = 0 devList = [obj for obj in objs] for dev in devList: try: Device.get_collection().update({'devNo':dev.devNo},{'$set':{'simExpireDate':dev.expireDate}}) count += 1 except Exception,e: print('update device expired error = %s ' % e) continue if count % 300 == 0: print u'完成sim卡的超时时间设置数目',count print u'完成sim卡空超时时间的个数为:',count print u'全部完成'