async def update_server(ns={}): """ 修改设备配置 :param ns: :return: """ response = {"status": False} data = {} try: data["id"] = ns["id"] data["productid"] = ns['productid'] data["price"] = ns['price'] data["stock"] = int(ns['stock']) data['change_stock'] = int(ns['change_stock']) data['end_date'] = ns['end_date'] except Exception as e: response = {"status": False, "msg": f"update server error, please check key:{str(e)}"} return response if data["stock"] < 0: return {"status": False, "msg": "库存不能小于0"} db = DBPools() async with db.sqlorContext('kboss') as sor: data["update_time"] = datetime.datetime.now() # 修改产品表 await sor.U("lease_server_data", {"id": ns['id'], "price": data["price"], "stock": data["stock"], "update_time": data["update_time"]}) msg = "产品修改成功" # 库存设备增加 if data['change_stock'] > 0: # 创建新设备数据 for _ in range(data['change_stock']): d = { 'id': uuid(), 'productid': data['productid'], 'server_id': data['id'], 'status': 0, 'end_date': data['end_date'], } await sor.C("lease_server_status", d) response = {"status": True, "msg": f"{msg}"} return response # 库存设备减少 elif data['change_stock'] < 0: lease_server_status_data = { "server_id": ns['id'], "update_time": data["update_time"], "num": abs(data['change_stock']) } sql = "update lease_server_status set del_flg= 1 where server_id= ${server_id}$ and del_flg=0 limit ${num}$;" update_num = await sor.sqlExe(sql, lease_server_status_data) if update_num != abs(data['change_stock']): raise Exception(f"库存设备减少失败,请检查库存设备数量") else: response = {"status": True, "msg": f"{msg}"} return response else: response = {"status": True, "msg": f"{msg}"} return response return {"status": False, "msg": f"sql error"} ret = await update_server(params_kw) return ret