Эх сурвалжийг харах

Merge branch 'dev' of http://192.168.136.99:3000/SERVER/AnsjerServer into dev

tanghongbin 4 жил өмнө
parent
commit
36601b6c79

+ 3 - 1
Ansjer/urls.py

@@ -11,7 +11,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     AppSetController, \
     ApplicationController, UserExController, CloudStorage, TestApi, UserBrandControllerV2, \
     StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, CDKController, \
-    DeviceTypeController
+    DeviceTypeController, CloudTest
 
 
 urlpatterns = [
@@ -253,6 +253,8 @@ urlpatterns = [
 
     # cdk(激活码)
     url(r'^cdk/(?P<operation>.*)$', CDKController.CDKView.as_view()),
+    # cdk(云存新增功能测试)
+    url(r'^cloudTest/(?P<operation>.*)$', CloudTest.cloudTestView.as_view()),
 
     # app 设备消息模板
     # 路由加参数参考

+ 82 - 45
Controller/CloudStorage.py

@@ -19,6 +19,8 @@ import boto3
 import oss2
 import paypalrestsdk
 import threading
+import calendar
+import datetime
 from aliyunsdkcore import client
 from aliyunsdksts.request.v20150401 import AssumeRoleRequest
 from boto3.session import Session
@@ -113,6 +115,8 @@ class CloudStorageView(View):
                 return self.do_experience_order(request_dict, userID, response)
             elif operation == 'experiencereset':
                 return self.do_experience_reset(request_dict, userID, response)
+            elif operation == 'deletevodlist':
+                return self.deleteVodList(request_dict, response)
             else:
                 return response.json(414)
 
@@ -194,10 +198,11 @@ class CloudStorageView(View):
         else:
             qs = qs.filter(pay_type='10')
 
-        qs = qs.values("id", "title", "content", "price",
-                       "day", "currency", "bucket__storeDay",
-                       "bucket__bucket", "bucket__area",
-                      "commodity_code", "commodity_type")
+        qs=qs.filter(~Q(pay_type='11')) #过滤不显示激活码套餐
+        qs = qs.values("id", "title", "content", "price","day", "currency", "bucket__storeDay",
+                       "bucket__bucket", "bucket__area","commodity_code",
+                       "commodity_type", "is_discounts", "virtual_price", "expire",
+                       "discount_price", "discount_content")
 
         if qs.exists():
             ql = list(qs)
@@ -423,7 +428,7 @@ class CloudStorageView(View):
                 }
                 print(Policy)
                 response = boto3_sts.get_federation_token(
-                    Name='{role_name}'.format(role_name=uid + '_' + channel),
+                    Name='{role_name}'.format(role_name=uid + '_' + str(channel)),
                     Policy=json.dumps(Policy),
                     DurationSeconds=7200
                 )
@@ -450,8 +455,9 @@ class CloudStorageView(View):
                 return JsonResponse(status=200, data=res)
             else:
                 res = {'code': 404, 'msg': 'data not exists!'}
-                return HttpResponse(json.dumps(res, ensure_ascii=False),
-                                    content_type="application/json,charset=utf-8")
+                return HttpResponse(json.dumps(res, ensure_ascii=False),content_type="application/json,charset=utf-8")
+        res = {'code': 405, 'msg': 'Not purchased or expired!'}
+        return HttpResponse(json.dumps(res, ensure_ascii=False),content_type="application/json,charset=utf-8")
 
     def do_query_vod_list(self, request_dict, userID, response):
         startTime = int(request_dict.get('startTime', None))
@@ -466,7 +472,7 @@ class CloudStorageView(View):
         now_time = int(time.time())
         vh_qs = VodHlsModel.objects.filter \
             ( uid=uid, channel=channel, time__range=(startTime, endTime), endTime__gte=now_time). \
-            values("time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
+            values("id", "time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
         vod_play_list = []
         print(int(time.time()))
         for vod in vh_qs:
@@ -489,7 +495,8 @@ class CloudStorageView(View):
                     format(url_start=url_start, url_end=url_end)
                 thumb = bucket.sign_url('GET', ts, 3600,
                                         params={'x-oss-process': 'video/snapshot,t_10000,m_fast,w_300'})
-                vod_play_list.append({'name': vod['time'], 'sign_url': vod_play_url, 'thumb': thumb, 'sec': vod['sec']})
+                vod_play_list.append({'name': vod['time'], 'sign_url': vod_play_url,
+                                      'thumb': thumb, 'sec': vod['sec'], 'vod_id': vod['id']})
             elif bucket__mold == 1:
                 # aws_access_key_id = 'AKIA2E67UIMD45Y3HL53'
                 # aws_secret_access_key = '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'
@@ -522,7 +529,9 @@ class CloudStorageView(View):
                     'sign_url': vod_url,
                     # 'thumb': thumb_url,
                     'sec': vod['sec'],
-                    'ts_num' : ts_num}),
+                    'ts_num' : ts_num,
+                    'vod_id': vod['id']
+                }),
         return response.json(0, vod_play_list)
 
     def do_store_playlist(self, request_dict, response):
@@ -884,32 +893,35 @@ class CloudStorageView(View):
         print("Payment execute successfully")
         order_qs = Order_Model.objects.filter(orderID=orderID)
         nowTime = int(time.time())
-        order_list = order_qs.values("UID", "channel", "commodity_code")
+        order_list = order_qs.values("UID", "channel", "commodity_code", "rank", "isSelectDiscounts")
         UID = order_list[0]['UID']
         channel = order_list[0]['channel']
-        commodity_code = order_list[0]['commodity_code']
-        smqs = Store_Meal.objects.filter(commodity_code=commodity_code). \
-            values("day", "bucket_id", "bucket__storeDay")
+        rank = order_list[0]['rank']
+        smqs = Store_Meal.objects.filter(id=rank). \
+            values("day", "bucket_id", "bucket__storeDay", "expire")
         bucketId = smqs[0]['bucket_id']
         if not smqs.exists():
             return response.json(0, '套餐已删除')
-        addTime = int(smqs[0]["day"]) * 24 * 3600
+
         # ##
-        ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel, endTime__gte=nowTime). \
+        ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
             values("bucket__storeDay", "bucket__region", "endTime")
+        expire = smqs[0]['expire']
+        if order_list[0]['isSelectDiscounts'] == 1:
+            expire = smqs[0]['expire'] * 2
         if ubqs.exists():
             ubqs_count = ubqs.count()
             print(ubqs_count)
             ubq = ubqs[ubqs_count - 1]
-            print(ubq)
-            new_starTime = ubq['endTime'] + 1
-            ub_cqs = UID_Bucket.objects.create \
+            endTime = CommonService.calcMonthLater(expire,ubq['endTime'])
+            ub_cqs = ubqs.update \
                 (uid=UID, channel=channel, bucket_id=bucketId,
-                 endTime=new_starTime + addTime)
+                 endTime=endTime)
             uid_bucket_id = ub_cqs.id
         else:
+            endTime = CommonService.calcMonthLater(expire)
             ub_cqs = UID_Bucket.objects.create \
-                (uid=UID, channel=channel, bucket_id=bucketId, endTime=nowTime + addTime)
+                (uid=UID, channel=channel, bucket_id=bucketId, endTime=endTime)
             uid_bucket_id = ub_cqs.id
         order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
 
@@ -964,23 +976,28 @@ class CloudStorageView(View):
     def do_create_pay_order(self, request_dict, userID, response):
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
-        commodity_code = request_dict.get('commodity_code', None)
         pay_type = int(request_dict.get('pay_type', None))
         rank = request_dict.get('rank', None)
+        is_select_discount = request_dict.get('is_select_discount', 0)
 
-        if not uid or not channel or not commodity_code or not rank:
+        if not uid or not channel or not pay_type or not rank:
             return response.json(13, '参数有误.')
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1)
         if not dv_qs.exists():
             return response.json(12)
-        smqs = Store_Meal.objects.filter(commodity_code=commodity_code, pay_type=pay_type). \
-            values('currency', 'price', 'content', 'day', 'commodity_type', 'title', 'content')
+        smqs = Store_Meal.objects.filter(id=rank, pay_type=pay_type). \
+            values('currency', 'price', 'content', 'day',
+                   'commodity_type', 'title', 'content',
+                   'expire', 'commodity_code', 'discount_price')
         if not smqs.exists():
             return response.json(10, '套餐不存在')
         currency = smqs[0]['currency']
         price = smqs[0]['price']
+        if is_select_discount == 1:
+            price = float(smqs[0]['price']) + float(smqs[0]['discount_price'])
         content = smqs[0]['content']
         day = smqs[0]['day']
+        commodity_code = smqs[0]['commodity_code']
         commodity_type = smqs[0]['commodity_type']
         # ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=nowTime). \
         #     values("bucket__storeDay", "bucket__region", "endTime")
@@ -1019,7 +1036,7 @@ class CloudStorageView(View):
                     Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                                desc=content, payType=pay_type, payTime=nowTime,
                                                price=price, currency=currency, addTime=nowTime, updTime=nowTime,
-                                               endTime=(nowTime + int(day) * 3600 * 24), pay_url=approval_url,
+                                               pay_url=approval_url, isSelectDiscounts=is_select_discount,
                                                commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
                     return response.json(0, {"redirectUrl": approval_url, "orderID": orderID})
             return response.json(10, 'generate_order_false')
@@ -1049,7 +1066,7 @@ class CloudStorageView(View):
                     Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                                desc=content, payType=pay_type, payTime=nowTime,
                                                price=price, currency=currency, addTime=nowTime, updTime=nowTime,
-                                               endTime=(nowTime + int(day) * 3600 * 24), pay_url=redirectUrl,
+                                               pay_url=redirectUrl, isSelectDiscounts=is_select_discount,
                                                commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
                     return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
                                                           'result': {"redirectUrl": redirectUrl, "orderID": orderID},
@@ -1076,7 +1093,7 @@ class CloudStorageView(View):
             Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                        desc=content, payType=pay_type, payTime=nowTime,
                                        price=price, currency=currency, addTime=nowTime, updTime=nowTime,
-                                       endTime=(nowTime + int(day) * 3600 * 24), pay_url=notify_url,
+                                       pay_url=notify_url, isSelectDiscounts=is_select_discount,
                                        commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
             return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
                                                   'result': response,
@@ -1128,7 +1145,7 @@ class CloudStorageView(View):
         Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                    desc=content, payType=pay_type, payTime=nowTime,
                                    price=price, currency=currency, addTime=nowTime, updTime=nowTime,
-                                   endTime=(nowTime + int(day) * 3600 * 24), pay_url="体验版",
+                                   pay_url="体验版",
                                    commodity_code=commodity_code, commodity_type=commodity_type,
                                    rank_id=rank)
 
@@ -1204,23 +1221,43 @@ class CloudStorageView(View):
         return response.json(0,'重置云存体验成功')
 
 
+    def deleteVodList(self, request_dict, response):
+        uid = request_dict.get('uid',None)
+        vod_id_list = json.loads(request_dict.get('vod_id_list', None))
+        is_del_all = request_dict.get('is_del_all',0)
+        try:
+            if is_del_all == 1:
+                VodHlsModel.objects.filter(uid=uid).delete()
+            else:
+                if type(vod_id_list).__name__ != 'list':
+                    return response.json(424, 'vod_id_list格式错误')
+                VodHlsModel.objects.filter(id__in=vod_id_list).delete()
+        except Exception as e:
+            return response.json(424, repr(e))
+        else:
+            return response.json(0, '删除成功.')
+
+
+
+
+
 def deleteVodHls(request):
-    UID = 'DSXG7481JVA2JM94111A'
-    channel = 1
-    ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel). \
-        values("bucket_id", "endTime", "bucket__storeDay")
-    nowTime = int(time.time())
-    if ubqs.exists():
-        ubqs_count = ubqs.count()
-        ubq = ubqs[ubqs_count - 1, ubqs_count]
-        new_starTime = ubq['endTime'] + 1
-        print(new_starTime)
-        exit()
-
-        # ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
-        #                                    endTime=new_starTime + addTime)
-        # uid_bucket_id = ub_cqs.id
-    exit()
+    # UID = 'DSXG7481JVA2JM94111A'
+    # channel = 1
+    # ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel). \
+    #     values("bucket_id", "endTime", "bucket__storeDay")
+    # nowTime = int(time.time())
+    # if ubqs.exists():
+    #     ubqs_count = ubqs.count()
+    #     ubq = ubqs[ubqs_count - 1, ubqs_count]
+    #     new_starTime = ubq['endTime'] + 1
+    #     print(new_starTime)
+    #     exit()
+    #
+    #     # ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
+    #     #                                    endTime=new_starTime + addTime)
+    #     # uid_bucket_id = ub_cqs.id
+    # exit()
 
     response = ResponseObject()
     i = int(request.GET.get('i', 5))

+ 62 - 0
Controller/CloudTest.py

@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+"""
+@Time : 2020/12/16 8:44
+@Auth : Locky
+@File :CloudTest.py
+@IDE :PyCharm
+"""
+from django.views.generic.base import View
+
+from Model.models import Device_Info
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+
+
+class cloudTestView(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        response = ResponseObject()
+        # if operation == 'deviceTransfer':
+        #     return self.deviceTransfer(request_dict, response)
+        if operation is None:
+            return response.json(444, 'error path')
+        else:
+            token = request_dict.get('token', None)
+            # 设备主键uid
+            tko = TokenObject(token)
+            response.lang = tko.lang
+            if tko.code != 0:
+                return response.json(tko.code)
+            userID = tko.userID
+            if operation == 'deviceTransfer':
+                return self.deviceTransfer(request_dict, response)
+
+    def deviceTransfer(self, request_dict, response):
+        # 设备转移
+        userID = request_dict.get("userID", None)
+        oldUID = request_dict.get('oldUID', None)
+        newUID = request_dict.get('newUID', None)
+
+        # 查询设备是否存在且支持云存功能
+        oldUIDdevice_qs = Device_Info.objects.filter(userID_id=userID, UID=oldUID, isVod=1, isExist=1)
+        newUIDdevice_qs = Device_Info.objects.filter(userID_id=userID, UID=newUID, isVod=1, isExist=1)
+        try:
+            if oldUIDdevice_qs[0] and newUIDdevice_qs[0]:
+                # 更新UID
+                oldUIDdevice_qs.update(UID=newUID)
+        except Exception as e:
+            print('更新失败')
+            return response.json(500, repr(e))
+        else:
+            return response.json(0)
+

+ 2 - 2
Controller/OrderContrller.py

@@ -104,7 +104,7 @@ class OrderView(View):
         count = omqs.count()
         order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price", "currency",
                                                               "addTime",
-                                                              "updTime", "endTime", "paypal", "rank__day", "payType",
+                                                              "updTime", "paypal", "rank__day", "payType",
                                                               "rank__price", "status",
                                                               "rank__content", "rank__title", "rank__currency",
                                                               "rank_id")
@@ -159,7 +159,7 @@ class OrderView(View):
                 return response.json(0, [])
             count = omqs.count()
             order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price",
-                                                                  "currency", "addTime", "updTime", "endTime", "paypal",
+                                                                  "currency", "addTime", "updTime", "paypal",
                                                                   "payType",
                                                                   "rank__day",
                                                                   "rank__price", "status",

+ 13 - 7
Model/models.py

@@ -414,14 +414,18 @@ class VodBucketModel(models.Model):
 class Store_Meal(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
     title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
-    currency = models.CharField(blank=True, default='USD', max_length=32, verbose_name=u'货币')
+    currency = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'货币符号')
     price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
     virtual_price = models.CharField(blank=True, max_length=32, verbose_name=u'虚拟价格')
-    day = models.IntegerField(default=0, blank=True, verbose_name=u'套餐天数')
+    is_discounts = models.SmallIntegerField(default=0, verbose_name=u'该套餐是否有优惠 [0=否,1是]')   # 0没有;1有
+    discount_price = models.CharField(blank=True, max_length=32, verbose_name=u'第二年优惠价格')
+    discount_content = models.CharField(blank=True, max_length=320, verbose_name=u'优惠信息描述')
+    day = models.IntegerField(default=0, blank=True, verbose_name=u'云存录像保存天数(循环)')   # 7,30,180,360
+    expire = models.IntegerField(default=0, blank=True, verbose_name=u'有效期') #单位月
     content = models.TextField(blank=True, null=True, verbose_name=u'描述')
     add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
     # type = models.SmallIntegerField(default=0, verbose_name='付款类型')  # 0是paypal,1为支付宝
-    pay_type = models.ManyToManyField(to='pay_type', verbose_name='付款类型', db_table='store_meal_pay')
+    pay_type = models.ManyToManyField(to='Pay_Type', verbose_name='付款类型', db_table='store_meal_pay')
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
     bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE,
                                default=1, verbose_name='存储空间')
@@ -536,10 +540,11 @@ class Order_Model(models.Model):
     channel = models.SmallIntegerField(default=0, verbose_name=u'通道数')
     desc = models.CharField(max_length=50, default='', verbose_name='商品描述')
     price = models.CharField(default='', max_length=16, verbose_name='价格')
-    currency = models.CharField(blank=True, default='USD', max_length=32, verbose_name=u'货币')
+    currency = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'货币')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
-    endTime = models.IntegerField(verbose_name='结束时间', default=0)
+    # endTime = models.IntegerField(verbose_name='结束时间', default=0)
+    isSelectDiscounts = models.SmallIntegerField(default=0, verbose_name=u'用户是否选择了第二年优惠 [0=否,1是]')
     status = models.SmallIntegerField(default=0, verbose_name='付款状态')  # 0:待支付,1:成功,2:取消,3:已退款
     payType = models.SmallIntegerField(default=0, verbose_name='付款类型0:paypal,1:alipay')
     payTime = models.IntegerField(verbose_name='支付成功时间', default=0)
@@ -567,7 +572,7 @@ class VodHlsModel(models.Model):
     uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     time = models.IntegerField(verbose_name='播放列表名字时间戳', default=0, db_index=True)
-    endTime = models.IntegerField(verbose_name='删除时间', default=0)
+    endTime = models.IntegerField(verbose_name='云存储删除时间(周期)', default=0)
     sec = models.IntegerField(verbose_name='秒数', default=0)
     bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, default=1,
                                verbose_name='存储空间')
@@ -629,7 +634,8 @@ class UID_Bucket(models.Model):
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, verbose_name='存储空间')
     status = models.SmallIntegerField(default=0, verbose_name='状态[0:开启,1:关闭]')
-    endTime = models.IntegerField(verbose_name='结束时间', default=0)
+    endTime = models.IntegerField(verbose_name='套餐结束时间', default=0)
+    is_use = models.IntegerField(verbose_name='是否使用中[0:未使用,1:使用中]', default=0)
 
     class Meta:
         db_table = 'vod_uid_bucket'

+ 58 - 0
Service/CommonService.py

@@ -266,3 +266,61 @@ class CommonService:
                 content = RandomStr(1, False)+str(content)+RandomStr(1, False)
                 content = base64.b64encode(str(content).encode("utf-8")).decode('utf8')
         return content
+
+    #把格式化时间转换成时间戳
+    @staticmethod
+    def str_to_timestamp(str_time=None, format='%Y-%m-%d %H:%M:%S'):
+        if str_time:
+            time_tuple = time.strptime(str_time, format)  # 把格式化好的时间转换成元祖
+            result = time.mktime(time_tuple)  # 把时间元祖转换成时间戳
+            return int(result)
+        return int(time.time())
+
+
+
+
+    # 把时间戳转换成格式化
+    @staticmethod
+    def timestamp_to_str(timestamp=None, format='%Y-%m-%d %H:%M:%S'):
+        if timestamp:
+            time_tuple = time.localtime(timestamp)  # 把时间戳转换成时间元祖
+            result = time.strftime(format, time_tuple)  # 把时间元祖转换成格式化好的时间
+            return result
+        else:
+            return time.strptime(format)
+
+
+    #计算N个月后的时间戳
+    @staticmethod
+    def calcMonthLater(addMonth, unix_timestamp=None):
+        if unix_timestamp:
+            now_year = time.localtime(unix_timestamp).tm_year
+            now_month = time.localtime(unix_timestamp).tm_mon
+            now_day = time.localtime(unix_timestamp).tm_mday
+            now_hour = time.localtime(unix_timestamp).tm_hour
+            now_min = time.localtime(unix_timestamp).tm_min
+            now_second = time.localtime(unix_timestamp).tm_sec
+        else:
+            now_year = datetime.datetime.now().year
+            now_month = datetime.datetime.now().month
+            now_day = datetime.datetime.now().day
+            now_hour = datetime.datetime.now().hour
+            now_min = datetime.datetime.now().minute
+            now_second = datetime.datetime.now().second
+        for add in range(addMonth):
+            if now_month == 12:
+                now_year += 1
+                now_month = 1
+            else:
+                now_month += 1
+
+        for is_format in range(4):
+            try:
+                date_format = '{now_year}-{now_month}-{now_day} {now_hour}:{now_min}:{now_second}' \
+                    .format(now_year=now_year,now_month=now_month,now_day=now_day,now_hour=now_hour,
+                            now_min=now_min,now_second=now_second)
+                timestamps = CommonService.str_to_timestamp(date_format)
+            except Exception as e:
+                if str(e) == 'day is out of range for month':
+                    now_day = now_day - 1
+        return timestamps