package admin import ( "context" "github.com/gogf/gf/v2/os/glog" "server/internal/consts" "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 checkAdmin() { ctx := context.Background() exist, err := dao.Admins.Ctx(ctx).Where(do.Admins{Username: "admin"}).Exist() if err != nil { panic("初始化管理员失败") } if !exist { passwordHash, _ := utility.EncryptPassword("Aa123456") _, err = dao.Admins.Ctx(ctx).Insert(do.Admins{ Username: "admin", PasswordHash: passwordHash, Status: 1, }) if err != nil { panic("初始化管理员失败") } } glog.Infof(ctx, "初始化管理员成功") } func init() { service.RegisterAdmin(New()) go checkAdmin() } 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 } token, err := jwt.GenerateToken(&jwt.TokenIn{UserId: admin.Id, Permission: consts.AdminPermission}) 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("该用户不存在") } var admin entity.Admins if err := dao.Admins.Ctx(ctx).WherePri(in.Id).Scan(&admin); err != nil { return nil, ecode.Fail.Sub("查询管理员失败") } out = &model.AdminInfoOut{ Username: admin.Username, } return }