63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"opencatd-open/internal/dao"
|
|
dto "opencatd-open/internal/dto/team"
|
|
"opencatd-open/internal/model"
|
|
"opencatd-open/pkg/config"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var _ UsageService = (*usageService)(nil)
|
|
|
|
type UsageService interface {
|
|
ListByUserID(ctx context.Context, userID int64, limit, offset int) ([]*model.Usage, error)
|
|
ListByCapability(ctx context.Context, capability string, limit, offset int) ([]*model.Usage, error)
|
|
ListByDateRange(ctx context.Context, start, end time.Time, filters map[string]interface{}) ([]*dto.UsageInfo, error)
|
|
|
|
Delete(ctx context.Context, id int64) error
|
|
}
|
|
|
|
type usageService struct {
|
|
ctx context.Context
|
|
cfg *config.Config
|
|
db *gorm.DB
|
|
|
|
usageDAO dao.UsageRepository
|
|
dailyUsageDAO dao.DailyUsageRepository
|
|
}
|
|
|
|
func NewUsageService(ctx context.Context, cfg *config.Config, db *gorm.DB, usageRepo dao.UsageRepository, dailyUsageRepo dao.DailyUsageRepository) UsageService {
|
|
srv := &usageService{
|
|
ctx: ctx,
|
|
cfg: cfg,
|
|
db: db,
|
|
|
|
usageDAO: usageRepo,
|
|
dailyUsageDAO: dailyUsageRepo,
|
|
}
|
|
|
|
// 启动异步处理goroutine
|
|
|
|
return srv
|
|
}
|
|
|
|
func (s *usageService) ListByUserID(ctx context.Context, userID int64, limit int, offset int) ([]*model.Usage, error) {
|
|
return s.usageDAO.ListByUserID(ctx, userID, limit, offset)
|
|
}
|
|
|
|
func (s *usageService) ListByCapability(ctx context.Context, capability string, limit, offset int) ([]*model.Usage, error) {
|
|
return s.usageDAO.ListByCapability(ctx, capability, limit, offset)
|
|
}
|
|
|
|
func (s *usageService) ListByDateRange(ctx context.Context, start, end time.Time, filters map[string]interface{}) ([]*dto.UsageInfo, error) {
|
|
return s.dailyUsageDAO.StatUserUsages(ctx, start, end, filters)
|
|
}
|
|
|
|
func (s *usageService) Delete(ctx context.Context, id int64) error {
|
|
return s.usageDAO.Delete(ctx, id)
|
|
}
|