rwadurian/backend/services/admin-service/src/api/dto/response/user-detail.dto.ts

295 lines
6.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 用户详情页面响应 DTO
*/
// ============================================================================
// 用户完整信息
// ============================================================================
/**
* 推荐信息
*/
export class ReferralInfoDto {
myReferralCode!: string;
usedReferralCode!: string | null;
referrerId!: string | null;
referrerSequence!: string | null;
referrerNickname!: string | null;
ancestorPath!: string | null;
depth!: number;
directReferralCount!: number;
activeDirectCount!: number;
}
/**
* 用户完整详情响应
*/
export class UserFullDetailDto {
accountId!: string;
accountSequence!: string;
avatar!: string | null;
nickname!: string | null;
phoneNumberMasked!: string | null;
status!: 'active' | 'frozen' | 'deactivated';
kycStatus!: string;
isOnline!: boolean;
registeredAt!: string;
lastActiveAt!: string | null;
// 认种统计
personalAdoptions!: number;
teamAddresses!: number;
teamAdoptions!: number;
provincialAdoptions!: {
count: number;
percentage: number;
};
cityAdoptions!: {
count: number;
percentage: number;
};
// 排名
ranking!: number | null;
// 推荐信息
referralInfo!: ReferralInfoDto;
}
// ============================================================================
// 推荐关系树
// ============================================================================
/**
* 推荐关系节点
*/
export class ReferralNodeDto {
accountSequence!: string;
userId!: string;
nickname!: string | null;
avatar!: string | null;
personalAdoptions!: number;
teamAdoptions!: number; // 团队认种量
depth!: number;
directReferralCount!: number;
isCurrentUser?: boolean;
}
/**
* 推荐关系树响应
*/
export class ReferralTreeDto {
currentUser!: ReferralNodeDto;
ancestors!: ReferralNodeDto[]; // 向上的推荐人链
directReferrals!: ReferralNodeDto[]; // 直推用户列表
}
// ============================================================================
// 认种分类账
// ============================================================================
/**
* 认种汇总
*/
export class PlantingSummaryDto {
totalOrders!: number;
totalTreeCount!: number;
totalAmount!: string;
effectiveTreeCount!: number;
pendingTreeCount!: number;
firstPlantingAt!: string | null;
lastPlantingAt!: string | null;
}
/**
* 认种分类账项
*/
export class PlantingLedgerItemDto {
orderId!: string;
orderNo!: string;
treeCount!: number;
totalAmount!: string;
status!: string;
selectedProvince!: string | null;
selectedCity!: string | null;
createdAt!: string;
paidAt!: string | null;
fundAllocatedAt!: string | null;
miningEnabledAt!: string | null;
}
/**
* 认种分类账响应
*/
export class PlantingLedgerResponseDto {
summary!: PlantingSummaryDto;
items!: PlantingLedgerItemDto[];
total!: number;
page!: number;
pageSize!: number;
totalPages!: number;
}
// ============================================================================
// 钱包分类账
// ============================================================================
/**
* 钱包汇总
*/
export class WalletSummaryDto {
// USDT
usdtAvailable!: string;
usdtFrozen!: string;
// DST
dstAvailable!: string;
dstFrozen!: string;
// BNB
bnbAvailable!: string;
bnbFrozen!: string;
// OG
ogAvailable!: string;
ogFrozen!: string;
// RWAD
rwadAvailable!: string;
rwadFrozen!: string;
// 算力
hashpower!: string;
// 收益
pendingUsdt!: string;
pendingHashpower!: string;
settleableUsdt!: string;
settleableHashpower!: string;
settledTotalUsdt!: string;
settledTotalHashpower!: string;
expiredTotalUsdt!: string;
expiredTotalHashpower!: string;
}
/**
* 钱包分类账项
*/
export class WalletLedgerItemDto {
entryId!: string;
entryType!: string;
assetType!: string;
amount!: string;
balanceAfter!: string | null;
refOrderId!: string | null;
refTxHash!: string | null;
memo!: string | null;
createdAt!: string;
}
/**
* 钱包分类账响应
*/
export class WalletLedgerResponseDto {
summary!: WalletSummaryDto;
items!: WalletLedgerItemDto[];
total!: number;
page!: number;
pageSize!: number;
totalPages!: number;
}
// ============================================================================
// 授权信息
// ============================================================================
/**
* 授权角色
*/
export class AuthorizationRoleDto {
id!: string;
roleType!: string;
regionCode!: string;
regionName!: string;
displayTitle!: string;
status!: string;
benefitActive!: boolean;
benefitActivatedAt!: string | null;
authorizedAt!: string | null;
authorizedBy!: string | null;
initialTargetTreeCount!: number;
monthlyTargetType!: string;
lastAssessmentMonth!: string | null;
monthlyTreesAdded!: number;
createdAt!: string;
}
/**
* 月度考核
*/
export class MonthlyAssessmentDto {
id!: string;
authorizationId!: string;
roleType!: string;
regionCode!: string;
assessmentMonth!: string;
monthIndex!: number;
monthlyTarget!: number;
monthlyCompleted!: number;
cumulativeTarget!: number;
cumulativeCompleted!: number;
result!: string;
rankingInRegion!: number | null;
isFirstPlace!: boolean;
isBypassed!: boolean;
completedAt!: string | null;
assessedAt!: string | null;
}
/**
* 系统账户流水项
*/
export class SystemAccountLedgerItemDto {
ledgerId!: string;
accountId!: string;
accountType!: string;
entryType!: string;
amount!: string;
balanceAfter!: string;
sourceOrderId!: string | null;
sourceRewardId!: string | null;
txHash!: string | null;
memo!: string | null;
createdAt!: string;
}
/**
* [2026-01-08] 权益考核记录
* 独立于火柴人排名MonthlyAssessment专门记录权益有效性考核历史
*/
export class BenefitAssessmentDto {
id!: string;
authorizationId!: string;
roleType!: string;
regionCode!: string;
regionName!: string;
assessmentMonth!: string;
monthIndex!: number;
monthlyTarget!: number;
cumulativeTarget!: number;
treesCompleted!: number;
treesRequired!: number;
benefitActionTaken!: string; // ACTIVATED, RENEWED, DEACTIVATED, NO_CHANGE
previousBenefitStatus!: boolean;
newBenefitStatus!: boolean;
newValidUntil!: string | null;
result!: string;
remarks!: string | null;
assessedAt!: string;
createdAt!: string;
}
/**
* 授权详情响应
*/
export class AuthorizationDetailResponseDto {
roles!: AuthorizationRoleDto[];
assessments!: MonthlyAssessmentDto[];
benefitAssessments!: BenefitAssessmentDto[]; // [2026-01-08] 新增:权益考核记录
systemAccountLedger!: SystemAccountLedgerItemDto[];
}