Skip to content

Commit

Permalink
fix:重写交易鱼类上限逻辑 (FloatTech#1002)
Browse files Browse the repository at this point in the history
  • Loading branch information
vatebur committed Oct 11, 2024
1 parent b777b34 commit 812bd41
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 17 deletions.
21 changes: 17 additions & 4 deletions plugin/mcfish/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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)
}
32 changes: 19 additions & 13 deletions plugin/mcfish/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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))
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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("商店数量不足")))
Expand Down

0 comments on commit 812bd41

Please sign in to comment.