Browse Source

fix amount

Your Name 1 year ago
parent
commit
007d28c855
4 changed files with 62 additions and 11 deletions
  1. BIN
      dist/qznn/dist/qznn
  2. 1 1
      dist/qznn/version.txt
  3. 25 6
      game/qznn/qznn.go
  4. 36 4
      game/qznn/wait.go

BIN
dist/qznn/dist/qznn


+ 1 - 1
dist/qznn/version.txt

@@ -1 +1 @@
-1.0.2211.bf395
+1.0.2211.6bd05

+ 25 - 6
game/qznn/qznn.go

@@ -1290,10 +1290,20 @@ func (p *Game) ReadyInner(playerID int32, useLocker bool) error {
 					}
 
 					err = db.GetDB().Transaction(func(tx *gorm.DB) error {
-						err := tx.Exec("update users as a, users as b set a.credits_qznn = b.credits_qznn + ?, a.credits = b.credits - ? where a.id = ? and b.id = ? and b.credits - ? >= 0",
-							frozenAmount, frozenAmount, playerID, playerID, frozenAmount).Error
+						// err := tx.Exec("update users as a, users as b set a.credits_qznn = b.credits_qznn + ?, a.credits = b.credits - ? where a.id = ? and b.id = ? and b.credits - ? >= 0",
+						// 	frozenAmount, frozenAmount, playerID, playerID, frozenAmount).Error
+
+						// if err != nil {
+						// 	return err
+						// }
+
+						err = tx.Model(model.User{}).Where("id = ?", playerID).Updates(map[string]interface{}{
+							"credits":      gorm.Expr("credits - ?", frozenAmount),
+							"credits_qznn": gorm.Expr("credits_qznn + ?", frozenAmount),
+						}).Error
 
 						if err != nil {
+							logrus.Error(err)
 							return err
 						}
 
@@ -1303,7 +1313,7 @@ func (p *Game) ReadyInner(playerID int32, useLocker bool) error {
 							return err
 						}
 
-						if afterUserModel.CreditsQZNN.LessThan(frozenAmount) {
+						if afterUserModel.Credits.LessThan(decimal.Zero) {
 							return errors.New("内部错误")
 						}
 
@@ -1334,10 +1344,19 @@ func (p *Game) ReadyInner(playerID int32, useLocker bool) error {
 					}
 
 					err = db.GetDB().Transaction(func(tx *gorm.DB) error {
-						err := tx.Exec("update users as a, users as b set a.balance_qznn = b.balance_qznn + ?, a.balance = b.balance - ? where a.id = ? and b.id = ? and b.balance - ? >= 0",
-							frozenAmount, frozenAmount, playerID, playerID, frozenAmount).Error
+						// err := tx.Exec("update users as a, users as b set a.balance_qznn = b.balance_qznn + ?, a.balance = b.balance - ? where a.id = ? and b.id = ? and b.balance - ? >= 0",
+						// 	frozenAmount, frozenAmount, playerID, playerID, frozenAmount).Error
+
+						// if err != nil {
+						// 	return err
+						// }
+						err = tx.Model(model.User{}).Where("id = ?", playerID).Updates(map[string]interface{}{
+							"balance":      gorm.Expr("balance - ?", frozenAmount),
+							"balance_qznn": gorm.Expr("balance_qznn + ?", frozenAmount),
+						}).Error
 
 						if err != nil {
+							logrus.Error(err)
 							return err
 						}
 
@@ -1347,7 +1366,7 @@ func (p *Game) ReadyInner(playerID int32, useLocker bool) error {
 							return err
 						}
 
-						if afterUserModel.BalanceQZNN.LessThan(frozenAmount) {
+						if afterUserModel.Balance.LessThan(decimal.Zero) {
 							return errors.New("内部错误")
 						}
 

+ 36 - 4
game/qznn/wait.go

@@ -348,8 +348,24 @@ func (p *Game) WaitOpen(room Room) error {
 			}
 
 			if room.RoomType == int32(model.RoomTypeFree) {
-				err = tx.Exec("update users as a, users as b set a.credits_qznn = 0, a.credits = b.credits + b.credits_qznn + ? where a.id = ? and b.id = ? and b.credits_qznn + ? >= 0",
-					payoutInfo.Amount, userID, userID, payoutInfo.Amount).Error
+				// err = tx.Exec("update users as a, users as b set a.credits_qznn = 0, a.credits = b.credits + b.credits_qznn + ? where a.id = ? and b.id = ? and b.credits_qznn + ? >= 0",
+				// 	payoutInfo.Amount, userID, userID, payoutInfo.Amount).Error
+				// if err != nil {
+				// 	logrus.Error(err)
+				// 	return err
+				// }
+
+				err = tx.Model(model.User{}).Where("id = ?", userID).Update("credits_qznn", gorm.Expr("credits_qznn + ?", payoutInfo.Amount)).Error
+				if err != nil {
+					logrus.Error(err)
+					return err
+				}
+
+				err = tx.Model(model.User{}).Where("id = ?", userID).Updates(map[string]interface{}{
+					"credits":      gorm.Expr("credits_qznn + credits"),
+					"credits_qznn": 0,
+				}).Error
+
 				if err != nil {
 					logrus.Error(err)
 					return err
@@ -393,8 +409,24 @@ func (p *Game) WaitOpen(room Room) error {
 					Credits:   userCredist,
 				})
 			} else {
-				err = tx.Exec("update users as a, users as b set a.balance_qznn = 0, a.balance = b.balance + b.balance_qznn + ? where a.id = ? and b.id = ? and b.balance_qznn + ? >= 0",
-					payoutInfo.Amount, userID, userID, payoutInfo.Amount).Error
+				// err = tx.Exec("update users as a, users as b set a.balance_qznn = 0, a.balance = b.balance + b.balance_qznn + ? where a.id = ? and b.id = ? and b.balance_qznn + ? >= 0",
+				// 	payoutInfo.Amount, userID, userID, payoutInfo.Amount).Error
+				// if err != nil {
+				// 	logrus.Error(err)
+				// 	return err
+				// }
+
+				err = tx.Model(model.User{}).Where("id = ?", userID).Update("balance_qznn", gorm.Expr("balance_qznn + ?", payoutInfo.Amount)).Error
+				if err != nil {
+					logrus.Error(err)
+					return err
+				}
+
+				err = tx.Model(model.User{}).Where("id = ?", userID).Updates(map[string]interface{}{
+					"balance":      gorm.Expr("balance_qznn + balance"),
+					"balance_qznn": 0,
+				}).Error
+
 				if err != nil {
 					logrus.Error(err)
 					return err