From e7a4535423b0497bf9a45172f799c017931eba1e Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 13 Jul 2026 11:14:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20add=5Fsub=5Fdistributor=5Fadmin=20-=20?= =?UTF-8?q?=E7=94=A8orgtypeid+name=E6=9F=A5role,=20=E8=A1=A5parentid+org?= =?UTF-8?q?=5Ftype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wwwroot/api/add_sub_distributor_admin.dspy | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/wwwroot/api/add_sub_distributor_admin.dspy b/wwwroot/api/add_sub_distributor_admin.dspy index 83d2c79..2bb5d97 100644 --- a/wwwroot/api/add_sub_distributor_admin.dspy +++ b/wwwroot/api/add_sub_distributor_admin.dspy @@ -10,7 +10,7 @@ if not userorgid: dbname = get_module_dbname('supplychain') async with DBPools().sqlorContext(dbname) as sor: recs = await sor.sqlExe( - 'SELECT id, sub_dist_name FROM sub_distributors WHERE id = ${sid}$', + 'SELECT id, sub_dist_name, resellerid FROM sub_distributors WHERE id = ${sid}$', {'sid': sub_distributor_id} ) if not recs: @@ -21,14 +21,25 @@ org_id = sd.id admin_username = f'admin_{sub_distributor_id[:8]}' async with DBPools().sqlorContext('sage') as sor_sage: - # Check/ensure org exists + parent_reseller_id = sd.resellerid if hasattr(sd, 'resellerid') else '0' + + # Check/ensure org exists with correct parentid and org_type org_recs = await sor_sage.sqlExe( 'SELECT id FROM organization WHERE id = ${oid}$', {'oid': org_id} ) if not org_recs: await sor_sage.C('organization', { 'id': org_id, 'orgname': sd.sub_dist_name, + 'org_type': 'reseller', 'parentid': parent_reseller_id, }) + else: + # Fix missing parentid/org_type on existing org + org = org_recs[0] + if not getattr(org, 'parentid', None) or org.parentid == '0': + await sor_sage.sqlExe( + 'UPDATE organization SET parentid = ${pid}$, org_type = ${ot}$ WHERE id = ${oid}$', + {'pid': parent_reseller_id, 'ot': 'reseller', 'oid': org_id} + ) # Check if admin already exists user_recs = await sor_sage.sqlExe( @@ -55,9 +66,10 @@ async with DBPools().sqlorContext('sage') as sor_sage: 'user_status': '1', }) - # Assign roles: logined + reseller.admin + reseller.operator - for role_name in ['logined', 'reseller.admin', 'reseller.operator']: - role_recs = await sor_sage.R('role', {'role': role_name}) + # Assign roles: reseller.admin + reseller.operator + # (logined is auto-added by get_userroles(), no need to assign) + for orgtypeid, role_name in [('reseller', 'admin'), ('reseller', 'operator')]: + role_recs = await sor_sage.R('role', {'orgtypeid': orgtypeid, 'name': role_name}) if role_recs: await sor_sage.C('userrole', { 'id': getID(), 'userid': user_id, 'roleid': role_recs[0].id,