fix(planting-service): 修复合同PDF签署日期显示为UTC时间的问题
合同生成时使用 new Date().toISOString().split('T')[0] 获取日期,
该方法返回UTC时间,导致北京时间凌晨签署的合同显示为前一天日期。
修复方案:新增 getBeijingDateString() 函数,将UTC时间转换为北京时间(UTC+8)
影响范围:仅影响PDF合同上显示的签署日期,不影响数据库时间戳或业务逻辑
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
641612a5d0
commit
51114f265d
|
|
@ -659,7 +659,8 @@
|
|||
"Bash(DATABASE_URL=\"postgresql://test:test@localhost:5432/test\" npx prisma validate:*)",
|
||||
"Bash(DATABASE_URL=\"postgresql://test:test@localhost:5432/test\" npx prisma format:*)",
|
||||
"Bash(timeout 60 npx tsc:*)",
|
||||
"Bash(git commit -m \"$\\(cat <<''EOF''\nfeat\\(wallet-service\\): 三层保护机制确保内部转账接收方钱包存在\n\n新增三层保护机制:\n1. 用户注册时:监听 identity.UserAccountCreated 事件自动创建钱包\n2. 发起转账时:检测内部转账后调用 ensureWalletExists\\(\\) 预创建钱包\n3. 链上确认时:原有 upsert 逻辑兜底(保持不变)\n\n新增文件:\n- identity-event-consumer.service.ts: 消费 identity 用户注册事件\n- user-account-created.handler.ts: 处理用户注册事件创建钱包\n\n新增 API:\n- POST /wallets/ensure-wallet: 确保单个钱包存在\n- POST /wallets/ensure-wallets: 批量确保钱包存在\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")"
|
||||
"Bash(git commit -m \"$\\(cat <<''EOF''\nfeat\\(wallet-service\\): 三层保护机制确保内部转账接收方钱包存在\n\n新增三层保护机制:\n1. 用户注册时:监听 identity.UserAccountCreated 事件自动创建钱包\n2. 发起转账时:检测内部转账后调用 ensureWalletExists\\(\\) 预创建钱包\n3. 链上确认时:原有 upsert 逻辑兜底(保持不变)\n\n新增文件:\n- identity-event-consumer.service.ts: 消费 identity 用户注册事件\n- user-account-created.handler.ts: 处理用户注册事件创建钱包\n\n新增 API:\n- POST /wallets/ensure-wallet: 确保单个钱包存在\n- POST /wallets/ensure-wallets: 批量确保钱包存在\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||||
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian\" add -A)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
|
|
|
|||
|
|
@ -20,6 +20,17 @@ import { PdfGeneratorService } from '../../infrastructure/pdf/pdf-generator.serv
|
|||
import { MinioStorageService } from '../../infrastructure/storage/minio-storage.service';
|
||||
import * as crypto from 'crypto';
|
||||
|
||||
/**
|
||||
* 获取北京时间的日期字符串 (YYYY-MM-DD)
|
||||
* 用于合同签署日期显示
|
||||
*/
|
||||
function getBeijingDateString(): string {
|
||||
const now = new Date();
|
||||
// 北京时间 = UTC + 8小时
|
||||
const beijingTime = new Date(now.getTime() + 8 * 60 * 60 * 1000);
|
||||
return beijingTime.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名轨迹点
|
||||
*/
|
||||
|
|
@ -277,7 +288,7 @@ export class ContractSigningController {
|
|||
}
|
||||
|
||||
// 5. 生成带签名的 PDF(在同一个实例上完成填充和签名)
|
||||
const signingDate = new Date().toISOString().split('T')[0];
|
||||
const signingDate = getBeijingDateString();
|
||||
const pdfBuffer = await this.pdfGeneratorService.generateSignedContractPdf(
|
||||
{
|
||||
contractNo: task.contractNo,
|
||||
|
|
@ -371,7 +382,7 @@ export class ContractSigningController {
|
|||
}
|
||||
|
||||
// 5. 生成带签名的 PDF(在同一个实例上完成填充和签名)
|
||||
const signingDate = new Date().toISOString().split('T')[0];
|
||||
const signingDate = getBeijingDateString();
|
||||
const pdfBuffer = await this.pdfGeneratorService.generateSignedContractPdf(
|
||||
{
|
||||
contractNo: task.contractNo,
|
||||
|
|
@ -510,7 +521,7 @@ export class ContractSigningController {
|
|||
userPhoneNumber?: string;
|
||||
treeCount: number;
|
||||
}): Promise<Buffer> {
|
||||
const signingDate = new Date().toISOString().split('T')[0];
|
||||
const signingDate = getBeijingDateString();
|
||||
return this.pdfGeneratorService.generateContractPdf({
|
||||
contractNo: task.contractNo,
|
||||
userRealName: task.userRealName || '未认证',
|
||||
|
|
|
|||
Loading…
Reference in New Issue