43 lines
1.7 KiB
Plaintext
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
|