async def get_reseller_user_tenant_orgid(sor, orgid): reseller = await sor.R('reseller', {'orgid': orgid, 'del_flg': '0'}) if len(reseller) >= 1: return orgid org = await sor.R('organization', {'id': orgid, 'del_flg': '0'}) if len(org) >= 1 and org[0].get('parentid'): return org[0]['parentid'] main_org = await sor.R('organization', {'org_type': '0', 'del_flg': '0'}) if len(main_org) >= 1: return main_org[0]['id'] return None async def reseller_add_user(ns): """ 添加用户 `id`: '用户id', `name` : '姓名', `password` :'密码', `email` : '邮件地址', `orgid`: '所属机构', `nick_name`: '显示名', `address` :地址', `mobile`: '手机' """ db = DBPools() async with db.sqlorContext('kboss') as sor: try: ns['id'] = uuid() ns['password'] = password_encode(ns['password']) # tenant_orgid = await get_reseller_user_tenant_orgid(sor, ns.get('orgid')) tenant_orgid = ns.get('orgid') if not tenant_orgid: return {'status': False, 'msg': '未找到用户所属租户'} user_sql = """select id from users where username = '%s' and tenant_orgid = '%s' and del_flg = '0' limit 1;""" % (ns['username'], tenant_orgid) user = await sor.sqlExe(user_sql, {}) if len(user) >= 1: return {'status': False, 'msg': '用户名重复'} rolereacs = await sor.R('role', {'role': '管理员', 'del_flg': '0', 'org_type': ns.get('org_type')}) ns['user_reseller'] = ns.get('org_type') ns['tenant_orgid'] = tenant_orgid await sor.C('users', ns) await sor.C('userrole', {'userid': ns['id'], 'roleid': rolereacs[0]['id'], 'id': uuid()}) return {'status': True, 'msg': '用户添加成功', 'userid': ns['id']} except Exception as e: raise e return { 'status': False, 'msg': '用户添加失败' } ret = await reseller_add_user(params_kw) return ret