2025-04-30 15:46:14 +08:00
|
|
|
|
package domain
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"admin/apps/user/domain/entity"
|
|
|
|
|
"admin/apps/user/model"
|
|
|
|
|
"admin/internal/errcode"
|
|
|
|
|
"admin/lib/passlib"
|
2025-05-12 11:09:11 +08:00
|
|
|
|
"admin/lib/xlog"
|
2025-04-30 15:46:14 +08:00
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (svc *CommonResourceService) EnsureInitDB() error {
|
|
|
|
|
return svc.userRepo.CreateAdminUsers()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (svc *CommonResourceService) Login(user, pwd string) (*entity.User, error) {
|
|
|
|
|
userEt, find, err := svc.userRepo.GetByUser(user)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if !find {
|
|
|
|
|
return nil, errcode.New(errcode.UserOrPassInValid, "")
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-12 11:09:11 +08:00
|
|
|
|
pwd1 := passlib.EncryptPassword(pwd)
|
|
|
|
|
|
|
|
|
|
xlog.Tracef("user %v pass %v(%v), db pass:%v", user, pwd, pwd1, userEt.Po.UserPass)
|
|
|
|
|
|
2025-04-30 15:46:14 +08:00
|
|
|
|
if !passlib.ComparePassword(userEt.Po.UserPass, pwd) {
|
|
|
|
|
return nil, errcode.New(errcode.UserOrPassInValid, "")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return userEt, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (svc *CommonResourceService) GetUserById(userId int) (*entity.User, bool, error) {
|
|
|
|
|
et, find, err := svc.userRepo.GetById(userId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return et, false, err
|
|
|
|
|
}
|
|
|
|
|
return et, find, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (svc *CommonResourceService) GetOrCreateToken(userId int) (*model.Token, error) {
|
|
|
|
|
tokenInfo, find, err := svc.tokenRepo.GetTokenByUserId(userId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if !find {
|
|
|
|
|
tokenInfo, err = svc.tokenRepo.CreateToken(userId, time.Hour*24*15) // 15天过期的token,可以使用中加上token刷新功能
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tokenInfo, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (svc *CommonResourceService) GetToken(userId int) (*model.Token, error) {
|
|
|
|
|
tokenInfo, find, err := svc.tokenRepo.GetTokenByUserId(userId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if !find {
|
|
|
|
|
return tokenInfo, errcode.New(errcode.TokenInvalid, "user %v token not found", userId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tokenInfo, nil
|
|
|
|
|
}
|