package admin import ( "context" "server/internal/dao" "server/internal/model" "server/internal/model/do" "server/internal/model/entity" "server/internal/service" "server/utility/ecode" utility "server/utility/encrypt" "server/utility/jwt" ) type sAdmin struct { } func New() service.IAdmin { return &sAdmin{} } func init() { service.RegisterAdmin(New()) } func (s *sAdmin) Login(ctx context.Context, in *model.AdminLoginIn) (out *model.LoginOut, err error) { exist, err := dao.Admins.Ctx(ctx).Exist(do.Admins{Username: in.Username}) if err != nil { return nil, ecode.Fail.Sub("查询管理员失败") } if !exist { return nil, ecode.Params.Sub("该用户不存在") } var admin entity.Admins if err := dao.Admins.Ctx(ctx).Where(do.Admins{Username: in.Username}).Scan(&admin); err != nil { return nil, ecode.Fail.Sub("查询管理员失败") } if !utility.ComparePassword(admin.PasswordHash, in.Password) { return nil, ecode.Auth.Sub("密码错误") } token, err := jwt.GenerateToken(&jwt.TokenIn{UserId: admin.Id, Permission: "admin"}) if err != nil { return nil, ecode.Fail.Sub("生成token失败") } out = &model.LoginOut{ Token: token, } return } func (s *sAdmin) Info(ctx context.Context, in *model.AdminInfoIn) (out *model.AdminInfoOut, err error) { exist, err := dao.Admins.Ctx(ctx).WherePri(in.Id).Exist() if err != nil { return nil, ecode.Fail.Sub("查询管理员失败") } if !exist { return nil, ecode.Params.Sub("该用户不存在") } return }