Files
nxxmdata/bank-backend/scripts/seed-loan-applications.js

261 lines
8.2 KiB
JavaScript
Raw Normal View History

2025-09-24 17:49:32 +08:00
/**
* 贷款申请测试数据脚本
* @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;