kboss/b/lease/create_lease_data.dspy
2025-07-16 14:27:17 +08:00

85 lines
2.9 KiB
Plaintext

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