check_group_owner_change.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import datetime
  4. import os
  5. import sys
  6. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  7. sys.path.insert(0, PROJECT_ROOT)
  8. from script.base import get_logger
  9. logger = get_logger(__name__)
  10. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"})
  11. import django
  12. django.setup()
  13. def cal_dev_and_group():
  14. from apps.web.device.models import Device, Group
  15. import csv
  16. # 已经有经销商的设备
  17. devQuery = Device.objects.filter(ownerId__exists=1)
  18. total = devQuery.count()
  19. offset = 0
  20. result = list()
  21. while offset < total:
  22. for _dev in Device.objects.filter(ownerId__exists=1).only("id", "ownerId", "groupId")[
  23. offset: offset + 1000]: # type: Device
  24. if not _dev.groupId:
  25. continue
  26. dOwnerId = _dev.ownerId
  27. try:
  28. group = Group.objects.get(id=_dev.groupId) # type: Group
  29. groupId, gOwnerId = group.id, group.ownerId
  30. except Exception as e:
  31. print(_dev.id, e)
  32. groupId, gOwnerId = "", ""
  33. if dOwnerId == gOwnerId:
  34. continue
  35. row = {
  36. "devId": str(_dev.id),
  37. "dOwnerId": str(dOwnerId),
  38. "gId": str(groupId),
  39. "gOwnerId": str(gOwnerId)
  40. }
  41. result.append(row)
  42. offset += 1000
  43. with open("error_dev_group.csv", "w") as f:
  44. w = csv.DictWriter(f, fieldnames=["devId", "dOwnerId", "gId", "gOwnerId"])
  45. w.writeheader()
  46. w.writerows(result)
  47. def check_dealer_income_proxy():
  48. from apilib.utils_datetime import get_zero_time, get_tomorrow_zero_time
  49. from apps.web.dealer.proxy import DealerIncomeProxy
  50. from apps.web.dealer.models import Dealer
  51. import csv
  52. from apps.web.device.models import Group
  53. yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
  54. start_time = get_zero_time(yesterday)
  55. end_time = get_tomorrow_zero_time(yesterday)
  56. print start_time
  57. print end_time
  58. query = DealerIncomeProxy.objects.filter(dateTimeAdded__gte=start_time,dateTimeAdded__lt=end_time)
  59. total = query.count()
  60. offset = 0
  61. result = list()
  62. while offset < total:
  63. for item in query[offset: offset + 1000]: # type: DealerIncomeProxy
  64. partitions = item.partition
  65. ownerId = None
  66. parterids = []
  67. for partition in partitions:
  68. if partition['role'] == 'owner':
  69. ownerId = partition['id']
  70. elif partition['role'] == 'partner':
  71. parterids.append(partition['id'])
  72. group = Group.objects(id=str(item.groupId)).first()
  73. if not group:
  74. print '{} has no Group.'.format(str(item.groupId))
  75. row = {
  76. "incomeId": str(item.id),
  77. "gId": '',
  78. "gOwnerId": '',
  79. 'ownerId': ownerId,
  80. "error": "3"
  81. }
  82. result.append(row)
  83. continue
  84. if group.ownerId != ownerId:
  85. row = {
  86. "incomeId": str(item.id),
  87. "gId": str(item.groupId),
  88. "gOwnerId": str(ownerId),
  89. 'ownerId': ownerId,
  90. "error": "1"
  91. }
  92. print row
  93. result.append(row)
  94. else:
  95. dealers = Dealer.objects(id__in=([ownerId] + parterids))
  96. agentId = None
  97. for dealer in dealers:
  98. if not agentId:
  99. agentId = dealer.agentId
  100. else:
  101. if agentId != dealer.agentId:
  102. row = {
  103. "incomeId": str(item.id),
  104. "gId": str(item.groupId),
  105. "gOwnerId": str(ownerId),
  106. 'ownerId': ownerId,
  107. "error": "2"
  108. }
  109. print row
  110. result.append(row)
  111. print 'finished 1000 rows.'
  112. offset += 1000
  113. with open("error_dev_group.csv", "w") as f:
  114. w = csv.DictWriter(f, fieldnames=["incomeId", "gId", "gOwnerId", "ownerId", "error"])
  115. w.writeheader()
  116. w.writerows(result)
  117. check_dealer_income_proxy()