async def product_salemode_search(ns={}): """ 产品价格不落地 查找sale_protocol以后 具体产品配置查找 :param ns: :return: """ db = DBPools() async with db.sqlorContext('kboss') as sor: try: if ns.get('salemode') == '0': res_list = [] ns_search = { 'protocolid': ns.get('protocolid'), 'del_flg': '0' } res = await sor.R('product_salemode', ns_search) # 首先查找不是*的产品 加到产品列表 # 已经存在的id列表 prd_singles = [item.get('productid') for item in res if item.get('productid') != '*'] # 已经存在的id列表 包含对应折扣 prd_single_ids = [(item.get('productid'), item.get('discount')) for item in res if item.get('productid') != '*'] for prd_single in prd_single_ids: single_sql = """select * from product where id = '%s' and del_flg = '0' and CURRENT_DATE between effect_date and expire_date;""" % prd_single[0] single_res_li = await sor.sqlExe(single_sql, {}) single_res = single_res_li[0] if single_res_li else {} single_res['discount'] = prd_single[1] res_list.append(single_res) # 查找*的所有产品id 通过prd_single筛选 nss = { 'productid': '*', 'protocolid': ns.get('protocolid'), 'del_flg': '0' } res_star = await sor.R('product_salemode', nss) if res_star: # 针对产品设置的统一折扣 start_discount = res_star[0].get('discount') provider_star = res_star[0].get('providerid') res_product_sql = """select * from product where providerid = '%s' and del_flg = '0' and CURRENT_DATE between effect_date and expire_date;""" % provider_star res_product_li = await sor.sqlExe(res_product_sql, {}) for res_product in res_product_li: res_product_id = res_product.get('id') if res_product_id not in prd_singles: res_product['discount'] = start_discount res_list.append(res_product) return { "status": True, "msg": "product_salemode search success", "data": res_list } except Exception as e: return { "status": False, "msg": "product_salemode search failed", 'data': e } return { "status": False, "msg": "product_salemode search failed", "data": 111, } ret = await product_salemode_search(params_kw) return ret