# encoding: utf-8 # @Time : 2022/4/18 上午10:36 # @Author : chenjiang # @Site : # @File : edu_user_helper.py import requests # import py_eureka_client.eureka_client as eureka_client from base_framework.public_tools.sqlhelper import MySqLHelper from base_framework.public_tools.my_faker import MyFaker from base_framework.public_tools import log from base_framework.public_tools.utils import Tools obj_log = log.get_logger() obj_my_faker = MyFaker() obj_my_sql_helper = MySqLHelper() obj_tools = Tools() # def get_ip_by_server_name(env_name, service_name, type): # """ # 根据服务名称,环境,as/hh # :param env_name: 环境信息 # :param service_name: 服务名称 # :param type: as/hh # :return: # """ # all_school_eureka_server= 'http://eureka.qa.allschool.com/eureka/' # hh_eureka_server = 'http://eureka.qa.huohua.cn/eureka/' # try: # if type.lower() == 'as': # eureka_server = all_school_eureka_server # else: # eureka_server = hh_eureka_server # # eureka_client.init( # eureka_server=eureka_server, # app_name="ASC--", # instance_ip="127.0.0.1", # instance_port=8080) # client = eureka_client.get_client() # app = client.applications.get_application(service_name) # ip_list = [] # for app_in in app.up_instances: # if app_in.metadata.get('ver').lower() == env_name.lower() and app_in.ipAddr: # ip_list.append(app_in.ipAddr) # else: # pass # if ip_list: # return ip_list # else: # obj_log.info("未获取到ip") # return False # except Exception as e: # obj_log.info(e) # return False class EDUUserHelper: """ 用户中心用户相关操作 """ def __init__(self): pass def get_unregistered_phone(self): """ | 功能说明: | 获取未注册的手机号 | | 输入参数: | | | 返回参数: | phone | | 作者信息: | 陈江 | 2022/4/18 | """ phone = obj_my_faker.gen_phone_number() if phone: is_exit = obj_my_sql_helper.select_one( 'SELECT id FROM `ucenter`.`user_profile` WHERE `phone` = \'{}\''.format(phone[0])) if is_exit: obj_log.info('该{}手机号码已经存在,正在重新获取'.format(phone)) self.get_unregistered_phone() else: return phone[0] else: obj_log.error('生成手机号码失败') return False def get_unused_email(self): """ | 功能说明: | 获取未使用的邮箱 | | 输入参数: | | | 返回参数: | email| | 作者信息: | 陈江 | 2022/4/18 | """ email = obj_my_faker.gen_email() if email: is_exit = obj_my_sql_helper.select_one( 'SELECT id FROM `ucenter`.`user_contact` WHERE `contact_info` = \'{}\''.format(email)) if is_exit: obj_log.info('该{}邮箱已经存在,正在重新获取'.format(email)) self.get_unused_email() else: return email else: obj_log.error('生成邮箱失败') return False def get_sms_code_by_phone(self, phone): """ | 功能说明: | 根据手机号码获取短信验证码 | | 输入参数: | phone | 手机号| | 返回参数: | 验证码 | | 作者信息: | 陈江 | 2022/4/18 | """ # 根据phone获取phone_code phone_server_ip = obj_tools.get_container_ip_from_eureka('PHONE-SERVER', need_jira_id='qa', eureka_url='http://eureka.qa.huohua.cn') if phone_server_ip.get('container_ip'): url = 'http://{}:8080/encrypt/regdata?biztype=phone&uid=123456&sourceData={}'.format( phone_server_ip.get('container_ip'), phone) response = requests.post(url=url) # 三个参数 response_json = response.json() else: obj_log.info('未获取到phone-server的ip') return False if response_json.get('data'): msg = obj_my_sql_helper.select_all( 'SELECT msg FROM `push_service`.`sms` WHERE `phone_code` = \'{}\' ORDER BY id DESC LIMIT 10 '.format( response_json.get('data'))) if msg: for m in msg: try: if ',' in m.get('msg'): msg_split = m.get('msg').split(',')[0] elif ',' in m.get('msg'): msg_split = m.get('msg').split(',')[0] else: return False if ':' in msg_split: code = msg_split.split(':')[1].strip(' ') elif ':' in msg_split: code = msg_split.split(':')[1].strip(' ') else: import re pattern = r'\b(\d{4,6})\b.*?verification code' match = re.search(pattern, msg_split) if match: verification_code = match.group(1) return verification_code return False return code except Exception as e: return e else: obj_log.info('未找到发送的短信记录') return False else: obj_log.info('获取{}该手机号的phonecode失败'.format(phone)) return False if __name__ == '__main__': a = EDUUserHelper() print(a.get_sms_code_by_phone('13563963497')) # c = {'msg': 'SMS verification code: 6378, valid within 10 minutes, please ignore if you are not operating by yourself.'} # # print(c.get('msg').split(',')[0].split(':')[1].strip(' '))