async def getResellerAdminRole(sor, orgid): """ 入参:分销商orgid -> 通过users表获取对应机构下user -> 筛选获取管理员 :param ns: :return: """ if not orgid: return { "status": False, "msg": "orgid id is empty, please check", } # get users users = await sor.R('users', {'orgid': orgid, 'del_flg': '0'}) user_id_list = [item.get('id') for item in users] # get admin config id rolereacs = await sor.R('role', {'role': '管理员','del_flg':'0','org_type':'1'}) roleadminid = rolereacs[0]['id'] # get all admin userrole_list = await sor.R('userrole', {'roleid': roleadminid,'del_flg':'0'}) userrole_id_list = [ite.get('userid') for ite in userrole_list] retB = list(set(user_id_list).intersection(set(userrole_id_list))) if not retB: return {'adminid': '', 'adminname': ''} # filter all users with admins for user in users: userid = user.get('id') if userid in retB: return {'adminid': userid, 'adminname': user.get('username')} return {'adminid': '', 'adminname': ''} async def resellerOrgSearch(ns={}): """ 入参: 运营userid -> 对应reseller表salemanid -> 查找所有orgid -> 查找admin -> org表和resller表 和 admin信息合并 返回 :param ns: :return: """ if not ns: return { "status": False, "msg": "reseller organization search failed, user id is empty", } db = DBPools() async with db.sqlorContext('kboss') as sor: try: # get orgid from userid from users table # if not await get_user(): # return { # "status": False, # "message": "organization search failed, userid is empty" # } orgid_li = await sor.R('reseller', {'salemanid': await get_user(), 'del_flg': '0'}) if not orgid_li: return { "status": False, "message": "orgid search failed, orgid can not find by reseller table" } reseller_list = [] for reseller in orgid_li: reseller['reseller_table_id'] = reseller.pop('id') orgid = reseller.get('orgid') res_admin = await getResellerAdminRole(sor, orgid) org_li = await sor.R('organization', {'id': orgid, 'del_flg': '0'}) org = org_li[0] if org_li else {} if org: org.update(reseller) org.update(res_admin) reseller_list.append(org) return { "status": True, "msg": "saler get all reseller organization search success", "data": reseller_list } except Exception as e: return { "status": False, "msg": "saler get all reseller organization search failed", "err_msg": e } ret = await resellerOrgSearch(params_kw) return ret