27 lines
1.0 KiB
Go
27 lines
1.0 KiB
Go
package wallet
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"hyapp/pkg/appcode"
|
|
"hyapp/pkg/xerr"
|
|
"hyapp/services/wallet-service/internal/domain/ledger"
|
|
)
|
|
|
|
const maxAgencyPointShareStatsRange = 366 * 24 * time.Hour
|
|
|
|
func (s *Service) GetAgencyPointShareStats(ctx context.Context, appCode string, query ledger.AgencyPointShareStatsQuery) (ledger.AgencyPointShareStats, error) {
|
|
if s.repository == nil {
|
|
return ledger.AgencyPointShareStats{}, xerr.New(xerr.Unavailable, "wallet repository is not configured")
|
|
}
|
|
if query.AgencyOwnerUserID <= 0 || query.StartAtMS <= 0 || query.EndAtMS <= query.StartAtMS {
|
|
return ledger.AgencyPointShareStats{}, xerr.New(xerr.InvalidArgument, "agency point share stats range is invalid")
|
|
}
|
|
if query.EndAtMS-query.StartAtMS > int64(maxAgencyPointShareStatsRange/time.Millisecond) {
|
|
return ledger.AgencyPointShareStats{}, xerr.New(xerr.InvalidArgument, "agency point share stats range is too large")
|
|
}
|
|
ctx = appcode.WithContext(ctx, appcode.Normalize(appCode))
|
|
return s.repository.GetAgencyPointShareStats(ctx, query)
|
|
}
|