async def publish_product_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_product 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_product 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_product 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_product 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_product 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 publish_product_search(params_kw) return ret