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

43 lines
1.7 KiB
Plaintext

async def lock_server(ns={}):
"""
锁定设备
:param ns:
:return:
"""
data = {}
d = -1
msg = "sql error"
try:
data["productid"] = ns['productid']
data['lease_start_time'] = ns['lease_start_time']
data['lease_end_time'] = ns['lease_end_time']
data['count'] = int(ns['count'])
data['update_time'] = datetime.datetime.now()
except Exception as e:
return {"status": False, "msg": f"get key error, please check key:{str(e)}"}
if data['count'] <= 0:
return {"status": False, "msg": "count must be greater than 0"}
db = DBPools()
async with db.sqlorContext('kboss') as sor:
sql = "UPDATE lease_server_status SET `status` = 1 ,update_time = ${update_time}$, lease_start_time=${lease_start_time}$,lease_end_time=${lease_end_time}$ WHERE `status`=0 AND del_flg=0 AND end_date >= ${lease_end_time}$ AND productid=${productid}$ limit ${count}$"
d = await sor.sqlExe(sql, data)
if d == data['count']:
sql = "update lease_server_data set stock=stock-${count}$,update_time = ${update_time}$ where productid=${productid}$ AND (stock - ${count}$) >= 0;"
dd = await sor.sqlExe(sql, data)
if dd:
return {"status": True, "msg": f"success update number:{d}"}
else:
msg = "库存数量有误,请联系管理员核对库存数量"
raise Exception(msg)
else:
if d:
msg = f"目前只有{d}台机器,请重新填入购买数量"
else:
msg = "目前没有可用的机器"
raise Exception(msg)
return {"status": False, "msg": msg, "number": d}
ret = await lock_server(params_kw)
return ret