浏览代码

Merge branch 'dev' into zjz

zjz 4 年之前
父节点
当前提交
490ced6e47

+ 15 - 12
Controller/CloudStorage.py

@@ -478,7 +478,7 @@ class CloudStorageView(View):
                                                                                             'vodPrimaryMaster')
         if not dv_qs.exists():
             return response.json(12)
-        if dv_qs[0]['vodPrimaryUserID'] != '' and dv_qs[0]['vodPrimaryUserID'] != userID:
+        if dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(10034)
         now_time = int(time.time())
         bv_qs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time).order_by('addTime')
@@ -489,6 +489,9 @@ class CloudStorageView(View):
             values("id", "time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
         vod_play_list = []
 
+        if not vh_qs.exists():
+            return response.json(0, vod_play_list)
+
         aws_access_key_id = 'AKIA2E67UIMD45Y3HL53'
         aws_secret_access_key = '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'
         session = Session(
@@ -633,8 +636,9 @@ class CloudStorageView(View):
         channel = request_dict.get('channel', None)
         if not uid or not status or not channel:
             return response.json(444, 'uid,status,channel')
-        dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False)
-        if not dvqs.exists():
+        dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
+            .values('vodPrimaryUserID')
+        if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(12)
         ubqs = UID_Bucket.objects.filter(channel=channel, uid=uid).order_by('addTime')
         if not ubqs.exists():
@@ -906,8 +910,8 @@ class CloudStorageView(View):
             if not orderID:
                 red_url = "{SERVER_DOMAIN}web/paid2/fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
                 return HttpResponseRedirect(red_url)
-            else:
-                order_qs.update(status=10)
+            # else:
+            #     order_qs.update(status=9)
             paypalrestsdk.configure(PAYPAL_CRD)
             # ID of the payment. This ID is provided when creating payment.
             payment = paypalrestsdk.Payment.find(paymentId)
@@ -964,6 +968,7 @@ class CloudStorageView(View):
             red_url = "{SERVER_DOMAIN}web/paid2/success.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
             return HttpResponseRedirect(red_url)
         except Exception as e:
+            print(repr(e))
             if order_qs:
                 order_qs.update(status=10)
 
@@ -1096,8 +1101,8 @@ class CloudStorageView(View):
         if pay_type == 1:
             call_sub_url = "{SERVER_DOMAIN}cloudstorage/dopaypalcallback?orderID={orderID}". \
                 format(SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
-            # call_sub_url = "http://192.168.136.40:8077/cloudstorage/payExecute?orderID={orderID}".format(
-            #     SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
+            #call_sub_url = "http://binbin.uicp.vip/cloudstorage/dopaypalcallback?orderID={orderID}".format(
+                 #SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
             call_clc_url = "{SERVER_DOMAIN}web/paid2/fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
             paypalrestsdk.configure(PAYPAL_CRD)
             payment = paypalrestsdk.Payment({
@@ -1105,8 +1110,6 @@ class CloudStorageView(View):
                 "payer": {"payment_method": "paypal"},
                 "redirect_urls": {"return_url": call_sub_url, "cancel_url": call_clc_url},
                 "transactions": [{
-                    "item_list": {"items": [
-                        {"name": "Cloud video", "sku": "1", "price": price, "currency": "USD", "quantity": 1}]},
                     "amount": {"total": price, "currency": currency},
                     "description": content}]})
             if payment.create():
@@ -1179,14 +1182,14 @@ class CloudStorageView(View):
             # 获取参数
             response = ResponseObject()
 
-            price = float(price) * 100
-            parameter_dict = pay.get_parameter(orderID, content, price, ip, notify_url)
+            parameter_dict = pay.get_parameter(orderID, content, float(price) * 100, ip, notify_url)
             print('parameter_dict', parameter_dict)
             # parameter_dict 参数中获取MWEB_URL 调转页面在路径后面添加redirect_url
             # 统一调用接口
-            response = pay.re_finall()
+            response = pay.re_finall(orderid=orderID)
             if not response:
                 return response.json(10, '生成订单错误.')
+
             # 回调函数
             Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                        desc=content, payType=pay_type, payTime=nowTime,

+ 32 - 18
Controller/CloudTest.py

@@ -7,12 +7,12 @@
 """
 import time
 from django.db import transaction
-from django.db.models import Q
 from django.views.generic.base import View
 
-from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModel
-from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
+from Service.ModelService import ModelService
+from Object.ResponseObject import ResponseObject
+from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModel
 
 
 class cloudTestView(View):
@@ -49,34 +49,39 @@ class cloudTestView(View):
     def deviceTransfer(self, request_dict, response):
         # 设备转移
         oldUserID = request_dict.get("oldUserID", None)
-        loginName = request_dict.get("username", None)
+        username = request_dict.get("username", None)
         uid = request_dict.get('uid', None)
 
         try:
             # 查询该userID下是否存在此设备
-            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=oldUserID, UID=uid, isExist=1)
+            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=oldUserID, UID=uid, isExist=1).values('isShare','vodPrimaryUserID')
             if not old_deviceInfo_qs.exists():
                 return response.json(10008)
-            # 登录方式可能为用户名,手机号或邮箱登录
-            deviceUser_qs = Device_User.objects.filter(
-                Q(username=loginName) | Q(phone=loginName) | Q(userEmail=loginName)).values('userID')
-            newUserID = deviceUser_qs[0]['userID']
             # 判断新用户的userID是否跟旧用户的一样
+            newUserID = ModelService.get_userID_byname(username)
             if newUserID == oldUserID:
                 return response.json(10009)
+            # 分享的设备不能转移
+            isShare = old_deviceInfo_qs[0]['isShare']
+            if isShare:
+                return response.json(10015)
+            # 旧用户是设备主用户才能转移
+            vodPrimaryUserID = old_deviceInfo_qs[0]['vodPrimaryUserID']
+            if vodPrimaryUserID != '' and vodPrimaryUserID != oldUserID:
+                return response.json(10037)
             # 判断新用户是否已有此设备UID
             new_deviceInfo_qs = Device_Info.objects.filter(userID_id=newUserID, UID=uid, isExist=1)
             if new_deviceInfo_qs:
                 return response.json(10009)
-            # 分享的设备不能转移
-            isShare = Device_Info.objects.get(userID_id=oldUserID, UID=uid).isShare
-            if isShare:
-                return response.json(10015)
-            # 获取旧设备的username
-            oldUserName = Device_User.objects.get(userID=oldUserID).username
+
+            # 获取新设备的username
+            newUserName = Device_User.objects.get(userID=newUserID).username
+            vodPrimaryUserID = newUserID
+            vodPrimaryMaster = newUserName
+
             with transaction.atomic():
                 # 更新设备信息
-                old_deviceInfo_qs.update(userID=newUserID, vodPrimaryUserID=newUserID, vodPrimaryMaster=oldUserName)
+                old_deviceInfo_qs.update(userID=newUserID, vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
                 VodHlsModel.objects.filter(uid=uid).delete()
         except Exception as e:
             # print(e)
@@ -92,11 +97,18 @@ class cloudTestView(View):
 
         try:
             # 查询两个UID是否在同一账号下
-            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=old_uid).values('isExist')
+            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=old_uid).values('isExist','vodPrimaryUserID')
             new_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=new_uid).values('isExist')
             if not (old_deviceInfo_qs.exists() and new_deviceInfo_qs.exists()):
                 return response.json(10010)
 
+            # 不是主用户无法转移
+            vodPrimaryUserID = old_deviceInfo_qs[0]['vodPrimaryUserID']
+            if vodPrimaryUserID != '' and vodPrimaryUserID != userID:
+                return response.json(10038)
+            vodPrimaryUserID = userID
+            vodPrimaryMaster = ModelService.get_user_name(userID)
+
             new_isExist = new_deviceInfo_qs[0]['isExist']
             if not new_isExist:
                 return response.json(10011)
@@ -116,12 +128,14 @@ class cloudTestView(View):
                 if payType == 10 or payType == 11:
                     return response.json(10012)
 
-            # # 查询转入设备正在使用的套餐
+            # 查询转入设备正在使用的套餐
             new_using_uid_bucket = UID_Bucket.objects.filter(uid=new_uid, endTime__gte=nowTime)
             if new_using_uid_bucket.exists():
                 return response.json(10014)
 
             with transaction.atomic():
+                # 更新新设备主用户信息
+                new_deviceInfo_qs.update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
                 # vod_uid_bucket表更新uid
                 old_using_uid_bucket_id = old_using_uid_bucket[0]['id']
                 UID_Bucket.objects.filter(id=old_using_uid_bucket_id).update(uid=new_uid)

+ 371 - 372
Controller/DateController.py

@@ -26,7 +26,6 @@ from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 
 
-
 class DateConView(View):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
@@ -51,382 +50,382 @@ class DateConView(View):
         else:
             return response.json(414)
 
-    def do_date(self, request_dict,response):
+    def do_date(self, request_dict, response):
         h = request_dict.get('h', None)
         day = [
-        {"dayStr": "20200101", "type": "2"},
-        {"dayStr": "20200102", "type": "0"},
-        {"dayStr": "20200103", "type": "0"},
-        {"dayStr": "20200104", "type": "1"},
-        {"dayStr": "20200105", "type": "1"},
-        {"dayStr": "20200106", "type": "0"},
-        {"dayStr": "20200107", "type": "0"},
-        {"dayStr": "20200108", "type": "0"},
-        {"dayStr": "20200109", "type": "0"},
-        {"dayStr": "20200110", "type": "0"},
-        {"dayStr": "20200111", "type": "1"},
-        {"dayStr": "20200112", "type": "1"},
-        {"dayStr": "20200113", "type": "0"},
-        {"dayStr": "20200114", "type": "0"},
-        {"dayStr": "20200115", "type": "0"},
-        {"dayStr": "20200116", "type": "0"},
-        {"dayStr": "20200117", "type": "0"},
-        {"dayStr": "20200118", "type": "1"},
-        {"dayStr": "20200119", "type": "0"},
-        {"dayStr": "20200120", "type": "0"},
-        {"dayStr": "20200121", "type": "0"},
-        {"dayStr": "20200122", "type": "0"},
-        {"dayStr": "20200123", "type": "0"},
-        {"dayStr": "20200124", "type": "2"},
-        {"dayStr": "20200125", "type": "2"},
-        {"dayStr": "20200126", "type": "2"},
-        {"dayStr": "20200127", "type": "2"},
-        {"dayStr": "20200128", "type": "2"},
-        {"dayStr": "20200129", "type": "2"},
-        {"dayStr": "20200130", "type": "2"},
-        {"dayStr": "20200131", "type": "0"},
-        {"dayStr": "20200201", "type": "0"},
-        {"dayStr": "20200202", "type": "1"},
-        {"dayStr": "20200203", "type": "0"},
-        {"dayStr": "20200204", "type": "0"},
-        {"dayStr": "20200205", "type": "0"},
-        {"dayStr": "20200206", "type": "0"},
-        {"dayStr": "20200207", "type": "0"},
-        {"dayStr": "20200208", "type": "1"},
-        {"dayStr": "20200209", "type": "1"},
-        {"dayStr": "20200210", "type": "0"},
-        {"dayStr": "20200211", "type": "0"},
-        {"dayStr": "20200212", "type": "0"},
-        {"dayStr": "20200213", "type": "0"},
-        {"dayStr": "20200214", "type": "0"},
-        {"dayStr": "20200215", "type": "1"},
-        {"dayStr": "20200216", "type": "1"},
-        {"dayStr": "20200217", "type": "0"},
-        {"dayStr": "20200218", "type": "0"},
-        {"dayStr": "20200219", "type": "0"},
-        {"dayStr": "20200220", "type": "0"},
-        {"dayStr": "20200221", "type": "0"},
-        {"dayStr": "20200222", "type": "1"},
-        {"dayStr": "20200223", "type": "1"},
-        {"dayStr": "20200224", "type": "0"},
-        {"dayStr": "20200225", "type": "0"},
-        {"dayStr": "20200226", "type": "0"},
-        {"dayStr": "20200227", "type": "0"},
-        {"dayStr": "20200228", "type": "0"},
-        {"dayStr": "20200229", "type": "1"},
-        {"dayStr": "20200301", "type": "1"},
-        {"dayStr": "20200302", "type": "0"},
-        {"dayStr": "20200303", "type": "0"},
-        {"dayStr": "20200304", "type": "0"},
-        {"dayStr": "20200305", "type": "0"},
-        {"dayStr": "20200306", "type": "0"},
-        {"dayStr": "20200307", "type": "1"},
-        {"dayStr": "20200308", "type": "1"},
-        {"dayStr": "20200309", "type": "0"},
-        {"dayStr": "20200310", "type": "0"},
-        {"dayStr": "20200311", "type": "0"},
-        {"dayStr": "20200312", "type": "0"},
-        {"dayStr": "20200313", "type": "0"},
-        {"dayStr": "20200314", "type": "1"},
-        {"dayStr": "20200315", "type": "1"},
-        {"dayStr": "20200316", "type": "0"},
-        {"dayStr": "20200317", "type": "0"},
-        {"dayStr": "20200318", "type": "0"},
-        {"dayStr": "20200319", "type": "0"},
-        {"dayStr": "20200320", "type": "0"},
-        {"dayStr": "20200321", "type": "1"},
-        {"dayStr": "20200322", "type": "1"},
-        {"dayStr": "20200323", "type": "0"},
-        {"dayStr": "20200324", "type": "0"},
-        {"dayStr": "20200325", "type": "0"},
-        {"dayStr": "20200326", "type": "0"},
-        {"dayStr": "20200327", "type": "0"},
-        {"dayStr": "20200328", "type": "1"},
-        {"dayStr": "20200329", "type": "1"},
-        {"dayStr": "20200330", "type": "0"},
-        {"dayStr": "20200331", "type": "0"},
-        {"dayStr": "20200401", "type": "0"},
-        {"dayStr": "20200402", "type": "0"},
-        {"dayStr": "20200403", "type": "0"},
-        {"dayStr": "20200404", "type": "2"},
-        {"dayStr": "20200405", "type": "2"},
-        {"dayStr": "20200406", "type": "2"},
-        {"dayStr": "20200407", "type": "0"},
-        {"dayStr": "20200408", "type": "0"},
-        {"dayStr": "20200409", "type": "0"},
-        {"dayStr": "20200410", "type": "0"},
-        {"dayStr": "20200411", "type": "1"},
-        {"dayStr": "20200412", "type": "1"},
-        {"dayStr": "20200413", "type": "0"},
-        {"dayStr": "20200414", "type": "0"},
-        {"dayStr": "20200415", "type": "0"},
-        {"dayStr": "20200416", "type": "0"},
-        {"dayStr": "20200417", "type": "0"},
-        {"dayStr": "20200418", "type": "1"},
-        {"dayStr": "20200419", "type": "1"},
-        {"dayStr": "20200420", "type": "0"},
-        {"dayStr": "20200421", "type": "0"},
-        {"dayStr": "20200422", "type": "0"},
-        {"dayStr": "20200423", "type": "0"},
-        {"dayStr": "20200424", "type": "0"},
-        {"dayStr": "20200425", "type": "1"},
-        {"dayStr": "20200426", "type": "0"},
-        {"dayStr": "20200427", "type": "0"},
-        {"dayStr": "20200428", "type": "0"},
-        {"dayStr": "20200429", "type": "0"},
-        {"dayStr": "20200430", "type": "0"},
-        {"dayStr": "20200501", "type": "2"},
-        {"dayStr": "20200502", "type": "2"},
-        {"dayStr": "20200503", "type": "2"},
-        {"dayStr": "20200504", "type": "2"},
-        {"dayStr": "20200505", "type": "2"},
-        {"dayStr": "20200506", "type": "0"},
-        {"dayStr": "20200507", "type": "0"},
-        {"dayStr": "20200508", "type": "0"},
-        {"dayStr": "20200509", "type": "0"},
-        {"dayStr": "20200510", "type": "1"},
-        {"dayStr": "20200511", "type": "0"},
-        {"dayStr": "20200512", "type": "0"},
-        {"dayStr": "20200513", "type": "0"},
-        {"dayStr": "20200514", "type": "0"},
-        {"dayStr": "20200515", "type": "0"},
-        {"dayStr": "20200516", "type": "1"},
-        {"dayStr": "20200517", "type": "1"},
-        {"dayStr": "20200518", "type": "0"},
-        {"dayStr": "20200519", "type": "0"},
-        {"dayStr": "20200520", "type": "0"},
-        {"dayStr": "20200521", "type": "0"},
-        {"dayStr": "20200522", "type": "0"},
-        {"dayStr": "20200523", "type": "1"},
-        {"dayStr": "20200524", "type": "1"},
-        {"dayStr": "20200525", "type": "0"},
-        {"dayStr": "20200526", "type": "0"},
-        {"dayStr": "20200527", "type": "0"},
-        {"dayStr": "20200528", "type": "0"},
-        {"dayStr": "20200529", "type": "0"},
-        {"dayStr": "20200530", "type": "1"},
-        {"dayStr": "20200531", "type": "1"},
-        {"dayStr": "20200601", "type": "0"},
-        {"dayStr": "20200602", "type": "0"},
-        {"dayStr": "20200603", "type": "0"},
-        {"dayStr": "20200604", "type": "0"},
-        {"dayStr": "20200605", "type": "0"},
-        {"dayStr": "20200606", "type": "1"},
-        {"dayStr": "20200607", "type": "1"},
-        {"dayStr": "20200608", "type": "0"},
-        {"dayStr": "20200609", "type": "0"},
-        {"dayStr": "20200610", "type": "0"},
-        {"dayStr": "20200611", "type": "0"},
-        {"dayStr": "20200612", "type": "0"},
-        {"dayStr": "20200613", "type": "1"},
-        {"dayStr": "20200614", "type": "1"},
-        {"dayStr": "20200615", "type": "0"},
-        {"dayStr": "20200616", "type": "0"},
-        {"dayStr": "20200617", "type": "0"},
-        {"dayStr": "20200618", "type": "0"},
-        {"dayStr": "20200619", "type": "0"},
-        {"dayStr": "20200620", "type": "1"},
-        {"dayStr": "20200621", "type": "1"},
-        {"dayStr": "20200622", "type": "0"},
-        {"dayStr": "20200623", "type": "0"},
-        {"dayStr": "20200624", "type": "0"},
-        {"dayStr": "20200625", "type": "2"},
-        {"dayStr": "20200626", "type": "2"},
-        {"dayStr": "20200627", "type": "2"},
-        {"dayStr": "20200628", "type": "0"},
-        {"dayStr": "20200629", "type": "0"},
-        {"dayStr": "20200630", "type": "0"},
-        {"dayStr": "20200701", "type": "0"},
-        {"dayStr": "20200702", "type": "0"},
-        {"dayStr": "20200703", "type": "0"},
-        {"dayStr": "20200704", "type": "1"},
-        {"dayStr": "20200705", "type": "1"},
-        {"dayStr": "20200706", "type": "0"},
-        {"dayStr": "20200707", "type": "0"},
-        {"dayStr": "20200708", "type": "0"},
-        {"dayStr": "20200709", "type": "0"},
-        {"dayStr": "20200710", "type": "0"},
-        {"dayStr": "20200711", "type": "1"},
-        {"dayStr": "20200712", "type": "1"},
-        {"dayStr": "20200713", "type": "0"},
-        {"dayStr": "20200714", "type": "0"},
-        {"dayStr": "20200715", "type": "0"},
-        {"dayStr": "20200716", "type": "0"},
-        {"dayStr": "20200717", "type": "0"},
-        {"dayStr": "20200718", "type": "1"},
-        {"dayStr": "20200719", "type": "1"},
-        {"dayStr": "20200720", "type": "0"},
-        {"dayStr": "20200721", "type": "0"},
-        {"dayStr": "20200722", "type": "0"},
-        {"dayStr": "20200723", "type": "0"},
-        {"dayStr": "20200724", "type": "0"},
-        {"dayStr": "20200725", "type": "1"},
-        {"dayStr": "20200726", "type": "1"},
-        {"dayStr": "20200727", "type": "0"},
-        {"dayStr": "20200728", "type": "0"},
-        {"dayStr": "20200729", "type": "0"},
-        {"dayStr": "20200730", "type": "0"},
-        {"dayStr": "20200731", "type": "0"},
-        {"dayStr": "20200801", "type": "1"},
-        {"dayStr": "20200802", "type": "1"},
-        {"dayStr": "20200803", "type": "0"},
-        {"dayStr": "20200804", "type": "0"},
-        {"dayStr": "20200805", "type": "0"},
-        {"dayStr": "20200806", "type": "0"},
-        {"dayStr": "20200807", "type": "0"},
-        {"dayStr": "20200808", "type": "1"},
-        {"dayStr": "20200809", "type": "1"},
-        {"dayStr": "20200810", "type": "0"},
-        {"dayStr": "20200811", "type": "0"},
-        {"dayStr": "20200812", "type": "0"},
-        {"dayStr": "20200813", "type": "0"},
-        {"dayStr": "20200814", "type": "0"},
-        {"dayStr": "20200815", "type": "1"},
-        {"dayStr": "20200816", "type": "1"},
-        {"dayStr": "20200817", "type": "0"},
-        {"dayStr": "20200818", "type": "0"},
-        {"dayStr": "20200819", "type": "0"},
-        {"dayStr": "20200820", "type": "0"},
-        {"dayStr": "20200821", "type": "0"},
-        {"dayStr": "20200822", "type": "1"},
-        {"dayStr": "20200823", "type": "1"},
-        {"dayStr": "20200824", "type": "0"},
-        {"dayStr": "20200825", "type": "0"},
-        {"dayStr": "20200826", "type": "0"},
-        {"dayStr": "20200827", "type": "0"},
-        {"dayStr": "20200828", "type": "0"},
-        {"dayStr": "20200829", "type": "1"},
-        {"dayStr": "20200830", "type": "1"},
-        {"dayStr": "20200831", "type": "0"},
-        {"dayStr": "20200901", "type": "0"},
-        {"dayStr": "20200902", "type": "0"},
-        {"dayStr": "20200903", "type": "0"},
-        {"dayStr": "20200904", "type": "0"},
-        {"dayStr": "20200905", "type": "1"},
-        {"dayStr": "20200906", "type": "1"},
-        {"dayStr": "20200907", "type": "0"},
-        {"dayStr": "20200908", "type": "0"},
-        {"dayStr": "20200909", "type": "0"},
-        {"dayStr": "20200910", "type": "0"},
-        {"dayStr": "20200911", "type": "0"},
-        {"dayStr": "20200912", "type": "1"},
-        {"dayStr": "20200913", "type": "1"},
-        {"dayStr": "20200914", "type": "0"},
-        {"dayStr": "20200915", "type": "0"},
-        {"dayStr": "20200916", "type": "0"},
-        {"dayStr": "20200917", "type": "0"},
-        {"dayStr": "20200918", "type": "0"},
-        {"dayStr": "20200919", "type": "1"},
-        {"dayStr": "20200920", "type": "1"},
-        {"dayStr": "20200921", "type": "0"},
-        {"dayStr": "20200922", "type": "0"},
-        {"dayStr": "20200923", "type": "0"},
-        {"dayStr": "20200924", "type": "0"},
-        {"dayStr": "20200925", "type": "0"},
-        {"dayStr": "20200926", "type": "1"},
-        {"dayStr": "20200927", "type": "0"},
-        {"dayStr": "20200928", "type": "0"},
-        {"dayStr": "20200929", "type": "0"},
-        {"dayStr": "20200930", "type": "0"},
-        {"dayStr": "20201001", "type": "2"},
-        {"dayStr": "20201002", "type": "2"},
-        {"dayStr": "20201003", "type": "2"},
-        {"dayStr": "20201004", "type": "2"},
-        {"dayStr": "20201005", "type": "2"},
-        {"dayStr": "20201006", "type": "2"},
-        {"dayStr": "20201007", "type": "2"},
-        {"dayStr": "20201008", "type": "2"},
-        {"dayStr": "20201009", "type": "0"},
-        {"dayStr": "20201010", "type": "0"},
-        {"dayStr": "20201011", "type": "1"},
-        {"dayStr": "20201012", "type": "0"},
-        {"dayStr": "20201013", "type": "0"},
-        {"dayStr": "20201014", "type": "0"},
-        {"dayStr": "20201015", "type": "0"},
-        {"dayStr": "20201016", "type": "0"},
-        {"dayStr": "20201017", "type": "1"},
-        {"dayStr": "20201018", "type": "1"},
-        {"dayStr": "20201019", "type": "0"},
-        {"dayStr": "20201020", "type": "0"},
-        {"dayStr": "20201021", "type": "0"},
-        {"dayStr": "20201022", "type": "0"},
-        {"dayStr": "20201023", "type": "0"},
-        {"dayStr": "20201024", "type": "1"},
-        {"dayStr": "20201025", "type": "1"},
-        {"dayStr": "20201026", "type": "0"},
-        {"dayStr": "20201027", "type": "0"},
-        {"dayStr": "20201028", "type": "0"},
-        {"dayStr": "20201029", "type": "0"},
-        {"dayStr": "20201030", "type": "0"},
-        {"dayStr": "20201031", "type": "1"},
-        {"dayStr": "20201101", "type": "1"},
-        {"dayStr": "20201102", "type": "0"},
-        {"dayStr": "20201103", "type": "0"},
-        {"dayStr": "20201104", "type": "0"},
-        {"dayStr": "20201105", "type": "0"},
-        {"dayStr": "20201106", "type": "0"},
-        {"dayStr": "20201107", "type": "1"},
-        {"dayStr": "20201108", "type": "1"},
-        {"dayStr": "20201109", "type": "0"},
-        {"dayStr": "20201110", "type": "0"},
-        {"dayStr": "20201111", "type": "0"},
-        {"dayStr": "20201112", "type": "0"},
-        {"dayStr": "20201113", "type": "0"},
-        {"dayStr": "20201114", "type": "1"},
-        {"dayStr": "20201115", "type": "1"},
-        {"dayStr": "20201116", "type": "0"},
-        {"dayStr": "20201117", "type": "0"},
-        {"dayStr": "20201118", "type": "0"},
-        {"dayStr": "20201119", "type": "0"},
-        {"dayStr": "20201120", "type": "0"},
-        {"dayStr": "20201121", "type": "1"},
-        {"dayStr": "20201122", "type": "1"},
-        {"dayStr": "20201123", "type": "0"},
-        {"dayStr": "20201124", "type": "0"},
-        {"dayStr": "20201125", "type": "0"},
-        {"dayStr": "20201126", "type": "0"},
-        {"dayStr": "20201127", "type": "0"},
-        {"dayStr": "20201128", "type": "1"},
-        {"dayStr": "20201129", "type": "1"},
-        {"dayStr": "20201130", "type": "0"},
-        {"dayStr": "20201201", "type": "0"},
-        {"dayStr": "20201202", "type": "0"},
-        {"dayStr": "20201203", "type": "0"},
-        {"dayStr": "20201204", "type": "0"},
-        {"dayStr": "20201205", "type": "1"},
-        {"dayStr": "20201206", "type": "1"},
-        {"dayStr": "20201207", "type": "0"},
-        {"dayStr": "20201208", "type": "0"},
-        {"dayStr": "20201209", "type": "0"},
-        {"dayStr": "20201210", "type": "0"},
-        {"dayStr": "20201211", "type": "0"},
-        {"dayStr": "20201212", "type": "1"},
-        {"dayStr": "20201213", "type": "1"},
-        {"dayStr": "20201214", "type": "0"},
-        {"dayStr": "20201215", "type": "0"},
-        {"dayStr": "20201216", "type": "0"},
-        {"dayStr": "20201217", "type": "0"},
-        {"dayStr": "20201218", "type": "0"},
-        {"dayStr": "20201219", "type": "1"},
-        {"dayStr": "20201220", "type": "1"},
-        {"dayStr": "20201221", "type": "0"},
-        {"dayStr": "20201222", "type": "0"},
-        {"dayStr": "20201223", "type": "0"},
-        {"dayStr": "20201224", "type": "0"},
-        {"dayStr": "20201225", "type": "0"},
-        {"dayStr": "20201226", "type": "1"},
-        {"dayStr": "20201227", "type": "1"},
-        {"dayStr": "20201228", "type": "0"},
-        {"dayStr": "20201229", "type": "0"},
-        {"dayStr": "20201230", "type": "0"},
-        {"dayStr": "20201231", "type": "0"}
+            {"dayStr": "20210101", "type": "2"},
+            {"dayStr": "20210102", "type": "2"},
+            {"dayStr": "20210103", "type": "2"},
+            {"dayStr": "20210104", "type": "0"},
+            {"dayStr": "20210105", "type": "0"},
+            {"dayStr": "20210106", "type": "0"},
+            {"dayStr": "20210107", "type": "0"},
+            {"dayStr": "20210108", "type": "0"},
+            {"dayStr": "20210109", "type": "1"},
+            {"dayStr": "20210110", "type": "1"},
+            {"dayStr": "20210111", "type": "0"},
+            {"dayStr": "20210112", "type": "0"},
+            {"dayStr": "20210113", "type": "0"},
+            {"dayStr": "20210114", "type": "0"},
+            {"dayStr": "20210115", "type": "0"},
+            {"dayStr": "20210116", "type": "1"},
+            {"dayStr": "20210117", "type": "1"},
+            {"dayStr": "20210118", "type": "0"},
+            {"dayStr": "20210119", "type": "0"},
+            {"dayStr": "20210120", "type": "0"},
+            {"dayStr": "20210121", "type": "0"},
+            {"dayStr": "20210122", "type": "0"},
+            {"dayStr": "20210123", "type": "1"},
+            {"dayStr": "20210124", "type": "1"},
+            {"dayStr": "20210125", "type": "0"},
+            {"dayStr": "20210126", "type": "0"},
+            {"dayStr": "20210127", "type": "0"},
+            {"dayStr": "20210128", "type": "0"},
+            {"dayStr": "20210129", "type": "0"},
+            {"dayStr": "20210130", "type": "1"},
+            {"dayStr": "20210131", "type": "1"},
+            {"dayStr": "20210201", "type": "0"},
+            {"dayStr": "20210202", "type": "0"},
+            {"dayStr": "20210203", "type": "0"},
+            {"dayStr": "20210204", "type": "0"},
+            {"dayStr": "20210205", "type": "0"},
+            {"dayStr": "20210206", "type": "1"},
+            {"dayStr": "20210207", "type": "0"},
+            {"dayStr": "20210208", "type": "0"},
+            {"dayStr": "20210209", "type": "0"},
+            {"dayStr": "20210210", "type": "0"},
+            {"dayStr": "20210211", "type": "2"},
+            {"dayStr": "20210212", "type": "2"},
+            {"dayStr": "20210213", "type": "2"},
+            {"dayStr": "20210214", "type": "2"},
+            {"dayStr": "20210215", "type": "2"},
+            {"dayStr": "20210216", "type": "2"},
+            {"dayStr": "20210217", "type": "2"},
+            {"dayStr": "20210218", "type": "0"},
+            {"dayStr": "20210219", "type": "0"},
+            {"dayStr": "20210220", "type": "0"},
+            {"dayStr": "20210221", "type": "1"},
+            {"dayStr": "20210222", "type": "0"},
+            {"dayStr": "20210223", "type": "0"},
+            {"dayStr": "20210224", "type": "0"},
+            {"dayStr": "20210225", "type": "0"},
+            {"dayStr": "20210226", "type": "0"},
+            {"dayStr": "20210227", "type": "1"},
+            {"dayStr": "20210228", "type": "1"},
+            {"dayStr": "20210229", "type": "0"},
+            {"dayStr": "20210301", "type": "0"},
+            {"dayStr": "20210302", "type": "0"},
+            {"dayStr": "20210303", "type": "0"},
+            {"dayStr": "20210304", "type": "0"},
+            {"dayStr": "20210305", "type": "0"},
+            {"dayStr": "20210306", "type": "1"},
+            {"dayStr": "20210307", "type": "1"},
+            {"dayStr": "20210308", "type": "0"},
+            {"dayStr": "20210309", "type": "0"},
+            {"dayStr": "20210310", "type": "0"},
+            {"dayStr": "20210311", "type": "0"},
+            {"dayStr": "20210312", "type": "0"},
+            {"dayStr": "20210313", "type": "1"},
+            {"dayStr": "20210314", "type": "1"},
+            {"dayStr": "20210315", "type": "0"},
+            {"dayStr": "20210316", "type": "0"},
+            {"dayStr": "20210317", "type": "0"},
+            {"dayStr": "20210318", "type": "0"},
+            {"dayStr": "20210319", "type": "0"},
+            {"dayStr": "20210320", "type": "1"},
+            {"dayStr": "20210321", "type": "1"},
+            {"dayStr": "20210322", "type": "0"},
+            {"dayStr": "20210323", "type": "0"},
+            {"dayStr": "20210324", "type": "0"},
+            {"dayStr": "20210325", "type": "0"},
+            {"dayStr": "20210326", "type": "0"},
+            {"dayStr": "20210327", "type": "1"},
+            {"dayStr": "20210328", "type": "1"},
+            {"dayStr": "20210329", "type": "0"},
+            {"dayStr": "20210330", "type": "0"},
+            {"dayStr": "20210331", "type": "0"},
+            {"dayStr": "20210401", "type": "0"},
+            {"dayStr": "20210402", "type": "0"},
+            {"dayStr": "20210403", "type": "2"},
+            {"dayStr": "20210404", "type": "2"},
+            {"dayStr": "20210405", "type": "2"},
+            {"dayStr": "20210406", "type": "0"},
+            {"dayStr": "20210407", "type": "0"},
+            {"dayStr": "20210408", "type": "0"},
+            {"dayStr": "20210409", "type": "0"},
+            {"dayStr": "20210410", "type": "1"},
+            {"dayStr": "20210411", "type": "1"},
+            {"dayStr": "20210412", "type": "0"},
+            {"dayStr": "20210413", "type": "0"},
+            {"dayStr": "20210414", "type": "0"},
+            {"dayStr": "20210415", "type": "0"},
+            {"dayStr": "20210416", "type": "0"},
+            {"dayStr": "20210417", "type": "1"},
+            {"dayStr": "20210418", "type": "1"},
+            {"dayStr": "20210419", "type": "0"},
+            {"dayStr": "20210420", "type": "0"},
+            {"dayStr": "20210421", "type": "0"},
+            {"dayStr": "20210422", "type": "0"},
+            {"dayStr": "20210423", "type": "0"},
+            {"dayStr": "20210424", "type": "1"},
+            {"dayStr": "20210425", "type": "0"},
+            {"dayStr": "20210426", "type": "0"},
+            {"dayStr": "20210427", "type": "0"},
+            {"dayStr": "20210428", "type": "0"},
+            {"dayStr": "20210429", "type": "0"},
+            {"dayStr": "20210430", "type": "0"},
+            {"dayStr": "20210501", "type": "2"},
+            {"dayStr": "20210502", "type": "2"},
+            {"dayStr": "20210503", "type": "2"},
+            {"dayStr": "20210504", "type": "2"},
+            {"dayStr": "20210505", "type": "2"},
+            {"dayStr": "20210506", "type": "0"},
+            {"dayStr": "20210507", "type": "0"},
+            {"dayStr": "20210508", "type": "0"},
+            {"dayStr": "20210509", "type": "1"},
+            {"dayStr": "20210510", "type": "0"},
+            {"dayStr": "20210511", "type": "0"},
+            {"dayStr": "20210512", "type": "0"},
+            {"dayStr": "20210513", "type": "0"},
+            {"dayStr": "20210514", "type": "0"},
+            {"dayStr": "20210515", "type": "1"},
+            {"dayStr": "20210516", "type": "1"},
+            {"dayStr": "20210517", "type": "0"},
+            {"dayStr": "20210518", "type": "0"},
+            {"dayStr": "20210519", "type": "0"},
+            {"dayStr": "20210520", "type": "0"},
+            {"dayStr": "20210521", "type": "0"},
+            {"dayStr": "20210522", "type": "1"},
+            {"dayStr": "20210523", "type": "1"},
+            {"dayStr": "20210524", "type": "0"},
+            {"dayStr": "20210525", "type": "0"},
+            {"dayStr": "20210526", "type": "0"},
+            {"dayStr": "20210527", "type": "0"},
+            {"dayStr": "20210528", "type": "0"},
+            {"dayStr": "20210529", "type": "1"},
+            {"dayStr": "20210530", "type": "1"},
+            {"dayStr": "20210531", "type": "0"},
+            {"dayStr": "20210601", "type": "0"},
+            {"dayStr": "20210602", "type": "0"},
+            {"dayStr": "20210603", "type": "0"},
+            {"dayStr": "20210604", "type": "0"},
+            {"dayStr": "20210605", "type": "1"},
+            {"dayStr": "20210606", "type": "1"},
+            {"dayStr": "20210607", "type": "0"},
+            {"dayStr": "20210608", "type": "0"},
+            {"dayStr": "20210609", "type": "0"},
+            {"dayStr": "20210610", "type": "0"},
+            {"dayStr": "20210611", "type": "0"},
+            {"dayStr": "20210612", "type": "2"},
+            {"dayStr": "20210613", "type": "2"},
+            {"dayStr": "20210614", "type": "2"},
+            {"dayStr": "20210615", "type": "0"},
+            {"dayStr": "20210616", "type": "0"},
+            {"dayStr": "20210617", "type": "0"},
+            {"dayStr": "20210618", "type": "0"},
+            {"dayStr": "20210619", "type": "1"},
+            {"dayStr": "20210620", "type": "1"},
+            {"dayStr": "20210621", "type": "0"},
+            {"dayStr": "20210622", "type": "0"},
+            {"dayStr": "20210623", "type": "0"},
+            {"dayStr": "20210624", "type": "0"},
+            {"dayStr": "20210625", "type": "0"},
+            {"dayStr": "20210626", "type": "1"},
+            {"dayStr": "20210627", "type": "1"},
+            {"dayStr": "20210628", "type": "0"},
+            {"dayStr": "20210629", "type": "0"},
+            {"dayStr": "20210630", "type": "0"},
+            {"dayStr": "20210701", "type": "0"},
+            {"dayStr": "20210702", "type": "0"},
+            {"dayStr": "20210703", "type": "1"},
+            {"dayStr": "20210704", "type": "1"},
+            {"dayStr": "20210705", "type": "0"},
+            {"dayStr": "20210706", "type": "0"},
+            {"dayStr": "20210707", "type": "0"},
+            {"dayStr": "20210708", "type": "0"},
+            {"dayStr": "20210709", "type": "0"},
+            {"dayStr": "20210710", "type": "1"},
+            {"dayStr": "20210711", "type": "1"},
+            {"dayStr": "20210712", "type": "0"},
+            {"dayStr": "20210713", "type": "0"},
+            {"dayStr": "20210714", "type": "0"},
+            {"dayStr": "20210715", "type": "0"},
+            {"dayStr": "20210716", "type": "0"},
+            {"dayStr": "20210717", "type": "1"},
+            {"dayStr": "20210718", "type": "1"},
+            {"dayStr": "20210719", "type": "0"},
+            {"dayStr": "20210720", "type": "0"},
+            {"dayStr": "20210721", "type": "0"},
+            {"dayStr": "20210722", "type": "0"},
+            {"dayStr": "20210723", "type": "0"},
+            {"dayStr": "20210724", "type": "1"},
+            {"dayStr": "20210725", "type": "1"},
+            {"dayStr": "20210726", "type": "0"},
+            {"dayStr": "20210727", "type": "0"},
+            {"dayStr": "20210728", "type": "0"},
+            {"dayStr": "20210729", "type": "0"},
+            {"dayStr": "20210730", "type": "0"},
+            {"dayStr": "20210731", "type": "1"},
+            {"dayStr": "20210801", "type": "1"},
+            {"dayStr": "20210802", "type": "0"},
+            {"dayStr": "20210803", "type": "0"},
+            {"dayStr": "20210804", "type": "0"},
+            {"dayStr": "20210805", "type": "0"},
+            {"dayStr": "20210806", "type": "0"},
+            {"dayStr": "20210807", "type": "1"},
+            {"dayStr": "20210808", "type": "1"},
+            {"dayStr": "20210809", "type": "0"},
+            {"dayStr": "20210810", "type": "0"},
+            {"dayStr": "20210811", "type": "0"},
+            {"dayStr": "20210812", "type": "0"},
+            {"dayStr": "20210813", "type": "0"},
+            {"dayStr": "20210814", "type": "1"},
+            {"dayStr": "20210815", "type": "1"},
+            {"dayStr": "20210816", "type": "0"},
+            {"dayStr": "20210817", "type": "0"},
+            {"dayStr": "20210818", "type": "0"},
+            {"dayStr": "20210819", "type": "0"},
+            {"dayStr": "20210820", "type": "0"},
+            {"dayStr": "20210821", "type": "1"},
+            {"dayStr": "20210822", "type": "1"},
+            {"dayStr": "20210823", "type": "0"},
+            {"dayStr": "20210824", "type": "0"},
+            {"dayStr": "20210825", "type": "0"},
+            {"dayStr": "20210826", "type": "0"},
+            {"dayStr": "20210827", "type": "0"},
+            {"dayStr": "20210828", "type": "1"},
+            {"dayStr": "20210829", "type": "1"},
+            {"dayStr": "20210830", "type": "0"},
+            {"dayStr": "20210831", "type": "0"},
+            {"dayStr": "20210901", "type": "0"},
+            {"dayStr": "20210902", "type": "0"},
+            {"dayStr": "20210903", "type": "0"},
+            {"dayStr": "20210904", "type": "1"},
+            {"dayStr": "20210905", "type": "1"},
+            {"dayStr": "20210906", "type": "0"},
+            {"dayStr": "20210907", "type": "0"},
+            {"dayStr": "20210908", "type": "0"},
+            {"dayStr": "20210909", "type": "0"},
+            {"dayStr": "20210910", "type": "0"},
+            {"dayStr": "20210911", "type": "1"},
+            {"dayStr": "20210912", "type": "1"},
+            {"dayStr": "20210913", "type": "0"},
+            {"dayStr": "20210914", "type": "0"},
+            {"dayStr": "20210915", "type": "0"},
+            {"dayStr": "20210916", "type": "0"},
+            {"dayStr": "20210917", "type": "0"},
+            {"dayStr": "20210918", "type": "0"},
+            {"dayStr": "20210919", "type": "2"},
+            {"dayStr": "20210920", "type": "2"},
+            {"dayStr": "20210921", "type": "2"},
+            {"dayStr": "20210922", "type": "0"},
+            {"dayStr": "20210923", "type": "0"},
+            {"dayStr": "20210924", "type": "0"},
+            {"dayStr": "20210925", "type": "1"},
+            {"dayStr": "20210926", "type": "0"},
+            {"dayStr": "20210927", "type": "0"},
+            {"dayStr": "20210928", "type": "0"},
+            {"dayStr": "20210929", "type": "0"},
+            {"dayStr": "20210930", "type": "0"},
+            {"dayStr": "20211001", "type": "2"},
+            {"dayStr": "20211002", "type": "2"},
+            {"dayStr": "20211003", "type": "2"},
+            {"dayStr": "20211004", "type": "2"},
+            {"dayStr": "20211005", "type": "2"},
+            {"dayStr": "20211006", "type": "2"},
+            {"dayStr": "20211007", "type": "2"},
+            {"dayStr": "20211008", "type": "0"},
+            {"dayStr": "20211009", "type": "0"},
+            {"dayStr": "20211010", "type": "1"},
+            {"dayStr": "20211011", "type": "0"},
+            {"dayStr": "20211012", "type": "0"},
+            {"dayStr": "20211013", "type": "0"},
+            {"dayStr": "20211014", "type": "0"},
+            {"dayStr": "20211015", "type": "0"},
+            {"dayStr": "20211016", "type": "1"},
+            {"dayStr": "20211017", "type": "1"},
+            {"dayStr": "20211018", "type": "0"},
+            {"dayStr": "20211019", "type": "0"},
+            {"dayStr": "20211020", "type": "0"},
+            {"dayStr": "20211021", "type": "0"},
+            {"dayStr": "20211022", "type": "0"},
+            {"dayStr": "20211023", "type": "1"},
+            {"dayStr": "20211024", "type": "1"},
+            {"dayStr": "20211025", "type": "0"},
+            {"dayStr": "20211026", "type": "0"},
+            {"dayStr": "20211027", "type": "0"},
+            {"dayStr": "20211028", "type": "0"},
+            {"dayStr": "20211029", "type": "0"},
+            {"dayStr": "20211030", "type": "1"},
+            {"dayStr": "20211031", "type": "1"},
+            {"dayStr": "20211101", "type": "0"},
+            {"dayStr": "20211102", "type": "0"},
+            {"dayStr": "20211103", "type": "0"},
+            {"dayStr": "20211104", "type": "0"},
+            {"dayStr": "20211105", "type": "0"},
+            {"dayStr": "20211106", "type": "1"},
+            {"dayStr": "20211107", "type": "1"},
+            {"dayStr": "20211108", "type": "0"},
+            {"dayStr": "20211109", "type": "0"},
+            {"dayStr": "20211110", "type": "0"},
+            {"dayStr": "20211111", "type": "0"},
+            {"dayStr": "20211112", "type": "0"},
+            {"dayStr": "20211113", "type": "1"},
+            {"dayStr": "20211114", "type": "1"},
+            {"dayStr": "20211115", "type": "0"},
+            {"dayStr": "20211116", "type": "0"},
+            {"dayStr": "20211117", "type": "0"},
+            {"dayStr": "20211118", "type": "0"},
+            {"dayStr": "20211119", "type": "0"},
+            {"dayStr": "20211120", "type": "1"},
+            {"dayStr": "20211121", "type": "1"},
+            {"dayStr": "20211122", "type": "0"},
+            {"dayStr": "20211123", "type": "0"},
+            {"dayStr": "20211124", "type": "0"},
+            {"dayStr": "20211125", "type": "0"},
+            {"dayStr": "20211126", "type": "0"},
+            {"dayStr": "20211127", "type": "1"},
+            {"dayStr": "20211128", "type": "1"},
+            {"dayStr": "20211129", "type": "0"},
+            {"dayStr": "20211130", "type": "0"},
+            {"dayStr": "20211201", "type": "0"},
+            {"dayStr": "20211202", "type": "0"},
+            {"dayStr": "20211203", "type": "0"},
+            {"dayStr": "20211204", "type": "1"},
+            {"dayStr": "20211205", "type": "1"},
+            {"dayStr": "20211206", "type": "0"},
+            {"dayStr": "20211207", "type": "0"},
+            {"dayStr": "20211208", "type": "0"},
+            {"dayStr": "20211209", "type": "0"},
+            {"dayStr": "20211210", "type": "0"},
+            {"dayStr": "20211211", "type": "1"},
+            {"dayStr": "20211212", "type": "1"},
+            {"dayStr": "20211213", "type": "0"},
+            {"dayStr": "20211214", "type": "0"},
+            {"dayStr": "20211215", "type": "0"},
+            {"dayStr": "20211216", "type": "0"},
+            {"dayStr": "20211217", "type": "0"},
+            {"dayStr": "20211218", "type": "1"},
+            {"dayStr": "20211219", "type": "1"},
+            {"dayStr": "20211220", "type": "0"},
+            {"dayStr": "20211221", "type": "0"},
+            {"dayStr": "20211222", "type": "0"},
+            {"dayStr": "20211223", "type": "0"},
+            {"dayStr": "20211224", "type": "0"},
+            {"dayStr": "20211225", "type": "1"},
+            {"dayStr": "20211226", "type": "1"},
+            {"dayStr": "20211227", "type": "0"},
+            {"dayStr": "20211228", "type": "0"},
+            {"dayStr": "20211229", "type": "0"},
+            {"dayStr": "20211230", "type": "0"},
+            {"dayStr": "20211231", "type": "0"}
         ]
 
-        srt=[{"dayStr": h, "type": "该日期不支持,只支持2020年"}]
+        srt = [{"dayStr": h, "type": "该日期不支持,只支持2021年"}]
         for i in day:
-            if i['dayStr']==h:
+            if i['dayStr'] == h:
                 print(i)
-                srt=i
+                srt = i
         print(h)
 
-        return response.json(0,srt)
+        return response.json(0, srt)

+ 13 - 11
Controller/EquipmentManager.py

@@ -388,18 +388,16 @@ def addInterface(request):
                 # if is_bind:
                 #     return response.json(15)
 
-                main_exist = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
-                pk = CommonService.getUserID(getUser=False)
-                vodPrimaryUserID = ''
-                vodPrimaryMaster = ''
-                if not main_exist:
-
-                    duq = Device_User.objects.filter(userID=userID).values('username')
-                    if duq.exists():
-                        username = duq[0]['username']
-                        vodPrimaryUserID = username
-                        vodPrimaryMaster = userID
+                userName = Device_User.objects.get(userID=userID).username
+                main_exist = Device_Info.objects.filter(UID=UID)
+                main_exist = main_exist.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID', 'vodPrimaryMaster')
+                vodPrimaryUserID = userID
+                vodPrimaryMaster = userName
+                if main_exist.exists():
+                    vodPrimaryUserID = main_exist[0]['vodPrimaryUserID']
+                    vodPrimaryMaster = main_exist[0]['vodPrimaryMaster']
 
+                pk = CommonService.getUserID(getUser=False)
 
                 try:
                     # 判断是否有用户绑定
@@ -771,6 +769,10 @@ def queryInterface(request):
         dvls = CommonService.qs_to_list(dvql)
         uid_list = []
         for dvl in dvls:
+            if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                dvl['isPrimaryUser'] = 1
+            else:
+                dvl['isPrimaryUser'] = 0
             uid_list.append(dvl['UID'])
             # if dvl['isShare'] is False:
             #     uid_list.append(dvl['UID'])

+ 5 - 0
Controller/EquipmentManagerV2.py

@@ -152,6 +152,11 @@ class EquipmentManagerV2(View):
             dvls = CommonService.qs_to_list(dvql)
             uid_list = []
             for dvl in dvls:
+                if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                    dvl['isPrimaryUser'] = 1
+                else:
+                    dvl['isPrimaryUser'] = 0
+
                 uid_list.append(dvl['UID'])
                 # if dvl['isShare'] is False:
                 #     uid_list.append(dvl['UID'])

+ 24 - 10
Controller/EquipmentManagerV3.py

@@ -50,6 +50,8 @@ class EquipmentManagerV3(View):
                 return self.do_modify(userID, request_dict, response, request)
             elif operation == 'fuzzyQuery':
                 return self.do_fuzzy_query(userID, request_dict, response)
+            elif operation == 'mainUserDevice':
+                return self.do_mainUserDevice( request_dict, response)
             else:
                 return response.json(414)
         else:
@@ -90,17 +92,17 @@ class EquipmentManagerV3(View):
                     # if is_bind:
                     #     return response.json(15)
 
-                    main_exist = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
+                    userName = Device_User.objects.get(userID=userID).username
+                    main_exist = Device_Info.objects.filter(UID=UID)
+                    main_exist = main_exist.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID', 'vodPrimaryMaster')
+                    vodPrimaryUserID = userID
+                    vodPrimaryMaster = userName
+                    if main_exist.exists():
+                        vodPrimaryUserID = main_exist[0]['vodPrimaryUserID']
+                        vodPrimaryMaster = main_exist[0]['vodPrimaryMaster']
+
                     pk = CommonService.getUserID(getUser=False)
-                    vodPrimaryUserID = ''
-                    vodPrimaryMaster = ''
-                    if not main_exist:
-
-                        duq = Device_User.objects.filter(userID=userID).values('username')
-                        if duq.exists():
-                            username = duq[0]['username']
-                            vodPrimaryUserID = userID
-                            vodPrimaryMaster = username
+
                     try:
                         # 判断是否有用户绑定
                         nowTime = int(time.time())
@@ -256,7 +258,13 @@ class EquipmentManagerV3(View):
             dvls = CommonService.qs_to_list(dvql)
             uid_list = []
             for dvl in dvls:
+                if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                    dvl['isPrimaryUser'] = 1
+                else:
+                    dvl['isPrimaryUser'] = 0
+
                 uid_list.append(dvl['UID'])
+
             ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
                 values('bucket__content', 'status', 'channel', 'endTime', 'uid')
             upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
@@ -583,3 +591,9 @@ class EquipmentManagerV3(View):
                 # 去前3位,后3位
                 password = password[3:-3]
         return password
+
+    def do_mainUserDevice(self, request_dict, response):
+        vodPrimaryUserID = request_dict.get('vodPrimaryUserID')
+        qs = Device_User.objects.filter(userID=vodPrimaryUserID).values('NickName', 'username', 'userEmail', 'phone')
+        dvql = CommonService.qs_to_list(qs)
+        return response.json(0, dvql)

+ 4 - 4
Controller/VoicePromptController.py

@@ -146,10 +146,10 @@ class VoicePromptView(View):
                 device_qs = Device_Info.objects.filter(UID=uid, userID=userID)
                 if device_qs.exists():
                     voice_qs.delete()
-                    auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
-                    bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
-                    obj = 'voice_prompt/{uid}/{channel}/'.format(uid=uid, channel=voice_qs[0].channel) + voice_qs[0].filename
-                    bucket.delete_object(obj)
+                    # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                    # bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
+                    # obj = 'voice_prompt/{uid}/{channel}/'.format(uid=uid, channel=voice_qs[0].channel) + voice_qs[0].filename
+                    # bucket.delete_object(obj)
                     return response.json(0)
                 else:
                     return response.json(404)

+ 4 - 1
Object/ResponseObject.py

@@ -90,6 +90,8 @@ class ResponseObject(object):
             10034: 'Non device primary users cannot view cloud storage',
             10035: 'Non device primary users cannot experience cloud storage',
             10036: 'Non device primary users cannot exchange for cloud storage',
+            10037: 'Non device primary user cannot transfer device',
+            10038: 'Non device primary user cannot transfer packages',
         }
         data_cn = {
             0: '成功',
@@ -174,7 +176,8 @@ class ResponseObject(object):
             10034: '非设备主用户无法查看云存',
             10035: '非设备主用户无法体验云存',
             10036: '非设备主用户无法兑换云存',
-
+            10037: '非设备主用户无法转移设备',
+            10038: '非设备主用户无法转移套餐',
         }
         if self.lang == 'cn':
             msg = data_cn

+ 2 - 1
Object/WechatPayObject.py

@@ -104,7 +104,7 @@ class WechatPayObject:
         else:
             return 'failure'
 
-    def re_finall(self):
+    def re_finall(self,orderid = None):
         """得到prepay_id后再次签名,返回给终端参数.
         """
         self.get_prepay_id()
@@ -121,6 +121,7 @@ class WechatPayObject:
         self.get_sign(sign_again_params)
         sign_again_params['sign'] = sign_again_params['sign']
         sign_again_params['packageId'] = sign_again_params['package']
+        sign_again_params['out_trade_no'] = orderid
         return sign_again_params  # 返回给app
 
     def get_notifypay(self, data):