فهرست منبع

云存体验套餐

chenshibin 4 سال پیش
والد
کامیت
23f4b6e1fb
3فایلهای تغییر یافته به همراه148 افزوده شده و 5 حذف شده
  1. 3 3
      Ansjer/local_settings.py
  2. 132 2
      Controller/CloudStorage.py
  3. 13 0
      Model/models.py

+ 3 - 3
Ansjer/local_settings.py

@@ -74,9 +74,9 @@ WSGI_APPLICATION = 'Ansjer.local_wsgi.application'
 
 # 服务器类型
 DATABASE_DATA = 'AnsjerLocal'
-SERVER_HOST = '192.168.136.99'
-DATABASES_USER = 'ansjer'
-DATABASES_PASS = 'ansjer.x.x'
+SERVER_HOST = '127.0.0.1'
+DATABASES_USER = 'root'
+DATABASES_PASS = '123456'
 
 # DATABASE_DATA2 = 'asjl'
 # SERVER_HOST2 = '127.0.0.1'

+ 132 - 2
Controller/CloudStorage.py

@@ -26,7 +26,7 @@ from django.views.generic.base import View
 
 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
     SERVER_DOMAIN_SSL
-from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel
+from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, Device_User, ExperienceContextModel
 from Object.AliPayObject import AliPayObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -103,6 +103,8 @@ class CloudStorageView(View):
                 return self.do_commodity_list(request_dict, userID, response)
             elif operation == 'queryorder':
                 return self.do_query_order(request_dict, userID, response)
+            elif operation == 'do_experience_order':
+                return self.do_query_order(request_dict, userID, response)
             else:
                 return response.json(414)
 
@@ -169,15 +171,25 @@ class CloudStorageView(View):
 
     def do_commodity_list(self, request_dict, userID, response):
         mold = request_dict.get('mold', None)
+        uid = request_dict.get('uid', None)
         qs = Store_Meal.objects
+        eq = ExperienceContextModel.objects.filter(uid=uid,experience_type=1).values();
+        # userqs = Device_User.objects.filter(userID=userID).values('is_experience')
+
         if mold:
             qs = qs.filter(bucket__mold=mold)
         else:
             qs = qs.all()
+
+        if eq:
+            qs.exclude(price=0.00)
+
         qs = qs.values("id", "title", "content", "price",
                        "day", "currency", "bucket__storeDay",
                        "bucket__bucket", "bucket__area", "type",
-                       "commodity_code", "commodity_type")
+                      "commodity_code", "commodity_type")
+
+
         if qs.exists():
             ql = list(qs)
             from operator import itemgetter
@@ -981,3 +993,121 @@ class CloudStorageView(View):
                                                           'error_code': 0})
                 else:
                     return response.json(10, '生成订单错误.')
+
+    # 生成体验订单
+    def do_experience_order(self, request_dict, userID, response):
+        uid = request_dict.get('uid', None)
+        channel = request_dict.get('channel', None)
+        commodity_code = request_dict.get('commodity_code', None)
+        pay_type = int(request_dict.get('pay_type', None))
+        rank = request_dict.get('rank', None)
+
+        if uid == None or channel == None or commodity_code == None or pay_type == None or rank == None:
+            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(12)
+        smqs = Store_Meal.objects.filter(commodity_code=commodity_code, type=pay_type). \
+            values('currency', 'price', 'content', 'day', 'commodity_type', 'title', 'content')
+        if not smqs.exists():
+            return response.json(10, '套餐不存在')
+        currency = smqs[0]['currency']
+        price = smqs[0]['price']
+        content = smqs[0]['content']
+        day = smqs[0]['day']
+        commodity_type = smqs[0]['commodity_type']
+        # ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=nowTime). \
+        #     values("bucket__storeDay", "bucket__region", "endTime")
+        # if ubqs.exists():
+        #     ubqs_count = ubqs.count()
+        #     ubq = ubqs[ubqs_count - 1, ubqs_count]
+        #     new_starTime = ubq['endTime'] + 1
+        nowTime = int(time.time())
+        orderID = CommonService.createOrderID()
+        if pay_type == 0:
+            Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
+                                       desc=content, payType=pay_type, payTime=nowTime,
+                                       price=price, currency=currency, addTime=nowTime, updTime=nowTime,
+                                       endTime=(nowTime + int(day) * 3600 * 24), pay_url="体验版",
+                                       commodity_code=commodity_code, commodity_type=commodity_type,
+                                       rank_id=rank)
+
+            order_qs = Order_Model.objects.filter(orderID=orderID)
+            nowTime = int(time.time())
+            order_list = order_qs.values("UID", "channel", "commodity_code")
+            UID = order_list[0]['UID']
+            channel = order_list[0]['channel']
+            commodity_code = order_list[0]['commodity_code']
+            smqs = Store_Meal.objects.filter(commodity_code=commodity_code). \
+                values("day", "bucket_id", "bucket__storeDay")
+            bucketId = smqs[0]['bucket_id']
+            if not smqs.exists():
+                return response.json(0, '套餐已删除')
+            addTime = int(smqs[0]["day"]) * 24 * 3600
+            # ##
+            ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel, endTime__gte=nowTime). \
+                values("bucket__storeDay", "bucket__region", "endTime")
+            if ubqs.exists():
+                ubqs_count = ubqs.count()
+                print(ubqs_count)
+                ubq = ubqs[ubqs_count - 1]
+                print(ubq)
+                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
+            else:
+                ub_cqs = UID_Bucket.objects.create \
+                    (uid=UID, channel=channel, bucket_id=bucketId, endTime=nowTime + addTime)
+                uid_bucket_id = ub_cqs.id
+            order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
+
+            # return response.json(0)
+            red_url = "{SERVER_DOMAIN}cloudstorage/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
+            return HttpResponseRedirect(red_url)
+        else:
+            Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
+                                       desc=content, payType=pay_type, payTime=nowTime,
+                                       price=price, currency=currency, addTime=nowTime, updTime=nowTime,
+                                       endTime=(nowTime + int(day) * 3600 * 24), pay_url="体验版",
+                                       commodity_code=commodity_code, commodity_type=commodity_type,
+                                       rank_id=rank)
+            order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
+
+            if not order_qs.exists():
+                return response.json(404)
+
+            nowTime = int(time.time())
+            order_list = order_qs.values("UID", "commodity_code", "channel")
+            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")
+            bucketId = smqs[0]['bucket_id']
+            if not smqs.exists():
+                return response.json(0, '套餐已删除')
+            addTime = int(smqs[0]["day"]) * 24 * 3600
+            ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel). \
+                values("bucket_id", "endTime", "bucket__storeDay")
+            nowTime = int(time.time())
+            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
+            else:
+                ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
+                                                   endTime=nowTime + addTime)
+                uid_bucket_id = ub_cqs.id
+            order_qs.update \
+                (payTime=nowTime, 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 JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
+            #                                       'result': {"redirectUrl": "体验版", "orderID": orderID},
+            #                                       'error_code': 0})

+ 13 - 0
Model/models.py

@@ -1065,3 +1065,16 @@ class EquipmentVersionLimitModel(models.Model):
         db_table = 'equipment_version_limit'
         verbose_name = '设备版本信息限制表'
         verbose_name_plural = verbose_name
+
+class ExperienceContextModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    experience_type = models.SmallIntegerField(default=0,verbose_name='体验类型') # 0: 免费体验套餐, 1: 激活码
+    uid = models.CharField(max_length=20, default='', verbose_name='设备uid')
+    do_time = models.IntegerField(default=0, verbose_name='激活时间')
+    # is_experience = models.SmallIntegerField(default=0, verbose_name=u'是否云存体验用户')  # 0:不是体验用户,1:是体验用户
+
+    class Mete:
+        db_table = 'experience_context'
+        verbose_name = '设备体验表'
+        verbose_name_plural = verbose_name
+