Ver Fonte

初始化用户地区相关

chenshibin há 4 anos atrás
pai
commit
78dc06f135

+ 2 - 2
Ansjer/urls.py

@@ -12,7 +12,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     ApplicationController, UserExController, CloudStorage, TestApi, UserBrandControllerV2, \
     StatisticsController, Alexa, FAQController, AppLogController, EquipmentVersionLimit, VoicePromptController, \
     CDKController, \
-    DeviceTypeController, CloudTest, Cloudsum, IotCoreController, OperatingLogs, ProcessInfo, UserRegionController, \
+    DeviceTypeController, CloudTest, Cloudsum, IotCoreController, OperatingLogs, ProcessInfo, RegionCountryController, \
     VerifyCodeController
 
 urlpatterns = [
@@ -279,7 +279,7 @@ urlpatterns = [
     url(r'^ProcessInfo/(?P<operation>.*)$', ProcessInfo.ProcessInfoView.as_view()),
     url(r'^Cloudsum/(?P<operation>.*)$', Cloudsum.Cloudsum.as_view()),
 
-    url(r'userRegion/(?P<operation>.*$)', UserRegionController.UserRegionView.as_view()),
+    url(r'regionCountry/(?P<operation>.*$)', RegionCountryController.RegionCountryView.as_view()),
 
     # 验证验证码
     url(r'verifyCode/(?P<operation>.*$)', VerifyCodeController.VerifyCodeView.as_view()),

+ 0 - 56
Controller/IotCoreController.py

@@ -1,56 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import boto3
-from django.views import View
-
-from Model.models import Device_User, UserRegionModel
-from Object.IOTCore.IotObject import ChinaIOTClient, AsiaIOTClient, EuropeIOTClient, AmericaIOTClient
-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(request_dict, response)
-        else:
-            return response.json(404)
-
-    def create_provisioning_claim(self, request_dict, response):
-        uid = request_dict.get('uid', None)
-
-        if uid:
-
-            user_region_qs = UserRegionModel.objects.filter(user__device_info__UID=uid)
-            if user_region_qs.exists():
-                user_region = user_region_qs[0]
-
-                if user_region.region_id == 1:
-                    iotClient = AmericaIOTClient()
-                    return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
-                elif user_region.region_id == 2:
-                    iotClient = AsiaIOTClient()
-                    return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
-                elif user_region.region_id == 3:
-                    iotClient = EuropeIOTClient()
-                    return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
-                else:
-                    iotClient = AmericaIOTClient()
-                    return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
-        else:
-            return response.json(444)

+ 1 - 16
Controller/UserController.py

@@ -32,7 +32,7 @@ from ratelimit.decorators import ratelimit
 from Ansjer.config import AuthCode_Expire, SERVER_DOMAIN, APNS_CONFIG, JPUSH_CONFIG, FCM_CONFIG, TUTK_PUSH_DOMAIN
 from Controller.CheckUserData import DataValid, date_handler, RandomStr
 from Model.models import Device_User, Role, UidPushModel, UserOauth2Model, UserExModel, Device_Info, UidSetModel, \
-    UserAppFrequencyModel, CountryIPModel, UserRegionModel
+    UserAppFrequencyModel, CountryIPModel
 from Object.AWS.SesClassObject import SesClassObject
 from Object.AliSmsObject import AliSmsObject
 from Object.RedisObject import RedisObject
@@ -1782,10 +1782,6 @@ class v3LoginView(TemplateView):
         if oauth_qs.exists():
             auth_type = oauth_qs[0].authType
 
-        region_id = 0
-        user_region_qs = UserRegionModel.objects.filter(user_id=userID)
-        if user_region_qs.exists():
-            region_id = user_region_qs[0].region_id
 
         if tko.code == 0:
             now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
@@ -1809,7 +1805,6 @@ class v3LoginView(TemplateView):
             # res['fingerprint_key'] = CommonService.encode_data(content=users['fingerprint_key'], start=2)
             res['authType'] = auth_type
             res['subscribe_email'] = users['subscribe_email'] if users['subscribe_email'] is not None else ''
-            res['regionID'] = region_id
             return response.json(0, res)
         else:
             return response.json(tko.code)
@@ -3253,10 +3248,6 @@ class v3LoginByCodeView(View):
         if oauth_qs.exists():
             auth_type = oauth_qs[0].authType
 
-        region_id = 0
-        user_region_qs = UserRegionModel.objects.filter(user_id=userID)
-        if user_region_qs.exists():
-            region_id = user_region_qs[0].region_id
 
         if tko.code == 0:
             now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
@@ -3277,7 +3268,6 @@ class v3LoginByCodeView(View):
             res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
             res['phone'] = users['phone'] if users['phone'] is not None else ''
             res['authType'] = auth_type
-            res['region_id'] = region_id
             return response.json(0, res)
         else:
             return response.json(tko.code)
@@ -3508,11 +3498,6 @@ class AppleAuthLogin(View):
             auth_type = oauth_qs[0].authType
         res['authType'] = auth_type
 
-        region_id = 0
-        user_region_qs = UserRegionModel.objects.filter(user_id=userID)
-        if user_region_qs.exists():
-            region_id = user_region_qs[0].region_id
-        res['region_id'] = region_id
         user_qs.update(last_login=now_time, online=True)
         return response.json(0, res)
 

+ 1 - 5
Controller/UserManger.py

@@ -12,7 +12,7 @@ from django.views.generic import TemplateView, View
 
 from Ansjer.config import BASE_DIR
 from Ansjer.config import SERVER_DOMAIN
-from Model.models import Role, Device_User, UserOauth2Model, UserExModel, UserRegionModel
+from Model.models import Role, Device_User, UserOauth2Model, UserExModel
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -66,10 +66,6 @@ class showUserMoreView(TemplateView):
                 roleName = ModelService.getRole(rid=v['fields']['role'][0])
                 sqlDict["datas"][k]['fields']['rolename'] = roleName
         # 增加oauth2关联数据
-        user_region_qs = UserRegionModel.objects.filter(user_id=userID)
-        if user_region_qs.exists():
-            region_id = user_region_qs[0].region_id
-            sqlDict['datas'][0]['region_id'] = region_id
         ua_qs = UserOauth2Model.objects.filter(userID_id=userID).values_list('authType',flat=True)
         sqlDict["oauth2"] = list(ua_qs)
         return response.json(0, sqlDict)

+ 0 - 61
Controller/UserRegionController.py

@@ -1,61 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import time
-
-from django.views import View
-
-from Model.models import Device_User, UserRegionModel
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-
-
-class UserRegionView(View):
-
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        operation = kwargs.get('operation', None)
-        request_dict = request.GET
-        return self.validate(request_dict, operation)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        operation = kwargs.get('operation', None)
-        request_dict = request.POST
-        return self.validate(request_dict, operation)
-
-    def validate(self, request_dict, operation):
-        token = TokenObject(request_dict.get('token', None))
-
-        response = ResponseObject()
-
-        if token.code != 0:
-            return response.json(token.code)
-
-        if operation == 'init':
-            return self.do_init(token.userID, request_dict, response)
-        else:
-            return response.json(404)
-
-    def do_init(self, userID, request_dict, response):
-        user_qs = Device_User.objects.filter(userID=userID)
-        if not user_qs.exists():
-            return response.json(309)
-
-        region_id = request_dict.get('country_number', None)
-
-        if region_id:
-            user_region_qs = UserRegionModel.objects.filter(user__userID=userID)
-            now_time = int(time.time())
-            if not user_region_qs.exists():
-                user_region = UserRegionModel(user_id=userID, region_id=region_id, add_time=now_time, update_time=now_time)
-                user_region.save()
-            else:
-                update = {
-                    'region_id': region_id,
-                    'update_time': now_time
-                }
-
-                user_region_qs.update(**update)
-            return response.json(0)
-        else:
-            return response.json(444)

+ 16 - 12
Model/models.py

@@ -119,6 +119,21 @@ class Role(models.Model):
             return permslist
 
 
+class RegionCountryModel(models.Model):
+    number = models.IntegerField(primary_key=True, verbose_name='唯一标识')
+    region_id = models.IntegerField(unique=True, verbose_name='大洲编号')
+    name = models.CharField(unique=True, max_length=50, verbose_name=u'名称')
+    cn = models.CharField(blank=True, max_length=64, verbose_name=u'中文名称')
+    en = models.CharField(blank=True, max_length=64, verbose_name=u'英文名称')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'region_country'
+        verbose_name = '地区表'
+        verbose_name_plural = verbose_name
+
+
 class Device_User(AbstractBaseUser):
     userID = models.CharField(blank=True, max_length=32, primary_key=True,
                               verbose_name=u'用户ID', unique=True)
@@ -150,6 +165,7 @@ class Device_User(AbstractBaseUser):
     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:不订阅
+    region_country = models.ForeignKey(RegionCountryModel, to_field='country_id', on_delete=models.CASCADE, verbose_name='关联地区表')
     objects = UserManager()
 
     USERNAME_FIELD = 'userID'  # 必须有一个唯一标识
@@ -1258,15 +1274,3 @@ class ProcessInfoLogsModel(models.Model):
         verbose_name = '过程信息表'
         verbose_name_plural = verbose_name
 
-
-class UserRegionModel(models.Model):
-    id = models.AutoField(primary_key=True)
-    user = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE, verbose_name='关联用户表')
-    region_id = models.IntegerField(default=0, verbose_name='地区id')
-    add_time = models.IntegerField(default=0, verbose_name='添加时间')
-    update_time = models.IntegerField(default=0, verbose_name='更新时间')
-
-    class Meta:
-        db_table = 'user_region'
-        verbose_name = '用户地区表'
-        verbose_name_plural = verbose_name