47 lines
1.2 KiB
TypeScript
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}`)
|
|
}
|
|
}
|
|
}
|