update
This commit is contained in:
parent
f2b432df51
commit
52568b3352
83
b/user/get_user_and_role.dspy
Normal file
83
b/user/get_user_and_role.dspy
Normal file
@ -0,0 +1,83 @@
|
||||
def _parse_page(ns, default_page=1, default_size=20, max_size=200):
|
||||
try:
|
||||
current_page = int(ns.get('current_page') or ns.get('page') or default_page)
|
||||
except (TypeError, ValueError):
|
||||
current_page = default_page
|
||||
try:
|
||||
page_size = int(ns.get('page_size') or default_size)
|
||||
except (TypeError, ValueError):
|
||||
page_size = default_size
|
||||
current_page = max(1, current_page)
|
||||
page_size = max(1, min(page_size, max_size))
|
||||
return current_page, page_size, (current_page - 1) * page_size
|
||||
|
||||
|
||||
async def get_user_and_role(ns={}):
|
||||
"""获取机构下所有用户及用户对应的所有角色"""
|
||||
orgid = ns.get('orgid')
|
||||
if not orgid:
|
||||
return {'status': False, 'msg': '缺少 orgid'}
|
||||
|
||||
current_page, page_size, offset = _parse_page(ns)
|
||||
db = DBPools()
|
||||
async with db.sqlorContext('kboss') as sor:
|
||||
try:
|
||||
where_sql = """
|
||||
u.del_flg='0'
|
||||
AND (
|
||||
u.orgid=${orgid}$
|
||||
OR o.parentid=${orgid}$
|
||||
)
|
||||
"""
|
||||
if ns.get('username'):
|
||||
where_sql += " AND u.username LIKE '%%%%%s%%%%'" % ns.get('username')
|
||||
if ns.get('mobile'):
|
||||
where_sql += " AND u.mobile LIKE '%%%%%s%%%%'" % ns.get('mobile')
|
||||
count_rows = await sor.sqlExe(
|
||||
"""
|
||||
SELECT COUNT(*) AS total_count
|
||||
FROM users u
|
||||
LEFT JOIN organization o ON u.orgid = o.id AND o.del_flg='0'
|
||||
WHERE %s
|
||||
""" % where_sql,
|
||||
{'orgid': orgid},
|
||||
)
|
||||
total_count = count_rows[0]['total_count'] if count_rows else 0
|
||||
sql = """
|
||||
SELECT u.*
|
||||
FROM users u
|
||||
LEFT JOIN organization o ON u.orgid = o.id AND o.del_flg='0'
|
||||
WHERE %s
|
||||
ORDER BY u.create_at DESC
|
||||
LIMIT %d OFFSET %d
|
||||
""" % (where_sql, page_size, offset)
|
||||
users = await sor.sqlExe(sql, {'orgid': orgid})
|
||||
for user in users:
|
||||
user['roles'] = []
|
||||
userroles = await sor.R('userrole', {'userid': user['id']})
|
||||
for userrole in userroles:
|
||||
if userrole.get('del_flg') == '1' or not userrole.get('roleid'):
|
||||
continue
|
||||
roles = await sor.R('role', {'id': userrole['roleid']})
|
||||
if len(roles) >= 1 and roles[0].get('del_flg') != '1':
|
||||
user['roles'].append({
|
||||
'id': roles[0].get('id'),
|
||||
'name': roles[0].get('role'),
|
||||
})
|
||||
|
||||
return {
|
||||
'status': True,
|
||||
'msg': 'ok',
|
||||
'data': {
|
||||
'total_count': total_count,
|
||||
'current_page': current_page,
|
||||
'page_size': page_size,
|
||||
'rows': users,
|
||||
},
|
||||
}
|
||||
except Exception as e:
|
||||
return {'status': False, 'msg': '获取用户角色失败, %s' % str(e)}
|
||||
|
||||
|
||||
ret = await get_user_and_role(params_kw)
|
||||
return ret
|
||||
Loading…
x
Reference in New Issue
Block a user