Exemple #1
0
def create_new_user(reg_name, pwd='12345678', type=1):
    """
    创建一个新用户
    :param reg_name:
    :param pwd:
    :param type:
    :return:
    """
    # 创建session会话对象,用来发起请求
    do_request = HandleRequest()
    # 创建mysql对象
    do_mysql = HandleMysql()
    # 添加公共请求头
    do_request.add_headers(do_yaml.read_yaml('api', 'version'))

    # 注册请求的url
    register_url = do_yaml.read_yaml('api', 'prefix') + '/member/register'
    while True:
        # 随机生成一个未注册的手机号
        mobile_phone = do_mysql.create_not_exsited_mobile()
        # 创建一个请求体参数
        data = {
            'mobile_phone': mobile_phone,
            'pwd': pwd,
            'type': type,
            'reg_name': reg_name
        }
        # 调用注册接口,发起请求
        do_request.send(register_url, data=data)

        # 查询数据库用户ID的sql,同时进行了数据校验
        sql = do_yaml.read_yaml('mysql', 'select_user_id_sql')
        # 查询数据库,获取用户ID
        result = do_mysql.run(sql, args=[mobile_phone], is_more=False)
        # 判断是否存在,如果result为None,则用户不存在,if语句为真,用户创建成功,跳出循环
        if result:
            user_id = result['id']
            break

    # 构建用户信息为嵌套字典的字典
    user_info = {
        reg_name: {
            'user_id': user_id,
            'mobile_phone': mobile_phone,
            'pwd': pwd,
            'reg_name': reg_name}
    }

    # 关闭mysql对象
    do_mysql.close()
    # 关闭session会话对象
    do_request.close()

    return user_info
    def to_parameter(cls, data):
        # 使用正则进行匹配得到包含未注册手机号的data
        if re.search(cls.not_existed_tel_pattern, data):
            # 创建数据库连接及游标对象
            do_mysql = HandleMysql()
            # 匹配得到含有未注册手机号的data
            data = re.sub(cls.not_existed_tel_pattern,
                          do_mysql.create_not_exsited_mobile(), data)
            # 关闭数据库游标对象、连接
            do_mysql.close()

        # 已存在的手机号:投资人手机号
        if re.search(cls.existed_tel_pattern, data):
            # 匹配得到含有已存在的手机号的data
            data = re.sub(
                cls.existed_tel_pattern,
                cls.do_yaml_user.read_yaml('investor', 'mobile_phone'), data)

        # 已存在手机号的密码:投资人密码
        if re.search(cls.existed_pwd_pattern, data):
            # 匹配得到含有已存在手机号的密码的data
            data = re.sub(cls.existed_pwd_pattern,
                          cls.do_yaml_user.read_yaml('investor', 'pwd'), data)

        # 会员ID:投资人ID
        if re.search(cls.existed_investor_id_pattern, data):
            # 匹配得到含有投资人会员ID的data
            data = re.sub(
                cls.existed_investor_id_pattern,
                str(cls.do_yaml_user.read_yaml('investor', 'user_id')), data)

        # 不存在的投资人ID
        if re.search(cls.not_existed_id_pattern, data):
            # 创建数据库连接及游标对象
            do_mysql = HandleMysql()
            # 配置文件中获取sql
            # 这里也可以不把sql语句写入配置文件,直接将sql语句写在下面
            sql = do_yaml.read_yaml('mysql', 'select_user_max_id_sql')
            # 运行sql,得到一个字典
            res_max = do_mysql.run(sql, is_more=False)
            # 获取字典的值,转换为字符串,将原data进行参数化
            data = re.sub(cls.not_existed_id_pattern,
                          str(res_max.get('max(id)') + 1), data)
            # 关闭数据库游标对象、连接
            do_mysql.close()

        # 借款人ID
        # 正则匹配:查找
        if re.search(cls.existed_borrower_id_pattern, data):
            data = re.sub(
                cls.existed_borrower_id_pattern,
                str(cls.do_yaml_user.read_yaml('borrower', 'user_id')), data)

        # 借款人电话
        if re.search(cls.existed_borrower_tel_pattern, data):
            data = re.sub(
                cls.existed_borrower_tel_pattern,
                cls.do_yaml_user.read_yaml('borrower', 'mobile_phone'), data)

        # 借款人密码
        if re.search(cls.existed_borrower_pwd_pattern, data):
            data = re.sub(cls.existed_borrower_pwd_pattern,
                          cls.do_yaml_user.read_yaml('borrower', 'pwd'), data)

        # 管理员电话
        if re.search(cls.existed_admin_tel_pattern, data):
            data = re.sub(cls.existed_admin_tel_pattern,
                          cls.do_yaml_user.read_yaml('admin', 'mobile_phone'),
                          data)

        # 管理员密码
        if re.search(cls.existed_admin_pwd_pattern, data):
            data = re.sub(cls.existed_admin_pwd_pattern,
                          cls.do_yaml_user.read_yaml('admin', 'pwd'), data)

        # loan_id
        if re.search(cls.loan_id_pattern, data):
            loan_id = getattr(Parameterize, 'loan_id')
            data = re.sub(cls.loan_id_pattern, str(loan_id), data)

        # 不存在的loan_id
        if re.search(cls.not_existed_loan_id_pattern, data):
            # 创建数据库连接及游标对象
            do_mysql = HandleMysql()
            sql = "select id from loan order by id desc limit 0,1;"
            # 运行sql,得到一个字典
            res_max = do_mysql.run(sql, is_more=False)
            # 获取字典的值,转换为字符串,将原data进行参数化
            data = re.sub(cls.not_existed_loan_id_pattern,
                          str(res_max.get('id') + 1), data)
            # 关闭数据库游标对象、连接
            do_mysql.close()

        return data