1Panel/backend/app/service/user.go
2022-08-05 11:26:00 +08:00

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)
}