UnicomComboTaskController.py 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : UnicomComboTaskController.py
  4. @Time : 2022/6/30 16:23
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. import logging
  10. import time
  11. from django.db import transaction
  12. from django.views import View
  13. from Model.models import UnicomComboOrderInfo, UnicomCombo, Order_Model
  14. from Object.ResponseObject import ResponseObject
  15. from Object.UnicomObject import UnicomObjeect
  16. class UnicomComboTaskView(View):
  17. def get(self, request, *args, **kwargs):
  18. request.encoding = 'utf-8'
  19. operation = kwargs.get('operation')
  20. return self.validation(request.GET, request, operation)
  21. def post(self, request, *args, **kwargs):
  22. request.encoding = 'utf-8'
  23. operation = kwargs.get('operation')
  24. return self.validation(request.POST, request, operation)
  25. def validation(self, request_dict, request, operation):
  26. response = ResponseObject()
  27. print(request)
  28. if operation == 'check-activate':
  29. return self.check_activate_combo(request_dict, response)
  30. @classmethod
  31. def check_activate_combo(cls, request_dict, response):
  32. """
  33. 定时检查是否有次月激活套餐
  34. @param request_dict:
  35. @param response:
  36. @return:
  37. """
  38. logger = logging.getLogger('info')
  39. print(request_dict)
  40. logger.info('定时检查是否有次月激活联通套餐')
  41. now_time = int(time.time())
  42. combo_order_info_qs = UnicomComboOrderInfo.objects.filter(status=0, next_month_activate=True,
  43. activation_time__lte=now_time,
  44. expire_time__gte=now_time, is_del=0).values()
  45. if not combo_order_info_qs.exists():
  46. return response.json(0)
  47. try:
  48. now_time = int(time.time())
  49. with transaction.atomic():
  50. unicom_api = UnicomObjeect()
  51. for item in combo_order_info_qs:
  52. if item['order_id']:
  53. order_id = item['order_id']
  54. order_qs = Order_Model.objects.filter(orderID=order_id, status=1)
  55. if not order_qs.exists():
  56. logger.info('当前已付款联通订单套餐不存在:orderId={}'.format(order_id))
  57. continue
  58. combo_id = item['combo_id']
  59. combo_qs = UnicomCombo.objects.filter(id=combo_id).values()
  60. if combo_qs.exists():
  61. item['status'] = 1
  62. item['updated_time'] = now_time
  63. params = {'iccid': item['iccid']}
  64. result = unicom_api.verify_device(**params)
  65. result = unicom_api.get_text_dict(result)
  66. if result and result['success']:
  67. # 1:已激活;2:可激活;3:已停用;4:已失效;5:可测试;6:库存;7:已更换;8:已清除;
  68. status = result['data']['status']
  69. if status != 1:
  70. up_data = {'iccid': item['iccid'], 'status': 1}
  71. device_result = UnicomObjeect.update_device_state(**up_data)
  72. device_result = UnicomObjeect.get_text_dict(device_result)
  73. if device_result and device_result['success']:
  74. UnicomComboOrderInfo.objects.filter(id=item['id']) \
  75. .update(status=1, updated_time=now_time)
  76. else:
  77. UnicomComboOrderInfo.objects.filter(id=item['id']) \
  78. .update(status=1, updated_time=now_time)
  79. logger.info('激活成功,订单编号:{}'.format(order_id))
  80. return response.json(0)
  81. except Exception as e:
  82. print(e)
  83. return response.json(177, repr(e))