upgrade_ad_sys.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. 广告系统需要做一次稳定性升级
  5. 1. 将所有的广告记录从redis移动回mongodb
  6. 1.1 将老的广告记录充实起来
  7. 2. 离线任务需要完成
  8. """
  9. import os
  10. import sys
  11. #: current_dir - 2
  12. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  13. sys.path.insert(0, PROJECT_ROOT)
  14. from script.base import init_env, get_logger
  15. logger = get_logger(__name__)
  16. init_env(interactive=True)
  17. from apps.web.ad.utils import AdRecordProxy, timestamp_to_dt
  18. from apps.web.ad.models import Advertisement, AdRecord, nullable
  19. from apps.web.management.models import Manager
  20. from apps.web.dealer.models import Dealer
  21. from apps.web.agent.models import Agent
  22. from apps.web.user.models import MyUser
  23. from apps.web.device.models import Device, Group
  24. def move_all_adRecordProxies_to_adRecord():
  25. for proxy in AdRecordProxy.all():
  26. if AdRecord.objects(logicalCode=proxy.logicalCode, openId=proxy.openId, adId=proxy.adId):
  27. continue
  28. else:
  29. record = AdRecord()
  30. def complete_old_ad_record():
  31. """
  32. 将老的广告缺省的详细信息填满
  33. :return:
  34. """
  35. for record in AdRecord.objects():
  36. ad = nullable(Advertisement.get_by_adId(record.adId))
  37. dev = Device.get_dev(record.devNo)
  38. group = Group.get_group(record.groupId) or {}
  39. user = nullable(MyUser.objects(openId=record.openId, groupId=record.groupId).first())
  40. sexMap = {0: '-', 1: u'男', 2: u'女', '': '-'}
  41. if record.agentId:
  42. agent = Agent.objects(id=str(record.agentId)).first()
  43. agentName = agent.nickname
  44. else:
  45. agentName = ''
  46. if record.dealerId:
  47. dealerName = Dealer.objects(id=str(record.dealerId)).first().nickname
  48. else:
  49. dealerName = ''
  50. ad_record_payload = {
  51. 'adId': record.adId,
  52. 'adName': ad.name,
  53. 'agentPrice': ad.agentPrice,
  54. 'dealerPrice': ad.dealerPrice,
  55. 'price': ad.price,
  56. 'agentName': agentName,
  57. 'dealerName': dealerName,
  58. 'logicalCode': dev['logicalCode'],
  59. 'nickname': user.nickname,
  60. 'sex': sexMap[user.sex],
  61. 'openId': user.openId,
  62. 'devType': dev['devType'].get('name'),
  63. 'address': group.get('address', ''),
  64. 'groupName': group.get('groupName', ''),
  65. #: filters
  66. 'groupId': record.groupId,
  67. 'dealerId': record.dealerId,
  68. 'agentId': record.agentId,
  69. 'devNo': record.devNo,
  70. #: user actions
  71. 'clicks': record.clicks,
  72. 'shows': record.shows,
  73. 'converted': record.converted
  74. }
  75. record.update(**ad_record_payload)