feat: 初始提交云印享付费打印服务后端
This commit is contained in:
68
cloudprint-backend/internal/grpc/service/admin_service.go
Normal file
68
cloudprint-backend/internal/grpc/service/admin_service.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/cloudprint/cloudprint-backend/internal/repository"
|
||||
"github.com/cloudprint/cloudprint-backend/internal/service"
|
||||
pb "github.com/cloudprint/cloudprint-backend/proto/generated"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
type AdminServiceServer struct {
|
||||
pb.UnimplementedAdminServiceServer
|
||||
authService *service.AuthService
|
||||
orderRepo *repository.OrderRepository
|
||||
printerRepo *repository.PrinterRepository
|
||||
}
|
||||
|
||||
func NewAdminServiceServer(
|
||||
authService *service.AuthService,
|
||||
orderRepo *repository.OrderRepository,
|
||||
printerRepo *repository.PrinterRepository,
|
||||
) *AdminServiceServer {
|
||||
return &AdminServiceServer{
|
||||
authService: authService,
|
||||
orderRepo: orderRepo,
|
||||
printerRepo: printerRepo,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *AdminServiceServer) Login(ctx context.Context, req *pb.AdminLoginRequest) (*pb.AdminLoginResponse, error) {
|
||||
result, err := s.authService.AdminLogin(ctx, req.Username, req.Password)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Unauthenticated, "login failed: %v", err)
|
||||
}
|
||||
|
||||
return &pb.AdminLoginResponse{
|
||||
AccessToken: result.AccessToken,
|
||||
Admin: &pb.Admin{
|
||||
Id: result.Admin.ID,
|
||||
Username: result.Admin.Username,
|
||||
Nickname: result.Admin.Nickname,
|
||||
Role: int32(result.Admin.Role),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *AdminServiceServer) GetStatistics(ctx context.Context, req *pb.GetStatisticsRequest) (*pb.Statistics, error) {
|
||||
totalUsers, totalOrders, todayOrders, todayRevenue, pendingOrders, err := s.orderRepo.GetStatistics(ctx)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "get statistics failed: %v", err)
|
||||
}
|
||||
|
||||
activePrinters, err := s.printerRepo.CountActive(ctx)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "get printer count failed: %v", err)
|
||||
}
|
||||
|
||||
return &pb.Statistics{
|
||||
TotalUsers: totalUsers,
|
||||
TotalOrders: totalOrders,
|
||||
TodayOrders: todayOrders,
|
||||
TodayRevenue: todayRevenue,
|
||||
PendingOrders: pendingOrders,
|
||||
ActivePrinters: int32(activePrinters),
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user