66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package models
|
|
|
|
import (
|
|
"git.apinb.com/bsm-apps/passport/internal/impl"
|
|
"git.apinb.com/bsm-apps/passport/internal/vars"
|
|
"git.apinb.com/bsm-sdk/core/types"
|
|
"git.apinb.com/bsm-sdk/core/utils"
|
|
"golang.org/x/crypto/bcrypt"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func InitData() error {
|
|
var cnt int64
|
|
var err error
|
|
err = impl.DBService.Model(&PassportAccount{}).Where("account=?", "demo").Count(&cnt).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if cnt == 0 {
|
|
salt := utils.ULID()
|
|
hashedPassword, _ := bcrypt.GenerateFromPassword([]byte("welcome"+salt), bcrypt.MinCost)
|
|
pa := PassportAccount{
|
|
Std_IICUDS: types.Std_IICUDS{
|
|
Identity: utils.UUID(),
|
|
Status: vars.Status_Normal,
|
|
},
|
|
Account: "demo",
|
|
Phone: "",
|
|
Password: string(hashedPassword),
|
|
Salt: salt,
|
|
}
|
|
err = impl.DBService.Create(&pa).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func PassportAccountExists(key, val string) bool {
|
|
var count int64
|
|
err := impl.DBService.Model(&PassportAccount{}).Where(key+" = ?", val).Count(&count).Error
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return count > 0
|
|
}
|
|
|
|
func CreateAccount(pa *PassportAccount, nickname string) (err error) {
|
|
return impl.DBService.Transaction(func(tx *gorm.DB) error {
|
|
|
|
// 插入扩展表
|
|
pe := new(PassportData)
|
|
pe.PassportID = pa.ID
|
|
pe.PassportIdentity = pa.Identity
|
|
pe.Nickname = nickname
|
|
|
|
if err := tx.Create(pe).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
})
|
|
}
|