mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package services
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						|
	rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
						|
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
						|
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						|
)
 | 
						|
 | 
						|
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 {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	if len(req.Username) == 0 || len(req.Password) == 0 {
 | 
						|
		return &pb.LoginAdminResponse{
 | 
						|
			AdminId: 0,
 | 
						|
			IsOk:    false,
 | 
						|
			Message: "请输入正确的用户名密码",
 | 
						|
		}, nil
 | 
						|
	}
 | 
						|
 | 
						|
	adminId, err := models.SharedAdminDAO.CheckAdminPassword(req.Username, req.Password)
 | 
						|
	if err != nil {
 | 
						|
		utils.PrintError(err)
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	if adminId <= 0 {
 | 
						|
		return &pb.LoginAdminResponse{
 | 
						|
			AdminId: 0,
 | 
						|
			IsOk:    false,
 | 
						|
			Message: "请输入正确的用户名密码",
 | 
						|
		}, nil
 | 
						|
	}
 | 
						|
 | 
						|
	return &pb.LoginAdminResponse{
 | 
						|
		AdminId: int64(adminId),
 | 
						|
		IsOk:    true,
 | 
						|
	}, nil
 | 
						|
}
 | 
						|
 | 
						|
func (this *AdminService) CreateAdminLog(ctx context.Context, req *pb.CreateAdminLogRequest) (*pb.CreateAdminLogResponse, error) {
 | 
						|
	_, userId, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	err = models.SharedLogDAO.CreateAdminLog(userId, req.Level, req.Description, req.Action, req.Ip)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	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 {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	if req.AdminId <= 0 {
 | 
						|
		return &pb.CheckAdminExistsResponse{
 | 
						|
			IsOk: false,
 | 
						|
		}, nil
 | 
						|
	}
 | 
						|
 | 
						|
	ok, err := models.SharedAdminDAO.ExistEnabledAdmin(int(req.AdminId))
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	return &pb.CheckAdminExistsResponse{
 | 
						|
		IsOk: ok,
 | 
						|
	}, nil
 | 
						|
}
 | 
						|
 | 
						|
func (this *AdminService) FindAdminFullname(ctx context.Context, req *pb.FindAdminFullnameRequest) (*pb.FindAdminFullnameResponse, error) {
 | 
						|
	_, _, err := rpcutils.ValidateRequest(ctx)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	fullname, err := models.SharedAdminDAO.FindAdminFullname(int(req.AdminId))
 | 
						|
	if err != nil {
 | 
						|
		utils.PrintError(err)
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	return &pb.FindAdminFullnameResponse{
 | 
						|
		Fullname: fullname,
 | 
						|
	}, 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
 | 
						|
	}
 | 
						|
 | 
						|
	adminId, err := models.SharedAdminDAO.FindAdminIdWithUsername(req.Username)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	if adminId > 0 {
 | 
						|
		err = models.SharedAdminDAO.UpdateAdminPassword(adminId, req.Password)
 | 
						|
		if err != nil {
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
		return &pb.CreateOrUpdateAdminResponse{AdminId: adminId}, nil
 | 
						|
	}
 | 
						|
	adminId, err = models.SharedAdminDAO.CreateAdmin(req.Username, req.Password, "管理员")
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &pb.CreateOrUpdateAdminResponse{AdminId: adminId}, nil
 | 
						|
}
 |