mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-18 20:00:25 +08:00
实现修改管理员信息功能
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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{} // 状态
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user