Procházet zdrojové kódy

Merge branch 'master' into dev

# Conflicts:
#	Ansjer/formal_settings.py
#	Ansjer/local_settings.py
#	Ansjer/urls.py
#	Controller/AppLogController.py
#	Controller/UserController.py
#	Model/models.py
#	Service/ModelService.py
tanghongbin před 4 roky
rodič
revize
aabf16600b

+ 1 - 0
Ansjer/formal_settings.py

@@ -71,6 +71,7 @@ TEMPLATES = [
 
 WSGI_APPLICATION = 'Ansjer.formal_wsgi.application'
 
+
 # 服务器类型
 DATABASE_DATA = 'Ansjer81'
 SERVER_HOST = 'database-2.clraczw4p0yj.us-west-1.rds.amazonaws.com'

+ 1 - 0
Ansjer/test_settings.py

@@ -72,6 +72,7 @@ TEMPLATES = [
 
 WSGI_APPLICATION = 'Ansjer.test_wsgi.application'
 
+
 # 服务器类型
 DATABASE_DATA = 'AnsjerTest'
 SERVER_HOST = 'database-2.clraczw4p0yj.us-west-1.rds.amazonaws.com'

+ 4 - 2
Controller/AppLogController.py

@@ -71,9 +71,10 @@ class AppLogView(View):
         if uid is None or average_delay is None or status is None or filename is None:
             return response.json(444)
         else:
+            ModelService.app_log_log(userID, uid)
             now_time = int(time.time())
             data = {
-                'uid': uid,
+                'uid': uid.strip(),
                 'average_delay': average_delay,
                 'status': status,
                 'filename': filename,
@@ -105,7 +106,8 @@ class AppLogView(View):
                 if al_qs.exists():
                     count = al_qs.count()
                     start = (page - 1) * line
-                    al_qs = al_qs[start: (start + line)].values('id', 'user__username', 'user_id', 'uid', 'average_delay', 'status', 'filename', 'add_time')
+                    al_qs = al_qs[start: (start + line)].values('id', 'user__username', 'user_id', 'uid',
+                                                                'average_delay', 'status', 'filename', 'add_time')
 
                     res = []
                     auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)

+ 31 - 18
Controller/UserController.py

@@ -1868,6 +1868,7 @@ class InitInfoView(View):
                     update(**update_dict)
             if appBundleId:
                 user_ex_qs = UserExModel.objects.filter(userID_id=userID)
+                user_ex = None
                 if user_ex_qs.exists():
                     update_dict = {
                         'updTime': now_time,
@@ -1875,6 +1876,7 @@ class InitInfoView(View):
                         'region': lang
                     }
                     user_ex_qs.update(**update_dict)
+                    user_ex = user_ex_qs[0]
                 else:
                     create_dict = {
                         'addTime': now_time,
@@ -1883,9 +1885,9 @@ class InitInfoView(View):
                         'userID_id': userID,
                         'region': lang
                     }
-                    user_ex_qs = UserExModel.objects.create(**create_dict)
+                    user_ex = UserExModel.objects.create(**create_dict)
 
-                country_ip_qs = CountryIPModel.objects.filter(user_ex_id=user_ex_qs[0].id)
+                country_ip_qs = CountryIPModel.objects.filter(user_ex_id=user_ex.id)
                 if not country_ip_qs.exists():
                     countryIp = CountryIPModel(
                         ip=CommonService.get_ip_address(request),
@@ -1893,7 +1895,6 @@ class InitInfoView(View):
                         user_ex_id=user_ex_qs[0].id
                     )
                     countryIp.save()
-
         # 获取设备是否存在有已被删除
         res = {'usmsg': 0}  # 预留字段, 有版本app该字段去掉会报错
         return response.json(0, res)
@@ -1903,7 +1904,6 @@ class InitInfoView(View):
         appBundleId = request_dict.get('appBundleId', None)
         lang = request_dict.get('lang', '')  # 语言区域
         if username and appBundleId:
-            country = CommonService.getAddr(CommonService.get_ip_address(request))
             user_qs = Device_User.objects.filter(username=username)
             if user_qs.exists():
                 user = user_qs[0]
@@ -1913,20 +1913,27 @@ class InitInfoView(View):
                     update_dict = {
                         'updTime': now_time,
                         'appBundleId': appBundleId,
-                        'region': lang,
-                        'country': country
+                        'region': lang
                     }
                     user_ex_qs.update(**update_dict)
+                    user_ex = user_ex_qs[0]
                 else:
                     create_dict = {
                         'addTime': now_time,
                         'updTime': now_time,
                         'appBundleId': appBundleId,
                         'userID_id': user.userID,
-                        'region': lang,
-                        'country': country
+                        'region': lang
                     }
-                    UserExModel.objects.create(**create_dict)
+                    user_ex = UserExModel.objects.create(**create_dict)
+                country_ip_qs = CountryIPModel.objects.filter(user_ex_id=user_ex.id)
+                if not country_ip_qs.exists():
+                    countryIp = CountryIPModel(
+                        ip=CommonService.get_ip_address(request),
+                        add_time=now_time,
+                        user_ex_id=user_ex_qs[0].id
+                    )
+                    countryIp.save()
                 return response.json(0)
             else:
                 return response.json(104)
@@ -2176,7 +2183,8 @@ class wxPerfectView(TemplateView):
                     'com.ansjer.loocamccloud': {'appid': 'wx9f6d6ce63f85b367',
                                                 'secret': 'fe495884cd24637f1ae516c7f53d1b97', },
                     'com.ansjer.zccloud': {'appid': 'wx2a9f5ef9baf2760f', 'secret': '5d38c7079676463149ffea593c58f2ed'},
-                    'com.ansjer.customizede': {'appid':'wx2a9f5ef9baf2760f', 'secret': '5d38c7079676463149ffea593c58f2ed'},
+                    'com.ansjer.customizede': {'appid': 'wx2a9f5ef9baf2760f',
+                                               'secret': '5d38c7079676463149ffea593c58f2ed'},
                     # android
                     'com.ansjer.zccloud_ab': {'appid': 'wx2a9f5ef9baf2760f',
                                               'secret': '5d38c7079676463149ffea593c58f2ed'},
@@ -2911,7 +2919,6 @@ class Image_Code_RegisterView(TemplateView):
         unique = request_dict.get('unique', None)
         if unique:
             delete_local_account(unique)
-
         if not all([userEmail, password, lang, imageCodeId, valid_code]):
             return response.json(444)
         try:
@@ -3307,7 +3314,8 @@ class v3LoginByFingerprintView(View):
                     return response.json(104)
                 else:
                     users = user_qs.values('role__rid', 'role__roleName', 'userID', 'NickName', 'username', 'userEmail',
-                               'phone', 'password', 'userIconPath', 'fingerprint_enable', 'fingerprint_key')[0]
+                                           'phone', 'password', 'userIconPath', 'fingerprint_enable',
+                                           'fingerprint_key')[0]
                     if users['fingerprint_enable'] == 0:
                         return response.json(112)
                     else:
@@ -3335,7 +3343,8 @@ class v3LoginByFingerprintView(View):
                             res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
                             res['phone'] = users['phone'] if users['phone'] is not None else ''
                             res['fingerprint_enable'] = users['fingerprint_enable']
-                            res['fingerprint_key'] = CommonService.encode_data(content=users['fingerprint_key'], start=2)
+                            res['fingerprint_key'] = CommonService.encode_data(content=users['fingerprint_key'],
+                                                                               start=2)
                             return response.json(0, res)
                         else:
                             return response.json(tko.code)
@@ -3425,7 +3434,8 @@ class AppleAuthLogin(View):
 
             if key_object:
                 try:
-                    claims = jwt.decode(identity_token, key=key_object, verify=True, algorithms=[alg], audience=app_bundle_id)
+                    claims = jwt.decode(identity_token, key=key_object, verify=True, algorithms=[alg],
+                                        audience=app_bundle_id)
                     unionID = claims['sub']
                     print(claims)
                     user_extend_qs = UserOauth2Model.objects.filter(unionID=unionID, authType=2)
@@ -3533,8 +3543,8 @@ class LocalUserView(View):
         request.encoding = 'utf-8'
         request_dict = request.POST
         operation = kwargs.get('operation', None)
-        print('start_time='+ str((time.time())))
-        ip=CommonService.get_ip_address(request)
+        print('start_time=' + str((time.time())))
+        ip = CommonService.get_ip_address(request)
         print('end_time=' + str((time.time())))
         return self.validate(request_dict, operation)
 
@@ -3679,10 +3689,13 @@ def updateUserCountry(request):
             if data:
                 country = data
             else:
-                country = CommonService.getAddr(country_ip['ip'])
+                country = CommonService.getIpIpInfo(country_ip['ip'], lang='CN')
+                country = country['country_name']
                 redisObject.set_data(key=key, val=country, expire=3600)
 
             country_ip['country'] = country
             CountryIPModel.objects.filter(id=country_ip['id']).update(country=country, status=1)
+            # ids.append(country_ip['id'])
+        # CountryIPModel.objects.filter(id__in=tuple(ids)).update(status=1)
     response = ResponseObject()
-    return response.json(0)
+    return response.json(0)

+ 8 - 8
Model/models.py

@@ -124,7 +124,7 @@ class Device_User(AbstractBaseUser):
                               verbose_name=u'用户ID', unique=True)
     role = models.ManyToManyField(to='Role', blank=True, verbose_name=u'用户角色', db_table='user_role')
 
-    username = models.CharField(max_length=64, verbose_name=u'用户名', default='', blank=True)
+    username = models.CharField(max_length=64, db_index=True, verbose_name=u'用户名', default='', blank=True)
     password = models.CharField(max_length=128, verbose_name=u'密码')
     userEmail = models.EmailField(max_length=64, verbose_name=u'邮箱', default='', blank=True)
     # 实际的路径就是 MEDIA_ROOT/Image/filename,所以可用upload_to来指定文件存放的前缀路径
@@ -148,8 +148,8 @@ class Device_User(AbstractBaseUser):
     phone = models.CharField(max_length=16, verbose_name=u'手机号', default='', blank=True)
     fingerprint_enable = models.SmallIntegerField(default=0, verbose_name=u'是否开启了指纹登录') # 0:未开启,1:已开启
     fingerprint_key = models.CharField(max_length=128, default='', verbose_name=u'客户端用于解码的密钥等信息')
-    is_local = models.BooleanField(blank=True, default=False, verbose_name=u'是否是本地登录用户') # False:账号登录,1:本地登录
-    subscribe_email = models.SmallIntegerField(default=0, verbose_name=u'是否订阅营销邮件') # 0:未订阅,1:订阅,2:不订阅
+    is_local = models.BooleanField(blank=True, default=False, verbose_name=u'是否是本地登录用户')
+    subscribe_email = models.SmallIntegerField(default=0, verbose_name=u'是否订阅营销邮件')  # 0:未订阅,1:订阅,2:不订阅
     objects = UserManager()
 
     USERNAME_FIELD = 'userID'  # 必须有一个唯一标识
@@ -291,10 +291,10 @@ class Equipment_Info(models.Model):
     receiveTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
     userID_id = models.CharField(default='',  db_index=True, blank=True, max_length=32, verbose_name=u'用户ID')
     is_st = models.SmallIntegerField(default=0, verbose_name='是否截图')  # 0 否,1 是图,2,视频
-    # message_id = models.CharField(max_length=32, default='', verbose_name='第三方推送服务器返回的id')
-    # push_type = models.SmallIntegerField(default=0, verbose_name='第三方推送服务器标志。0:APNS推送,1:谷歌推送,2:极光推送')
-    # push_server_status = models.IntegerField(default=200, verbose_name='是否成功推送到第三方服务器。200:成功,other:失败')
-    # push_device_status = models.SmallIntegerField(default=-1, verbose_name='是否成功推送到目标设备。0:失败,1:成功')
+    # message_id = models.CharField(blank=True, max_length=32, default='', verbose_name='第三方推送服务器返回的id')
+    # push_type = models.SmallIntegerField(blank=True, default=0, verbose_name='第三方推送服务器标志。0:APNS推送,1:谷歌推送,2:极光推送')
+    # push_server_status = models.IntegerField(blank=True, default=200, verbose_name='是否成功推送到第三方服务器。200:成功,other:失败')
+    # push_device_status = models.SmallIntegerField(blank=True, default=-1, verbose_name='是否成功推送到目标设备。0:失败,1:成功')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
 
     def __str__(self):
@@ -640,7 +640,7 @@ class UID_Preview(models.Model):
 # 系统发送信息新到用户
 class SysMsgModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
-    userID_id = models.CharField(default='', db_index=True,blank=True, max_length=32, verbose_name=u'用户ID')
+    userID_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户ID')
     msg = models.TextField(blank=True, default='', verbose_name=u'发送内容')
     status = models.SmallIntegerField(verbose_name='是否已读', default=0)  # 0:否,1:是
     addTime = models.IntegerField(verbose_name='添加时间', default=0)

+ 10 - 0
Service/ModelService.py

@@ -221,6 +221,16 @@ class ModelService:
         file.flush()
         file.close()
 
+    @staticmethod
+    def app_log_log(userID, UID):
+        file_path = '/'.join((BASE_DIR, 'static/app_log.log'))
+        file = open(file_path, 'a+')
+        file.write("username:" + userID + "; time:" + time.strftime(
+            "%Y-%m-%d %H:%M:%S", time.localtime()) + "; " + "; uid:" + UID)
+        file.write('\n')
+        file.flush()
+        file.close()
+
 
 def notify_alexa_delete(userID, UID):
     url = 'https://www.zositech.xyz/deviceStatus/delete'