async def productDelete(ns={}): """ delect product only use primary key to delete :param ns: :return: """ db = DBPools() async with db.sqlorContext('kboss') as sor: if not ns.get('id'): return { "status": False, "msg": "product id is empty, please check", } try: ns['del_flg'] = '1' await sor.U('product', ns) productid = ns.get('id') table_list = ['rp_discount', 'floorprice', 'rp_rebate_ctl', 'cp_discount'] for tabl in table_list: update_sql = """update %s set end_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY), del_flg = '1' where productid = '%s'""" % (tabl, productid) await sor.sqlExe(update_sql, {}) rebate_sql = """select * from rp_rebate_ctl where productid = '%s'""" % productid rebates = await sor.sqlExe(rebate_sql, {}) rebate_set = tuple([item.get('rebateid') for item in rebates]) if len(rebate_set) == 1: rebate_set += ('Na',) if not rebate_set: return { 'status': True, 'msg': 'product delete success', 'warn': 'rebate is empty' } rebate_update_sql = """update rp_rebate set del_flg = '1' where rebateid in {}""".format(rebate_set) await sor.sqlExe(rebate_update_sql, {}) return { "status": True, "msg": "product delete success", } except Exception as e: raise e return { "status": False, "msg": "product delete failed" } ret = await productDelete(params_kw) return ret