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

套餐转移_修复转出设备存在未使用套餐转移套餐后,未使用套餐没有转变为正在使用套餐

locky 4 жил өмнө
parent
commit
5596ebd66b
1 өөрчлөгдсөн 32 нэмэгдсэн , 9 устгасан
  1. 32 9
      Controller/CloudTest.py

+ 32 - 9
Controller/CloudTest.py

@@ -116,7 +116,7 @@ class cloudTestView(View):
                 return response.json(10011)
 
             # 查询转出设备正在使用的套餐
-            old_using_uid_bucket = UID_Bucket.objects.filter(uid=old_uid, endTime__gte=nowTime).values('id').order_by('addTime')
+            old_using_uid_bucket = UID_Bucket.objects.filter(uid=old_uid, endTime__gte=nowTime).values('id','has_unused').order_by('addTime')
             if not old_using_uid_bucket.exists():
                 return response.json(10013)
 
@@ -130,22 +130,45 @@ 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)
             new_unused_uid_bucket = Unused_Uid_Meal.objects.filter(uid=new_uid)
-            new_unused_id_list = new_unused_uid_bucket.values_list("id", flat=True)
             if new_using_uid_bucket.exists() or new_unused_uid_bucket.exists():
                 return response.json(10014)
 
+            # 如果转出设备有未使用套餐,更改第一个未使用套餐为正在使用
+            if old_using_uid_bucket[0]['has_unused'] == 1:
+                old_unused_uid_bucket = Unused_Uid_Meal.objects.filter(uid=old_uid).values('id', 'channel', 'bucket_id', 'addTime', 'expire', 'num')
+                count = old_unused_uid_bucket.count()
+                has_unused = 1 if count>1 else 0    # 如果存在不止一个未使用套餐,has_unused=1
+                channel = old_unused_uid_bucket[0]['channel']
+                bucket_id = old_unused_uid_bucket[0]['bucket_id']
+                addTime = old_unused_uid_bucket[0]['addTime']
+                expire = old_unused_uid_bucket[0]['expire']
+                num = old_unused_uid_bucket[0]['num']
+                endTime = nowTime + expire*num*24*60*60 # 套餐结束时间:当前时间算起到,加上存储桶月份时长*个数
+                data_dict = {
+                    'uid': old_uid,
+                    'channel': channel,
+                    'bucket_id': bucket_id,
+                    'addTime': addTime,
+                    'endTime': endTime,
+                    'updateTime': nowTime,
+                    'status': 1,
+                    'use_status': 1,
+                    'has_unused': has_unused
+                }
+                UID_Bucket.objects.create(**data_dict)  # 正在使用套餐表添加数据
+                Unused_Uid_Meal.objects.filter(uid=old_uid).first().delete()   # 删除未使用套餐表中的数据
+
             with transaction.atomic():
-                # 更新所有设备主用户信息
+                # 更新转入设备的主用户信息
                 Device_Info.objects.filter(UID=new_uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
-                # vod_uid_bucket表更新uid
+                # 更新正在使用套餐的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)
-                Unused_Uid_Meal.objects.filter(id__in=list(new_unused_id_list)).update(uid=new_uid)  # 更新过期云存关联套餐状态
-                # 删除转出设备stscrd表关联数据
-                StsCrdModel.objects.filter(uid=old_uid).delete()
+                UID_Bucket.objects.filter(id=old_using_uid_bucket_id).update(uid=new_uid,has_unused=0)
+                StsCrdModel.objects.filter(uid=old_uid).delete()    # 删除转出设备stscrd表关联数据
+
         except Exception as e:
             # print(e)
             return response.json(500, repr(e))