diff --git a/wallet/wallet.go b/wallet/wallet.go index 73fc48a..04a21e6 100644 --- a/wallet/wallet.go +++ b/wallet/wallet.go @@ -73,15 +73,19 @@ func GetGroupWalletOf(sortable bool, uids ...int64) (wallets []Wallet, err error } // InsertWalletOf 更新钱包(money > 0 增加,money < 0 减少) -func InsertWalletOf(uid int64, money int) error { +func (sql *Storage) InsertWalletOf(uid int64, money int) error { + sql.Lock() + defer sql.Unlock() lastMoney := sdb.getWalletOf(uid) - return sdb.updateWalletOf(uid, lastMoney.Money+money) + newMoney := lastMoney.Money + money + if newMoney < 0 { + newMoney = 0 + } + return sdb.updateWalletOf(uid, newMoney) } // 获取钱包数据 func (sql *Storage) getWalletOf(uid int64) (wallet Wallet) { - sql.RLock() - defer sql.RUnlock() uidstr := strconv.FormatInt(uid, 10) _ = sql.db.Find("storage", &wallet, "where uid is "+uidstr) return @@ -110,8 +114,6 @@ func (sql *Storage) getGroupWalletOf(sortable bool, uids ...int64) (wallets []Wa // 更新钱包 func (sql *Storage) updateWalletOf(uid int64, money int) (err error) { - sql.Lock() - defer sql.Unlock() return sql.db.Insert("storage", &Wallet{ UID: uid, Money: money,