Procházet zdrojové kódy

Merge branch 'dev' into lang

lang před 4 roky
rodič
revize
cd8478045d

+ 7 - 0
Ansjer/config.py

@@ -33,6 +33,12 @@ AWS_SES_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
 AWS_SES_ACCESS_SECRET = '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'
 AWS_SES_ACCESS_REGION = 'us-east-1'
 AWS_SES_ACCESS_REGION_WEST = 'us-west-1'
+
+# Iot Core
+AWS_IOT_SES_ACCESS_ID = 'AKIA2E67UIMD62VUBV5I'
+AWS_IOT_SES_ACCESS_SECRET = '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'
+AWS_IOT_SES_ACCESS_REGION = 'us-east-1'
+
 AWS_BUCKET = 'ansjertest'
 # 设定离线时间为5分钟
 OFF_LINE_TIME_DELTA = 5
@@ -151,6 +157,7 @@ DEVICE_TYPE = {
     14: 'C190',
     15: 'C199_PRO',
     17: 'C289',
+    18: 'C308',
     10001: 'DVRPTZ'
 }
 

+ 7 - 3
Ansjer/urls.py

@@ -10,9 +10,9 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     StsOssController, UIDPreview, OssCrd, SysMsg, UidUser, EquipmentManagerV2, EquipmentManagerV3, PushDeploy, \
     AppSetController, \
     ApplicationController, UserExController, CloudStorage, TestApi, UserBrandControllerV2, \
-    StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, CDKController, \
-    DeviceTypeController, CloudTest, Cloudsum
-
+    StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, \
+    CDKController, \
+    DeviceTypeController, CloudTest, Cloudsum, IotCoreController
 
 urlpatterns = [
     url(r'^testApi/(?P<operation>.*)$', TestApi.testView.as_view()),
@@ -107,6 +107,7 @@ urlpatterns = [
     path('access/staticPath/', AccessLog.statisticsPath),
     path('access/deleteSn/', AccessLog.deleteSn),
     path('eq/del', EquipmentInfo.deleteExpireEquipmentInfo),
+    path('eq/delById', EquipmentInfo.deleteExpireEquipmentInfoById),
     # 新需求ota接口
     url(r'^OTA/getNewVer', OTAEquipment.getNewVerInterface),
     url(r'^OTA/uploadsPack$', OTAEquipment.uploadOTAInterfaceView.as_view()),
@@ -266,6 +267,9 @@ urlpatterns = [
     #云存服务统计
     url(r'^Cloudsum/(?P<operation>.*)$', Cloudsum.Cloudsum.as_view()),
 
+    #Iot Core
+    url(r'iot/(?P<operation>.*)$', IotCoreController.IotCoreView.as_view()),
+
     re_path('(?P<path>.*)', LogManager.errorPath),
 
 

+ 14 - 11
Controller/CDKController.py

@@ -81,7 +81,7 @@ class CDKView(View):
             elif operation == 'saveOrEditCDK':
                 return self.saveOrEditCDK(request_dict, response)
             elif operation == 'downloadCDK':
-                return self.downloadCDK(response)
+                return self.downloadCDK(request_dict, response)
 
     def createCDK(self, request_dict, response):
         cdk_num = request_dict.get("cdknum", None)
@@ -115,7 +115,7 @@ class CDKView(View):
         cdk = request_dict.get('cdk', None)
         order = request_dict.get('order', None)
         is_activate = request_dict.get('is_activate', None)
-        lang = request_dict.get('lang', None)
+        lang = request_dict.get('lang', 'cn')
         searchVal = ''
         if cdk:
             searchVal = cdk.strip()
@@ -134,8 +134,6 @@ class CDKView(View):
                 elif is_activate:
                     cdk_qs = cdk_qs.filter(is_activate=searchVal)
 
-            if not lang:
-                lang = 'cn'
 
             cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
             cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
@@ -161,7 +159,7 @@ class CDKView(View):
 
     def deleteCDK(self, request_dict, response):
         cdk_id = request_dict.get("id", None)
-        lang = request_dict.get("lang", None)
+        lang = request_dict.get("lang", 'cn')
         try:
             CDKcontextModel.objects.get(cdk=cdk_id).delete()
         except Exception as e:
@@ -192,8 +190,6 @@ class CDKView(View):
                     elif is_activate:
                         cdk_qs = cdk_qs.filter(is_activate=searchVal)
 
-                if not lang:
-                    lang = 'cn'
 
                 cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
                 cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
@@ -236,13 +232,20 @@ class CDKView(View):
         else:
             return response.json(0)
 
-    def downloadCDK(self, response):
+    def downloadCDK(self,request_dict, response):
+        region = request_dict.get('region', None)
         content = ''
-        cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0).values('cdk')
-        content += '激活码\n'
+        if region == 'cn':
+            # 下载国内未使用激活码
+            content += '激活码(国内)\n'
+            cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0, rank__bucket__mold=0).values('cdk')
+        else:
+            # 下载国外未使用激活码
+            content += '激活码(国外)\n'
+            cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0, rank__bucket__mold=1).values('cdk')
         for cdk_inactivate in cdk_inactivate_qs:
             content += cdk_inactivate['cdk'] + '\n'
-        print(content)
+        # print(content)
 
         response = StreamingHttpResponse(content)
         response['Content-Type'] = 'application/octet-stream'

+ 12 - 0
Controller/EquipmentInfo.py

@@ -304,3 +304,15 @@ def deleteExpireEquipmentInfo(request):
     return response.json(0)
 
 
+# 按季度删除访问日志
+def deleteExpireEquipmentInfoById(request):
+    response = ResponseObject()
+    id = int(request.GET.get('id', None))
+
+    if id is None:
+        return response.json(0)
+
+    Equipment_Info.objects.filter(id__lte=id).delete()
+    return response.json(0)
+
+

+ 47 - 0
Controller/IotCoreController.py

@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+import boto3
+from django.views import View
+
+from Ansjer.config import AWS_IOT_SES_ACCESS_REGION, AWS_IOT_SES_ACCESS_ID, \
+    AWS_IOT_SES_ACCESS_SECRET
+from Object.ResponseObject import ResponseObject
+
+
+class IotCoreView(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        operation = kwargs.get('operation', None)
+        return self.validate(operation, request_dict)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        operation = kwargs.get('operation', None)
+        return self.validate(operation, request_dict)
+
+    def validate(self, operation, request_dict):
+
+        response = ResponseObject()
+
+        if operation == 'createProvisioningClaim':
+            return self.create_provisioning_claim(response)
+        else:
+            return response.json(404)
+
+    def create_provisioning_claim(self, response):
+        client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_REGION, aws_access_key_id=AWS_IOT_SES_ACCESS_ID,
+                              aws_secret_access_key=AWS_IOT_SES_ACCESS_SECRET)
+        result = client.create_provisioning_claim(templateName='Ansjer_Iot_Queue')
+
+        res = {
+            'certificateId': result['certificateId'],
+            'certificatePem': result['certificatePem'],
+            'publicKey': result['keyPair']['PublicKey'],
+            'privateKey': result['keyPair']['PrivateKey'],
+            'endpoint': 'a2rqy12o004ad8-ats.iot.us-east-1.amazonaws.com'
+        }
+
+        return response.json(0, {'res': res})

+ 25 - 19
Controller/MealManage.py

@@ -106,7 +106,7 @@ class MealManage(View):
             bucketQs = VodBucketModel.objects.filter(id=bucketID)
             if Store_Meal.objects.filter(id=id):
                 return response.json(10, '已存在')
-            store_meal = Store_Meal(id=id, price=price, day=day, bucket_id=bucketID, commodity_code = commodity_code,
+            store_meal = Store_Meal(id=id, price=price, day=day, bucket_id=bucketID, commodity_code=commodity_code,
                                     currency=currency, virtual_price=virtual_price, is_discounts=is_discounts,
                                     discount_price=discount_price, expire=expire, symbol=symbol)
             store_meal.save()
@@ -130,28 +130,24 @@ class MealManage(View):
                     'update_time': str(store_meal.update_time)})
 
     def query(self, request_dict, response):
-
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
-        lang = request_dict.get('lang', None)
+        lang = request_dict.get('lang', 'cn')
         if page is None or line is None:
             return response.json(444)
-        if not lang:
-            lang = 'cn'
 
         qs = Store_Meal.objects.filter(lang__lang=lang)
-        qs = qs.annotate(title=F('lang__title'),content=F('lang__content'))
-        qs = qs.values("id", "price", "day", "add_time", "update_time", "currency"
-                                       , "bucket_id", "commodity_type", "commodity_code", "virtual_price", "is_discounts"
-                                       , "discount_price", "expire", "symbol"
-                                       , "bucket__bucket", "bucket__area", "bucket__storeDay", "title")
+        qs = qs.annotate(title=F('lang__title'), content=F('lang__content'))
+        qs = qs.values("id", "title", "price", "day", "add_time", "update_time", "currency", "expire", "symbol"
+                       , "commodity_type", "commodity_code", "virtual_price", "is_discounts", "discount_price"
+                       , "bucket_id", "bucket__bucket", "bucket__area", "bucket__storeDay", "bucket__mold")
         res = {}
         if qs.exists():
             ql = list(qs)
             from operator import itemgetter
             from itertools import groupby
             ql.sort(key=itemgetter('bucket__area'))
-            ql=CommonService.qs_to_list(ql[(page - 1) * line:page * line])
+            ql = CommonService.qs_to_list(ql[(page - 1) * line:page * line])
             # for area, items in groupby(ql, key=itemgetter('bucket__area')):
             items_list = list(ql)
             for key, val in enumerate(items_list):
@@ -255,15 +251,25 @@ class MealManage(View):
         # 查询套餐语言
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
+        id = request_dict.get('id', None)
         if page is None or line is None:
             return response.json(444)
 
-        # lang_qs = Lang.objects.values('id', 'lang', 'title', 'content', 'store_meal__id')
-        storeMeal_qs = Store_Meal.objects.filter(lang__isnull=False).values('id', 'lang__id', 'lang__lang', 'lang__title', 'lang__content', 'lang__discount_content')
-        count = storeMeal_qs.count()
-        lang_qs = storeMeal_qs[(page - 1) * line:page * line]
+        if id:
+            # 如果传入id,只查询id下的语言
+            storeMeal_lang_qs = Store_Meal.objects.filter(id=id, lang__isnull=False).values('id', 'lang__id',
+                                                                                            'lang__lang',
+                                                                                            'lang__title',
+                                                                                            'lang__content',
+                                                                                            'lang__discount_content')
+        else:
+            storeMeal_lang_qs = Store_Meal.objects.filter(lang__isnull=False).values('id', 'lang__id', 'lang__lang',
+                                                                                     'lang__title', 'lang__content',
+                                                                                     'lang__discount_content')
+        count = storeMeal_lang_qs.count()
+        storeMeal_lang_qs = storeMeal_lang_qs[(page - 1) * line:page * line]
         res = {
-            'datas': list(lang_qs),
+            'datas': list(storeMeal_lang_qs),
             'count': count
         }
         return response.json(0, res)
@@ -287,7 +293,7 @@ class MealManage(View):
             # 数据不存在,lang表创建数据
             Lang.objects.create(lang=lang, title=title, content=content, discount_content=discount_content)
             lang_obj = Lang.objects.filter(lang=lang, title=title, content=content, discount_content=discount_content)
-        storeMeal_qs.lang.add(*lang_obj)    # store_meal表添加语言数据
+        storeMeal_qs.lang.add(*lang_obj)  # store_meal表添加语言数据
         return response.json(0)
 
     def edit_language(self, request_dict, response):
@@ -311,7 +317,7 @@ class MealManage(View):
             # 数据不存在,lang表创建数据
             Lang.objects.create(lang=lang, title=title, content=content, discount_content=discount_content)
             lang_obj = Lang.objects.filter(lang=lang, title=title, content=content, discount_content=discount_content)
-        storeMeal_qs.lang.add(*lang_obj)    # store_meal表添加语言数据
+        storeMeal_qs.lang.add(*lang_obj)  # store_meal表添加语言数据
         return response.json(0)
 
     def delete_language(self, request_dict, response):
@@ -394,4 +400,4 @@ class MealView(View):
             }
             return response.json(0, result)
         else:
-            return response.json(0)
+            return response.json(0)

+ 2 - 2
Controller/SysManage.py

@@ -104,8 +104,8 @@ def initMsgFunc(request):
     if tko.code == 0:
         userID = tko.userID
         sm_count = SysMsgModel.objects.filter(userID_id=userID, status=0).count()
-        eq_count = Equipment_Info.objects.filter(status=False,userID_id=userID).count()
-        rq_count = Equipment_Info.objects.filter(status=False, eventType=57,userID_id=userID).count()
+        eq_count = Equipment_Info.objects.filter(userID_id=userID).filter(status=False).count()
+        rq_count = Equipment_Info.objects.filter(userID_id=userID).filter(eventType=57, status=False,).count()
         uid_reset_count = Device_Info.objects.filter(userID_id=userID, isExist=2).count()
         res = {
             'sm_count': sm_count,  # 系统消息未读数量

+ 3 - 1
Controller/VodBucket.py

@@ -18,7 +18,8 @@ from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
-from Model.models import VodBucketModel, UID_Bucket, Store_Meal, Device_Info, OssCrdModel, VodHlsModel, StsCrdModel
+from Model.models import VodBucketModel, UID_Bucket, Store_Meal, Device_Info, OssCrdModel, VodHlsModel, StsCrdModel, \
+    Unused_Uid_Meal
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.ModelService import ModelService
@@ -249,6 +250,7 @@ class UidBucketView(View):
                 # OssCrdModel.objects.filter(uid=uid, channel=channel).delete()
                 VodHlsModel.objects.filter(uid=uid).delete()
                 StsCrdModel.objects.filter(uid=uid).delete()
+                Unused_Uid_Meal.objects.filter(uid=uid).delete()
         except Exception as e:
             return response.json(10, repr(e))
         else: