Browse Source

忘记密码增加地区选择

peng 2 years ago
parent
commit
1d98c411a2
1 changed files with 118 additions and 24 deletions
  1. 118 24
      Controller/UserController.py

+ 118 - 24
Controller/UserController.py

@@ -1337,24 +1337,30 @@ class v2forgetPwdCodeView(TemplateView):
         email = request_dict.get('email', None)
         country_code = request_dict.get('country_code', None)
         sign_name = request_dict.get('sign_name', None)
+        number = request_dict.get('number', None)
+        lang = request_dict.get('lang', None)
+        if lang is None:
+            return response.json(444, 'lang')
         if phone is not None:
             phone = phone.strip()
             if country_code is None:
-                return self.do_send_phone_code(phone, response, sign_name)
+                return self.do_send_phone_code(phone, response, sign_name, number, lang)
             else:
-                return self.do_v2_send_phone_code(country_code, phone, response, sign_name)
+                return self.do_v2_send_phone_code(country_code, phone, response, sign_name, number, lang)
         elif email is not None:
-            return self.do_send_email_code(email, response)
+            return self.do_send_email_code(email, response, number, lang)
         else:
             return response.json(444, 'phone')
 
-    def do_send_phone_code(self, phone, response, sign_name):
+    def do_send_phone_code(self, phone, response, sign_name, number, lang):
         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)
+        users = user_qs[0]
+        res = {}
         reds = RedisObject()
         reds_key = str(phone) + '_forgetPwdResetCode'
         resetCode = reds.get_data(key=reds_key)
@@ -1369,23 +1375,54 @@ class v2forgetPwdCodeView(TemplateView):
             sign_ms = '周视'
         else:
             sign_ms = 'Ansjer'
+
+        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+        region_country = users['region_country']
+        lang_id = LanguageModel.objects.filter(lang=lang).values('id')
+        region_qs = CountryLanguageModel.objects.filter(country_id=region_country, language_id=lang_id[0]['id']).values(
+            'country_name')
+        res['region'] = region_qs[0]['country_name'] if region_qs.exists() else ''
         aliSms = AliSmsObject()
-        res = aliSms.send_code_sms(phone=phone, code=resetCode, sign_name=sign_ms,
-                                   temp_msg='SMS_151675019')
-        if res["Code"] == "OK":
-            if not reds.set_data(key=reds_key, val=resetCode, expire=300):
-                return response.json(10, '生成缓存错误')
-            return response.json(0)
+        if not number or number == '0':
+            res['status'] = 0
+            user_qs.update(last_login=now_time, language=lang)
+            msg_res = aliSms.send_code_sms(phone=phone, code=resetCode, sign_name=sign_ms,
+                                           temp_msg='SMS_151675019')
+            if msg_res["Code"] == "OK":
+                if not reds.set_data(key=reds_key, val=resetCode, expire=300):
+                    res['Message'] = '生成缓存错误'
+                    return response.json(10, res)
+            else:
+                res['Message'] = msg_res['Message']
+                return response.json(10, res)
         else:
-            return response.json(10, res["Message"])
+            number = int(number)
+            if number != region_country and region_country != 0:
+                res['status'] = 1
+                user_qs.update(last_login=now_time, language=lang)
+            else:
+                res['status'] = 0
+                user_qs.update(last_login=now_time, language=lang, region_country=number)
+                msg_res = aliSms.send_code_sms(phone=phone, code=resetCode, sign_name=sign_ms,
+                                               temp_msg='SMS_151675019')
+                if msg_res["Code"] == "OK":
+                    if not reds.set_data(key=reds_key, val=resetCode, expire=300):
+                        res['Message'] = '生成缓存错误'
+                        return response.json(10, res)
+                else:
+                    res['Message'] = msg_res['Message']
+                    return response.json(10, res)
+        return response.json(0, res)
 
-    def do_v2_send_phone_code(self, country_code, phone, response, sign_name):
+    def do_v2_send_phone_code(self, country_code, phone, response, sign_name, number, lang):
         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)
+        users = user_qs[0]
+        res = {}
         reds = RedisObject()
         reds_key = str(phone) + '_forgetPwdResetCode'
         resetCode = reds.get_data(key=reds_key)
@@ -1408,23 +1445,54 @@ class v2forgetPwdCodeView(TemplateView):
             temp_msg = 'SMS_172200051'
             rec_phone = str(country_code) + str(phone)
             sign_ms = 'Ansjer'
-
-        res = aliSms.send_code_sms(phone=rec_phone, code=resetCode, sign_name=sign_ms,
-                                   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)
+        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+        region_country = users['region_country']
+        lang_id = LanguageModel.objects.filter(lang=lang).values('id')
+        region_qs = CountryLanguageModel.objects.filter(country_id=region_country, language_id=lang_id[0]['id']).values(
+            'country_name')
+        res['region'] = region_qs[0]['country_name'] if region_qs.exists() else ''
+        if not number or number == '0':
+            res['status'] = 0
+            user_qs.update(last_login=now_time, language=lang)
+            msg_res = aliSms.send_code_sms(phone=rec_phone, code=resetCode, sign_name=sign_ms,
+                                           temp_msg=temp_msg)
+            if msg_res["Code"] == "OK":
+                if not reds.set_data(key=reds_key, val=resetCode, expire=300):
+                    res['Message'] = '生成缓存错误'
+                    return response.json(10, res)
+            else:
+                res['Message'] = msg_res['Message']
+                return response.json(10, res)
         else:
-            return response.json(10, res["Message"])
+            number = int(number)
+            if number != region_country and region_country != 0:
+                res['status'] = 1
+                user_qs.update(last_login=now_time, language=lang)
+            else:
+                res['status'] = 0
+                user_qs.update(last_login=now_time, language=lang, region_country=number)
+                msg_res = aliSms.send_code_sms(phone=rec_phone, code=resetCode, sign_name=sign_ms,
+                                               temp_msg=temp_msg)
+                if msg_res["Code"] == "OK":
+                    if not reds.set_data(key=reds_key, val=resetCode, expire=300):
+                        res['Message'] = '生成缓存错误'
+                        return response.json(10, res)
+                else:
+                    res['Message'] = msg_res['Message']
+                    return response.json(10, res)
+
+        return response.json(0, res)
+
 
-    def do_send_email_code(self, email, response):
+    def do_send_email_code(self, email, response, number, lang):
         data_valid = DataValid()
         if data_valid.email_validate(email) is not True:
             return response.json(105)
         user_qs = Device_User.objects.filter(Q(userEmail=email) | Q(username=email))
         if not user_qs.exists():
             return response.json(104)
+        users = user_qs[0]
+        res = {}
         reds = RedisObject()
         resetCode = reds.get_data(key=email + '_forgetPwdResetCode')
         if resetCode is True:
@@ -1435,6 +1503,33 @@ class v2forgetPwdCodeView(TemplateView):
         send_data = TemplateService.email_message(type='forgetCode', language=response.lang)
         send_body = send_data['body'].format(userEmail=email, email_valid_code=resetCode)
         ses = SesClassObject()
+        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+        region_country = users['region_country']
+        lang_id = LanguageModel.objects.filter(lang=lang).values('id')
+        region_qs = CountryLanguageModel.objects.filter(country_id=region_country, language_id=lang_id[0]['id']).values(
+            'country_name')
+        res['region'] = region_qs[0]['country_name'] if region_qs.exists() else ''
+        if not number or number == '0':
+            res['status'] = 0
+            user_qs.update(last_login=now_time, language=lang)
+            send_res = ses.alyEmailCode(send_address_list=[email], subject=send_data['title'], body=send_body)
+            if send_res is not True:
+                reds.del_data(key=email + '_forgetPwdResetCode')
+                res['Message'] = '发送邮件失败'
+                return response.json(44)
+        else:
+            number = int(number)
+            if number != region_country and region_country != 0:
+                res['status'] = 1
+                user_qs.update(last_login=now_time, language=lang)
+            else:
+                res['status'] = 0
+                user_qs.update(last_login=now_time, language=lang, region_country=number)
+                send_res = ses.alyEmailCode(send_address_list=[email], subject=send_data['title'], body=send_body)
+                if send_res is not True:
+                    reds.del_data(key=email + '_forgetPwdResetCode')
+                    res['Message'] = '发送邮件失败'
+                    return response.json(44)
 
         # send_res = ses.send_email(send_address_list=[email], subject=send_data['title'], body=send_body)
         # 阿里云发送邮箱
@@ -2057,7 +2152,8 @@ class v3LoginView(TemplateView):
             else:
                 res['status'] = 0
                 user_qs.update(last_login=now_time, language=response.lang, region_country=number)
-        region_qs = CountryLanguageModel.objects.filter(country_id=region_country, language_id=lang_id[0]['id']).values('country_name')
+        region_qs = CountryLanguageModel.objects.filter(country_id=region_country, language_id=lang_id[0]['id']).values(
+            'country_name')
 
         res['rid'] = users['role__rid']
         res['roleName'] = users['role__roleName']
@@ -4268,5 +4364,3 @@ class DeleteUser(View):
         if user_qs.exists():
             user_qs.delete()
         return response.json(0)
-
-