44 lines
1.5 KiB
Plaintext
44 lines
1.5 KiB
Plaintext
from PDAPI import *
|
|
import TempLateAPI.GERP.API.FormAPI.FormData as FormData
|
|
|
|
# 处理删除物品请求
|
|
def HandleDeleteBackpackItem(table, cleanedData):
|
|
"""处理删除物品请求"""
|
|
BackpackItemUUID = flask.request.form.get("BackpackItemUUID")
|
|
Count = flask.request.form.get("Count", 1, type=int)
|
|
|
|
if not BackpackItemUUID:
|
|
return {"code": 400, "msg": "参数缺失: BackpackItemUUID"}
|
|
|
|
# 检查物品是否存在
|
|
Item = GERPBackpack.query.filter(
|
|
GERPBackpack.BackpackItemUUID == Get16toBytes(BackpackItemUUID)
|
|
).first()
|
|
|
|
if not Item:
|
|
return {"code": 1, "msg": "未找到物品"}
|
|
|
|
# 检查物品是否允许丢弃
|
|
if Item.ItemMetaData and "AllowDiscard" in Item.ItemMetaData and not Item.ItemMetaData["AllowDiscard"]:
|
|
return {"code": 1, "msg": "此物品不允许丢弃"}
|
|
|
|
# 检查数量是否合法
|
|
if Count > Item.ItemLength:
|
|
return {"code": 1, "msg": "需求物品数量 大于 实际物品数量"}
|
|
|
|
# 处理删除逻辑
|
|
if Count == Item.ItemLength:
|
|
db.session.delete(Item)
|
|
elif Count < Item.ItemLength:
|
|
Item.ItemLength = Item.ItemLength - Count
|
|
db.session.add(Item)
|
|
|
|
try:
|
|
db.session.commit()
|
|
return {"code": 0, "msg": "删除成功"}
|
|
except:
|
|
db.session.rollback()
|
|
return {"code": 1, "msg": "SQL 提交失败"}
|
|
|
|
# 注册函数类型插件
|
|
FormData.RegisterFunctionExtension("BackpackItem", "delete", HandleDeleteBackpackItem) |