保险前后端,养殖端和保险端小程序
This commit is contained in:
250
insurance_backend/scripts/create_tables.sql
Normal file
250
insurance_backend/scripts/create_tables.sql
Normal file
@@ -0,0 +1,250 @@
|
||||
-- 保险端口系统数据库表结构
|
||||
-- 创建时间: 2025-01-01
|
||||
-- 数据库: MySQL 8.0+
|
||||
|
||||
-- 创建数据库
|
||||
CREATE DATABASE IF NOT EXISTS insurance_data
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE insurance_data;
|
||||
|
||||
-- 1. 角色表
|
||||
CREATE TABLE IF NOT EXISTS roles (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色ID',
|
||||
name VARCHAR(50) NOT NULL UNIQUE COMMENT '角色名称',
|
||||
description VARCHAR(255) NULL COMMENT '角色描述',
|
||||
permissions JSON NOT NULL COMMENT '权限配置',
|
||||
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active' COMMENT '状态',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_roles_name (name),
|
||||
INDEX idx_roles_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
|
||||
|
||||
-- 2. 用户表
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
|
||||
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
|
||||
password VARCHAR(255) NOT NULL COMMENT '密码',
|
||||
real_name VARCHAR(50) NOT NULL COMMENT '真实姓名',
|
||||
email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
|
||||
phone VARCHAR(20) NOT NULL COMMENT '手机号',
|
||||
role_id INT NOT NULL COMMENT '角色ID',
|
||||
status ENUM('active', 'inactive', 'suspended') NOT NULL DEFAULT 'active' COMMENT '状态',
|
||||
last_login TIMESTAMP NULL COMMENT '最后登录时间',
|
||||
avatar VARCHAR(255) NULL COMMENT '头像URL',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_users_username (username),
|
||||
INDEX idx_users_email (email),
|
||||
INDEX idx_users_phone (phone),
|
||||
INDEX idx_users_role_id (role_id),
|
||||
INDEX idx_users_status (status),
|
||||
|
||||
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE RESTRICT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
||||
|
||||
-- 3. 保险类型表
|
||||
CREATE TABLE IF NOT EXISTS insurance_types (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '保险类型ID',
|
||||
name VARCHAR(100) NOT NULL UNIQUE COMMENT '保险类型名称',
|
||||
description TEXT NULL COMMENT '保险类型描述',
|
||||
coverage_amount_min DECIMAL(15,2) NOT NULL DEFAULT 0.00 COMMENT '最低保额',
|
||||
coverage_amount_max DECIMAL(15,2) NOT NULL DEFAULT 1000000.00 COMMENT '最高保额',
|
||||
premium_rate DECIMAL(5,4) NOT NULL DEFAULT 0.001 COMMENT '保险费率',
|
||||
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active' COMMENT '状态',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_insurance_type_name (name),
|
||||
INDEX idx_insurance_type_status (status),
|
||||
|
||||
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险类型表';
|
||||
|
||||
-- 4. 保险申请表
|
||||
CREATE TABLE IF NOT EXISTS insurance_applications (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '申请ID',
|
||||
application_no VARCHAR(50) NOT NULL UNIQUE COMMENT '申请编号',
|
||||
customer_name VARCHAR(100) NOT NULL COMMENT '客户姓名',
|
||||
customer_id_card VARCHAR(18) NOT NULL COMMENT '客户身份证号',
|
||||
customer_phone VARCHAR(20) NOT NULL COMMENT '客户手机号',
|
||||
customer_address VARCHAR(255) NOT NULL COMMENT '客户地址',
|
||||
insurance_type_id INT NOT NULL COMMENT '保险类型ID',
|
||||
application_amount DECIMAL(15,2) NOT NULL COMMENT '申请金额',
|
||||
status ENUM('pending', 'approved', 'rejected', 'under_review') NOT NULL DEFAULT 'pending' COMMENT '状态',
|
||||
application_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申请日期',
|
||||
review_notes TEXT NULL COMMENT '审核备注',
|
||||
reviewer_id INT NULL COMMENT '审核人ID',
|
||||
review_date TIMESTAMP NULL COMMENT '审核日期',
|
||||
documents JSON NULL COMMENT '申请文档',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_applications_application_no (application_no),
|
||||
INDEX idx_applications_customer_id_card (customer_id_card),
|
||||
INDEX idx_applications_customer_phone (customer_phone),
|
||||
INDEX idx_applications_status (status),
|
||||
INDEX idx_applications_application_date (application_date),
|
||||
INDEX idx_applications_insurance_type_id (insurance_type_id),
|
||||
INDEX idx_applications_reviewer_id (reviewer_id),
|
||||
|
||||
FOREIGN KEY (insurance_type_id) REFERENCES insurance_types(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (reviewer_id) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险申请表';
|
||||
|
||||
-- 5. 保单表
|
||||
CREATE TABLE IF NOT EXISTS policies (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '保单ID',
|
||||
policy_no VARCHAR(50) NOT NULL UNIQUE COMMENT '保单编号',
|
||||
application_id INT NOT NULL COMMENT '关联的保险申请ID',
|
||||
insurance_type_id INT NOT NULL COMMENT '保险类型ID',
|
||||
customer_id INT NOT NULL COMMENT '客户ID',
|
||||
coverage_amount DECIMAL(15,2) NOT NULL COMMENT '保额',
|
||||
premium_amount DECIMAL(15,2) NOT NULL COMMENT '保费金额',
|
||||
start_date DATE NOT NULL COMMENT '保险开始日期',
|
||||
end_date DATE NOT NULL COMMENT '保险结束日期',
|
||||
policy_status ENUM('active', 'expired', 'cancelled', 'suspended') NOT NULL DEFAULT 'active' COMMENT '保单状态',
|
||||
payment_status ENUM('paid', 'unpaid', 'partial') NOT NULL DEFAULT 'unpaid' COMMENT '支付状态',
|
||||
payment_date DATE NULL COMMENT '支付日期',
|
||||
policy_document_url VARCHAR(500) NULL COMMENT '保单文件URL',
|
||||
terms_and_conditions TEXT NULL COMMENT '条款和条件',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
UNIQUE INDEX idx_policy_no (policy_no),
|
||||
INDEX idx_policy_customer (customer_id),
|
||||
INDEX idx_policy_application (application_id),
|
||||
INDEX idx_policy_status (policy_status),
|
||||
INDEX idx_policy_payment_status (payment_status),
|
||||
INDEX idx_policy_dates (start_date, end_date),
|
||||
|
||||
FOREIGN KEY (application_id) REFERENCES insurance_applications(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (insurance_type_id) REFERENCES insurance_types(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (customer_id) REFERENCES users(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保单表';
|
||||
|
||||
-- 6. 理赔表
|
||||
CREATE TABLE IF NOT EXISTS claims (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '理赔ID',
|
||||
claim_no VARCHAR(50) NOT NULL UNIQUE COMMENT '理赔编号',
|
||||
policy_id INT NOT NULL COMMENT '关联的保单ID',
|
||||
customer_id INT NOT NULL COMMENT '客户ID',
|
||||
claim_amount DECIMAL(15,2) NOT NULL COMMENT '理赔金额',
|
||||
claim_date DATE NOT NULL COMMENT '理赔发生日期',
|
||||
incident_description TEXT NOT NULL COMMENT '事故描述',
|
||||
claim_status ENUM('pending', 'approved', 'rejected', 'processing', 'paid') NOT NULL DEFAULT 'pending' COMMENT '理赔状态',
|
||||
review_notes TEXT NULL COMMENT '审核备注',
|
||||
reviewer_id INT NULL COMMENT '审核人ID',
|
||||
review_date DATE NULL COMMENT '审核日期',
|
||||
payment_date DATE NULL COMMENT '支付日期',
|
||||
supporting_documents JSON NULL COMMENT '支持文件',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
UNIQUE INDEX idx_claim_no (claim_no),
|
||||
INDEX idx_claim_policy (policy_id),
|
||||
INDEX idx_claim_customer (customer_id),
|
||||
INDEX idx_claim_status (claim_status),
|
||||
INDEX idx_claim_date (claim_date),
|
||||
|
||||
FOREIGN KEY (policy_id) REFERENCES policies(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (customer_id) REFERENCES users(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (reviewer_id) REFERENCES users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='理赔表';
|
||||
|
||||
-- 7. 系统配置表
|
||||
CREATE TABLE IF NOT EXISTS system_configs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '配置ID',
|
||||
config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
|
||||
config_value JSON NOT NULL COMMENT '配置值',
|
||||
description VARCHAR(255) NULL COMMENT '配置描述',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_system_config_key (config_key),
|
||||
|
||||
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
|
||||
|
||||
-- 8. 系统日志表
|
||||
CREATE TABLE IF NOT EXISTS system_logs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',
|
||||
level ENUM('info', 'warning', 'error', 'debug') NOT NULL DEFAULT 'info' COMMENT '日志级别',
|
||||
message TEXT NOT NULL COMMENT '日志消息',
|
||||
module VARCHAR(100) NOT NULL COMMENT '模块名称',
|
||||
user_id INT NULL COMMENT '用户ID',
|
||||
ip_address VARCHAR(45) NULL COMMENT 'IP地址',
|
||||
user_agent TEXT NULL COMMENT '用户代理',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
|
||||
INDEX idx_system_logs_level (level),
|
||||
INDEX idx_system_logs_module (module),
|
||||
INDEX idx_system_logs_user_id (user_id),
|
||||
INDEX idx_system_logs_created_at (created_at),
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统日志表';
|
||||
|
||||
-- 插入初始数据
|
||||
-- 插入默认角色
|
||||
INSERT INTO roles (name, description, permissions, status) VALUES
|
||||
('admin', '系统管理员', '["user:read","user:create","user:update","user:delete","insurance:read","insurance:create","insurance:update","insurance:delete","insurance:review","policy:read","policy:create","policy:update","policy:delete","claim:read","claim:create","claim:update","claim:review","system:read","system:update","system:admin"]', 'active'),
|
||||
('agent', '保险代理人', '["insurance:read","insurance:create","policy:read","policy:create","claim:read","claim:create"]', 'active'),
|
||||
('customer', '客户', '["insurance:read","policy:read","claim:read","claim:create"]', 'active');
|
||||
|
||||
-- 插入默认保险类型
|
||||
INSERT INTO insurance_types (name, description, coverage_amount_min, coverage_amount_max, premium_rate, status) VALUES
|
||||
('人寿保险', '提供生命保障的保险产品', 10000.00, 1000000.00, 0.0025, 'active'),
|
||||
('健康保险', '提供医疗保障的保险产品', 5000.00, 500000.00, 0.0030, 'active'),
|
||||
('意外伤害保险', '提供意外伤害保障的保险产品', 1000.00, 200000.00, 0.0015, 'active'),
|
||||
('财产保险', '提供财产保障的保险产品', 5000.00, 1000000.00, 0.0020, 'active'),
|
||||
('车险', '提供车辆保障的保险产品', 1000.00, 500000.00, 0.0040, 'active');
|
||||
|
||||
-- 插入默认系统配置
|
||||
INSERT INTO system_configs (config_key, config_value, description) VALUES
|
||||
('system_name', '"保险端口系统"', '系统名称'),
|
||||
('company_name', '"XX保险公司"', '公司名称'),
|
||||
('contact_email', '"support@insurance.com"', '联系邮箱'),
|
||||
('contact_phone', '"400-123-4567"', '联系电话'),
|
||||
('max_file_size', '10485760', '最大文件上传大小(字节)'),
|
||||
('allowed_file_types', '["jpg", "jpeg", "png", "pdf", "doc", "docx"]', '允许上传的文件类型');
|
||||
|
||||
-- 创建管理员用户(密码需要在前端加密后存储)
|
||||
-- 默认密码: admin123 (需要在前端使用bcrypt加密)
|
||||
INSERT INTO users (username, password, real_name, email, phone, role_id, status) VALUES
|
||||
('admin', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '系统管理员', 'admin@insurance.com', '13800138000', 1, 'active');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 显示表结构信息
|
||||
SHOW TABLES;
|
||||
|
||||
-- 显示各表注释
|
||||
SELECT
|
||||
TABLE_NAME,
|
||||
TABLE_COMMENT
|
||||
FROM
|
||||
INFORMATION_SCHEMA.TABLES
|
||||
WHERE
|
||||
TABLE_SCHEMA = 'nxxmdata';
|
||||
|
||||
-- 显示表创建语句示例
|
||||
SHOW CREATE TABLE users;
|
||||
113
insurance_backend/scripts/init-db.js
Normal file
113
insurance_backend/scripts/init-db.js
Normal file
@@ -0,0 +1,113 @@
|
||||
const { sequelize } = require('../config/database');
|
||||
const { User, Role, InsuranceApplication, InsuranceType, Policy, Claim } = require('../models');
|
||||
|
||||
async function initDatabase() {
|
||||
try {
|
||||
console.log('🔄 开始初始化数据库...');
|
||||
|
||||
// 测试数据库连接
|
||||
console.log('🔗 测试数据库连接...');
|
||||
await sequelize.authenticate();
|
||||
console.log('✅ 数据库连接成功');
|
||||
|
||||
// 先删除所有表(如果存在)
|
||||
console.log('🗑️ 清理现有表结构...');
|
||||
// 禁用外键约束
|
||||
await sequelize.query('SET FOREIGN_KEY_CHECKS = 0');
|
||||
|
||||
await Claim.drop();
|
||||
await Policy.drop();
|
||||
await InsuranceApplication.drop();
|
||||
await InsuranceType.drop();
|
||||
await User.drop();
|
||||
await Role.drop();
|
||||
|
||||
// 启用外键约束
|
||||
await sequelize.query('SET FOREIGN_KEY_CHECKS = 1');
|
||||
console.log('✅ 现有表结构清理完成');
|
||||
|
||||
// 按顺序创建表
|
||||
console.log('🗄️ 创建角色表...');
|
||||
await Role.sync();
|
||||
|
||||
console.log('🗄️ 创建用户表...');
|
||||
await User.sync();
|
||||
|
||||
console.log('🗄️ 创建保险类型表...');
|
||||
await InsuranceType.sync();
|
||||
|
||||
console.log('🗄️ 创建保险申请表...');
|
||||
await InsuranceApplication.sync();
|
||||
|
||||
console.log('🗄️ 创建保单表...');
|
||||
await Policy.sync();
|
||||
|
||||
console.log('🗄️ 创建理赔表...');
|
||||
await Claim.sync();
|
||||
|
||||
console.log('✅ 所有表创建完成');
|
||||
|
||||
// 创建默认角色
|
||||
console.log('👥 创建默认角色...');
|
||||
const roles = await Role.bulkCreate([
|
||||
{ name: 'admin', description: '系统管理员', permissions: JSON.stringify(['*']) },
|
||||
{ name: 'agent', description: '保险代理人', permissions: JSON.stringify(['insurance:read', 'insurance:create', 'policy:read']) },
|
||||
{ name: 'customer', description: '客户', permissions: JSON.stringify(['insurance:create', 'policy:read:self', 'claim:create:self']) },
|
||||
{ name: 'reviewer', description: '审核员', permissions: JSON.stringify(['insurance:review', 'claim:review']) }
|
||||
]);
|
||||
console.log('✅ 默认角色创建完成');
|
||||
|
||||
// 创建默认保险类型
|
||||
console.log('📋 创建默认保险类型...');
|
||||
const insuranceTypes = await InsuranceType.bulkCreate([
|
||||
{
|
||||
name: '人寿保险',
|
||||
description: '提供生命保障的保险产品',
|
||||
coverage_amount_min: 10000,
|
||||
coverage_amount_max: 1000000,
|
||||
premium_rate: 0.0025,
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
name: '健康保险',
|
||||
description: '提供医疗保障的保险产品',
|
||||
coverage_amount_min: 5000,
|
||||
coverage_amount_max: 500000,
|
||||
premium_rate: 0.003,
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
name: '财产保险',
|
||||
description: '提供财产保障的保险产品',
|
||||
coverage_amount_min: 1000,
|
||||
coverage_amount_max: 2000000,
|
||||
premium_rate: 0.0015,
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
name: '车险',
|
||||
description: '提供车辆保障的保险产品',
|
||||
coverage_amount_min: 500,
|
||||
coverage_amount_max: 1000000,
|
||||
premium_rate: 0.002,
|
||||
status: 'active'
|
||||
}
|
||||
]);
|
||||
console.log('✅ 默认保险类型创建完成');
|
||||
|
||||
console.log('🎉 数据库初始化完成!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 数据库初始化失败:', error);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
await sequelize.close();
|
||||
}
|
||||
}
|
||||
|
||||
// 如果是直接运行此脚本
|
||||
if (require.main === module) {
|
||||
initDatabase();
|
||||
}
|
||||
|
||||
module.exports = initDatabase;
|
||||
37
insurance_backend/scripts/insert_data_fixed.sql
Normal file
37
insurance_backend/scripts/insert_data_fixed.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
SET NAMES utf8mb4;
|
||||
SET CHARACTER SET utf8mb4;
|
||||
|
||||
-- 更新默认角色权限
|
||||
UPDATE roles SET
|
||||
description = '系统管理员',
|
||||
permissions = '["user:read","user:create","user:update","user:delete","insurance:read","insurance:create","insurance:update","insurance:delete","insurance:review","policy:read","policy:create","policy:update","policy:delete","claim:read","claim:create","claim:update","claim:review","system:read","system:update","system:admin"]'
|
||||
WHERE name = 'admin';
|
||||
|
||||
-- 插入其他角色(如果不存在)
|
||||
INSERT IGNORE INTO roles (name, description, permissions, status) VALUES
|
||||
('agent', '保险代理人', '["insurance:read","insurance:create","policy:read","policy:create","claim:read","claim:create"]', 'active'),
|
||||
('customer', '客户', '["insurance:read","policy:read","claim:read","claim:create"]', 'active');
|
||||
|
||||
-- 插入默认保险类型
|
||||
INSERT IGNORE INTO insurance_types (name, description, coverage_amount_min, coverage_amount_max, premium_rate, status) VALUES
|
||||
('人寿保险', '提供生命保障的保险产品', 10000.00, 1000000.00, 0.0025, 'active'),
|
||||
('健康保险', '提供医疗保障的保险产品', 5000.00, 500000.00, 0.0030, 'active'),
|
||||
('意外伤害保险', '提供意外伤害保障的保险产品', 1000.00, 200000.00, 0.0015, 'active'),
|
||||
('财产保险', '提供财产保障的保险产品', 5000.00, 1000000.00, 0.0020, 'active'),
|
||||
('车险', '提供车辆保障的保险产品', 1000.00, 500000.00, 0.0040, 'active');
|
||||
|
||||
-- 插入默认系统配置
|
||||
INSERT IGNORE INTO system_configs (config_key, config_value, description) VALUES
|
||||
('system_name', '"保险端口系统"', '系统名称'),
|
||||
('company_name', '"XX保险公司"', '公司名称'),
|
||||
('contact_email', '"support@insurance.com"', '联系邮箱'),
|
||||
('contact_phone', '"400-123-4567"', '联系电话'),
|
||||
('max_file_size', '10485760', '最大文件上传大小(字节)'),
|
||||
('allowed_file_types', '["jpg", "jpeg", "png", "pdf", "doc", "docx"]', '允许上传的文件类型');
|
||||
|
||||
-- 创建管理员用户(密码需要在前端加密后存储)
|
||||
-- 默认密码: admin123 (需要在前端使用bcrypt加密)
|
||||
INSERT IGNORE INTO users (username, password, real_name, email, phone, role_id, status) VALUES
|
||||
('admin', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '系统管理员', 'admin@insurance.com', '13800138000', 1, 'active');
|
||||
|
||||
COMMIT;
|
||||
34
insurance_backend/scripts/insert_test_data.sql
Normal file
34
insurance_backend/scripts/insert_test_data.sql
Normal file
@@ -0,0 +1,34 @@
|
||||
-- 更新默认角色权限
|
||||
UPDATE roles SET
|
||||
description = 'Admin',
|
||||
permissions = '["user:read","user:create","user:update","user:delete","insurance:read","insurance:create","insurance:update","insurance:delete","insurance:review","policy:read","policy:create","policy:update","policy:delete","claim:read","claim:create","claim:update","claim:review","system:read","system:update","system:admin"]'
|
||||
WHERE name = 'admin';
|
||||
|
||||
-- 插入其他角色(如果不存在)
|
||||
INSERT IGNORE INTO roles (name, description, permissions, status) VALUES
|
||||
('agent', 'Agent', '["insurance:read","insurance:create","policy:read","policy:create","claim:read","claim:create"]', 'active'),
|
||||
('customer', 'Customer', '["insurance:read","policy:read","claim:read","claim:create"]', 'active');
|
||||
|
||||
-- 插入默认保险类型
|
||||
INSERT INTO insurance_types (name, description, coverage_amount_min, coverage_amount_max, premium_rate, status) VALUES
|
||||
('人寿保险', '提供生命保障的保险产品', 10000.00, 1000000.00, 0.0025, 'active'),
|
||||
('健康保险', '提供医疗保障的保险产品', 5000.00, 500000.00, 0.0030, 'active'),
|
||||
('意外伤害保险', '提供意外伤害保障的保险产品', 1000.00, 200000.00, 0.0015, 'active'),
|
||||
('财产保险', '提供财产保障的保险产品', 5000.00, 1000000.00, 0.0020, 'active'),
|
||||
('车险', '提供车辆保障的保险产品', 1000.00, 500000.00, 0.0040, 'active');
|
||||
|
||||
-- 插入默认系统配置
|
||||
INSERT INTO system_configs (config_key, config_value, description) VALUES
|
||||
('system_name', '"保险端口系统"', '系统名称'),
|
||||
('company_name', '"XX保险公司"', '公司名称'),
|
||||
('contact_email', '"support@insurance.com"', '联系邮箱'),
|
||||
('contact_phone', '"400-123-4567"', '联系电话'),
|
||||
('max_file_size', '10485760', '最大文件上传大小(字节)'),
|
||||
('allowed_file_types', '["jpg", "jpeg", "png", "pdf", "doc", "docx"]', '允许上传的文件类型');
|
||||
|
||||
-- 创建管理员用户(密码需要在前端加密后存储)
|
||||
-- 默认密码: admin123 (需要在前端使用bcrypt加密)
|
||||
INSERT INTO users (username, password, real_name, email, phone, role_id, status) VALUES
|
||||
('admin', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '系统管理员', 'admin@insurance.com', '13800138000', 1, 'active');
|
||||
|
||||
COMMIT;
|
||||
81
insurance_backend/scripts/migrate.js
Normal file
81
insurance_backend/scripts/migrate.js
Normal file
@@ -0,0 +1,81 @@
|
||||
const { sequelize } = require('../config/database');
|
||||
const { User, Role, InsuranceApplication, InsuranceType, Policy, Claim } = require('../models');
|
||||
|
||||
async function migrate() {
|
||||
try {
|
||||
console.log('🔄 开始数据库迁移...');
|
||||
|
||||
// 测试数据库连接
|
||||
console.log('🔗 测试数据库连接...');
|
||||
await sequelize.authenticate();
|
||||
console.log('✅ 数据库连接成功');
|
||||
|
||||
// 同步所有模型到数据库(安全模式)
|
||||
console.log('🗄️ 同步数据库表结构...');
|
||||
await sequelize.sync({ force: false, alter: false });
|
||||
console.log('✅ 数据库表结构同步完成');
|
||||
|
||||
// 创建默认角色
|
||||
console.log('👥 创建默认角色...');
|
||||
const roles = await Role.bulkCreate([
|
||||
{ name: 'admin', description: '系统管理员', permissions: JSON.stringify(['*']) },
|
||||
{ name: 'agent', description: '保险代理人', permissions: JSON.stringify(['insurance:read', 'insurance:create', 'policy:read']) },
|
||||
{ name: 'customer', description: '客户', permissions: JSON.stringify(['insurance:create', 'policy:read:self', 'claim:create:self']) },
|
||||
{ name: 'reviewer', description: '审核员', permissions: JSON.stringify(['insurance:review', 'claim:review']) }
|
||||
], { ignoreDuplicates: true });
|
||||
console.log('✅ 默认角色创建完成');
|
||||
|
||||
// 创建默认保险类型
|
||||
console.log('📋 创建默认保险类型...');
|
||||
const insuranceTypes = await InsuranceType.bulkCreate([
|
||||
{
|
||||
name: '人寿保险',
|
||||
description: '提供生命保障的保险产品',
|
||||
coverage_amount_min: 10000,
|
||||
coverage_amount_max: 1000000,
|
||||
premium_rate: 0.0025,
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
name: '健康保险',
|
||||
description: '提供医疗保障的保险产品',
|
||||
coverage_amount_min: 5000,
|
||||
coverage_amount_max: 500000,
|
||||
premium_rate: 0.003,
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
name: '财产保险',
|
||||
description: '提供财产保障的保险产品',
|
||||
coverage_amount_min: 1000,
|
||||
coverage_amount_max: 2000000,
|
||||
premium_rate: 0.0015,
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
name: '车险',
|
||||
description: '提供车辆保障的保险产品',
|
||||
coverage_amount_min: 500,
|
||||
coverage_amount_max: 1000000,
|
||||
premium_rate: 0.002,
|
||||
status: 'active'
|
||||
}
|
||||
], { ignoreDuplicates: true });
|
||||
console.log('✅ 默认保险类型创建完成');
|
||||
|
||||
console.log('🎉 数据库迁移完成!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 数据库迁移失败:', error);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
await sequelize.close();
|
||||
}
|
||||
}
|
||||
|
||||
// 如果是直接运行此脚本
|
||||
if (require.main === module) {
|
||||
migrate();
|
||||
}
|
||||
|
||||
module.exports = migrate;
|
||||
215
insurance_backend/scripts/schema_only.sql
Normal file
215
insurance_backend/scripts/schema_only.sql
Normal file
@@ -0,0 +1,215 @@
|
||||
-- 保险端口系统数据库表结构(仅表结构)- 添加insurance_前缀避免冲突
|
||||
-- 创建时间: 2025-01-01
|
||||
-- 数据库: MySQL 8.0+
|
||||
|
||||
-- 使用现有数据库
|
||||
USE nxxmdata;
|
||||
|
||||
-- 1. 保险角色表(添加insurance_前缀避免与现有roles表冲突)
|
||||
CREATE TABLE IF NOT EXISTS insurance_roles (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色ID',
|
||||
name VARCHAR(50) NOT NULL UNIQUE COMMENT '角色名称',
|
||||
description VARCHAR(255) NULL COMMENT '角色描述',
|
||||
permissions JSON NOT NULL COMMENT '权限配置',
|
||||
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active' COMMENT '状态',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_roles_name (name),
|
||||
INDEX idx_roles_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
|
||||
|
||||
-- 2. 保险用户表(添加insurance_前缀避免与现有users表冲突)
|
||||
CREATE TABLE IF NOT EXISTS insurance_users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
|
||||
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
|
||||
password VARCHAR(255) NOT NULL COMMENT '密码',
|
||||
real_name VARCHAR(50) NOT NULL COMMENT '真实姓名',
|
||||
email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
|
||||
phone VARCHAR(20) NOT NULL COMMENT '手机号',
|
||||
role_id INT NOT NULL COMMENT '角色ID',
|
||||
status ENUM('active', 'inactive', 'suspended') NOT NULL DEFAULT 'active' COMMENT '状态',
|
||||
last_login TIMESTAMP NULL COMMENT '最后登录时间',
|
||||
avatar VARCHAR(255) NULL COMMENT '头像URL',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_users_username (username),
|
||||
INDEX idx_users_email (email),
|
||||
INDEX idx_users_phone (phone),
|
||||
INDEX idx_users_role_id (role_id),
|
||||
INDEX idx_users_status (status),
|
||||
|
||||
FOREIGN KEY (role_id) REFERENCES insurance_roles(id) ON DELETE RESTRICT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险用户表';
|
||||
|
||||
-- 3. 保险类型表
|
||||
CREATE TABLE IF NOT EXISTS insurance_types (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '保险类型ID',
|
||||
name VARCHAR(100) NOT NULL UNIQUE COMMENT '保险类型名称',
|
||||
description TEXT NULL COMMENT '保险类型描述',
|
||||
coverage_amount_min DECIMAL(15,2) NOT NULL DEFAULT 0.00 COMMENT '最低保额',
|
||||
coverage_amount_max DECIMAL(15,2) NOT NULL DEFAULT 1000000.00 COMMENT '最高保额',
|
||||
premium_rate DECIMAL(5,4) NOT NULL DEFAULT 0.001 COMMENT '保险费率',
|
||||
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active' COMMENT '状态',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_insurance_type_name (name),
|
||||
INDEX idx_insurance_type_status (status),
|
||||
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险类型表';
|
||||
|
||||
-- 4. 保险申请表
|
||||
CREATE TABLE IF NOT EXISTS insurance_applications (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '申请ID',
|
||||
application_no VARCHAR(50) NOT NULL UNIQUE COMMENT '申请编号',
|
||||
customer_name VARCHAR(100) NOT NULL COMMENT '客户姓名',
|
||||
customer_id_card VARCHAR(18) NOT NULL COMMENT '客户身份证号',
|
||||
customer_phone VARCHAR(20) NOT NULL COMMENT '客户手机号',
|
||||
customer_address VARCHAR(255) NOT NULL COMMENT '客户地址',
|
||||
insurance_type_id INT NOT NULL COMMENT '保险类型ID',
|
||||
application_amount DECIMAL(15,2) NOT NULL COMMENT '申请金额',
|
||||
status ENUM('pending', 'approved', 'rejected', 'under_review') NOT NULL DEFAULT 'pending' COMMENT '状态',
|
||||
application_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申请日期',
|
||||
review_notes TEXT NULL COMMENT '审核备注',
|
||||
reviewer_id INT NULL COMMENT '审核人ID',
|
||||
review_date TIMESTAMP NULL COMMENT '审核日期',
|
||||
documents JSON NULL COMMENT '申请文档',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_applications_application_no (application_no),
|
||||
INDEX idx_applications_customer_id_card (customer_id_card),
|
||||
INDEX idx_applications_customer_phone (customer_phone),
|
||||
INDEX idx_applications_status (status),
|
||||
INDEX idx_applications_application_date (application_date),
|
||||
INDEX idx_applications_insurance_type_id (insurance_type_id),
|
||||
INDEX idx_applications_reviewer_id (reviewer_id),
|
||||
|
||||
FOREIGN KEY (insurance_type_id) REFERENCES insurance_types(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (reviewer_id) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险申请表';
|
||||
|
||||
-- 5. 保单表
|
||||
CREATE TABLE IF NOT EXISTS insurance_policies (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '保单ID',
|
||||
policy_no VARCHAR(50) NOT NULL UNIQUE COMMENT '保单编号',
|
||||
application_id INT NOT NULL COMMENT '关联的保险申请ID',
|
||||
insurance_type_id INT NOT NULL COMMENT '保险类型ID',
|
||||
customer_id INT NOT NULL COMMENT '客户ID',
|
||||
coverage_amount DECIMAL(15,2) NOT NULL COMMENT '保额',
|
||||
premium_amount DECIMAL(15,2) NOT NULL COMMENT '保费金额',
|
||||
start_date DATE NOT NULL COMMENT '保险开始日期',
|
||||
end_date DATE NOT NULL COMMENT '保险结束日期',
|
||||
policy_status ENUM('active', 'expired', 'cancelled', 'suspended') NOT NULL DEFAULT 'active' COMMENT '保单状态',
|
||||
payment_status ENUM('paid', 'unpaid', 'partial') NOT NULL DEFAULT 'unpaid' COMMENT '支付状态',
|
||||
payment_date DATE NULL COMMENT '支付日期',
|
||||
policy_document_url VARCHAR(500) NULL COMMENT '保单文件URL',
|
||||
terms_and_conditions TEXT NULL COMMENT '条款和条件',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
UNIQUE INDEX idx_policy_no (policy_no),
|
||||
INDEX idx_policy_customer (customer_id),
|
||||
INDEX idx_policy_application (application_id),
|
||||
INDEX idx_policy_status (policy_status),
|
||||
INDEX idx_policy_payment_status (payment_status),
|
||||
INDEX idx_policy_dates (start_date, end_date),
|
||||
|
||||
FOREIGN KEY (application_id) REFERENCES insurance_applications(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (insurance_type_id) REFERENCES insurance_types(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (customer_id) REFERENCES insurance_users(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保单表';
|
||||
|
||||
-- 6. 理赔表
|
||||
CREATE TABLE IF NOT EXISTS insurance_claims (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '理赔ID',
|
||||
claim_no VARCHAR(50) NOT NULL UNIQUE COMMENT '理赔编号',
|
||||
policy_id INT NOT NULL COMMENT '关联的保单ID',
|
||||
customer_id INT NOT NULL COMMENT '客户ID',
|
||||
claim_amount DECIMAL(15,2) NOT NULL COMMENT '理赔金额',
|
||||
claim_date DATE NOT NULL COMMENT '理赔发生日期',
|
||||
incident_description TEXT NOT NULL COMMENT '事故描述',
|
||||
claim_status ENUM('pending', 'approved', 'rejected', 'processing', 'paid') NOT NULL DEFAULT 'pending' COMMENT '理赔状态',
|
||||
review_notes TEXT NULL COMMENT '审核备注',
|
||||
reviewer_id INT NULL COMMENT '审核人ID',
|
||||
review_date DATE NULL COMMENT '审核日期',
|
||||
payment_date DATE NULL COMMENT '支付日期',
|
||||
supporting_documents JSON NULL COMMENT '支持文件',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
UNIQUE INDEX idx_claim_no (claim_no),
|
||||
INDEX idx_claim_policy (policy_id),
|
||||
INDEX idx_claim_customer (customer_id),
|
||||
INDEX idx_claim_status (claim_status),
|
||||
INDEX idx_claim_date (claim_date),
|
||||
|
||||
FOREIGN KEY (policy_id) REFERENCES insurance_policies(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (customer_id) REFERENCES insurance_users(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (reviewer_id) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='理赔表';
|
||||
|
||||
-- 7. 保险系统配置表(添加insurance_前缀避免与现有system_configs表冲突)
|
||||
CREATE TABLE IF NOT EXISTS insurance_system_configs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '配置ID',
|
||||
config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
|
||||
config_value JSON NOT NULL COMMENT '配置值',
|
||||
description VARCHAR(255) NULL COMMENT '配置描述',
|
||||
created_by INT NULL COMMENT '创建人ID',
|
||||
updated_by INT NULL COMMENT '更新人ID',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
INDEX idx_system_config_key (config_key),
|
||||
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险系统配置表';
|
||||
|
||||
-- 8. 保险系统日志表
|
||||
CREATE TABLE IF NOT EXISTS insurance_system_logs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',
|
||||
level ENUM('info', 'warning', 'error', 'debug') NOT NULL DEFAULT 'info' COMMENT '日志级别',
|
||||
message TEXT NOT NULL COMMENT '日志消息',
|
||||
module VARCHAR(100) NOT NULL COMMENT '模块名称',
|
||||
user_id INT NULL COMMENT '用户ID',
|
||||
ip_address VARCHAR(45) NULL COMMENT 'IP地址',
|
||||
user_agent TEXT NULL COMMENT '用户代理',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
|
||||
INDEX idx_system_logs_level (level),
|
||||
INDEX idx_system_logs_module (module),
|
||||
INDEX idx_system_logs_user_id (user_id),
|
||||
INDEX idx_system_logs_created_at (created_at),
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='保险系统日志表';
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 显示表结构信息
|
||||
SHOW TABLES LIKE 'insurance_%';
|
||||
|
||||
-- 显示各保险相关表注释
|
||||
SELECT
|
||||
TABLE_NAME,
|
||||
TABLE_COMMENT
|
||||
FROM
|
||||
INFORMATION_SCHEMA.TABLES
|
||||
WHERE
|
||||
TABLE_SCHEMA = 'nxxmdata'
|
||||
AND TABLE_NAME LIKE 'insurance_%';
|
||||
202
insurance_backend/scripts/schema_simple.sql
Normal file
202
insurance_backend/scripts/schema_simple.sql
Normal file
@@ -0,0 +1,202 @@
|
||||
-- Insurance System Database Schema with insurance_ prefix
|
||||
-- Created: 2025-01-01
|
||||
-- Database: MySQL 5.7+
|
||||
|
||||
USE nxxmdata;
|
||||
|
||||
-- 1. Insurance roles table
|
||||
CREATE TABLE IF NOT EXISTS insurance_roles (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50) NOT NULL UNIQUE,
|
||||
description VARCHAR(255) NULL,
|
||||
permissions JSON NOT NULL,
|
||||
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_roles_name (name),
|
||||
INDEX idx_roles_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 2. Insurance users table
|
||||
CREATE TABLE IF NOT EXISTS insurance_users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
real_name VARCHAR(50) NOT NULL,
|
||||
email VARCHAR(100) NOT NULL UNIQUE,
|
||||
phone VARCHAR(20) NOT NULL,
|
||||
role_id INT NOT NULL,
|
||||
status ENUM('active', 'inactive', 'suspended') NOT NULL DEFAULT 'active',
|
||||
last_login TIMESTAMP NULL,
|
||||
avatar VARCHAR(255) NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_users_username (username),
|
||||
INDEX idx_users_email (email),
|
||||
INDEX idx_users_phone (phone),
|
||||
INDEX idx_users_role_id (role_id),
|
||||
INDEX idx_users_status (status),
|
||||
|
||||
FOREIGN KEY (role_id) REFERENCES insurance_roles(id) ON DELETE RESTRICT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 3. Insurance types table
|
||||
CREATE TABLE IF NOT EXISTS insurance_types (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL UNIQUE,
|
||||
description TEXT NULL,
|
||||
coverage_amount_min DECIMAL(15,2) NOT NULL DEFAULT 0.00,
|
||||
coverage_amount_max DECIMAL(15,2) NOT NULL DEFAULT 1000000.00,
|
||||
premium_rate DECIMAL(5,4) NOT NULL DEFAULT 0.001,
|
||||
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
|
||||
created_by INT NULL,
|
||||
updated_by INT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_insurance_type_name (name),
|
||||
INDEX idx_insurance_type_status (status),
|
||||
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 4. Insurance applications table
|
||||
CREATE TABLE IF NOT EXISTS insurance_applications (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
application_no VARCHAR(50) NOT NULL UNIQUE,
|
||||
customer_name VARCHAR(100) NOT NULL,
|
||||
customer_id_card VARCHAR(18) NOT NULL,
|
||||
customer_phone VARCHAR(20) NOT NULL,
|
||||
customer_address VARCHAR(255) NOT NULL,
|
||||
insurance_type_id INT NOT NULL,
|
||||
application_amount DECIMAL(15,2) NOT NULL,
|
||||
status ENUM('pending', 'approved', 'rejected', 'under_review') NOT NULL DEFAULT 'pending',
|
||||
application_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
review_notes TEXT NULL,
|
||||
reviewer_id INT NULL,
|
||||
review_date TIMESTAMP NULL,
|
||||
documents JSON NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_applications_application_no (application_no),
|
||||
INDEX idx_applications_customer_id_card (customer_id_card),
|
||||
INDEX idx_applications_customer_phone (customer_phone),
|
||||
INDEX idx_applications_status (status),
|
||||
INDEX idx_applications_application_date (application_date),
|
||||
INDEX idx_applications_insurance_type_id (insurance_type_id),
|
||||
INDEX idx_applications_reviewer_id (reviewer_id),
|
||||
|
||||
FOREIGN KEY (insurance_type_id) REFERENCES insurance_types(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (reviewer_id) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 5. Insurance policies table
|
||||
CREATE TABLE IF NOT EXISTS insurance_policies (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
policy_no VARCHAR(50) NOT NULL UNIQUE,
|
||||
application_id INT NOT NULL,
|
||||
insurance_type_id INT NOT NULL,
|
||||
customer_id INT NOT NULL,
|
||||
coverage_amount DECIMAL(15,2) NOT NULL,
|
||||
premium_amount DECIMAL(15,2) NOT NULL,
|
||||
start_date DATE NOT NULL,
|
||||
end_date DATE NOT NULL,
|
||||
policy_status ENUM('active', 'expired', 'cancelled', 'suspended') NOT NULL DEFAULT 'active',
|
||||
payment_status ENUM('paid', 'unpaid', 'partial') NOT NULL DEFAULT 'unpaid',
|
||||
payment_date DATE NULL,
|
||||
policy_document_url VARCHAR(500) NULL,
|
||||
terms_and_conditions TEXT NULL,
|
||||
created_by INT NULL,
|
||||
updated_by INT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX idx_policy_no (policy_no),
|
||||
INDEX idx_policy_customer (customer_id),
|
||||
INDEX idx_policy_application (application_id),
|
||||
INDEX idx_policy_status (policy_status),
|
||||
INDEX idx_policy_payment_status (payment_status),
|
||||
INDEX idx_policy_dates (start_date, end_date),
|
||||
|
||||
FOREIGN KEY (application_id) REFERENCES insurance_applications(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (insurance_type_id) REFERENCES insurance_types(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (customer_id) REFERENCES insurance_users(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 6. Insurance claims table
|
||||
CREATE TABLE IF NOT EXISTS insurance_claims (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
claim_no VARCHAR(50) NOT NULL UNIQUE,
|
||||
policy_id INT NOT NULL,
|
||||
customer_id INT NOT NULL,
|
||||
claim_amount DECIMAL(15,2) NOT NULL,
|
||||
claim_date DATE NOT NULL,
|
||||
incident_description TEXT NOT NULL,
|
||||
claim_status ENUM('pending', 'approved', 'rejected', 'processing', 'paid') NOT NULL DEFAULT 'pending',
|
||||
review_notes TEXT NULL,
|
||||
reviewer_id INT NULL,
|
||||
review_date DATE NULL,
|
||||
payment_date DATE NULL,
|
||||
supporting_documents JSON NULL,
|
||||
created_by INT NULL,
|
||||
updated_by INT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX idx_claim_no (claim_no),
|
||||
INDEX idx_claim_policy (policy_id),
|
||||
INDEX idx_claim_customer (customer_id),
|
||||
INDEX idx_claim_status (claim_status),
|
||||
INDEX idx_claim_date (claim_date),
|
||||
|
||||
FOREIGN KEY (policy_id) REFERENCES insurance_policies(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (customer_id) REFERENCES insurance_users(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (reviewer_id) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 7. Insurance system configs table
|
||||
CREATE TABLE IF NOT EXISTS insurance_system_configs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
config_key VARCHAR(100) NOT NULL UNIQUE,
|
||||
config_value JSON NOT NULL,
|
||||
description VARCHAR(255) NULL,
|
||||
created_by INT NULL,
|
||||
updated_by INT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_system_config_key (config_key),
|
||||
|
||||
FOREIGN KEY (created_by) REFERENCES insurance_users(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (updated_by) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 8. Insurance system logs table
|
||||
CREATE TABLE IF NOT EXISTS insurance_system_logs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
level ENUM('info', 'warning', 'error', 'debug') NOT NULL DEFAULT 'info',
|
||||
message TEXT NOT NULL,
|
||||
module VARCHAR(100) NOT NULL,
|
||||
user_id INT NULL,
|
||||
ip_address VARCHAR(45) NULL,
|
||||
user_agent TEXT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_system_logs_level (level),
|
||||
INDEX idx_system_logs_module (module),
|
||||
INDEX idx_system_logs_user_id (user_id),
|
||||
INDEX idx_system_logs_created_at (created_at),
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES insurance_users(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Show all insurance tables
|
||||
SHOW TABLES LIKE 'insurance_%';
|
||||
147
insurance_backend/scripts/test_data.sql
Normal file
147
insurance_backend/scripts/test_data.sql
Normal file
@@ -0,0 +1,147 @@
|
||||
-- 保险端口系统测试数据脚本
|
||||
-- 创建时间: 2025-01-01
|
||||
-- 数据库: MySQL 8.0+
|
||||
|
||||
-- 使用现有数据库
|
||||
USE nxxmdata;
|
||||
|
||||
-- 1. 插入更多角色数据
|
||||
INSERT INTO roles (name, description, permissions, status) VALUES
|
||||
('super_admin', '超级管理员', '["user:read","user:create","user:update","user:delete","insurance:read","insurance:create","insurance:update","insurance:delete","insurance:review","policy:read","policy:create","policy:update","policy:delete","claim:read","claim:create","claim:update","claim:review","system:read","system:update","system:admin"]', 1),
|
||||
('finance', '财务人员', '["policy:read","claim:read","claim:review","claim:update"]', 1),
|
||||
('auditor', '审计人员', '["insurance:read","policy:read","claim:read","system:read"]', 1);
|
||||
|
||||
-- 2. 插入更多用户数据(密码都是123456的bcrypt加密)
|
||||
INSERT INTO users (username, password, real_name, email, phone, role_id, status, avatar) VALUES
|
||||
('agent1', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '张三', 'zhangsan@insurance.com', '13800138001', 2, 'active', '/avatars/agent1.jpg'),
|
||||
('agent2', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '李四', 'lisi@insurance.com', '13800138002', 2, 'active', '/avatars/agent2.jpg'),
|
||||
('finance1', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '王五', 'wangwu@insurance.com', '13800138003', 4, 'active', '/avatars/finance1.jpg'),
|
||||
('auditor1', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '赵六', 'zhaoliu@insurance.com', '13800138004', 5, 'active', '/avatars/auditor1.jpg'),
|
||||
('customer1', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '陈小明', 'chenxiaoming@example.com', '13800138005', 3, 'active', '/avatars/customer1.jpg'),
|
||||
('customer2', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '李小华', 'lixiaohua@example.com', '13800138006', 3, 'active', '/avatars/customer2.jpg'),
|
||||
('customer3', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '王小红', 'wangxiaohong@example.com', '13800138007', 3, 'active', '/avatars/customer3.jpg'),
|
||||
('customer4', '$2b$12$r6KcJ3V9q8wY7hLmNpQZ0uBf3dG7hJ2kL9mNpQr3tY6zX8vB1cF4', '刘小刚', 'liuxiaogang@example.com', '13800138008', 3, 'active', '/avatars/customer4.jpg');
|
||||
|
||||
-- 3. 插入更多保险类型数据
|
||||
INSERT INTO insurance_types (name, description, coverage_amount_min, coverage_amount_max, premium_rate, status, created_by, updated_by) VALUES
|
||||
('重疾保险', '提供重大疾病保障的保险产品', 50000.00, 500000.00, 0.0035, 'active', 1, 1),
|
||||
('养老保险', '提供养老保障的保险产品', 10000.00, 300000.00, 0.0028, 'active', 1, 1),
|
||||
('教育保险', '提供教育金保障的保险产品', 20000.00, 200000.00, 0.0022, 'active', 1, 1),
|
||||
('旅游保险', '提供旅游期间保障的保险产品', 1000.00, 50000.00, 0.0050, 'active', 1, 1),
|
||||
('家庭财产保险', '提供家庭财产保障的保险产品', 10000.00, 1000000.00, 0.0018, 'active', 1, 1);
|
||||
|
||||
-- 4. 插入保险申请数据
|
||||
INSERT INTO insurance_applications (application_no, customer_name, customer_id_card, customer_phone, customer_address, insurance_type_id, application_amount, status, application_date, review_notes, reviewer_id, review_date, documents) VALUES
|
||||
('APP2024010001', '陈小明', '110101199001011234', '13800138005', '北京市朝阳区建国路100号', 1, 500000.00, 'approved', '2024-01-15 09:30:00', '资料齐全,符合要求', 1, '2024-01-16 14:20:00', '["身份证复印件", "健康证明", "收入证明"]'),
|
||||
('APP2024010002', '李小华', '110101199002022345', '13800138006', '上海市浦东新区陆家嘴金融中心', 2, 200000.00, 'approved', '2024-01-16 10:15:00', '客户健康状况良好', 1, '2024-01-17 11:30:00', '["身份证复印件", "体检报告"]'),
|
||||
('APP2024010003', '王小红', '110101199003033456', '13800138007', '广州市天河区体育西路', 3, 100000.00, 'rejected', '2024-01-17 14:45:00', '高风险职业,不符合投保要求', 1, '2024-01-18 16:00:00', '["身份证复印件", "职业证明"]'),
|
||||
('APP2024010004', '刘小刚', '110101199004044567', '13800138008', '深圳市南山区科技园', 4, 300000.00, 'pending', '2024-01-18 16:20:00', NULL, NULL, NULL, '["身份证复印件", "财产证明"]'),
|
||||
('APP2024020001', '张大山', '110101198501015678', '13800138009', '杭州市西湖区文三路', 5, 150000.00, 'under_review', '2024-02-10 11:30:00', '需要补充医疗检查报告', 1, '2024-02-11 09:00:00', '["身份证复印件", "初步体检报告"]'),
|
||||
('APP2024020002', '李小花', '110101198602026789', '13800138010', '南京市鼓楼区中山路', 6, 80000.00, 'approved', '2024-02-12 14:20:00', '资料完整,审批通过', 2, '2024-02-13 15:30:00', '["身份证复印件", "收入证明"]'),
|
||||
('APP2024020003', '王大河', '110101198703037890', '13800138011', '武汉市江汉区解放大道', 7, 250000.00, 'approved', '2024-02-14 09:45:00', '优质客户,快速审批', 2, '2024-02-14 16:00:00', '["身份证复印件", "资产证明"]'),
|
||||
('APP2024030001', '刘小海', '110101198804048901', '13800138012', '成都市锦江区春熙路', 8, 120000.00, 'pending', '2024-03-01 13:15:00', NULL, NULL, NULL, '["身份证复印件"]'),
|
||||
('APP2024030002', '陈小云', '110101198905059012', '13800138013', '重庆市渝中区解放碑', 1, 400000.00, 'under_review', '2024-03-02 15:30:00', '需要核实收入情况', 1, '2024-03-03 10:00:00', '["身份证复印件", "银行流水"]'),
|
||||
('APP2024030003', '李小山', '110101199006069123', '13800138014', '西安市雁塔区小寨', 2, 180000.00, 'approved', '2024-03-03 11:45:00', '审批通过,等待签约', 2, '2024-03-04 14:20:00', '["身份证复印件", "健康证明"]');
|
||||
|
||||
-- 5. 插入保单数据
|
||||
INSERT INTO policies (policy_no, application_id, insurance_type_id, customer_id, coverage_amount, premium_amount, start_date, end_date, policy_status, payment_status, payment_date, policy_document_url, terms_and_conditions, created_by, updated_by) VALUES
|
||||
('POL2024010001', 1, 1, 5, 500000.00, 1250.00, '2024-01-17', '2034-01-16', 'active', 'paid', '2024-01-17', '/policies/POL2024010001.pdf', '保险期限10年,包含重大疾病保障', 1, 1),
|
||||
('POL2024010002', 2, 2, 6, 200000.00, 600.00, '2024-01-18', '2029-01-17', 'active', 'paid', '2024-01-18', '/policies/POL2024010002.pdf', '保险期限5年,健康医疗保障', 1, 1),
|
||||
('POL2024020001', 6, 6, 7, 80000.00, 176.00, '2024-02-14', '2029-02-13', 'active', 'paid', '2024-02-14', '/policies/POL2024020001.pdf', '保险期限5年,教育金保障', 2, 2),
|
||||
('POL2024020002', 7, 7, 8, 250000.00, 1000.00, '2024-02-15', '2025-02-14', 'active', 'paid', '2024-02-15', '/policies/POL2024020002.pdf', '保险期限1年,旅游意外保障', 2, 2),
|
||||
('POL2024030001', 10, 2, 9, 180000.00, 504.00, '2024-03-05', '2029-03-04', 'active', 'unpaid', NULL, '/policies/POL2024030001.pdf', '保险期限5年,健康医疗保障', 2, 2),
|
||||
('POL2024030002', 3, 3, 10, 100000.00, 150.00, '2024-03-06', '2025-03-05', 'active', 'paid', '2024-03-06', '/policies/POL2024030002.pdf', '保险期限1年,意外伤害保障', 1, 1),
|
||||
('POL2024030003', 4, 4, 11, 300000.00, 600.00, '2024-03-07', '2029-03-06', 'active', 'partial', '2024-03-07', '/policies/POL2024030003.pdf', '保险期限5年,财产保障', 1, 1),
|
||||
('POL2024030004', 5, 5, 12, 150000.00, 525.00, '2024-03-08', '2025-03-07', 'active', 'paid', '2024-03-08', '/policies/POL2024030004.pdf', '保险期限1年,车险保障', 2, 2);
|
||||
|
||||
-- 6. 插入理赔数据
|
||||
INSERT INTO claims (claim_no, policy_id, customer_id, claim_amount, claim_date, incident_description, claim_status, review_notes, reviewer_id, review_date, payment_date, supporting_documents, created_by, updated_by) VALUES
|
||||
('CLM2024020001', 3, 7, 50000.00, '2024-02-20', '被保险人因意外事故导致医疗费用支出', 'paid', '医疗费用单据齐全,符合理赔条件', 4, '2024-02-21', '2024-02-22', '["医疗费用发票", "诊断证明", "事故报告"]', 7, 4),
|
||||
('CLM2024030001', 1, 5, 200000.00, '2024-03-10', '被保险人确诊重大疾病,需要手术治疗', 'processing', '医疗诊断明确,正在核实医疗费用', 4, '2024-03-11', NULL, '["诊断证明", "医疗费用预估"]', 5, 4),
|
||||
('CLM2024030002', 2, 6, 8000.00, '2024-03-15', '门诊医疗费用报销', 'approved', '门诊费用符合保险条款', 4, '2024-03-16', '2024-03-17', '["门诊发票", "处方单"]', 6, 4),
|
||||
('CLM2024030003', 4, 8, 15000.00, '2024-03-20', '旅行期间行李丢失赔偿', 'pending', '等待警方报案证明', NULL, NULL, NULL, '["行李清单", "酒店证明"]', 8, NULL),
|
||||
('CLM2024030004', 6, 10, 30000.00, '2024-03-25', '意外伤害导致伤残赔偿', 'rejected', '伤残等级不符合理赔标准', 4, '2024-03-26', NULL, '["伤残鉴定报告", "医疗记录"]', 10, 4),
|
||||
('CLM2024040001', 5, 9, 5000.00, '2024-04-01', '疾病门诊医疗费用', 'paid', '门诊医疗费用合理', 4, '2024-04-02', '2024-04-03', '["门诊发票", "诊断证明"]', 9, 4),
|
||||
('CLM2024040002', 7, 11, 80000.00, '2024-04-05', '家庭财产火灾损失赔偿', 'processing', '正在评估财产损失价值', 4, '2024-04-06', NULL, '["火灾报告", "财产清单"]', 11, 4),
|
||||
('CLM2024040003', 8, 12, 20000.00, '2024-04-10', '车辆事故维修费用', 'approved', '车辆维修费用合理', 4, '2024-04-11', '2024-04-12', '["事故报告", "维修报价单"]', 12, 4);
|
||||
|
||||
-- 7. 插入更多系统配置数据
|
||||
INSERT INTO system_configs (config_key, config_value, description, created_by, updated_by) VALUES
|
||||
('auto_approval_threshold', '100000', '自动审批金额阈值', 1, 1),
|
||||
('max_application_per_day', '10', '每日最大申请数量', 1, 1),
|
||||
('claim_processing_days', '7', '理赔处理最大天数', 1, 1),
|
||||
('premium_due_reminder_days', '15', '保费到期提醒天数', 1, 1),
|
||||
('policy_renewal_notice_days', '30', '保单续保通知天数', 1, 1),
|
||||
('default_currency', '"CNY"', '默认货币', 1, 1),
|
||||
('tax_rate', '0.06', '税率', 1, 1),
|
||||
('interest_rate', '0.035', '默认利率', 1, 1);
|
||||
|
||||
-- 8. 插入系统日志数据
|
||||
INSERT INTO system_logs (level, message, module, user_id, ip_address, user_agent, created_at) VALUES
|
||||
('info', '用户登录成功', 'auth', 1, '192.168.1.100', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-01-15 09:00:00'),
|
||||
('info', '创建新保险申请: APP2024010001', 'application', 1, '192.168.1.100', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-01-15 09:30:00'),
|
||||
('info', '审批保险申请: APP2024010001', 'review', 1, '192.168.1.101', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-01-16 14:20:00'),
|
||||
('info', '生成保单: POL2024010001', 'policy', 1, '192.168.1.101', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-01-17 10:15:00'),
|
||||
('warning', '保险申请被拒绝: APP2024010003', 'review', 1, '192.168.1.102', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-01-18 16:00:00'),
|
||||
('error', '数据库连接超时', 'system', NULL, '192.168.1.103', NULL, '2024-01-19 03:30:00'),
|
||||
('info', '理赔申请提交: CLM2024020001', 'claim', 7, '192.168.1.104', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15', '2024-02-20 15:45:00'),
|
||||
('info', '理赔审核通过: CLM2024020001', 'claim', 4, '192.168.1.105', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-02-21 11:20:00'),
|
||||
('info', '理赔支付完成: CLM2024020001', 'finance', 4, '192.168.1.106', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '2024-02-22 09:30:00'),
|
||||
('info', '用户注册成功: customer5', 'auth', 8, '192.168.1.107', 'Mozilla/5.0 (Android 10; Mobile; rv:91.0) Gecko/91.0 Firefox/91.0', '2024-03-01 14:15:00');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 显示测试数据统计信息
|
||||
SELECT
|
||||
'用户数量' as category,
|
||||
COUNT(*) as count
|
||||
FROM
|
||||
users
|
||||
UNION ALL
|
||||
SELECT
|
||||
'保险申请数量',
|
||||
COUNT(*)
|
||||
FROM
|
||||
insurance_applications
|
||||
UNION ALL
|
||||
SELECT
|
||||
'保单数量',
|
||||
COUNT(*)
|
||||
FROM
|
||||
policies
|
||||
UNION ALL
|
||||
SELECT
|
||||
'理赔数量',
|
||||
COUNT(*)
|
||||
FROM
|
||||
claims
|
||||
UNION ALL
|
||||
SELECT
|
||||
'系统日志数量',
|
||||
COUNT(*)
|
||||
FROM
|
||||
system_logs;
|
||||
|
||||
-- 显示各状态保险申请统计
|
||||
SELECT
|
||||
status,
|
||||
COUNT(*) as count,
|
||||
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM insurance_applications), 2) as percentage
|
||||
FROM
|
||||
insurance_applications
|
||||
GROUP BY
|
||||
status
|
||||
ORDER BY
|
||||
count DESC;
|
||||
|
||||
-- 显示各状态理赔统计
|
||||
SELECT
|
||||
claim_status,
|
||||
COUNT(*) as count,
|
||||
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM claims), 2) as percentage
|
||||
FROM
|
||||
claims
|
||||
GROUP BY
|
||||
claim_status
|
||||
ORDER BY
|
||||
count DESC;
|
||||
Reference in New Issue
Block a user