lang hace 4 años
padre
commit
91083b3190
Se han modificado 1 ficheros con 55 adiciones y 44 borrados
  1. 55 44
      Controller/CloudStorage.py

+ 55 - 44
Controller/CloudStorage.py

@@ -41,6 +41,8 @@ from Object.m3u8generate import PlaylistGenerator
 from Object.WechatPayObject import WechatPayObject
 from django.db.models import Q
 
+from Service.ModelService import ModelService
+
 SERVER_DOMAIN = 'http://test.dvema.com/'
 
 '''
@@ -208,7 +210,7 @@ class CloudStorageView(View):
         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","symbol")
+                       "discount_price", "discount_content")
 
         if qs.exists():
             ql = list(qs)
@@ -324,8 +326,8 @@ class CloudStorageView(View):
         print(uid)
         now_time = int(time.time())
         ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time). \
-            values("bucket__mold", "bucket__bucket", "bucket__endpoint",
-                   "bucket__region", "endTime").order_by('endTime')[:1]
+                   values("bucket__mold", "bucket__bucket", "bucket__endpoint",
+                          "bucket__region", "endTime").order_by('endTime')[:1]
         if ubqs.exists():
             if ubqs[0]["bucket__mold"] == 0:
                 # 阿里云 oss sts
@@ -478,7 +480,7 @@ class CloudStorageView(View):
         now_time = int(time.time())
         bv_qs = UID_Bucket.objects.filter(uid=uid,channel=channel, endTime__gte=now_time).order_by('endTime')
         if not bv_qs.exists():
-            return response.json(10014)
+            return response.json(103,'未购买')
         vh_qs = VodHlsModel.objects.filter \
             ( uid=uid, channel=channel, time__range=(startTime, endTime), endTime__gte=now_time). \
             values("id", "time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
@@ -562,8 +564,8 @@ class CloudStorageView(View):
         print(channel)
         now_time = int(time.time())
         ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel, endTime__gte=now_time). \
-            values("bucket__mold", "bucket__bucket", "bucket__endpoint",
-                   "bucket__region", "status", "bucket__storeDay", "bucket__id").order_by('endTime')[:1]
+                   values("bucket__mold", "bucket__bucket", "bucket__endpoint",
+                          "bucket__region", "status", "bucket__storeDay", "bucket__id").order_by('endTime')[:1]
         if ubqs.exists():
             ub_qs_data = ubqs[0]
             store_day = ub_qs_data['bucket__storeDay']
@@ -656,10 +658,10 @@ class CloudStorageView(View):
             return response.json(12)
         ubqs = UID_Bucket.objects.filter(channel=channel, uid=uid).order_by('endTime')
         if not ubqs.exists():
-            return response.json(10014)
+            return response.json(10, '未购买')
         now_time = int(time.time())
         if now_time > ubqs[0].endTime:
-            return response.json(10015)
+            return response.json(102,'已过期')
         ubqs.update(status=status)
         if status == 0:
             return response.json(0)
@@ -840,8 +842,13 @@ class CloudStorageView(View):
         return response
 
     def do_pay_by_ali_callback(self, request):
+
+        print("进来了,阿里支付成功回调")
         response = ResponseObject()
         data = request.POST.dict()
+        asy = threading.Thread(target=ModelService.add_log,
+                               args=(CommonService.get_ip_address(request),data['out_trade_no'], '进来了,阿里支付成功回调'))
+        asy.start()
         signature = data["sign"]
         data.pop('sign')
         orderID = data['out_trade_no']
@@ -859,34 +866,38 @@ class CloudStorageView(View):
         success = alipay.verify(data, signature)
         if success and data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
             print("trade succeed")
+            order_qs = Order_Model.objects.filter(orderID=orderID)
             nowTime = int(time.time())
-            order_list = order_qs.values("UID", "commodity_code", "channel")
+            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']
-            order_qs.update(status=1, updTime=nowTime)
-            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(173)
-            addTime = int(smqs[0]["day"]) * 24 * 3600
-            ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel). \
-                values("bucket_id", "endTime", "bucket__storeDay")
+                return response.json(0, '套餐已删除')
+            ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
+                       values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
             nowTime = int(time.time())
+
+            expire = smqs[0]['expire']
+            if order_list[0]['isSelectDiscounts'] == 1:
+                expire = smqs[0]['expire'] * 2
             if ubqs.exists():
-                ubqs_count = ubqs.count()
-                ubq = ubqs[ubqs_count - 1, ubqs_count]
-                new_starTime = ubq['endTime'] + 1
-                ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
-                                                   endTime=new_starTime + addTime)
-                uid_bucket_id = ub_cqs.id
+                ubq = ubqs[0]
+                endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
+                ub_cqs = UID_Bucket.objects.filter(id=ubq['id']).update \
+                    (uid=UID, channel=channel, bucket_id=bucketId,
+                     endTime=endTime)
+                uid_bucket_id = ubq['id']
             else:
-                ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
-                                                   endTime=nowTime + addTime)
+                endTime = CommonService.calcMonthLater(expire)
+                ub_cqs = UID_Bucket.objects.create \
+                    (uid=UID, channel=channel, bucket_id=bucketId, endTime=endTime)
                 uid_bucket_id = ub_cqs.id
-            order_qs.update \
-                (payTime=nowTime, status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
+
+            order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
             red_url = "{SERVER_DOMAIN}cloudstorage/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
             return HttpResponseRedirect(red_url)
         return response.json(0, signature)
@@ -917,10 +928,10 @@ class CloudStorageView(View):
             values("day", "bucket_id", "bucket__storeDay", "expire")
         bucketId = smqs[0]['bucket_id']
         if not smqs.exists():
-            return response.json(173)
+            return response.json(0, '套餐已删除')
         # ##
         ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
-            values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
+                   values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
         expire = smqs[0]['expire']
         if order_list[0]['isSelectDiscounts'] == 1:
             expire = smqs[0]['expire'] * 2
@@ -964,7 +975,7 @@ class CloudStorageView(View):
                 return HttpResponse(WechatPayObject.xml_to_dict({'return_code':'FAIL', 'return_msg':'套餐不存在'}))
             # ##
             ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
-                values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
+                       values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
             expire = smqs[0]['expire']
             if order_list[0]['isSelectDiscounts'] == 1:
                 expire = smqs[0]['expire'] * 2
@@ -991,16 +1002,16 @@ class CloudStorageView(View):
         rank = request_dict.get('rank', None)
         is_select_discount = request_dict.get('is_select_discount', 0)
         if not uid or not channel or not pay_type or not rank:
-            return response.json(444)
+            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(173)
+            return response.json(12)
         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(10016)
+            return response.json(10, '套餐不存在')
         currency = smqs[0]['currency']
         price = smqs[0]['price']
         if is_select_discount == '1':
@@ -1082,7 +1093,7 @@ class CloudStorageView(View):
                                                           'result': {"redirectUrl": redirectUrl, "orderID": orderID},
                                                           'error_code': 0})
                 else:
-                    return response.json(800)
+                    return response.json(10, '生成订单错误.')
 
         elif pay_type == 3:
             pay = WechatPayObject()
@@ -1096,7 +1107,7 @@ class CloudStorageView(View):
             # 统一调用接口
             response = pay.re_finall()
             if not response:
-                return response.json(800)
+                return response.json(10, '生成订单错误.')
             # 回调函数
             Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                        desc=content, payType=pay_type, payTime=nowTime,
@@ -1240,21 +1251,21 @@ class CloudStorageView(View):
                 VodHlsModel.objects.filter(uid=uid).delete()
             else:
                 if type(vod_id_list).__name__ != 'list':
-                    return response.json(444)
+                    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)
+            return response.json(0, '删除成功.')
 
     #设备关联套餐列表
     def device_commodity(self, request_dict, response):
         uid = request_dict.get('uid',None)
         now_time = int(time.time())
         uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid", "endTime",
-                                                                     "bucket__content").order_by('endTime')
+                                                                                      "bucket__content").order_by('endTime')
         if not uid_bucket.exists():
-            return response.json(10014)
+            return response.json(404,'该设备未购买云存套餐.')
         for index, value in enumerate(uid_bucket):
             value['is_use'] = 0
             if index == 0:
@@ -1268,20 +1279,20 @@ class CloudStorageView(View):
         if switch_commodity_id:
             #切换设备套餐关联
             using_uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=int(time.time())).values("id", "uid", "endTime",
-                                                                               "bucket__content").order_by('endTime')
+                                                                                                        "bucket__content").order_by('endTime')
 
             if not using_uid_bucket.exists():
-                return response.json(10014)
+                return response.json(404,'该设备未购买云存套餐.')
 
             if int(using_uid_bucket[0]['id']) == int(switch_commodity_id):
-                return response.json(10017)
+                return response.json(404,'切换的云存套餐ID不能与正在使用中的相同.')
 
             # UID_Bucket.objects.filter(id=switch_commodity_id).update(is_use=1)  #更新转移的云存套餐为使用中
             UID_Bucket.objects.filter(id=using_uid_bucket[0]['id']).delete()    #删除原来使用中的云存套餐
             VodHlsModel.objects.filter(uid=uid).delete()                        #删除播放列表
             StsCrdModel.objects.filter(uid=uid).delete()                        #删除sts记录
-            return response.json(0)
-        return response.json(444)
+            return response.json(0,'切换云存套餐成功')
+        return response.json(404,'切换的套餐ID不能为空')
 
 #删除过期云存播放列表
 def deleteVodHls(request):