85 lines
2.9 KiB
Plaintext
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
|