def check_args_is_None(ns={}): if not ns: return {"status": False, "msg": "api args is None"} servers = ns.get("servers") if not servers: return {"status": False, "msg": "servers is None"} l = [] for k, v in servers.items(): if len(v) == 0: l.append(k) if len(l) > 0: return {"status": False, "msg": f"the len is 0, please check key:{l}"} return "" async def create_lease_data(ns={}): """ 创建租赁数据 :param ns: :return: """ c = check_args_is_None(ns) if c: return c try: product_data = { "id": products.get("id", uuid()), "product_name": products["product_name"], "price": int(products["price"]), "stock": int(products["stock"]), "total_stock": products["stock"], "user_id": products["user_id"], "lease_start_time": products["lease_start_time"], "lease_end_time": products["lease_end_time"], } except Exception as e: return {"status": False, "msg": f"products get key error, please check key:{str(e)}"} try: server_data = { "user_id": products["user_id"], "product_id": product_data["id"], "store_name": servers["store_name"], "device_type": servers["device_type"], "device_brand": servers["device_brand"], "resource_type": servers["resource_type"], "card_type": servers["card_type"], "card_interface": servers["card_interface"], "cpu": servers["cpu"], "memory": servers["memory"], "system_disk": servers["system_disk"], "data_disk": servers["data_disk"], "net_card1": servers["net_card1"], "net_card2": servers["net_card2"], "other_data": servers.get("other_data", None), "price": servers["price"], "status": "0", "lease_start_time": None, "lease_end_time": None, } except Exception as e: return {"status": False, "msg": f"servers get key error, please check key:{str(e)}"} db = DBPools() async with db.sqlorContext('kboss') as sor: if products.get("id"): # 增加库存 sql = "update lease_product_data set stock=stock+${stock}$ ,total_stock = total_stock+${stock}$ where id = ${products}$" await sor.sqlExe(sql, {"stock":int(product_data['stock']),"products":{products['id']}}) else: # no product await sor.C("lease_product_data", product_data) # 服务器入库 for _ in range(product_data["stock"]): server_data["id"] = uuid() await sor.C("lease_server_data", server_data) return {"status": True, "msg": "save ok", "data": product_data["id"]} ret = await create_lease_data(params_kw) return ret