Files
nxxmdata/bank-backend/scripts/seed-loan-applications.js
2025-09-24 17:49:32 +08:00

261 lines
8.2 KiB
JavaScript
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.

/**
* 贷款申请测试数据脚本
* @file seed-loan-applications.js
* @description 为银行系统添加贷款申请测试数据
*/
const { sequelize, LoanApplication, AuditRecord, User } = require('../models');
async function seedLoanApplications() {
try {
console.log('开始添加贷款申请测试数据...');
// 获取admin用户作为申请人和审核人
const adminUser = await User.findOne({ where: { username: 'admin' } });
if (!adminUser) {
console.log('❌ 未找到admin用户请先创建用户');
return;
}
// 清空现有数据
await AuditRecord.destroy({ where: {} });
await LoanApplication.destroy({ where: {} });
console.log('✅ 清空现有贷款申请数据');
// 创建贷款申请测试数据(参考前端页面的模拟数据)
const applications = [
{
applicationNumber: '20240325123703784',
productName: '惠农贷',
farmerName: '刘超',
borrowerName: '刘超',
borrowerIdNumber: '511***********3017',
assetType: '牛',
applicationQuantity: '10头',
amount: 100000.00,
status: 'pending_review',
type: 'personal',
term: 12,
interestRate: 3.90,
phone: '13800138000',
purpose: '养殖贷款',
remark: '申请资金用于购买牛只扩大养殖规模',
applicationTime: new Date('2024-03-25 12:37:03'),
applicantId: adminUser.id
},
{
applicationNumber: '20240229110801968',
productName: '中国工商银行扎旗支行"畜禽活体抵押"',
farmerName: '刘超',
borrowerName: '刘超',
borrowerIdNumber: '511***********3017',
assetType: '牛',
applicationQuantity: '10头',
amount: 100000.00,
status: 'verification_pending',
type: 'mortgage',
term: 24,
interestRate: 4.20,
phone: '13900139000',
purpose: '养殖贷款',
remark: '以畜禽活体作为抵押物申请贷款',
applicationTime: new Date('2024-02-29 11:08:01'),
applicantId: adminUser.id,
approvedBy: adminUser.id,
approvedTime: new Date('2024-03-01 10:15:00')
},
{
applicationNumber: '20240229105806431',
productName: '惠农贷',
farmerName: '刘超',
borrowerName: '刘超',
borrowerIdNumber: '511***********3017',
assetType: '牛',
applicationQuantity: '10头',
amount: 100000.00,
status: 'pending_binding',
type: 'personal',
term: 18,
interestRate: 3.75,
phone: '13700137000',
purpose: '养殖贷款',
remark: '待绑定相关资产信息',
applicationTime: new Date('2024-02-29 10:58:06'),
applicantId: adminUser.id
},
{
applicationNumber: '20240315085642123',
productName: '农商银行养殖贷',
farmerName: '张伟',
borrowerName: '张伟',
borrowerIdNumber: '621***********2156',
assetType: '猪',
applicationQuantity: '50头',
amount: 250000.00,
status: 'approved',
type: 'business',
term: 36,
interestRate: 4.50,
phone: '13600136000',
purpose: '扩大养猪规模',
remark: '已审核通过,准备放款',
applicationTime: new Date('2024-03-15 08:56:42'),
applicantId: adminUser.id,
approvedBy: adminUser.id,
approvedTime: new Date('2024-03-16 14:20:00')
},
{
applicationNumber: '20240310142355789',
productName: '建设银行农户小额贷款',
farmerName: '李明',
borrowerName: '李明',
borrowerIdNumber: '371***********4578',
assetType: '羊',
applicationQuantity: '30只',
amount: 80000.00,
status: 'rejected',
type: 'personal',
term: 12,
interestRate: 4.10,
phone: '13500135000',
purpose: '养羊创业',
remark: '资质不符合要求,已拒绝',
applicationTime: new Date('2024-03-10 14:23:55'),
applicantId: adminUser.id,
rejectedBy: adminUser.id,
rejectedTime: new Date('2024-03-11 09:30:00'),
rejectionReason: '申请人征信记录不良,不符合放款条件'
}
];
// 批量创建申请
const createdApplications = await LoanApplication.bulkCreate(applications);
console.log(`✅ 成功创建${createdApplications.length}个贷款申请`);
// 为每个申请创建审核记录
const auditRecords = [];
// 第一个申请:只有提交记录
auditRecords.push({
applicationId: createdApplications[0].id,
action: 'submit',
auditor: '刘超',
auditorId: adminUser.id,
comment: '提交申请',
auditTime: new Date('2024-03-25 12:37:03'),
newStatus: 'pending_review'
});
// 第二个申请:提交 + 审核通过
auditRecords.push(
{
applicationId: createdApplications[1].id,
action: 'submit',
auditor: '刘超',
auditorId: adminUser.id,
comment: '提交申请',
auditTime: new Date('2024-02-29 11:08:01'),
newStatus: 'pending_review'
},
{
applicationId: createdApplications[1].id,
action: 'approve',
auditor: '王经理',
auditorId: adminUser.id,
comment: '资料齐全,符合条件,同意放款',
auditTime: new Date('2024-03-01 10:15:00'),
previousStatus: 'pending_review',
newStatus: 'verification_pending'
}
);
// 第三个申请:只有提交记录
auditRecords.push({
applicationId: createdApplications[2].id,
action: 'submit',
auditor: '刘超',
auditorId: adminUser.id,
comment: '提交申请',
auditTime: new Date('2024-02-29 10:58:06'),
newStatus: 'pending_review'
});
// 第四个申请:提交 + 审核通过
auditRecords.push(
{
applicationId: createdApplications[3].id,
action: 'submit',
auditor: '张伟',
auditorId: adminUser.id,
comment: '提交申请',
auditTime: new Date('2024-03-15 08:56:42'),
newStatus: 'pending_review'
},
{
applicationId: createdApplications[3].id,
action: 'approve',
auditor: '李总监',
auditorId: adminUser.id,
comment: '经营状况良好,养殖经验丰富,批准贷款',
auditTime: new Date('2024-03-16 14:20:00'),
previousStatus: 'pending_review',
newStatus: 'approved'
}
);
// 第五个申请:提交 + 审核拒绝
auditRecords.push(
{
applicationId: createdApplications[4].id,
action: 'submit',
auditor: '李明',
auditorId: adminUser.id,
comment: '提交申请',
auditTime: new Date('2024-03-10 14:23:55'),
newStatus: 'pending_review'
},
{
applicationId: createdApplications[4].id,
action: 'reject',
auditor: '风控部门',
auditorId: adminUser.id,
comment: '申请人征信记录不良,不符合放款条件',
auditTime: new Date('2024-03-11 09:30:00'),
previousStatus: 'pending_review',
newStatus: 'rejected'
}
);
// 批量创建审核记录
await AuditRecord.bulkCreate(auditRecords);
console.log(`✅ 成功创建${auditRecords.length}条审核记录`);
console.log('\n📊 贷款申请数据统计:');
console.log('- 待初审1个申请');
console.log('- 核验待放款1个申请');
console.log('- 待绑定1个申请');
console.log('- 已通过1个申请');
console.log('- 已拒绝1个申请');
console.log('- 总申请金额630,000.00元');
console.log('\n🎉 贷款申请测试数据添加完成!');
} catch (error) {
console.error('❌ 添加贷款申请测试数据失败:', error);
throw error;
}
}
// 如果直接运行此文件
if (require.main === module) {
seedLoanApplications()
.then(() => {
console.log('✅ 脚本执行完成');
process.exit(0);
})
.catch((error) => {
console.error('❌ 脚本执行失败:', error);
process.exit(1);
});
}
module.exports = seedLoanApplications;