From f13342350d3955a474197c9cba488b6c40425fd3 Mon Sep 17 00:00:00 2001 From: vatebur <67186678+vatebur@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:27:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E5=86=99=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E9=B1=BC=E7=B1=BB=E4=B8=8A=E9=99=90=E9=80=BB=E8=BE=91=20(#1002?= =?UTF-8?q?)=20(#1003)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/mcfish/main.go | 21 +++++++++++++++++---- plugin/mcfish/store.go | 32 +++++++++++++++++++------------- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/plugin/mcfish/main.go b/plugin/mcfish/main.go index 1a28d36aae..cde0b25b28 100644 --- a/plugin/mcfish/main.go +++ b/plugin/mcfish/main.go @@ -812,15 +812,15 @@ func checkIsFish(thing string) bool { return false } -// 检测买卖鱼上限 -func (sql *fishdb) checkCanSalesFishFor(uid int64, sales int) (int, error) { +// 查询能交易鱼类的数量 +func (sql *fishdb) selectCanSalesFishFor(uid int64, sales int) int { residue := 0 sql.Lock() defer sql.Unlock() userInfo := buffInfo{ID: uid} err := sql.db.Create("buff", &userInfo) if err != nil { - return residue, err + return residue } _ = sql.db.Find("buff", &userInfo, "where ID = "+strconv.FormatInt(uid, 10)) if time.Now().Day() != time.Unix(userInfo.Duration, 0).Day() { @@ -834,6 +834,19 @@ func (sql *fishdb) checkCanSalesFishFor(uid int64, sales int) (int, error) { if sales > maxSales { sales = maxSales } + return sales +} + +// 更新买卖鱼上限,假定sales变量已经在 selectCanSalesFishFor 进行了防护 +func (sql *fishdb) updateCanSalesFishFor(uid int64, sales int) error { + sql.Lock() + defer sql.Unlock() + userInfo := buffInfo{ID: uid} + err := sql.db.Create("buff", &userInfo) + if err != nil { + return err + } + _ = sql.db.Find("buff", &userInfo, "where ID = "+strconv.FormatInt(uid, 10)) userInfo.SalesFish += sales - return sales, sql.db.Insert("buff", &userInfo) + return sql.db.Insert("buff", &userInfo) } diff --git a/plugin/mcfish/store.go b/plugin/mcfish/store.go index 75f632bd45..8e04bc8be5 100644 --- a/plugin/mcfish/store.go +++ b/plugin/mcfish/store.go @@ -86,13 +86,9 @@ func init() { number = 1 } if checkIsFish(thingName) { - residue, err := dbdata.checkCanSalesFishFor(uid, number) - if err != nil { - ctx.SendChain(message.Text("[ERROR]:", err)) - return - } + residue := dbdata.selectCanSalesFishFor(uid, number) if residue <= 0 { - ctx.SendChain(message.Text("今天你已经超出了鱼交易数量上限,明天再来买鱼吧")) + ctx.SendChain(message.Text("一天只能交易100条鱼,明天再来卖鱼吧")) return } number = residue @@ -198,6 +194,13 @@ func init() { } } + // 更新交易鱼类数量 + if checkIsFish(thingName) { + err := dbdata.updateCanSalesFishFor(uid, number) + if err != nil { + ctx.SendChain(message.Text("[ERROR,记录鱼类交易数量失败,此次交易不记录]:", err)) + } + } records, err := dbdata.getUserThingInfo(uid, "唱片") if err != nil { ctx.SendChain(message.Text("[ERROR at store.go.9.1]:", err)) @@ -318,7 +321,7 @@ func init() { logrus.Warnln(err) } } - ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text("出售成功,你赚到了", pice*number, msg))) + ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text("成功出售", thingName, ":", number, "个", ",你赚到了", pice*number, msg))) }) engine.OnRegex(`^出售所有垃圾`, getdb, refreshFish).SetBlock(true).Limit(limitSet).Handle(func(ctx *zero.Ctx) { uid := ctx.Event.UserID @@ -422,13 +425,9 @@ func init() { number = 1 } if checkIsFish(thingName) { - residue, err := dbdata.checkCanSalesFishFor(uid, number) - if err != nil { - ctx.SendChain(message.Text("[ERROR]:", err)) - return - } + residue := dbdata.selectCanSalesFishFor(uid, number) if residue <= 0 { - ctx.SendChain(message.Text("今天你已经超出了鱼交易数量上限,明天再来买鱼吧")) + ctx.SendChain(message.Text("一天只能交易100条鱼,明天再来买鱼吧")) return } number = residue @@ -533,6 +532,13 @@ func init() { } } + // 更新交易鱼类数量 + if checkIsFish(thingName) { + err := dbdata.updateCanSalesFishFor(uid, number) + if err != nil { + ctx.SendChain(message.Text("[ERROR,更新鱼类交易数量失败,此次交易不记录]:", err)) + } + } thing := thingInfos[index] if thing.Number < number { ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text("商店数量不足")))