chenjunkai 6 年之前
父節點
當前提交
3dd4f55edf
共有 4 個文件被更改,包括 168 次插入189 次删除
  1. 69 80
      Controller/AccessLog.py
  2. 80 86
      Controller/MealManage.py
  3. 6 7
      Controller/OTAEquipment.py
  4. 13 16
      Controller/UserController.py

+ 69 - 80
Controller/AccessLog.py

@@ -83,7 +83,9 @@ class AccessLog(View):
             from django.db import connection
             cursor = connection.cursor()
             cursor.execute("TRUNCATE TABLE `access_log`")
-        return response.json(0)
+            return response.json(0)
+        else:
+            return response.json(404)
 
     # 搜索日志(多条件)
     def search_by_admin(self, request_dict, userID, response):
@@ -93,81 +95,72 @@ class AccessLog(View):
         content = request_dict.get('content', None)
         starttime = request_dict.get('starttime', None)
         endtime = request_dict.get('endtime', None)
-        if page is not None and line is not None:
-            check_perm = ModelService.check_permission(userID=userID, permID=20)
-            if check_perm is True:
-                try:
-                    content = json.loads(content)
-                    kwargs = {}
-                    for (k, v) in content.items():
-                        if v is not None and v != u'':
-                            if k == 'content':
-                                kwargs[k + '__icontains'] = v
-                            else:
-                                kwargs[k] = v
-                    queryset = Access_Log.objects.filter(**kwargs).order_by(order)
-                except Exception as e:
-                    return response.json(444)
-                if starttime is not None and starttime != '' and endtime is not None and endtime != '':
-                    startt = datetime.datetime.fromtimestamp(int(starttime))
-                    starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
-                    endt = datetime.datetime.fromtimestamp(int(endtime))
-                    endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
-                    queryset = queryset.filter(time__range=(starttime, endtime))
-                elif starttime is not None and starttime != '':
-                    startt = datetime.datetime.fromtimestamp(int(starttime))
-                    starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
-                    queryset = queryset.filter(time__gte=starttime)
-                elif endtime is not None and endtime != '':
-                    endt = datetime.datetime.fromtimestamp(int(endtime))
-                    endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
-                    queryset = queryset.filter(time__lte=endtime)
-                if queryset.exists():
-                    count = queryset.count()
-                    res = queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
-                    send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0, {'datas': [], 'count': 0})
-            else:
-                return response.json(404)
-        else:
+        if not page or not line:
             return response.json(444, 'page,line')
+        check_perm = ModelService.check_permission(userID=userID, permID=20)
+        if check_perm is not True:
+            return response.json(404)
+        try:
+            content = json.loads(content)
+            kwargs = {}
+            for (k, v) in content.items():
+                if v is not None and v != u'':
+                    if k == 'content':
+                        kwargs[k + '__icontains'] = v
+                    else:
+                        kwargs[k] = v
+            queryset = Access_Log.objects.filter(**kwargs).order_by(order)
+        except Exception as e:
+            return response.json(444)
+        if starttime is not None and starttime != '' and endtime is not None and endtime != '':
+            startt = datetime.datetime.fromtimestamp(int(starttime))
+            starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
+            endt = datetime.datetime.fromtimestamp(int(endtime))
+            endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+            queryset = queryset.filter(time__range=(starttime, endtime))
+        elif starttime is not None and starttime != '':
+            startt = datetime.datetime.fromtimestamp(int(starttime))
+            starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
+            queryset = queryset.filter(time__gte=starttime)
+        elif endtime is not None and endtime != '':
+            endt = datetime.datetime.fromtimestamp(int(endtime))
+            endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+            queryset = queryset.filter(time__lte=endtime)
+        if queryset.exists():
+            count = queryset.count()
+            res = queryset[(page - 1) * line:page * line]
+            send_json = CommonService.qs_to_dict(res)
+            send_json['count'] = count
+            return response.json(0, send_json)
+        return response.json(0, {'datas': [], 'count': 0})
 
 
 @ratelimit(key='ip', rate='3/m')
 def statisticsPath(request):
     request.encoding = 'utf-8'
     if request.method == 'GET':
-        request_dict = request.GET
+        token = request.GET.get('token', None)
     if request.method == 'POST':
-        request_dict = request.POST
-    token = request_dict.get('token', None)
+        token = request.POST.get('token', None)
     response = ResponseObject()
     was_limited = getattr(request, 'limited', False)
     # 限制同一个ip该接口一分钟不能访问超过两次
     if was_limited is True:
         return response.json(5)
-    if token is not None:
-        tko = TokenObject(token)
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID
-            own_perm = ModelService.check_permission(userID, 10)
-            if own_perm is True:
-                paths = TemplateService.log_api()
-                datas = {}
-                for path in paths:
-                    count = Access_Log.objects.filter(operation=path).count()
-                    datas[path] = count
-                return response.json(0, {'datas': datas})
-            else:
-                return response.json(404)
-        else:
-            return response.json(tko.code)
-    else:
-        return response.json(444, 'token')
-
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code != 0:
+        return response.json(tko.code)
+    userID = tko.userID
+    own_perm = ModelService.check_permission(userID, 10)
+    if own_perm is not True:
+        return response.json(404)
+    paths = TemplateService.log_api()
+    datas = {}
+    for path in paths:
+        count = Access_Log.objects.filter(operation=path).count()
+        datas[path] = count
+    return response.json(0, {'datas': datas})
 
 # 按季度删除访问日志
 def deleteSn(request):
@@ -179,20 +172,16 @@ def deleteSn(request):
     token = request_dict.get('token', None)
     days = request_dict.get('days', None)
     response = ResponseObject()
-    if token and days:
-        tko = TokenObject(token)
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID
-            own_perm = ModelService.check_permission(userID, 10)
-            if own_perm is True:
-                dltime = datetime.datetime.now()-datetime.timedelta(days=int(days))
-                # count = Access_Log.objects.filter(time__gte=dltime).count()
-                count = Access_Log.objects.filter(time__gte=dltime).delete()
-                return response.json(0,count)
-            else:
-                return response.json(404)
-        else:
-            return response.json(tko.code)
-    else:
-        return response.json(444, 'token')
+    if not days:
+        return response.json(444,'days')
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code != 0:
+        return response.json(tko.code)
+    userID = tko.userID
+    own_perm = ModelService.check_permission(userID, 10)
+    if own_perm is not True:
+        return response.json(404)
+    dltime = datetime.datetime.now() - datetime.timedelta(days=int(days))
+    count = Access_Log.objects.filter(time__gte=dltime).delete()
+    return response.json(0, count)

+ 80 - 86
Controller/MealManage.py

@@ -11,16 +11,18 @@
 @file: MealManage.py
 @Contact: chanjunkai@163.com
 """
-from django.views.generic.base import View
+import traceback
+from django.db.models import Q, F
+from django.utils import timezone
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
-from Service.ModelService import ModelService
-from Service.CommonService import CommonService
+from django.views.generic.base import View
+
 from Model.models import Store_Meal, VodBucketModel
-import traceback
-from django.utils import timezone
-from Object.TokenObject import TokenObject
 from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Service.CommonService import CommonService
+from Service.ModelService import ModelService
 
 '''
 http://192.168.136.40:8077/meal/manage?operation=add&token=local&title=套餐A&price=$199&content=存7天&day=7&id=1
@@ -70,9 +72,6 @@ class MealManage(View):
             return response.json(444, 'operation')
 
     def add(self, request_dict, userID, response):
-        own_perm = ModelService.check_permission(userID=userID, permID=40)
-        if own_perm is not True:
-            return response.json(404)
         title = request_dict.get('title', None)
         id = request_dict.get('id', None)
         price = request_dict.get('price', None)
@@ -82,11 +81,15 @@ class MealManage(View):
         bucketID = request_dict.get('bucketID', None)
         if not title or not id or not price or not day or not content:
             return response.json(444, 'title,id,price,content,day,bucketID')
+        own_perm = ModelService.check_permission(userID=userID, permID=40)
+        if own_perm is not True:
+            return response.json(404)
         try:
             bucketQs = VodBucketModel.objects.filter(id=bucketID)
             if Store_Meal.objects.filter(id=id):
-                return response.json(10,'已存在')
-            store_meal = Store_Meal(id=id, title=title, price=price, content=content, day=day, bucket_id=bucketID,currency=currency)
+                return response.json(10, '已存在')
+            store_meal = Store_Meal(id=id, title=title, price=price, content=content, day=day, bucket_id=bucketID,
+                                    currency=currency)
             store_meal.save()
         except Exception:
             errorInfo = traceback.format_exc()
@@ -111,8 +114,9 @@ class MealManage(View):
         line = int(request_dict.get('line', None))
         if page is None or line is None:
             return response.json(444)
-        qs = Store_Meal.objects.values("id", "title", "price", "content", "day", "add_time", "update_time", "currency","bucket_id",
-                                       "bucket__bucket","bucket__storeDay")
+        qs = Store_Meal.objects.values("id", "title", "price", "content", "day", "add_time", "update_time", "currency",
+                                       "bucket_id",
+                                       "bucket__bucket", "bucket__storeDay")
         res = {}
         if qs.exists():
             res['count'] = qs.count()
@@ -120,81 +124,71 @@ class MealManage(View):
         return response.json(0, res)
 
     def update(self, request_dict, userID, response):
+        id = request_dict.get('id', None)
+        title = request_dict.get('title', None)
+        price = request_dict.get('price', None)
+        day = request_dict.get('day', None)
+        content = request_dict.get('content', None)
+        currency = request_dict.get('currency', None)
+        bucketID = request_dict.get('bucketID', None)
+        if not id or not title or not price or not content or not day:
+            return response.json(444, 'id, title, price, content, day')
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
-            id = request_dict.get('id', None)
-            title = request_dict.get('title', None)
-            price = request_dict.get('price', None)
-            day = request_dict.get('day', None)
-            content = request_dict.get('content', None)
-            currency = request_dict.get('currency', None)
-            bucketID = request_dict.get('bucketID', None)
-            param_flag = CommonService.get_param_flag(
-                data=[id, title, price, content, day])
-            if param_flag is True:
-                try:
-                    store_meal = Store_Meal.objects.get(id=id)
-                    now_time = timezone.localtime(timezone.now())
-                    print(now_time)
-                    store_meal.title = title
-                    store_meal.price = price
-                    store_meal.content = content
-                    store_meal.day = day
-                    if bucketID:
-                        store_meal.bucket_id = bucketID
-                    if currency:
-                        store_meal.currency = currency
-                    store_meal.save()
-                except Exception:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                    return response.json(424, {'details': errorInfo})
-                else:
-                    return response.json(0, {'update_id': store_meal.id, 'update_time': str(now_time)})
-            else:
-                return response.json(444)
-        else:
             return response.json(404)
+        try:
+            store_meal = Store_Meal.objects.get(id=id)
+            now_time = timezone.localtime(timezone.now())
+            print(now_time)
+            store_meal.title = title
+            store_meal.price = price
+            store_meal.content = content
+            store_meal.day = day
+            if bucketID:
+                store_meal.bucket_id = bucketID
+            if currency:
+                store_meal.currency = currency
+            store_meal.save()
+        except Exception:
+            errorInfo = traceback.format_exc()
+            print(errorInfo)
+            return response.json(424, {'details': errorInfo})
+        else:
+            return response.json(0, {'update_id': store_meal.id, 'update_time': str(now_time)})
 
     def delete(self, request_dict, userID, response):
+        id_list = request_dict.getlist('id', None)
+        if not id_list:
+            return response.json(444, 'id')
         own_perm = ModelService.check_permission(userID=userID, permID=10)
-        if own_perm is True:
-            id_list = request_dict.getlist('id', None)
-            param_flag = CommonService.get_param_flag(data=[id_list])
-            if param_flag is True:
-                try:
-                    for id in id_list:
-                        Store_Meal.objects.filter(id=id).delete()
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
-                else:
-                    return response.json(0)
-            else:
-                return response.json(444)
-        else:
+        if own_perm is not True:
             return response.json(404)
+        try:
+            for id in id_list:
+                Store_Meal.objects.filter(id=id).delete()
+        except Exception as e:
+            errorInfo = traceback.format_exc()
+            print(errorInfo)
+            return response.json(424, {'details': repr(e)})
+        else:
+            return response.json(0)
 
     def find(self, request_dict, userID, response):
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('line', None))
+        if not page or not line:
+            return response.json(444, 'page,line')
         own_perm = ModelService.check_permission(userID=userID, permID=30)
-        if own_perm is True:
-            page = int(request_dict.get('page', None))
-            line = int(request_dict.get('line', None))
-            param_flag = CommonService.get_param_flag(data=[page, line])
-            if param_flag is True:
-                queryset = Store_Meal.objects.all()
-                if queryset.exists():
-                    count = queryset.count()
-                    res = queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
-                    send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0)
-            else:
-                return response.json(444)
-        else:
+        if own_perm is not True:
             return response.json(404)
+        qs = Store_Meal.objects.all()
+        if qs.exists():
+            count = qs.count()
+            res = qs[(page - 1) * line:page * line]
+            send_json = CommonService.qs_to_dict(res)
+            send_json['count'] = count
+            return response.json(0, send_json)
+        return response.json(0)
 
 
 '''
@@ -236,9 +230,11 @@ class MealView(View):
             return response.json(414)
 
     def do_query(self, response):
-        qs = Store_Meal.objects.all().values("id", "title", "content", "price", "day", "currency","bucket__storeDay",
-                                             "bucket__bucket","bucket__area")
-
+        qs = Store_Meal.objects.all().annotate(area=F("bucket__area")).values("id", "title", "content", "price", "day",
+                                                                              "currency", "bucket__storeDay",
+                                                                              "bucket__bucket", "bucket__area")
+        print(qs)
+        return response.json(0, list(qs))
         if qs.exists():
 
             res = {}
@@ -247,17 +243,15 @@ class MealView(View):
                     res[q['bucket__area']] = []
                 res[q['bucket__area']].append(q)
             # res['cloudpng'] = 'https://www.dvema.com/web/images/cloud_banner.png'
-            result = {'meals':res,'extra':{'cloud_banner':'https://www.dvema.com/web/images/cloud_banner.png'}}
-            return response.json(0,result)
+            result = {'meals': res, 'extra': {'cloud_banner': 'https://www.dvema.com/web/images/cloud_banner.png'}}
+            return response.json(0, result)
         else:
             return response.json(0, [])
 
     def do_query_list(self, response):
-        qs = Store_Meal.objects.all().values("id", "title", "content", "price", "day", "currency","bucket__storeDay",
-                                             "bucket__bucket")
+        qs = Store_Meal.objects.all(). \
+            values("id", "title", "content", "price", "day", "currency", "bucket__storeDay", "bucket__bucket")
         if qs.exists():
-            # res = CommonService.qs_to_list(qs)
             return response.json(0, list(qs))
         else:
             return response.json(0, [])
-

+ 6 - 7
Controller/OTAEquipment.py

@@ -196,15 +196,15 @@ def getEquipmentVersionInterface(request):
     ov = request_dict.get('ov', None)
     if not code:
         return response.json(444, 'code')
-    equipmentValid = Equipment_Version.objects.filter(code=code, status=1, lang='en').order_by('-data_joined')
-    if not equipmentValid.exists():
+    eqs = Equipment_Version.objects.filter(code=code, status=1, lang='en').order_by('-data_joined')
+    if not eqs.exists():
         return response.json(900)
     if ov is not None:
         # 判断大小
-        nv = equipmentValid[0].softwareVersion
+        nv = eqs[0].softwareVersion
         if ov > nv:
             return response.json(900)
-    equipment = equipmentValid[0]
+    equipment = eqs[0]
     return response.json(0, {'softwareVersion': equipment.softwareVersion})
 
 
@@ -213,13 +213,12 @@ def getUpdataFileUrlInterface(request):
     response = ResponseObject()
     if request.method == "POST":
         request.encoding = 'utf-8'
-        request_dict = request.POST
+        code = request.POST.get('code', None)
     elif request.method == "GET":
         request.encoding = 'utf-8'
-        request_dict = request.GET
+        code = request.GET.get('code', None)
     else:
         return response.json(801)
-    code = request_dict.get('code', None)
     if not code:
         return response.json(444, 'code')
     eq = Equipment_Version.objects.filter(code=code, status=1, lang='en').order_by('-data_joined')

+ 13 - 16
Controller/UserController.py

@@ -15,7 +15,6 @@ from Model.models import Role
 import traceback, datetime
 
 import simplejson as json
-from django.contrib import auth
 from django.contrib.auth.hashers import make_password, check_password  # 对密码加密模块
 from django.http import HttpResponseRedirect
 from django.utils.decorators import method_decorator
@@ -984,21 +983,19 @@ class v2LoginView(TemplateView):
     def validates(self, request_dict, response):
         username = request_dict.get('userName', None)
         password = request_dict.get('userPwd', None)
-        # mcode = request_dict.get('mobileMechanicalCode', '')
-        if username is not None and password is not None:
-            username = username.strip()
-            password = password.strip()
-            data_valid = DataValid()
-            if data_valid.email_validate(username):
-                return self.do_email_login(username, password, response)
-            elif data_valid.mobile_validate(username):
-                return self.do_phone_login(username, password, response)
-            elif data_valid.name_validate(username):
-                return self.do_name_login(username, password, response)
-            else:
-                return response.json(107)
-        else:
+        if not username or not password:
             return response.json(111)
+        username = username.strip()
+        password = password.strip()
+        data_valid = DataValid()
+        if data_valid.email_validate(username):
+            return self.do_email_login(username, password, response)
+        elif data_valid.mobile_validate(username):
+            return self.do_phone_login(username, password, response)
+        elif data_valid.name_validate(username):
+            return self.do_name_login(username, password, response)
+        else:
+            return response.json(107)
 
     def do_email_login(self, email, password, response):
         user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
@@ -1051,7 +1048,7 @@ class v2LoginView(TemplateView):
             res['username'] = user_list[0]["username"] if user_list[0]["username"] is not None else ''
             res['userEmail'] = user_list[0]["userEmail"] if user_list[0]["userEmail"] is not None else ''
             res['phone'] = user_list[0]["phone"] if user_list[0]["phone"] is not None else ''
-            print(res)
+            # print(res)
             return response.json(0, res)
         else:
             return response.json(tko.code)