chanjunkai před 5 roky
rodič
revize
17d22c46f3
3 změnil soubory, kde provedl 154 přidání a 61 odebrání
  1. 3 3
      Ansjer/urls.py
  2. 136 45
      Controller/CloudStorage.py
  3. 15 13
      Model/models.py

+ 3 - 3
Ansjer/urls.py

@@ -186,9 +186,9 @@ urlpatterns = [
     url(r'^grant/code/(?P<operation>.*)$', ApplicationController.GrantCodeView.as_view()),
     url(r'^user/ex/(?P<operation>.*)$', UserExController.UserExView.as_view()),
 
-    url(r'^cloudstorage/query', CloudStorage.query_cloud_storage),
-    url(r'^cloudstorage/query', CloudStorage.query_cloud_storage),
-    url(r'^cloudstorage/query', CloudStorage.query_cloud_storage),
+    # url(r'^cloudstorage/query', CloudStorage.query_cloud_storage),
+    # url(r'^cloudstorage/query', CloudStorage.query_cloud_storage),
+    # url(r'^cloudstorage/query', CloudStorage.query_cloud_storage),
 
 
     # app 设备消息模板

+ 136 - 45
Controller/CloudStorage.py

@@ -13,53 +13,144 @@
 """
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
-from Model.models import Store_Meal
+from Model.models import Store_Meal, Device_Info,UID_Bucket
 from Service.CommonService import CommonService
+import time
 
 
-def query_cloud_storage(request):
-    request.encoding = 'utf-8'
-    response = ResponseObject()
-    if request.method == 'POST':
-        request_dict = request.POST
-    elif request.method == 'GET':
-        request_dict = request.GET
-    else:
-        return response.json(444)
-    token = request_dict.get('token', None)
-    tko = TokenObject(token)
-    response.lang = tko.lang
-    if tko.code == 0:
-        qs = Store_Meal.objects.filter(bucket__mold=1)
-        qs = qs.values("id", "title", "price", "content", "day",
-                       "add_time", "update_time", "currency",
-                       "type", "bucket_id", "bucket__bucket",
-                       "bucket__storeDay")
-        res = CommonService.qs_to_list(qs)
-        return response.json(0, res)
-    else:
-        return response.json(tko.code)
+# def query_cloud_storage(request):
+#     request.encoding = 'utf-8'
+#     response = ResponseObject()
+#     if request.method == 'POST':
+#         request_dict = request.POST
+#     elif request.method == 'GET':
+#         request_dict = request.GET
+#     else:
+#         return response.json(444)
+#     token = request_dict.get('token', None)
+#     tko = TokenObject(token)
+#     response.lang = tko.lang
+#     if tko.code == 0:
+#         qs = Store_Meal.objects.filter(bucket__mold=1)
+#         qs = qs.values("id", "title", "price", "content", "day",
+#                        "add_time", "update_time", "currency",
+#                        "type", "bucket_id", "bucket__bucket",
+#                        "bucket__storeDay")
+#         res = CommonService.qs_to_list(qs)
+#         return response.json(0, res)
+#     else:
+#         return response.json(tko.code)
+#
+#
+# def cloud_storage_buy(request):
+#     request.encoding = 'utf-8'
+#     response = ResponseObject()
+#     if request.method == 'POST':
+#         request_dict = request.POST
+#     elif request.method == 'GET':
+#         request_dict = request.GET
+#     else:
+#         return response.json(444)
+#     token = request_dict.get('token', None)
+#     tko = TokenObject(token)
+#     response.lang = tko.lang
+#     if tko.code != 0:
+#         return response.json(tko.code)
+#     uid = request_dict.get('uid', None)
+#     rank = request_dict.get('rank', None)
+#     channel = request_dict.get('channel', None)
+#     if not uid or not channel or not rank:
+#         return response.json(444, 'channel,rank')
+#     userID = tko.userID
+#     qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False)
+#     if not qs.exists():
+#         return response.json(12)
+#     smqs = Store_Meal.objects.filter(id=rank).\
+#         values("currency", "price", "content", "day", "bucket__storeDay", "bucket__region", "type")
+#     if not smqs.exists():
+#         return response.json(10, '套餐不存在')
+#     if smqs[0]['type'] != 0:
+#         return response.json(10, '套餐不支持paypal支付')
+#     currency = smqs[0]['currency']
+#     price = smqs[0]['price']
+#     content = smqs[0]['content']
+#     day = smqs[0]['day']
+#     nowTime = int(time.time())
+#     ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=nowTime). \
+#         values("bucket__storeDay", "bucket__region")
+#     if ubqs.exists():
+#         if ubqs[0]['bucket__region'] != smqs[0]['bucket__region']:
+#             return response.json(712)  # 区域不一致
+#         # elif ubqs[0]['bucket__storeDay'] > smqs[0]['bucket__storeDay']:
+#         #     return response.json(711)  # 不可降级
+#         elif ubqs[0]['bucket__storeDay'] != smqs[0]['bucket__storeDay']:
+#             return response.json(713)  # 不可更改套餐
+#         # 续费流程
+#     nowTime = int(time.time())
+#     # 判断是否存在未完成订单
+#     # hasOrder = Order_Model.objects.filter(UID=uid, channel=channel, addTime__gte=nowTime - 3600, status=0,
+#     #                                       rank_id=rank, userID_id=userID).values('paypal')
+#     # if hasOrder.exists():
+#     #     approval_url = hasOrder[0]['paypal']
+#     #     return response.json(0, {"redirectUrl": approval_url})
+#     # 新增流程
+#     orderID = CommonService.createOrderID()
+#     call_sub_url = "{SERVER_DOMAIN}cloudVod/payExecute?orderID={orderID}". \
+#         format(SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
+#     # call_sub_url = "http://192.168.136.40:8077/cloudVod/payExecute?orderID={orderID}".format(
+#     #     SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
+#     call_clc_url = "{SERVER_DOMAIN}cloudVod/payError".format(SERVER_DOMAIN=SERVER_DOMAIN)
+#     paypalrestsdk.configure(PAYPAL_CRD)
+#     payment = paypalrestsdk.Payment({
+#         "intent": "sale",
+#         "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():
+#         print("Payment created successfully")
+#     else:
+#         print(payment.error)
+#         return response.json(10, payment.error)
+#     print(payment)
+#     for link in payment.links:
+#         if link.rel == "approval_url":
+#             approval_url = str(link.href)
+#             print("Redirect for approval: %s" % (approval_url))
+#             Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID, desc=content,
+#                                        price=price, currency=currency, addTime=nowTime, updTime=nowTime,
+#                                        endTime=nowTime + int(day) * 3600 * 24,
+#                                        rank_id=rank,
+#                                        paypal=approval_url)
+#             return response.json(0, {"redirectUrl": approval_url, "orderID": orderID})
+#     return response.json(10, 'generate_order_false')
 
 
-def query_cloud_storage(request):
-    request.encoding = 'utf-8'
-    response = ResponseObject()
-    if request.method == 'POST':
-        request_dict = request.POST
-    elif request.method == 'GET':
-        request_dict = request.GET
-    else:
-        return response.json(444)
-    token = request_dict.get('token', None)
-    tko = TokenObject(token)
-    response.lang = tko.lang
-    if tko.code == 0:
-        qs = Store_Meal.objects.filter(bucket__mold=1)
-        qs = qs.values("id", "title", "price", "content", "day",
-                       "add_time", "update_time", "currency",
-                       "type", "bucket_id", "bucket__bucket",
-                       "bucket__storeDay")
-        res = CommonService.qs_to_list(qs)
-        return response.json(0, res)
-    else:
-        return response.json(tko.code)
+
+# /cloudstorage/commodity/buy
+# def query_cloud_storage5(request):
+#     request.encoding = 'utf-8'
+#     response = ResponseObject()
+#     if request.method == 'POST':
+#         request_dict = request.POST
+#     elif request.method == 'GET':
+#         request_dict = request.GET
+#     else:
+#         return response.json(444)
+#     token = request_dict.get('token', None)
+#     tko = TokenObject(token)
+#     response.lang = tko.lang
+#     if tko.code == 0:
+#         qs = Store_Meal.objects.filter(bucket__mold=1)
+#         qs = qs.values("id", "title", "price", "content", "day",
+#                        "add_time", "update_time", "currency",
+#                        "type", "bucket_id", "bucket__bucket",
+#                        "bucket__storeDay")
+#         res = CommonService.qs_to_list(qs)
+#         return response.json(0, res)
+#     else:
+#         return response.json(tko.code)

+ 15 - 13
Model/models.py

@@ -588,6 +588,8 @@ class UID_Bucket(models.Model):
     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)
+    order = models.ForeignKey(Order_Model, blank=True, to_field='orderID', on_delete=models.CASCADE, verbose_name='订单编号')
+
 
     class Meta:
         db_table = 'vod_uid_bucket'
@@ -595,20 +597,20 @@ class UID_Bucket(models.Model):
         verbose_name_plural = verbose_name
         ordering = ('id',)
 
-class VOD_UID(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    uid = models.CharField(max_length=20, verbose_name='设备UID')
-    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)
-    order = models.ForeignKey(Order_Model,blank=True,to_field='orderID', on_delete=models.CASCADE,verbose_name='订单')
 
-    class Meta:
-        db_table = 'vod_uid'
-        verbose_name = u'设备关联套餐订单表'
-        verbose_name_plural = verbose_name
-        ordering = ('id',)
+# class UID_Bucket(models.Model):
+#     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+#     uid = models.CharField(max_length=20, verbose_name='设备UID')
+#     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)
+#
+#     class Meta:
+#         db_table = 'vod_uid_bucket'
+#         verbose_name = u'设备关联套餐表'
+#         verbose_name_plural = verbose_name
+#         ordering = ('id',)
 
 
 class UID_Preview(models.Model):