import random
import string
from datetime import datetime
import pandas as pd

# 常用姓氏和名字
surnames = ['王', '李', '张', '刘', '陈', '杨', '黄', '赵', '周', '吴', '徐', '孙', '马', '胡', '朱', '郭', '何', '罗', '高', '林']
given_names = ['伟', '芳', '娜', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀英', '霞', '平', '刚', '桂英', '玉兰', '萍', '毅', '浩', '宇', '轩', '然', '凯']

# 人员类型
person_types = ['中介', '职业背债人', '房产中介']
person_sub_types = ['本人', '配偶', '子女', '其他']
genders = ['M', 'F', 'O']
id_types = ['身份证', '护照', '港澳通行证', '台胞证', '军官证']
relation_types = ['配偶', '子女', '父母', '兄弟姐妹', '其他']

# 常用地址
provinces = ['北京市', '上海市', '广东省', '浙江省', '江苏省', '四川省', '湖北省', '河南省', '山东省', '福建省']
cities = ['朝阳区', '海淀区', '浦东新区', '黄浦区', '天河区', '福田区', '西湖区', '滨江区', '鼓楼区', '玄武区']
districts = ['街道1号', '大道2号', '路3号', '巷4号', '小区5栋', '花园6号', '广场7号', '大厦8号楼']

# 公司和职位
companies = ['房产中介有限公司', '置业咨询公司', '房产经纪公司', '地产代理公司', '不动产咨询公司', '房屋租赁公司', '物业管理公司', '投资咨询公司']
positions = ['房产经纪人', '销售经理', '业务员', '置业顾问', '店长', '区域经理', '高级经纪人', '项目经理']

# 生成身份证号码（简化版，仅用于测试）
def generate_id_card():
    # 地区码（前6位）
    area_code = f"{random.randint(110000, 650000):06d}"
    # 出生日期（8位）
    birth_year = random.randint(1960, 2000)
    birth_month = f"{random.randint(1, 12):02d}"
    birth_day = f"{random.randint(1, 28):02d}"
    birth_date = f"{birth_year}{birth_month}{birth_day}"
    # 顺序码（3位）
    sequence = f"{random.randint(1, 999):03d}"
    # 校验码（1位）
    check_code = random.randint(0, 9)
    return f"{area_code}{birth_date}{sequence}{check_code}"

# 生成手机号
def generate_phone():
    second_digits = ['3', '5', '7', '8', '9']
    second = random.choice(second_digits)
    return f"1{second}{''.join([str(random.randint(0, 9)) for _ in range(9)])}"

# 生成统一信用代码
def generate_credit_code():
    return f"91{''.join([str(random.randint(0, 9)) for _ in range(16)])}"

# 生成微信号
def generate_wechat():
    return f"wx_{''.join([random.choice(string.ascii_lowercase + string.digits) for _ in range(8)])}"

# 生成单条数据
def generate_person(index):
    person_type = random.choice(person_types)
    gender = random.choice(genders)

    # 根据性别选择更合适的名字
    if gender == 'M':
        name = random.choice(surnames) + random.choice(['伟', '强', '磊', '军', '勇', '杰', '涛', '明', '超', '毅', '浩', '宇', '轩'])
    else:
        name = random.choice(surnames) + random.choice(['芳', '娜', '敏', '静', '丽', '艳', '娟', '秀英', '霞', '平', '桂英', '玉兰', '萍'])

    id_type = random.choice(id_types)
    id_card = generate_id_card() if id_type == '身份证' else f"{random.randint(10000000, 99999999):08d}"

    return {
        '姓名': name,
        '人员类型': person_type,
        '人员子类型': random.choice(person_sub_types),
        '性别': gender,
        '证件类型': id_type,
        '证件号码': id_card,
        '手机号码': generate_phone(),
        '微信号': generate_wechat() if random.random() > 0.3 else '',
        '联系地址': f"{random.choice(provinces)}{random.choice(cities)}{random.choice(districts)}",
        '所在公司': random.choice(companies) if random.random() > 0.2 else '',
        '企业统一信用码': generate_credit_code() if random.random() > 0.5 else '',
        '职位': random.choice(positions) if random.random() > 0.3 else '',
        '关联人员ID': f"ID{random.randint(10000, 99999)}" if random.random() > 0.6 else '',
        '关系类型': random.choice(relation_types) if random.random() > 0.6 else '',
        '备注': f'测试数据{index}' if random.random() > 0.5 else ''
    }

# 生成1000条数据
print("正在生成1000条个人中介黑名单数据...")
data = [generate_person(i) for i in range(1, 1001)]
df = pd.DataFrame(data)

# 保存第一个文件
output1 = r'D:\ccdi\ccdi\doc\test-data\intermediary\个人中介黑名单测试数据_1000条_第1批.xlsx'
df.to_excel(output1, index=False)
print(f"已生成第一个文件: {output1}")

# 生成第二个1000条数据
print("正在生成第二批1000条个人中介黑名单数据...")
data2 = [generate_person(i) for i in range(1, 1001)]
df2 = pd.DataFrame(data2)

# 保存第二个文件
output2 = r'D:\ccdi\ccdi\doc\test-data\intermediary\个人中介黑名单测试数据_1000条_第2批.xlsx'
df2.to_excel(output2, index=False)
print(f"已生成第二个文件: {output2}")

print("\n生成完成！")
print(f"文件1: {output1}")
print(f"文件2: {output2}")
print(f"\n每个文件包含1000条测试数据")
