rwadurian/backend/services/authorization-service/src/domain/value-objects/benefit-amount.vo.ts

47 lines
1.2 KiB
TypeScript

import { RoleType } from '@/domain/enums'
import { DomainError } from '@/shared/exceptions'
export class BenefitAmount {
constructor(
public readonly usdtPerTree: number,
public readonly computingPowerPercentage: number,
) {}
static forCommunity(): BenefitAmount {
return new BenefitAmount(80, 0)
}
static forAuthProvince(): BenefitAmount {
return new BenefitAmount(20, 0)
}
static forProvince(): BenefitAmount {
return new BenefitAmount(15, 1)
}
static forAuthCity(): BenefitAmount {
return new BenefitAmount(40, 0)
}
static forCity(): BenefitAmount {
return new BenefitAmount(35, 2)
}
static forRoleType(roleType: RoleType): BenefitAmount {
switch (roleType) {
case RoleType.COMMUNITY:
return this.forCommunity()
case RoleType.AUTH_PROVINCE_COMPANY:
return this.forAuthProvince()
case RoleType.PROVINCE_COMPANY:
return this.forProvince()
case RoleType.AUTH_CITY_COMPANY:
return this.forAuthCity()
case RoleType.CITY_COMPANY:
return this.forCity()
default:
throw new DomainError(`未知角色类型: ${roleType}`)
}
}
}