浏览代码

Merge branch 'Bin_Local_User' into dev

tanghongbin 4 年之前
父节点
当前提交
c77e703a66
共有 3 个文件被更改,包括 55 次插入12 次删除
  1. 3 0
      Ansjer/urls.py
  2. 50 11
      Controller/UserController.py
  3. 2 1
      Model/models.py

+ 3 - 0
Ansjer/urls.py

@@ -235,9 +235,12 @@ urlpatterns = [
 
     # 本地登录接口
     url(r'^local/(?P<operation>.*)$', UserController.LocalUserView.as_view()),
+
     url(r'^account/updateUserCountry', UserController.updateUserCountry),
     url(r'^equipmentVersionLimit/(?P<operation>.*)$', EquipmentVersionLimit.EquipmentVersionLimitView.as_view()),
 
+    # 订阅邮件
+    url(r'^account/subscribe$', UserController.SubscribeEmailView.as_view()),
 
     # app 设备消息模板
     # 路由加参数参考

+ 50 - 11
Controller/UserController.py

@@ -1708,6 +1708,7 @@ class v3LoginView(TemplateView):
     def validates(self, request_dict, response):
         username = request_dict.get('userName', None)
         password = request_dict.get('userPwd', None)
+        subscribe = request_dict.get('subscribe', None)
         if not username or not password:
             return response.json(111)
         username = username.strip()
@@ -1739,34 +1740,37 @@ class v3LoginView(TemplateView):
         else:
             data_valid = DataValid()
             if data_valid.email_validate(username):
-                return self.do_email_login(username, password, response)
+                return self.do_email_login(username, password, response, subscribe)
             elif data_valid.mobile_validate(username):
-                return self.do_phone_login(username, password, response)
+                return self.do_phone_login(username, password, response, subscribe)
             elif data_valid.name_validate(username):
-                return self.do_name_login(username, password, response)
+                return self.do_name_login(username, password, response, subscribe)
             else:
                 return response.json(107)
 
-    def do_email_login(self, email, password, response):
+    def do_email_login(self, email, password, response, subscribe):
         user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
-        return self.valid_login(user_qs, password, response)
+        return self.valid_login(user_qs, password, response, subscribe)
 
-    def do_phone_login(self, phone, password, response):
+    def do_phone_login(self, phone, password, response, subscribe):
         user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone), is_active=True, user_isValid=True)
-        return self.valid_login(user_qs, password, response)
+        return self.valid_login(user_qs, password, response, subscribe)
 
-    def do_name_login(self, username, password, response):
+    def do_name_login(self, username, password, response, subscribe):
         user_qs = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username),
                                              is_active=True, user_isValid=True)
-        return self.valid_login(user_qs, password, response)
+        return self.valid_login(user_qs, password, response, subscribe)
 
-    def valid_login(self, user_qs, password, response):
+    def valid_login(self, user_qs, password, response, subscribe):
         if not user_qs.exists():
             return response.json(104)
         # users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
         #                        'phone', 'password', 'userIconPath', 'user_isValid', 'is_active')[0]
+        if subscribe:
+            user_qs.update(subscribe_email=subscribe)
+
         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', 'subscribe_email')[0]
         if not check_password(password, users['password']):
             return response.json(111)
         userID = users['userID']
@@ -1799,6 +1803,7 @@ class v3LoginView(TemplateView):
             # res['fingerprint_enable'] = users['fingerprint_enable']
             # 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 ''
             return response.json(0, res)
         else:
             return response.json(tko.code)
@@ -3619,6 +3624,40 @@ class LocalUserView(View):
             return self.do_login(user_qs, response)
 
 
+class SubscribeEmailView(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        return self.validate(request_dict)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        return self.validate(request_dict)
+
+    def validate(self, request_dict):
+        token = request_dict.get('token', None)
+        lang = request_dict.get('lang', None)
+        token = TokenObject(token)
+
+        response = ResponseObject(lang=lang)
+        if token.code != 0:
+            return response.json(token.code)
+
+        status = request_dict.get('subscribe', None)
+        if status is None:
+            return response.json(444)
+
+        status = int(status)
+        user_qs = Device_User.objects.filter(userID=token.userID)
+        if user_qs.exists():
+            user_qs.update(subscribe_email=status)
+            return response.json(0)
+        else:
+            return response.json(104)
+
+
 def delete_local_account(username):
     user_qs = Device_User.objects.filter(username=username)
     print(user_qs)

+ 2 - 1
Model/models.py

@@ -148,7 +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'是否是本地登录用户')
+    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:不订阅
     objects = UserManager()
 
     USERNAME_FIELD = 'userID'  # 必须有一个唯一标识