Browse Source

update field

lang 4 năm trước cách đây
mục cha
commit
79a910d5d5
1 tập tin đã thay đổi với 94 bổ sung88 xóa
  1. 94 88
      Controller/CloudStorage.py

+ 94 - 88
Controller/CloudStorage.py

@@ -1223,74 +1223,77 @@ class CloudStorageView(View):
         ubqs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay", "bucket__region",
                                                          "endTime", "use_status")
         expire = smqs[0]['expire']
-        with transaction.atomic():
-            if ubqs.exists():
-                ubq = ubqs[0]
-                if ubq['use_status'] == 1 and ubq['bucket_id'] == bucketId:  #套餐使用中并且相同套餐叠加过期时间
-                    endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
-                    UID_Bucket.objects.filter(id=ubq['id']).update \
-                        (uid=uid, channel=channel, bucket_id=bucketId,
-                         endTime=endTime, updateTime=nowTime)
-                else:     #已过期或者不相同的套餐加入未使用的关联套餐表
-                    has_unused = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=bucketId).values("id")
-                    nums = 2 if order_list[0]['isSelectDiscounts'] == 1 else 1
-                    if has_unused.exists():
-                        Unused_Uid_Meal.objects.filter(id=has_unused[0]['id']).update(num=F('num') + nums)
-                    else:
-                        Unused_Uid_Meal.objects.create(uid=uid,channel=channel,addTime=nowTime,num=nums,
-                                                       expire=smqs[0]['expire'],bucket_id=bucketId)
-                    UID_Bucket.objects.filter(id=ubq['id']).update(has_unused=1)
-                uid_bucket_id = ubq['id']
-            else:
-                endTime = CommonService.calcMonthLater(expire)
-                ub_cqs = UID_Bucket.objects.create \
-                    (uid=uid, channel=channel, bucket_id=bucketId, endTime=endTime, addTime=nowTime,
-                     updateTime=nowTime,use_status=1)
-                uid_bucket_id = ub_cqs.id
-        Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
-                                   desc=smqs[0]['lang__content'], payType=pay_type, payTime=nowTime,
-                                   price=smqs[0]['price'], currency=smqs[0]['currency'], addTime=nowTime,
-                                   updTime=nowTime,
-                                   pay_url="体验版",
-                                   commodity_code=commodity_code, commodity_type=smqs[0]['commodity_type'],
-                                   rank_id=rank, status=1, uid_bucket_id=uid_bucket_id)
+        try:
+            with transaction.atomic():
+                if ubqs.exists():
+                    ubq = ubqs[0]
+                    if ubq['use_status'] == 1 and ubq['bucket_id'] == bucketId:  #套餐使用中并且相同套餐叠加过期时间
+                        endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
+                        UID_Bucket.objects.filter(id=ubq['id']).update \
+                            (uid=uid, channel=channel, bucket_id=bucketId,
+                             endTime=endTime, updateTime=nowTime)
+                    else:     #已过期或者不相同的套餐加入未使用的关联套餐表
+                        has_unused = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=bucketId).values("id")
+                        nums = 2 if order_list[0]['isSelectDiscounts'] == 1 else 1
+                        if has_unused.exists():
+                            Unused_Uid_Meal.objects.filter(id=has_unused[0]['id']).update(num=F('num') + nums)
+                        else:
+                            Unused_Uid_Meal.objects.create(uid=uid,channel=channel,addTime=nowTime,num=nums,
+                                                           expire=smqs[0]['expire'],bucket_id=bucketId)
+                        UID_Bucket.objects.filter(id=ubq['id']).update(has_unused=1)
+                    uid_bucket_id = ubq['id']
+                else:
+                    endTime = CommonService.calcMonthLater(expire)
+                    ub_cqs = UID_Bucket.objects.create \
+                        (uid=uid, channel=channel, bucket_id=bucketId, endTime=endTime, addTime=nowTime,
+                         updateTime=nowTime,use_status=1)
+                    uid_bucket_id = ub_cqs.id
+                Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
+                                           desc=smqs[0]['lang__content'], payType=pay_type, payTime=nowTime,
+                                           price=smqs[0]['price'], currency=smqs[0]['currency'], addTime=nowTime,
+                                           updTime=nowTime,
+                                           pay_url="体验版",
+                                           commodity_code=commodity_code, commodity_type=smqs[0]['commodity_type'],
+                                           rank_id=rank, status=1, uid_bucket_id=uid_bucket_id)
 
-        duq = Device_User.objects.filter(userID=userID).values('username')
-        dvq = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
+                duq = Device_User.objects.filter(userID=userID).values('username')
+                dvq = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
 
 
 
-        if dvq.exists():
-            dvq_set_update_dict = {
-                'vodPrimaryUserID': userID,
-                'vodPrimaryMaster': duq[0]['username']
-            }
-            dvq.update(**dvq_set_update_dict)
-
-        sys_msg_text_list = ['成功购买云存', 'Successful purchase of cloud storage']
-        # return response.json(0)
-        returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
-        if pay_type == 10:
-            ExperienceContextModel.objects.create(
-                experience_type=0,
-                uid=uid,
-                do_time=nowTime
-            )
-            returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=10&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
-            sys_msg_text_list = ['成功体验云存', 'Successful experience of cloud storage']
+                if dvq.exists():
+                    dvq_set_update_dict = {
+                        'vodPrimaryUserID': userID,
+                        'vodPrimaryMaster': duq[0]['username']
+                    }
+                    dvq.update(**dvq_set_update_dict)
+
+                sys_msg_text_list = ['成功购买云存', 'Successful purchase of cloud storage']
+                # return response.json(0)
+                returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
+                if pay_type == 10:
+                    ExperienceContextModel.objects.create(
+                        experience_type=0,
+                        uid=uid,
+                        do_time=nowTime
+                    )
+                    returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=10&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
+                    sys_msg_text_list = ['成功体验云存', 'Successful experience of cloud storage']
 
-        if pay_type == 11:
-            update_dict = {}
-            update_dict['is_activate'] = 1
-            update_dict['order'] = orderID
-            CDKcontextModel.objects.filter(cdk=cdk).update(**update_dict)
-            returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=11&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
-            sys_msg_text_list = ['成功兑换云存', 'Successful exchange of cloud storage']
+                if pay_type == 11:
+                    update_dict = {}
+                    update_dict['is_activate'] = 1
+                    update_dict['order'] = orderID
+                    CDKcontextModel.objects.filter(cdk=cdk).update(**update_dict)
+                    returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=11&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
+                    sys_msg_text_list = ['成功兑换云存', 'Successful exchange of cloud storage']
 
 
-        self.do_vod_msg_Notice(uid, channel, userID, lang, sys_msg_text_list)
-        result = returnurl
-        return response.json(0, result)
+                self.do_vod_msg_Notice(uid, channel, userID, lang, sys_msg_text_list)
+                result = returnurl
+                return response.json(0, result)
+        except Exception:
+            return response.json(474)
         # red_url =
         # return JsonResponse(status=200, data={'red_url': red_url})
 
@@ -1340,41 +1343,44 @@ class CloudStorageView(View):
         lang = request_dict.get('lang', None)
         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)
+        # if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
+        #     return response.json(12)
         now_time = int(time.time())
+        bucket_id_list = []
+        store_list = []
         uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid","bucket__content",
-                                                                            "use_status","endTime","has_unused")
+                                                                    "use_status","endTime","has_unused","bucket__id")
         if not uid_bucket:
             return response.json(10030)
-        commodity_dict = {}
-        if uid_bucket[0]['has_unused'] == 1:
-            unused = Unused_Uid_Meal.objects.filter(uid=uid).annotate(unused_id=F('id'))\
-                                            .values("unused_id","uid","bucket__content","num")
-            commodity_dict['using'] = list(uid_bucket)
-            commodity_dict['unused'] = list(unused)
-        else:
-            commodity_dict['using'] = [uid_bucket]
-        return response.json(0, commodity_dict)
-        uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid", "endTime",
-                                                                                      "bucket__content", "bucket__id").order_by(
-            'addTime')
-        bclist = []
-        for ub in uid_bucket:
-            bclist.append(ub['bucket__id'])
-
-        smqs = Store_Meal.objects.filter(bucket__id__in=bclist, lang__lang=lang).values('lang__lang','bucket__id','lang__title')
-        for index, value in enumerate(uid_bucket):
-            value['is_use'] = 0
-            if index == 0:
-                value['is_use'] = 1
-
+        uid_bucket[0]['storage'] = 0
+        has_unused = uid_bucket[0]['has_unused']
+        del uid_bucket[0]['has_unused']
+        store_list.append(uid_bucket[0])
+        bucket_id_list.append(uid_bucket[0]['bucket__id'])
+        if has_unused == 1:
+            unuseds = Unused_Uid_Meal.objects.filter(uid=uid).annotate(unused_id=F('id')) \
+                .values("unused_id","uid","bucket__content","num","bucket__id","expire")
+            for ub in unuseds:
+                storage_time = ub['num'] *  ub['expire']
+                storage = "{storage_time}个月".format(storage_time=storage_time)
+                unused_dict = {
+                    "id":ub['unused_id'],
+                    "uid":ub['uid'],
+                    "bucket__content":ub['bucket__content'],
+                    "use_status":0,
+                    "endTime":0,
+                    "bucket__id":ub['bucket__id'],
+                    "storage":storage,
+                }
+                store_list.append(unused_dict)
+                bucket_id_list.append(ub['bucket__id'])
+        smqs = Store_Meal.objects.filter(bucket__id__in=bucket_id_list, lang__lang=lang).values('lang__lang','bucket__id','lang__title')
+        for index, value in enumerate(store_list):
             for sm in smqs:
-
                 if value['bucket__id'] == sm['bucket__id']:
                     value['bucket__content'] = sm['lang__title']
 
-        return response.json(0, list(uid_bucket))
+        return response.json(0, list(store_list))
 
     # 提前使用设备关联套餐
     def switch_device_commodity(self, request_dict, userID, response):