Browse Source

增加境外手机推送服务

chenjunkai 6 years ago
parent
commit
48e62bbc5b
3 changed files with 71 additions and 15 deletions
  1. 63 13
      Controller/UserController.py
  2. 6 0
      Object/RedisObject.py
  3. 2 2
      Object/ResponseObject.py

+ 63 - 13
Controller/UserController.py

@@ -655,8 +655,11 @@ class v2authCodeView(TemplateView):
         if dataValid.mobile_validate(phone) is not True:
             return response.json(107)
         reds = RedisObject()
-        identifyingCode = reds.get_data(key=phone + '_identifyingCode')
-        if identifyingCode:
+        reds_key = str(phone) + '_identifyingCode'
+        identifyingCode = reds.get_data(key=reds_key)
+        reds_key_ttl = reds.get_ttl(key=reds_key)
+        if reds_key_ttl > 240 and identifyingCode:
+            # if identifyingCode :
             return response.json(90)
         user_qs = Device_User.objects.filter(username=phone)
         phone_qs = Device_User.objects.filter(phone=phone)
@@ -669,7 +672,9 @@ class v2authCodeView(TemplateView):
                                    temp_msg='SMS_151600991')
         print(res)
         if res["Code"] == "OK":
-            if reds.set_data(key=phone + '_identifyingCode', val=identifyingCode, expire=60) is not True:
+            if reds.set_data(key=reds_key, val=identifyingCode, expire=300) is not True:
+                # if reds.set_data(key=phone + '_identifyingCode', val=identifyingCode, expire=60) is not True:
+
                 return response.json(10, '生成缓存系统错误')
             return response.json(0)
         else:
@@ -680,8 +685,11 @@ class v2authCodeView(TemplateView):
         if dataValid.mobile_validate(phone) is not True:
             return response.json(107)
         reds = RedisObject()
-        identifyingCode = reds.get_data(key=phone + '_identifyingCode')
-        if identifyingCode:
+        reds_key = str(phone) + '_identifyingCode'
+        identifyingCode = reds.get_data(key=reds_key)
+        reds_key_ttl = reds.get_ttl(key=reds_key)
+        if reds_key_ttl > 240 and identifyingCode:
+            # if identifyingCode :
             return response.json(90)
         user_qs = Device_User.objects.filter(username=phone)
         phone_qs = Device_User.objects.filter(phone=phone)
@@ -703,7 +711,8 @@ class v2authCodeView(TemplateView):
                                    temp_msg=temp_msg)
         print(res)
         if res["Code"] == "OK":
-            if reds.set_data(key=phone + '_identifyingCode', val=identifyingCode, expire=60) is not True:
+            # if reds.set_data(key=reds_key, val=identifyingCode, expire=60) is not True:
+            if reds.set_data(key=reds_key, val=identifyingCode, expire=300) is not True:
                 return response.json(10, '生成缓存系统错误')
             return response.json(0)
         else:
@@ -883,9 +892,13 @@ class v2forgetPwdCodeView(TemplateView):
     def ValidationError(self, request_dict, response):
         phone = request_dict.get('phone', None)
         email = request_dict.get('email', None)
+        country_code = request_dict.get('country_code', None)
         if phone is not None:
             phone = phone.strip()
-            return self.do_send_phone_code(phone, response)
+            if country_code is None:
+                return self.do_send_phone_code(phone, response)
+            else:
+                return self.do_v2_send_phone_code(country_code, phone, response)
         elif email is not None:
             return self.do_send_email_code(email, response)
         else:
@@ -899,17 +912,54 @@ class v2forgetPwdCodeView(TemplateView):
         if not user_qs.exists():
             return response.json(102)
         reds = RedisObject()
-        resetCode = reds.get_data(key=phone + '_forgetPwdResetCode')
-        if resetCode is True:
-            return response.json(120)
+        reds_key = str(phone) + '_forgetPwdResetCode'
+        resetCode = reds.get_data(key=reds_key)
+        reds_key_ttl = reds.get_ttl(key=reds_key)
+        if reds_key_ttl > 240 and resetCode:
+            # if identifyingCode :
+            return response.json(90)
+        # if resetCode is True:
+        #     return response.json(120)
         resetCode = RandomStr(6, True)
-        if not reds.set_data(key=phone + '_forgetPwdResetCode', val=resetCode, expire=300):
-            return response.json(10, '生成缓存错误')
         aliSms = AliSmsObject()
         res = aliSms.send_code_sms(phone=phone, code=resetCode, sign_name='Ansjer',
                                    temp_msg='SMS_151675019')
         if res["Code"] == "OK":
-            # return response.json(0, {'forgetPwdResetCode': resetCode})
+            if not reds.set_data(key=reds_key, val=resetCode, expire=300):
+                return response.json(10, '生成缓存错误')
+            return response.json(0)
+        else:
+            return response.json(10, res["Message"])
+
+    def do_v2_send_phone_code(self,country_code, phone, response):
+        data_valid = DataValid()
+        if data_valid.mobile_validate(phone) is not True:
+            return response.json(100)
+        user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone))
+        if not user_qs.exists():
+            return response.json(102)
+        reds = RedisObject()
+        reds_key = str(phone) + '_forgetPwdResetCode'
+        resetCode = reds.get_data(key=reds_key)
+        reds_key_ttl = reds.get_ttl(key=reds_key)
+        if reds_key_ttl > 240 and resetCode:
+            # if identifyingCode :
+            return response.json(90)
+        # if resetCode is True:
+        #     return response.json(120)
+        resetCode = RandomStr(6, True)
+        aliSms = AliSmsObject()
+        if country_code == '86':
+            rec_phone = phone
+            temp_msg = 'SMS_151675019'
+        else:
+            temp_msg = 'SMS_172200051'
+            rec_phone = str(country_code)+str(phone)
+        res = aliSms.send_code_sms(phone=rec_phone, code=resetCode, sign_name='Ansjer',
+                                   temp_msg=temp_msg)
+        if res["Code"] == "OK":
+            if not reds.set_data(key=reds_key, val=resetCode, expire=300):
+                return response.json(10, '生成缓存错误')
             return response.json(0)
         else:
             return response.json(10, res["Message"])

+ 6 - 0
Object/RedisObject.py

@@ -78,3 +78,9 @@ class RedisObject:
     def lrange(self, name, start, end):
         return self.CONN.lrange(name, start, end)
 
+    def get_ttl(self, key):
+        ttl = self.CONN.ttl(key)
+        if ttl:
+            return ttl
+        else:
+            return 0

+ 2 - 2
Object/ResponseObject.py

@@ -17,7 +17,7 @@ class ResponseObject(object):
             44: 'System error! Can not send email',
             48: 'System object error!',
             89: 'Already send the code, please check it or get it again after 10m',
-            90: 'please check code or get it again after 5m',
+            90: 'please check code or get it again after 1m',
             99: 'Mail doesn\'t exist!',
             100: 'Phone format error!',
             101: 'Phone already existed!',
@@ -69,7 +69,7 @@ class ResponseObject(object):
             44: '系统错误!无法发送电子邮件',
             48: '系统对象错误',
             89: '已发验证码,请检测或10分钟后重新获取。',
-            90: '请检测或5分钟后重新获取。',
+            90: '请检测或1分钟后重新获取。',
             99: '邮箱不存在!',
             100: '手机格式错误!',
             101: '手机已存在!',