feat(pre-planting): 新增 GET /merges/:mergeNo 合并详情接口

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-02-28 10:07:53 -08:00
parent 7bad0a8935
commit b17bf82443
2 changed files with 45 additions and 0 deletions

View File

@ -3,6 +3,7 @@ import {
Post,
Get,
Body,
Param,
UseGuards,
Req,
HttpCode,
@ -98,4 +99,16 @@ export class PrePlantingController {
const userId = BigInt(req.user.id);
return this.prePlantingService.getMerges(userId);
}
@Get('merges/:mergeNo')
@ApiOperation({ summary: '获取单条合并记录详情' })
@ApiResponse({ status: HttpStatus.OK, description: '合并记录详情' })
@ApiResponse({ status: HttpStatus.NOT_FOUND, description: '合并记录不存在' })
async getMergeDetail(
@Req() req: AuthenticatedRequest,
@Param('mergeNo') mergeNo: string,
) {
const userId = BigInt(req.user.id);
return this.prePlantingService.getMergeDetail(userId, mergeNo);
}
}

View File

@ -358,6 +358,38 @@ export class PrePlantingApplicationService {
});
}
/**
*
*/
async getMergeDetail(
userId: bigint,
mergeNo: string,
): Promise<{
mergeNo: string;
sourceOrderNos: string[];
treeCount: number;
contractStatus: string;
contractSignedAt: Date | null;
miningEnabledAt: Date | null;
mergedAt: Date;
}> {
return this.prisma.$transaction(async (tx) => {
const merge = await this.mergeRepo.findByMergeNo(tx, mergeNo);
if (!merge || merge.userId !== userId) {
throw new NotFoundException(`合并记录不存在: ${mergeNo}`);
}
return {
mergeNo: merge.mergeNo,
sourceOrderNos: merge.sourceOrderNos,
treeCount: merge.treeCount,
contractStatus: merge.contractStatus,
contractSignedAt: merge.contractSignedAt,
miningEnabledAt: merge.miningEnabledAt,
mergedAt: merge.mergedAt,
};
});
}
/**
* API + 使
*