You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.5 KiB
71 lines
1.5 KiB
package dao |
|
|
|
import ( |
|
"errors" |
|
"fmt" |
|
"github.com/gin-gonic/gin" |
|
"gorm.io/gorm" |
|
"net/http" |
|
"texas-poker-bk/internal/model/entity" |
|
) |
|
|
|
var UserDao *User |
|
|
|
func initUserDao() { |
|
UserDao = &User{DB: Dao.Sqlite} |
|
err := Dao.Sqlite.AutoMigrate(&entity.User{}) |
|
if err != nil { |
|
fmt.Println("user table", err) |
|
} |
|
} |
|
|
|
type User struct { |
|
DB *gorm.DB |
|
} |
|
|
|
func FindUserByName(ctx *gin.Context) { |
|
username := ctx.Param("username") |
|
user := UserDao.FindUserByName(username) |
|
if user == nil { |
|
ctx.JSON(http.StatusOK, gin.H{ |
|
"msg": "not found", |
|
}) |
|
return |
|
} |
|
ctx.JSON(http.StatusOK, gin.H{ |
|
"msg": "ok", |
|
"data": user, |
|
}) |
|
} |
|
|
|
func (u *User) FindUserByName(username string) *entity.User { |
|
user := &entity.User{} |
|
tx := u.DB.Model(user).Where("username=?", username).Limit(1).Scan(user) |
|
// 查询出结果时 tx.RowsAffected 固定=1 |
|
if tx.RowsAffected == 0 { |
|
return nil |
|
} |
|
return user |
|
} |
|
|
|
func (u *User) IncrementTokenVersion(userId int64) (int32, error) { |
|
u1 := &entity.User{} |
|
tx := u.DB.Select("token_version").First(u1, userId) |
|
// fmt.Printf("current user: %v, %d\n", u1, tx.RowsAffected) |
|
if tx.Error != nil { |
|
return 0, tx.Error |
|
} |
|
newTokenVersion := u1.TokenVersion + 1 |
|
tx.Model(&entity.User{}). |
|
Where("id", userId). |
|
Where("token_version", u1.TokenVersion). |
|
Update("token_version", newTokenVersion) |
|
// fmt.Printf("RowsAffected: %d\n\n", tx.RowsAffected) |
|
if tx.Error != nil { |
|
return 0, tx.Error |
|
} |
|
if tx.RowsAffected != 1 { |
|
return 0, errors.New("登录异常") |
|
} |
|
return newTokenVersion, nil |
|
}
|
|
|