1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import simplejson as json
- import os,sys
- from typing import Dict
- 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 apilib.utils_datetime import to_datetime
- from django.conf import settings
- from apps.web.device.models import Device
- from apps.web.dealer.models import Dealer
- from apps.web.agent.models import Agent
- from cytoolz import groupby
- from bson.objectid import ObjectId
- from apps.web.core.messages.sms import SMSSender
- from celery.utils.log import get_task_logger
- logger = get_task_logger(__name__)
- startTime = to_datetime('2021-09-01 00:00:00')
- endTime = to_datetime('2021-10-01 00:00:00')
- devices = Device.get_sim_expire_notify_devices()
- dealer_device_map = groupby('ownerId', list(devices))
- dealer_map = {
- dealer['_id']: dealer
- for dealer in Dealer.get_collection()
- .find({'_id': {'$in': [ObjectId(id_) for id_ in dealer_device_map.keys()]}},
- {'username': 1, 'agentId': 1, 'smsVendor': 1})
- } # type: Dict[ObjectId, dict]
- agent_product_map = {
- agent['_id']: agent.get('productName', '').encode('utf-8')
- for agent in Agent.get_collection()
- .find({'_id': {'$in': [ObjectId(_['agentId']) for _ in dealer_map.values()]}},
- {'productName': 1})
- }
- for id_, dealer in dealer_map.iteritems():
- logger.debug('sending SIM expired message to Dealer(phone=%s)' % (dealer['username'],))
- sms_sender = SMSSender()
- response = sms_sender.send(phoneNumber = dealer['username'],
- templateName="SMS_NOTIFY_EXPIRED_DEVICE_TEMPLATEID",
- msg = u'请您务必重视,我们将于今天提交充值的卡到运营商,设备到期未充值的,系统会进行拆机处理,因为恰逢十一放假,为了防止运营商假期处理不及时,影响您的正常运营,我们建议您今天完成到期续费。'.encode(
- 'utf-8'), productName = agent_product_map[ObjectId(dealer['agentId'])])
- logger.info('sending sim expired alert to dealer(phone=%s) result=%s' % (dealer['username'], json.dumps(response),))
- if not response['result']:
- logger.error('send sms to dealer failed, error=%s' % json.dumps(response))
|