80 lines
2.7 KiB
Go
80 lines
2.7 KiB
Go
package repository
|
||
|
||
import (
|
||
"context"
|
||
"gorm.io/gorm"
|
||
"gorm.io/gorm/clause"
|
||
"time"
|
||
)
|
||
|
||
// AccountDO 游戏帐号表
|
||
type AccountDO struct {
|
||
Id uint64 `gorm:"column:id;type:bigint(20) unsigned;primary_key;AUTO_INCREMENT" json:"id"`
|
||
Email string `gorm:"column:email;type:varchar(64);comment:帐号;NOT NULL" json:"email"`
|
||
Pwd string `gorm:"column:pwd;type:varchar(128);comment:密码;NOT NULL" json:"pwd"`
|
||
Name string `gorm:"column:name;type:varchar(64);comment:用户名" json:"name"`
|
||
Avatar string `gorm:"column:avatar;type:varchar(128);comment:头像" json:"avatar"`
|
||
Gender uint `gorm:"column:gender;type:tinyint(4) unsigned;comment:性别。0:未知 ;1:男;2:女; 3:其他" json:"gender"`
|
||
Phone string `gorm:"column:phone;type:varchar(32);comment:手机号码" json:"phone"`
|
||
Status uint `gorm:"column:status;type:tinyint(4) unsigned;default:1;comment:是否有效。0:否;1:是;NOT NULL" json:"status"`
|
||
RegisterSource string `gorm:"column:register_source;type:varchar(16);comment:注册来源" json:"register_source"`
|
||
LastIp string `gorm:"column:last_ip;type:varchar(32);comment:最近登录的ip" json:"last_ip"`
|
||
Deleted uint `gorm:"column:deleted;type:tinyint(4) unsigned;default:0;comment:逻辑删除。 0:未删除;1:已删除;NOT NULL" json:"deleted"`
|
||
CreateTime time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP;comment:创建时间;NOT NULL" json:"create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time;type:timestamp;default:CURRENT_TIMESTAMP;comment:更新时间;NOT NULL" json:"update_time"`
|
||
}
|
||
|
||
func (m *AccountDO) TableName() string {
|
||
return "g_account"
|
||
}
|
||
|
||
type gUserRepositoryImpl struct {
|
||
}
|
||
|
||
// FindByAccount 根据 account 和 pwd 查询用户
|
||
func (gUserRepositoryImpl) FindByAccount(ctx context.Context, account string) *AccountDO {
|
||
db, ok := ctx.Value("db").(*gorm.DB)
|
||
if !ok {
|
||
db = Db
|
||
}
|
||
|
||
var model AccountDO
|
||
sqlErr := db.Model(&model).Where("email=?", account).First(&model).Error
|
||
|
||
if sqlErr != nil {
|
||
return nil
|
||
}
|
||
|
||
return &model
|
||
}
|
||
|
||
// Create 创建用户
|
||
func (gUserRepositoryImpl) Create(ctx context.Context, data *AccountDO) error {
|
||
db, ok := ctx.Value("db").(*gorm.DB)
|
||
if !ok {
|
||
db = Db
|
||
}
|
||
|
||
data.Deleted = 0
|
||
|
||
return db.Clauses(clause.OnConflict{
|
||
Columns: []clause.Column{{Name: "email"}},
|
||
DoUpdates: clause.AssignmentColumns([]string{"deleted"}),
|
||
}).Create(data).Error
|
||
}
|
||
|
||
// UpdateById 根据ID更新用户
|
||
func (gUserRepositoryImpl) UpdateById(ctx context.Context, data *AccountDO) error {
|
||
db, ok := ctx.Value("db").(*gorm.DB)
|
||
if !ok {
|
||
db = Db
|
||
}
|
||
|
||
sqlErr := db.Model(data).Where("id=?", data.Id).Updates(data).Error
|
||
|
||
if sqlErr != nil {
|
||
return sqlErr
|
||
}
|
||
return nil
|
||
}
|