同步域名信息时增加更新所有者模板并测试通过

This commit is contained in:
jingrow 2025-08-05 04:24:43 +08:00
parent 7a4bd92710
commit 22740d5bf0

View File

@ -2646,11 +2646,182 @@ def sync_domain_info_from_west(**data):
real_data = real_info_response.get("data", {}) if real_info_response.get("result") == 200 else {}
# 获取当前域名记录的团队信息
domain_pg = jingrow.get_pg("Jsite Domain", {"domain": domain})
if not domain_pg:
return {"status": "error", "message": "本地未找到该域名记录"}
# 从域名记录获取团队信息
team_name = domain_pg.team
if not team_name:
return {"status": "error", "message": "域名记录中未找到团队信息"}
team = jingrow.get_pg("Team", team_name)
if not team:
return {"status": "error", "message": "未找到团队信息"}
# 同步Domain Owner信息
domain_owner_name = None
if real_data:
# 从实名信息中提取c_sysid和所有者信息
c_sysid = real_data.get("c_sysid")
owner_info = real_data.get("owner", {})
# 添加调试日志
jingrow.log_error(f"Domain Owner同步调试", f"域名: {domain}, c_sysid: {c_sysid}, owner_info: {owner_info}")
jingrow.log_error(f"real_data完整信息", f"real_data: {real_data}")
if c_sysid:
# 如果owner_info为空使用real_data中的所有者字段
if not owner_info:
owner_info = real_data
if owner_info:
# 根据c_sysid查找是否已存在Domain Owner - 只按c_sysid查找不限制团队
existing_owners = jingrow.get_all(
"Domain Owner",
{"c_sysid": c_sysid},
["name", "team"]
)
# 添加调试日志
jingrow.log_error(f"Domain Owner查找结果", f"c_sysid: {c_sysid}, 域名团队: {team.name}, 找到记录数: {len(existing_owners)}")
if existing_owners:
jingrow.log_error(f"找到的Domain Owner", f"名称: {existing_owners[0].name}, 原团队: {existing_owners[0].team or ''}")
else:
jingrow.log_error(f"未找到Domain Owner", f"将创建新的")
if existing_owners:
# 更新已存在的Domain Owner
domain_owner_name = existing_owners[0].name
existing_team = existing_owners[0].team
jingrow.log_error(f"Domain Owner更新逻辑", f"找到现有记录: {domain_owner_name}, 原团队: {existing_team}, 当前团队: {team.name}")
try:
domain_owner_pg = jingrow.get_pg("Domain Owner", domain_owner_name)
if domain_owner_pg:
# 更新团队信息(如果不同或为空)
if not domain_owner_pg.team or domain_owner_pg.team != team.name:
old_team = domain_owner_pg.team or ""
jingrow.log_error(f"Domain Owner团队更新", f"{old_team} 更新为 {team.name}")
domain_owner_pg.team = team.name
# 更新所有者信息
owner_name = owner_info.get("dom_org_m") or owner_info.get("dom_ln_m", "") + owner_info.get("dom_fn_m", "")
domain_owner_pg.fullname = owner_name
domain_owner_pg.r_status = 1 # 已实名认证
# 根据类型更新不同字段
c_regtype = "E" if owner_info.get("dom_org_m") else "I"
domain_owner_pg.c_regtype = c_regtype
if c_regtype == "E": # 企业
domain_owner_pg.c_org_m = owner_info.get("dom_org_m", "")
domain_owner_pg.c_org = owner_info.get("dom_org", "")
domain_owner_pg.c_ln_m = owner_info.get("dom_ln_m", "")
domain_owner_pg.c_fn_m = owner_info.get("dom_fn_m", "")
domain_owner_pg.c_ln = owner_info.get("dom_ln", "")
domain_owner_pg.c_fn = owner_info.get("dom_fn", "")
domain_owner_pg.title = owner_info.get("dom_org_m", "")
else: # 个人
domain_owner_pg.c_ln_m = owner_info.get("dom_ln_m", "")
domain_owner_pg.c_fn_m = owner_info.get("dom_fn_m", "")
domain_owner_pg.c_ln = owner_info.get("dom_ln", "")
domain_owner_pg.c_fn = owner_info.get("dom_fn", "")
domain_owner_pg.title = owner_info.get("dom_ln_m", "") + owner_info.get("dom_fn_m", "")
# 更新地址信息
domain_owner_pg.c_st_m = owner_info.get("dom_st_m", "")
domain_owner_pg.c_ct_m = owner_info.get("dom_ct_m", "")
domain_owner_pg.c_adr_m = owner_info.get("dom_adr_m", "")
domain_owner_pg.c_pc = owner_info.get("dom_pc", "")
domain_owner_pg.c_st = owner_info.get("dom_st", "")
domain_owner_pg.c_ct = owner_info.get("dom_ct", "")
domain_owner_pg.c_adr = owner_info.get("dom_adr", "")
domain_owner_pg.c_em = owner_info.get("dom_em", "")
domain_owner_pg.c_ph = owner_info.get("dom_ph", "")
domain_owner_pg.c_ph_type = "0" # 默认为手机
domain_owner_pg.save(ignore_permissions=True)
jingrow.log_error(f"Domain Owner更新成功", f"名称: {domain_owner_name}")
except Exception as e:
jingrow.log_error(f"更新Domain Owner失败", f"域名: {domain}, c_sysid: {c_sysid}, 错误: {str(e)}")
else:
# 创建新的Domain Owner
jingrow.log_error(f"Domain Owner创建逻辑", f"未找到现有记录将创建新记录c_sysid: {c_sysid}, 域名团队: {team.name}")
try:
# 判断所有者类型(个人或企业)
c_regtype = "E" if owner_info.get("dom_org_m") else "I"
# 生成所有者名称
owner_name = owner_info.get("dom_org_m") or owner_info.get("dom_ln_m", "") + owner_info.get("dom_fn_m", "")
# 构建Domain Owner数据
owner_data = {
"pagetype": "Domain Owner",
"team": team.name, # 使用当前团队
"c_sysid": c_sysid,
"c_regtype": c_regtype,
"fullname": owner_name,
"c_co": "CN",
"cocode": "+86",
"reg_contact_type": "cg",
"r_status": 1, # 已实名认证
"title": owner_name
}
# 根据类型设置不同字段
if c_regtype == "E": # 企业
owner_data.update({
"c_org_m": owner_info.get("dom_org_m", ""),
"c_org": owner_info.get("dom_org", ""),
"c_ln_m": owner_info.get("dom_ln_m", ""),
"c_fn_m": owner_info.get("dom_fn_m", ""),
"c_ln": owner_info.get("dom_ln", ""),
"c_fn": owner_info.get("dom_fn", ""),
"title": owner_info.get("dom_org_m", "")
})
else: # 个人
owner_data.update({
"c_ln_m": owner_info.get("dom_ln_m", ""),
"c_fn_m": owner_info.get("dom_fn_m", ""),
"c_ln": owner_info.get("dom_ln", ""),
"c_fn": owner_info.get("dom_fn", ""),
"title": owner_info.get("dom_ln_m", "") + owner_info.get("dom_fn_m", "")
})
# 设置地址信息
owner_data.update({
"c_st_m": owner_info.get("dom_st_m", ""),
"c_ct_m": owner_info.get("dom_ct_m", ""),
"c_adr_m": owner_info.get("dom_adr_m", ""),
"c_pc": owner_info.get("dom_pc", ""),
"c_st": owner_info.get("dom_st", ""),
"c_ct": owner_info.get("dom_ct", ""),
"c_adr": owner_info.get("dom_adr", ""),
"c_em": owner_info.get("dom_em", ""),
"c_ph": owner_info.get("dom_ph", ""),
"c_ph_type": "0" # 默认为手机
})
# 设置证件信息(如果有)
if owner_info.get("dom_idtype"):
owner_data["c_idtype_gswl"] = owner_info.get("dom_idtype")
if owner_info.get("dom_idnum"):
owner_data["c_idnum_gswl"] = owner_info.get("dom_idnum")
# 创建Domain Owner记录
domain_owner_pg = jingrow.get_pg(owner_data)
domain_owner_pg.insert(ignore_permissions=True)
domain_owner_name = domain_owner_pg.name
jingrow.log_error(f"Domain Owner创建成功", f"名称: {domain_owner_name}, c_sysid: {c_sysid}")
except Exception as e:
jingrow.log_error(f"创建Domain Owner失败", f"域名: {domain}, c_sysid: {c_sysid}, 错误: {str(e)}")
domain_owner_name = None
# 更新本地域名记录
try:
domain_pg = jingrow.get_pg("Jsite Domain", {"domain": domain})
if not domain_pg:
return {"status": "error", "message": "本地未找到该域名记录"}
# domain_pg 已经在前面获取过了,直接使用
# 更新基本信息 - 从实名信息中获取
if real_data:
@ -2665,6 +2836,10 @@ def sync_domain_info_from_west(**data):
domain_pg.dns_host4 = real_data.get("dns_host4", "")
domain_pg.dns_host5 = real_data.get("dns_host5", "")
domain_pg.dns_host6 = real_data.get("dns_host6", "")
# 更新Domain Owner
if domain_owner_name:
domain_pg.domain_owner = domain_owner_name
# 更新DNS解析记录
if dns_data and "items" in dns_data:
@ -2699,7 +2874,8 @@ def sync_domain_info_from_west(**data):
"message": "域名信息同步成功",
"data": {
"dns_records": dns_data,
"real_info": real_data
"real_info": real_data,
"domain_owner": domain_owner_name
}
}