kboss/b/product/requirement_search.dspy
2025-07-31 15:37:38 +08:00

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