mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-12-18 13:29:03 +08:00
89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/1Panel-dev/1Panel/app/dto"
|
|
"github.com/1Panel-dev/1Panel/app/model"
|
|
"github.com/1Panel-dev/1Panel/global"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type UserService struct{}
|
|
|
|
type IUserService interface {
|
|
Get(name string) (*dto.UserBack, error)
|
|
Page(page, size int) (int64, interface{}, error)
|
|
Register(userDto dto.UserCreate) error
|
|
Login(info *model.User) (*dto.UserBack, error)
|
|
Delete(name string) error
|
|
Save(req model.User) error
|
|
Update(upMap map[string]interface{}) error
|
|
}
|
|
|
|
func NewIUserService() IUserService {
|
|
return &UserService{}
|
|
}
|
|
|
|
func (u *UserService) Get(name string) (*dto.UserBack, error) {
|
|
user, err := userRepo.Get(commonRepo.WithByName(name))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
dtoUser := &dto.UserBack{
|
|
Name: user.Name,
|
|
Email: user.Email,
|
|
CreatedAt: user.CreatedAt,
|
|
}
|
|
return dtoUser, nil
|
|
}
|
|
|
|
func (u *UserService) Page(page, size int) (int64, interface{}, error) {
|
|
total, users, err := userRepo.Page(page, size)
|
|
var dtoUsers []dto.UserBack
|
|
for _, user := range users {
|
|
dtoUsers = append(dtoUsers, dto.UserBack{
|
|
Name: user.Name,
|
|
Email: user.Email,
|
|
CreatedAt: user.CreatedAt,
|
|
})
|
|
}
|
|
return total, dtoUsers, err
|
|
}
|
|
|
|
func (u *UserService) Register(userDto dto.UserCreate) error {
|
|
user := userDto.UserCreateToMo()
|
|
if !errors.Is(global.DB.Where("name = ?", user.Name).First(&user).Error, gorm.ErrRecordNotFound) {
|
|
return errors.New("用户名已注册")
|
|
}
|
|
return userRepo.Create(&user)
|
|
}
|
|
|
|
func (u *UserService) Login(info *model.User) (*dto.UserBack, error) {
|
|
user, err := userRepo.Get(commonRepo.WithByName(info.Name))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if user.Password != info.Password {
|
|
return nil, errors.New("登录失败")
|
|
}
|
|
dtoUser := &dto.UserBack{
|
|
Name: user.Name,
|
|
Email: user.Email,
|
|
CreatedAt: user.CreatedAt,
|
|
}
|
|
return dtoUser, err
|
|
}
|
|
|
|
func (u *UserService) Delete(name string) error {
|
|
return userRepo.Delete(commonRepo.WithByName(name))
|
|
}
|
|
|
|
func (u *UserService) Save(req model.User) error {
|
|
return userRepo.Save(req)
|
|
}
|
|
|
|
func (u *UserService) Update(upMap map[string]interface{}) error {
|
|
return userRepo.Update(upMap)
|
|
}
|