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