Эх сурвалжийг харах

Merge branch 'pzb' of http://192.168.136.45:3000/SERVER/AnsjerServer into pzb

pzb 6 жил өмнө
parent
commit
1097bceff5

+ 50 - 37
Controller/DetectController.py

@@ -26,6 +26,7 @@ from Object.UidTokenObject import UidTokenObject
 from Ansjer.config import SERVER_DOMAIN
 import json
 import requests
+from Model.models import Equipment_Info
 
 
 class DetectControllerView(View):
@@ -108,33 +109,24 @@ class NotificationView(View):
         uidToken = request_dict.get('uidToken', None)
         utko = UidTokenObject(uidToken)
         uid = utko.UID
-        uaqs = UID_App.objects.filter(uid=uid).values('token_val', 'app_type', 'appBundleId', 'push_type','uid')
+        uaqs = UID_App.objects.filter(uid=uid). \
+            values('token_val', 'app_type', 'appBundleId', 'push_type', 'uid')
         if uaqs.exists():
-            push_type = uaqs[0]['push_type']
-            # token_val = uaqs[0]['token_val']
-            # appBundleId = uaqs[0]['appBundleId']
-            # app_type = uaqs[0]['app_type']
-
-            # ios apns
-            if push_type == 0:
-                return self.do_apns(request_dict, uaqs[0], response)
-            # android gcm
-            elif push_type == 1:
-                return self.do_gmc(request_dict, uaqs[0], response)
-            # android jpush
-            elif push_type == 2:
-                return self.do_apns(request_dict, uaqs[0], response)
+            for ua in uaqs:
+                push_type = ua['push_type']
+                # ios apns
+                if push_type == 0:
+                    return self.do_apns(request_dict, ua, response)
+                # android gcm
+                elif push_type == 1:
+                    return self.do_gmc(request_dict, ua, response)
+                # android jpush
+                elif push_type == 2:
+                    return self.do_jpush(request_dict, ua, response)
+            return response.json(0)
+
         else:
             return response.json(173)
-        # # 设备主键uid
-        # if pushType == 'jpush':
-        #     return self.do_jpush(request_dict)
-        # elif pushType == 'gcm':
-        #     return
-        # elif pushType == 'apns':
-        #     return
-        # else:
-        #     return response.json(414)
 
     def do_jpush(self, request_dict, uaql, response):
         jpush_config = {
@@ -199,40 +191,49 @@ class NotificationView(View):
         else:
             return response.json(0)
 
-    def do_gmc(self, request_dict, response):
+    def do_gmc(self, request_dict, uaql, response):
 
         n_time = request_dict.get('n_time')
-        n_type = request_dict.get('n_type')
-        msg = {'n_time': n_time, 'n_type': n_type}
+        appBundleId = uaql['appBundleId']
+        token_val = uaql['token_val']
+        uid = uaql['uid']
+        gcm_config = {'xxx': 'key'}
+        serverKey = gcm_config[appBundleId]
+
+        msg = {'n_time': n_time, 'uid': uid}
         json_data = {
             "collapse_key": "WhatYouWant",
             "data": msg,
             "delay_while_idle": False,
             "time_to_live": 3600,
-            "registration_ids": [
-                'eSooD4fAARg:APA91bEPenBPnSn5aXIQk56QdLOQ1Mu3hevHsekP_0eDpg458y2ZMBP6By2rVsGYIoxZrXxvkkptPKUE9CmUygBxaZXABddUWB9FyLlznRFerC7RG9X5PsEOH58xK9_aTUdkT7p6Ocld']
+            "registration_ids": [token_val]
         }
 
         url = 'https://android.googleapis.com/gcm/send'
-        serverKey = "AAAAb9YP3rk:APA91bHu8u-CTpcd0g6lKPo0WNVqCi8jZub1cPPbSAY9AucT1HxlF65ZDUko9iG8q2ch17bwu9YWHpK1xI1gHSRXCslLvZlXEmHZC0AG3JKg15XuUvlFKACIajUFV-pOeGRT8tM6-31I"
+        # serverKey = "AAAAb9YP3rk:APA91bHu8u-CTpcd0g6lKPo0WNVqCi8jZub1cPPbSAY9AucT1HxlF65ZDUko9iG8q2ch17bwu9YWHpK1xI1gHSRXCslLvZlXEmHZC0AG3JKg15XuUvlFKACIajUFV-pOeGRT8tM6-31I"
 
         data = json.dumps(json_data).encode('utf-8')
         headers = {'Content-Type': 'application/json', 'Authorization': 'key=%s' % serverKey}
         req = requests.post(url, data, headers=headers)
         return response.json(0)
 
-    def do_apns(self, request_dict, response):
-        device_token = request_dict.get('device_token')
-
+    def do_apns(self, request_dict, uaql, response):
+        token_val = uaql['token_val']
+        n_time = request_dict.get('n_time')
+        appBundleId = uaql['appBundleId']
+        uid = uaql['uid']
+        apns_config = {'appbundleId': {'pem_path': 'xxxx', 'topic': 'topic'}}
         try:
-            daytime = time.strftime("%Y%m%d%H%M", time.localtime(1547256103))
-            print(daytime)
-            pem_path = os.path.join(BASE_DIR, 'Ansjer/file/apns-dev.pem')
+            # daytime = time.strftime("%Y%m%d%H%M", time.localtime(1547256103))
+            # print(daytime)
+            pem_path = os.path.join(BASE_DIR, apns_config[appBundleId]['topic'])
+            # pem_path = os.path.join(BASE_DIR, 'Ansjer/file/apns-dev.pem')
             cli = apns2.APNSClient(mode="dev", client_cert=pem_path, password='111111')
+            body = json.dumps({'uid': uid, 'n_time': n_time})
             alert = apns2.PayloadAlert(body="body!", title="title!")
             payload = apns2.Payload(alert=alert)
             n = apns2.Notification(payload=payload, priority=apns2.PRIORITY_LOW)
-            res = cli.push(n=n, device_token=device_token, topic='com.ansjer.zsavcloud')
+            res = cli.push(n=n, device_token=token_val, topic=apns_config[appBundleId]['pem_path'])
             # assert res.status_code == 200, res.reason
             # assert res.apns_id
             if res.status_code == 200:
@@ -241,3 +242,15 @@ class NotificationView(View):
                 return response.json(404, res.reason)
         except Exception as e:
             return response.json(10, repr(e))
+
+    def do_save_equipment_info(self,userID_id):
+        Equipment_Info.objects.create(
+            userID_id=userID_id,
+            eventTime='',
+            eventType='',
+            devUid='',
+            devNickName='',
+            Channel='',
+            alarm='',
+            receiveTime='',)
+        return

+ 42 - 1
Controller/DeviceShare.py

@@ -47,6 +47,8 @@ class DeviceShareView(View):
                 userID = tko.userID
                 if operation == 'generateTokenUrl':
                     return self.do_generate_token_url(userID, request_dict, response)
+                elif operation == 'showShareInfo':
+                    return self.do_show_share_info(request_dict, response)
                 elif operation == 'confirm':
                     return self.do_confirm(userID, request_dict, response)
                 elif operation == 'queryUser':
@@ -92,6 +94,38 @@ class DeviceShareView(View):
         else:
             return response.json(173)
 
+    def do_show_share_info(self, request_dict, response):
+        shareToken = request_dict.get('shareToken', None)
+        if shareToken is not None:
+            redisObj = RedisObject()
+            data_str = redisObj.get_data(key=shareToken)
+            if data_str:
+                data = json.loads(data_str)
+                # 分享者userID
+                sharer = data.get('sharer', None)
+                # 分享的uid
+                UID = data.get('UID', None)
+                sharerDvqs = Device_Info.objects.filter(userID_id=sharer, UID=UID, isShare=False).\
+                    values('NickName','Type')
+                sharerDuqs = Device_User.objects.filter(userID=sharer).values('username', 'userEmail', 'phone')
+                if sharerDuqs[0]['username']:
+                    share_user = sharerDuqs[0]['username']
+                elif sharerDuqs[0]['userEmail']:
+                    share_user = sharerDuqs[0]['userEmail']
+                elif sharerDuqs[0]['phone']:
+                    share_user = sharerDuqs[0]['phone']
+                else:
+                    share_user = ''
+                return response.json(0, {
+                    'deviceName': sharerDvqs[0]['NickName'],
+                    'deviceType': sharerDvqs[0]['Type'],
+                    'shareUser': share_user,
+                })
+            else:
+                return response.json(404)
+        else:
+            return response.json(414)
+
     def do_confirm(self, userID, request_dict, response):
         shareToken = request_dict.get('shareToken', None)
         if shareToken is not None:
@@ -147,6 +181,7 @@ class DeviceShareView(View):
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                     res = dvql[0]
                     res['vod'] = list(ubqs)
+                    redisObj.del_data(key=shareToken)
                     return response.json(0, res)
             else:
                 return response.json(174)
@@ -161,7 +196,8 @@ class DeviceShareView(View):
         if UID is not None:
             # 查询分享获得的用户
             qs = Device_Info.objects.filter(UID=UID, isShare=True, primaryUserID=userID, isExist=1). \
-                values('userID__NickName', 'userID__username', 'userID__userEmail', 'userID__phone', 'id')
+                values('userID__NickName', 'userID__username', 'userID__userEmail', 'userID__phone', 'id',
+                       'userID__userIconPath')
             data = []
             # print(qs)
             for q in qs:
@@ -174,6 +210,11 @@ class DeviceShareView(View):
                     d['user'] = q['userID__userEmail']
                 elif q['userID__phone']:
                     d['user'] = q['userID__phone']
+                userIconPath = q['userID__userIconPath']
+                if userIconPath:
+                    if userIconPath.find('static/') != -1:
+                        userIconPath = userIconPath.replace('static/', '').replace('\\', '/')
+                        d['userIconUrl'] = SERVER_DOMAIN + 'account/getAvatar/' + userIconPath
                 data.append(d)
             return response.json(0, data)
         else:

+ 1 - 1
Controller/EquipmentManager.py

@@ -508,7 +508,7 @@ def deleteInterface(request):
             # 主用户删除设备
             dv_qs.delete()
             # 分享获得用户假删除
-            ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True)
+            ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True,primaryUserID=userID)
             if ud_dv_qs.exists():
                 ud_dv_qs.update(isExist=0)
     except Exception as e:

+ 2 - 1
Controller/OrderContrller.py

@@ -76,7 +76,8 @@ class OrderView(View):
         if uid:
             omqs.filter(UID=uid)
         if not omqs.exists():
-            return response.json(10, '订单不存在')
+            return response.json(173)
+            # return response.json(10, '订单不存在')
         count = omqs.count()
         order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price", "currency",
                                                               "addTime",

+ 20 - 3
Controller/UserController.py

@@ -475,7 +475,11 @@ class refreshTokenView(TemplateView):
 
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
-        request_dict = json.loads(request.body.decode('utf-8'))
+        content_type = request.META.get('CONTENT_TYPE', None)
+        if content_type == 'application/json':
+            request_dict = json.loads(request.body.decode('utf-8'))
+        else:
+            request_dict = request.POST
         return self.validation(request_dict)
 
     def get(self, request, *args, **kwargs):
@@ -487,7 +491,7 @@ class refreshTokenView(TemplateView):
         token = request_dict.get('token', None)
         lang = request_dict.get('lang', None)
         language = request_dict.get('language', None)
-        if language:
+        if lang is None:
             lang = language
         response = ResponseObject(lang)
         if token is not None:
@@ -514,6 +518,8 @@ class v2authCodeView(TemplateView):
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         lang = request.POST.get('lang', None)
+        if not lang:
+            lang = request.POST.get('language', None)
         response = ResponseObject(lang)
         request_dict = request.POST
         phone = request_dict.get('phone', None)
@@ -528,6 +534,8 @@ class v2authCodeView(TemplateView):
         # Device_User.objects.filter(userEmail='chanjunkai@163.com').delete()
         request.encoding = 'utf-8'
         lang = request.GET.get('lang', None)
+        if not lang:
+            lang = request.GET.get('language', None)
         response = ResponseObject(lang)
         was_limited = getattr(request, 'limited', False)
         if was_limited is True:
@@ -586,9 +594,10 @@ class v2authCodeView(TemplateView):
             return response.json(10, 'error')
         return response.json(0)
         # return response.json(0, {'identifyingCode': identifyingCode})
+
     # 阿里云获取邮箱验证码
     def aliyun_emailCode(self, email, response):
-        print ('阿里云开始')
+        print('阿里云开始')
         dataValid = DataValid()
         # 邮箱匹配
         if dataValid.email_validate(email) is False:
@@ -621,6 +630,7 @@ class v2authCodeView(TemplateView):
         if reds.set_data(key=email + '_identifyingCode', val=identifyingCode, expire=600) is not True:
             return response.json(10, 'error')
         return response.json(0)
+
     def phoneCode(self, phone, response):
         dataValid = DataValid()
         if dataValid.mobile_validate(phone) is not True:
@@ -669,6 +679,8 @@ class v2registerView(TemplateView):
         password = request_dict.get('password', None)
         authcode = request_dict.get('authcode', None)
         lang = request_dict.get('lang', None)
+        if not lang:
+            lang = request_dict.get('language', None)
         response = ResponseObject(lang)
         if password is None:
             return response.json(444, 'password')
@@ -785,6 +797,7 @@ class v2registerView(TemplateView):
             return self.do_login(email_qs, response)
 
 
+# 重置密码
 # 忘记密码获取验证码v2
 class v2forgetPwdCodeView(TemplateView):
     @method_decorator(csrf_exempt)
@@ -883,6 +896,8 @@ class v2resetPwdByCodeView(TemplateView):
         request.encoding = 'utf-8'
         request_dict = request.GET
         lang = request_dict.get('lang')
+        if not lang:
+            lang = request_dict.get('language', None)
         response = ResponseObject(lang)
         was_limited = getattr(request, 'limited', False)
         if was_limited is True:
@@ -893,6 +908,8 @@ class v2resetPwdByCodeView(TemplateView):
         request.encoding = 'utf-8'
         request_dict = request.POST
         lang = request_dict.get('lang')
+        if not lang:
+            lang = request_dict.get('language', None)
         response = ResponseObject(lang)
         was_limited = getattr(request, 'limited', False)
         if was_limited is True:

+ 13 - 2
Controller/UserManger.py

@@ -190,14 +190,25 @@ class getAvatarView(TemplateView):
         if filePath == '' or filePath == None:
             return response.json(800)
         fullPath = os.path.join(BASE_DIR, "static", filePath).replace('\\', '/')
+        defaultPath = os.path.join(BASE_DIR, "static", "User/default.png").replace('\\', '/')
         if os.path.isfile(fullPath):
             try:
                 Imagedata = open(fullPath, 'rb').read()
-                return HttpResponse(Imagedata, content_type="image/jpeg")
             except Exception as e:
                 return response.json(906, repr(e))
+            else:
+                return HttpResponse(Imagedata, content_type="image/jpeg")
         else:
-            return response.json(907)
+            print('----------------')
+            print(defaultPath)
+            print('----------------')
+            try:
+                Imagedata = open(defaultPath, 'rb').read()
+            except Exception as e:
+                return response.json(906, repr(e))
+            else:
+                return HttpResponse(Imagedata, content_type="image/jpeg")
+            # return response.json(907)
 
 
 @csrf_exempt

+ 4 - 0
Object/ResponseObject.py

@@ -109,6 +109,10 @@ class ResponseObject(object):
         }
         if self.lang == 'cn':
             msg = data_cn
+        elif self.lang == 'zh-Hans':
+            msg = data_cn
+        elif self.lang == 'zh-Hant':
+            msg = data_cn
         else:
             msg = data_en
         try:

+ 3 - 3
Object/TokenObject.py

@@ -21,7 +21,7 @@ class TokenObject:
 
     def __init__(self, token=None):
         if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTI0NDk1MjJ9.zM8sC7aHApATqDR0U4jbxWbYlQpOzN817-dpNGVl5hc'
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTM0ODQ2MDB9.aKqXfbF7Ate-i5H1-k36fI7Xf_ulIodnloA0p2CapdQ'
         if token == 'test':
             token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJ1c2VySUQiOiIxNTE1NjQyNjIzMzc5Mzk1MTM4MDAxMzgwMDEiLCJsYW5nIjoiZW4iLCJleHAiOjE1NTI2MTIxOTF9.sO8BtSclN6B-qwqNmYWbICatHYEtyMdoqzZ0hcOSsmg'
         self.token = token
@@ -107,7 +107,7 @@ class TokenObject:
         else:
             self.code = 0
             userID = res.get('userID', '')
-            lang = res.get('lang', '')
             user = res.get('user', '')
-            refreshRes = self.generate(data={'userID': userID, 'lang': lang, 'user': user})
+            lang = self.lang
+            refreshRes = self.generate(data={'userID': userID, 'lang':lang , 'user': user})
             return refreshRes

+ 1 - 3
Service/MiscellService.py

@@ -196,9 +196,7 @@ def batch_add_log_ctr(request, status_code):
             logKey = 'test_logger'
         redisObj.rpush(name=logKey, val=loggerData)
         # 判断redis列表长度
-        if redisObj.llen(name=logKey) > 100:
+        if redisObj.llen(name=logKey) > 100 or SERVER_TYPE == 'Ansjer.test_settings':
             data_list = redisObj.lrange(logKey, 0, -1)
             redisObj.del_data(key=logKey)
             ModelService.add_batch_log(data_list)
-        else:
-            pass

+ 5 - 0
Service/TemplateService.py

@@ -56,6 +56,11 @@ class TemplateService:
 
             'equipment/add',
             'deviceShare/queryUser',
+            'deviceShare/showShareInfo',
+            'deviceShare/confirm',
+            'deviceShare/deleteUser',
+            'equipment/delete',
+            'equipment/add',
         ]
         return apiList