实现修改管理员信息功能

This commit is contained in:
GoEdgeLab
2020-10-14 19:42:24 +08:00
parent 965efed323
commit 04068dcf29
3 changed files with 133 additions and 6 deletions

View File

@@ -36,7 +36,7 @@ func init() {
}
// 启用条目
func (this *AdminDAO) EnableAdmin(id uint32) (rowsAffected int64, err error) {
func (this *AdminDAO) EnableAdmin(id int64) (rowsAffected int64, err error) {
return this.Query().
Pk(id).
Set("state", AdminStateEnabled).
@@ -44,7 +44,7 @@ func (this *AdminDAO) EnableAdmin(id uint32) (rowsAffected int64, err error) {
}
// 禁用条目
func (this *AdminDAO) DisableAdmin(id uint32) (rowsAffected int64, err error) {
func (this *AdminDAO) DisableAdmin(id int64) (rowsAffected int64, err error) {
return this.Query().
Pk(id).
Set("state", AdminStateDisabled).
@@ -52,7 +52,7 @@ func (this *AdminDAO) DisableAdmin(id uint32) (rowsAffected int64, err error) {
}
// 查找启用中的条目
func (this *AdminDAO) FindEnabledAdmin(id uint32) (*Admin, error) {
func (this *AdminDAO) FindEnabledAdmin(id int64) (*Admin, error) {
result, err := this.Query().
Pk(id).
Attr("state", AdminStateEnabled).
@@ -64,7 +64,7 @@ func (this *AdminDAO) FindEnabledAdmin(id uint32) (*Admin, error) {
}
// 检查管理员是否存在
func (this *AdminDAO) ExistEnabledAdmin(adminId int) (bool, error) {
func (this *AdminDAO) ExistEnabledAdmin(adminId int64) (bool, error) {
return this.Query().
Pk(adminId).
State(AdminStateEnabled).
@@ -123,6 +123,8 @@ func (this *AdminDAO) UpdateAdminPassword(adminId int64, password string) error
// 创建管理员
func (this *AdminDAO) CreateAdmin(username string, password string, fullname string) (int64, error) {
op := NewAdminOperator()
op.IsOn = true
op.State = AdminStateEnabled
op.Username = username
op.Password = stringutil.Md5(password)
op.Fullname = fullname
@@ -132,3 +134,41 @@ func (this *AdminDAO) CreateAdmin(username string, password string, fullname str
}
return types.Int64(op.Id), nil
}
// 修改管理员个人资料
func (this *AdminDAO) UpdateAdmin(adminId int64, fullname string) error {
if adminId <= 0 {
return errors.New("invalid adminId")
}
op := NewAdminOperator()
op.Id = adminId
op.Fullname = fullname
_, err := this.Save(op)
return err
}
// 检查用户名是否存在
func (this *AdminDAO) CheckAdminUsername(adminId int64, username string) (bool, error) {
query := this.Query().
State(AdminStateEnabled).
Attr("username", username)
if adminId > 0 {
query.
Where("id!=:id").
Param("id", adminId)
}
return query.Exist()
}
// 修改管理员登录信息
func (this *AdminDAO) UpdateAdminLogin(adminId int64, username string, password string) error {
if adminId <= 0 {
return errors.New("invalid adminId")
}
op := NewAdminOperator()
op.Id = adminId
op.Username = username
op.Password = stringutil.Md5(password)
_, err := this.Save(op)
return err
}

View File

@@ -9,6 +9,7 @@ type Admin struct {
IsSuper uint8 `field:"isSuper"` // 是否为超级管理员
CreatedAt uint64 `field:"createdAt"` // 创建时间
UpdatedAt uint64 `field:"updatedAt"` // 修改时间
IsOn uint8 `field:"isOn"` // 是否启用
State uint8 `field:"state"` // 状态
}
@@ -20,6 +21,7 @@ type AdminOperator struct {
IsSuper interface{} // 是否为超级管理员
CreatedAt interface{} // 创建时间
UpdatedAt interface{} // 修改时间
IsOn interface{} // 是否启用
State interface{} // 状态
}

View File

@@ -3,6 +3,7 @@ package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeAPI/internal/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
@@ -12,6 +13,7 @@ type AdminService struct {
debug bool
}
// 登录
func (this *AdminService) LoginAdmin(ctx context.Context, req *pb.LoginAdminRequest) (*pb.LoginAdminResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx)
if err != nil {
@@ -46,6 +48,7 @@ func (this *AdminService) LoginAdmin(ctx context.Context, req *pb.LoginAdminRequ
}, nil
}
// 创建操作日志
func (this *AdminService) CreateAdminLog(ctx context.Context, req *pb.CreateAdminLogRequest) (*pb.CreateAdminLogResponse, error) {
_, userId, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
@@ -58,6 +61,7 @@ func (this *AdminService) CreateAdminLog(ctx context.Context, req *pb.CreateAdmi
return &pb.CreateAdminLogResponse{}, nil
}
// 检查管理员是否存在
func (this *AdminService) CheckAdminExists(ctx context.Context, req *pb.CheckAdminExistsRequest) (*pb.CheckAdminExistsResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
@@ -70,7 +74,7 @@ func (this *AdminService) CheckAdminExists(ctx context.Context, req *pb.CheckAdm
}, nil
}
ok, err := models.SharedAdminDAO.ExistEnabledAdmin(int(req.AdminId))
ok, err := models.SharedAdminDAO.ExistEnabledAdmin(req.AdminId)
if err != nil {
return nil, err
}
@@ -80,8 +84,26 @@ func (this *AdminService) CheckAdminExists(ctx context.Context, req *pb.CheckAdm
}, nil
}
// 检查用户名是否存在
func (this *AdminService) CheckAdminUsername(ctx context.Context, req *pb.CheckAdminUsernameRequest) (*pb.CheckAdminUsernameResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
exists, err := models.SharedAdminDAO.CheckAdminUsername(req.AdminId, req.Username)
if err != nil {
return nil, err
}
return &pb.CheckAdminUsernameResponse{Exists: exists}, nil
}
// 获取管理员名称
func (this *AdminService) FindAdminFullname(ctx context.Context, req *pb.FindAdminFullnameRequest) (*pb.FindAdminFullnameResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx)
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
@@ -97,8 +119,33 @@ func (this *AdminService) FindAdminFullname(ctx context.Context, req *pb.FindAdm
}, nil
}
// 获取管理员信息
func (this *AdminService) FindEnabledAdmin(ctx context.Context, req *pb.FindEnabledAdminRequest) (*pb.FindEnabledAdminResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
admin, err := models.SharedAdminDAO.FindEnabledAdmin(req.AdminId)
if err != nil {
return nil, err
}
if admin == nil {
return &pb.FindEnabledAdminResponse{Admin: nil}, nil
}
result := &pb.Admin{
Id: int64(admin.Id),
Fullname: admin.Fullname,
Username: admin.Username,
IsOn: admin.IsOn == 1,
}
return &pb.FindEnabledAdminResponse{Admin: result}, nil
}
// 创建或修改管理员
func (this *AdminService) CreateOrUpdateAdmin(ctx context.Context, req *pb.CreateOrUpdateAdminRequest) (*pb.CreateOrUpdateAdminResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin, rpcutils.UserTypeAPI)
if err != nil {
return nil, err
@@ -121,3 +168,41 @@ func (this *AdminService) CreateOrUpdateAdmin(ctx context.Context, req *pb.Creat
}
return &pb.CreateOrUpdateAdminResponse{AdminId: adminId}, nil
}
// 修改管理员信息
func (this *AdminService) UpdateAdmin(ctx context.Context, req *pb.UpdateAdminRequest) (*pb.RPCUpdateSuccess, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin, rpcutils.UserTypeAPI)
if err != nil {
return nil, err
}
err = models.SharedAdminDAO.UpdateAdmin(req.AdminId, req.Fullname)
if err != nil {
return nil, err
}
return rpcutils.RPCUpdateSuccess()
}
// 修改管理员登录信息
func (this *AdminService) UpdateAdminLogin(ctx context.Context, req *pb.UpdateAdminLoginRequest) (*pb.RPCUpdateSuccess, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin, rpcutils.UserTypeAPI)
if err != nil {
return nil, err
}
exists, err := models.SharedAdminDAO.CheckAdminUsername(req.AdminId, req.Username)
if err != nil {
return nil, err
}
if exists {
return nil, errors.New("username already been token")
}
err = models.SharedAdminDAO.UpdateAdminLogin(req.AdminId, req.Username, req.Password)
if err != nil {
return nil, err
}
return rpcutils.RPCUpdateSuccess()
}