Browse Source

定制化推送表新增推送时间戳字段

locky 1 year ago
parent
commit
d7eb6ddbe8
4 changed files with 44 additions and 2 deletions
  1. 2 0
      AdminController/UserManageController.py
  2. 15 0
      Controller/TestApi.py
  3. 2 1
      Model/models.py
  4. 25 1
      Service/CommonService.py

+ 2 - 0
AdminController/UserManageController.py

@@ -952,6 +952,7 @@ class UserManagement(View):
         # 截掉UTC
         time_zone = time_zone[3:]
         try:
+            push_timestamp = CommonService.convert_to_timestamp(float(time_zone), push_time)
             customized_push_data = {
                 'title': title,
                 'msg': msg,
@@ -961,6 +962,7 @@ class UserManagement(View):
                 'register_period': register_period,
                 'time_zone': time_zone,
                 'push_time': push_time,
+                'push_timestamp': push_timestamp,
                 'push_app': push_app
             }
             icon_link = ''

+ 15 - 0
Controller/TestApi.py

@@ -156,6 +156,8 @@ class testView(View):
             return self.del_apscheduler_job(request_dict, response)
         elif operation == 'getPayPalTransactions':  # 删除定时任务
             return self.get_pay_pal_transactions(request_dict, response)
+        elif operation == 'convertTimestamp':  # 转换时间戳
+            return self.convertTimestamp(request_dict, response)
         else:
             return response.json(414)
 
@@ -1073,3 +1075,16 @@ class testView(View):
             LOGGER.info('UnicomManageControllerView.transfer_device_package, errLine:{}, errMsg:{}'.format(
                 e.__traceback__.tb_lineno, repr(e)))
             return response.json(500)
+
+    @staticmethod
+    def convertTimestamp(request_dict, response):
+        timezone_offset = request_dict.get('timezone_offset', None)
+        time_string = request_dict.get('time_string', None)
+        if not all([timezone_offset, time_string]):
+            return response.json(444)
+        try:
+            timezone_offset = float(timezone_offset)
+            timestamp = CommonService.convert_to_timestamp(timezone_offset, time_string)
+            return response.json(0, timestamp)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 2 - 1
Model/models.py

@@ -3797,7 +3797,8 @@ class CustomizedPush(models.Model):
     device_type = models.TextField(default='', verbose_name='设备类型')
     register_period = models.CharField(default='', max_length=32, verbose_name='注册年限')
     time_zone = models.CharField(default='', max_length=8, verbose_name='时区')
-    push_time = models.IntegerField(default=0, verbose_name='推送时间')
+    push_time = models.CharField(default='', max_length=32, verbose_name='推送时间')
+    push_timestamp = models.IntegerField(default=0, verbose_name='推送时间戳')
     push_app = models.CharField(default='', max_length=64, verbose_name='推送APP')
     # False:待推送, True:已推送
     push_satus = models.BooleanField(default=False, verbose_name='推送状态')

+ 25 - 1
Service/CommonService.py

@@ -1,4 +1,5 @@
 import base64
+import calendar
 import datetime
 import ipdb
 import time
@@ -8,6 +9,7 @@ from random import Random
 from distutils.version import LooseVersion
 
 import OpenSSL.crypto as ct
+import pytz
 import requests
 import simplejson as json
 from dateutil.relativedelta import relativedelta
@@ -785,4 +787,26 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
                 version_list.append(version)
             else:
                 continue
-        return version_list
+        return version_list
+
+    @staticmethod
+    def convert_to_timestamp(timezone_offset, time_string):
+        """
+        时间字符串转为时间戳
+        @param timezone_offset: 时区
+        @param time_string: 时间字符串
+        @return: timestamp
+        """
+        datetime_obj = datetime.datetime.strptime(time_string, '%Y-%m-%d %H:%M:%S')
+
+        # 创建一个表示指定时区的timedelta对象
+        utc_offset = datetime.timedelta(hours=timezone_offset)
+
+        # 调整时区
+        datetime_obj = datetime_obj - utc_offset
+
+        # datetime.datetime对象 -> str
+        time_str_utc = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")
+        timestamp = calendar.timegm(time.strptime(time_str_utc, '%Y-%m-%d %H:%M:%S'))
+
+        return timestamp