93 lines
4.0 KiB
Plaintext
93 lines
4.0 KiB
Plaintext
async def get_user_role(ns={}):
|
|
sor = ns['sor']
|
|
# get role
|
|
ns['del_flg'] = '0'
|
|
res_role = await sor.R('userrole', ns)
|
|
if res_role:
|
|
user_role = res_role[0]
|
|
else:
|
|
return {
|
|
"status": False,
|
|
"msg": "userrole table, user id can not find..."
|
|
}
|
|
roleid = user_role.get('roleid')
|
|
# get role name
|
|
role_name = await sor.R('role', {'id': roleid})
|
|
if role_name:
|
|
role = role_name[0].get('role')
|
|
else:
|
|
return {
|
|
"status": False,
|
|
"msg": "role table, can not get role name"
|
|
}
|
|
return role
|
|
|
|
async def requirement_search(ns={}):
|
|
"""
|
|
普通客户查看
|
|
运营查看自己提交内容
|
|
运营查看所有用户内容
|
|
:param ns:
|
|
:return:
|
|
"""
|
|
offset = ns['offset']
|
|
flag = ns.get('flag')
|
|
|
|
if ns.get('userid'):
|
|
userid = ns.get('userid')
|
|
else:
|
|
userid = await get_user()
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
# 区分运营和普通客户
|
|
user_list = await sor.R('users', {'id': userid})
|
|
if not user_list:
|
|
return {
|
|
'status': False,
|
|
'msg': '没有找到匹配的用户'
|
|
}
|
|
orgid = user_list[0]['orgid']
|
|
org_parentid_li = await sor.R('organization', {'id': orgid})
|
|
org_parentid = org_parentid_li[0]['parentid']
|
|
user_role = await get_user_role({'userid': userid, 'sor': sor})
|
|
try:
|
|
# 非客户角色
|
|
if user_role != '客户':
|
|
ns['del_flg'] = '0'
|
|
|
|
# 业主机构角色并且是只查看业主机构自己 flag==single
|
|
if orgid == 'mIWUHBeeDM8mwAFPIQ8pS' and flag == 'single':
|
|
find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id
|
|
WHERE org.parentid IS NULL AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % offset
|
|
# 业主机构角色并且是查看所有(包括业主机构自己) flag!=single
|
|
elif orgid == 'mIWUHBeeDM8mwAFPIQ8pS':
|
|
find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id
|
|
WHERE org.id = '%s' or org.parentid = '%s' AND org.org_type != '1' AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, orgid, offset)
|
|
# 其他机构非用户角色 只查看自己
|
|
elif flag == 'single':
|
|
find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id
|
|
WHERE org.id = '%s' AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, offset)
|
|
# 其他机构非用户角色查看所有
|
|
else:
|
|
find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id
|
|
WHERE (org.id = '%s' or org.parentid = '%s') AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, orgid, offset)
|
|
# 客户角色
|
|
else:
|
|
ns['del_flg'] = '0'
|
|
ns['orgid'] = user_list[0]['id']
|
|
find_sql = """SELECT * FROM user_publish_requirement WHERE orgid = '%s' AND del_flg = '0' ORDER BY create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, offset)
|
|
|
|
result = await sor.sqlExe(find_sql, {})
|
|
return {
|
|
'status': True,
|
|
'msg': 'Requirements retrieved successfully',
|
|
'data': result
|
|
}
|
|
except Exception as e:
|
|
return {
|
|
'status': False,
|
|
'msg': 'Failed to retrieve requirements, %s' % str(e)
|
|
}
|
|
|
|
ret = await requirement_search(params_kw)
|
|
return ret |