442 lines
25 KiB
SQL
442 lines
25 KiB
SQL
-- ============================================
|
||
-- 资金服务平台数据库结构
|
||
-- 数据库: fund_platform
|
||
-- 字符集: utf8mb4
|
||
-- ============================================
|
||
|
||
USE fund_platform;
|
||
|
||
-- ============================================
|
||
-- 1. 系统管理模块表结构
|
||
-- ============================================
|
||
|
||
-- 租户表
|
||
CREATE TABLE IF NOT EXISTS sys_tenant (
|
||
tenant_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '租户ID',
|
||
tenant_code VARCHAR(50) NOT NULL UNIQUE COMMENT '租户编码',
|
||
tenant_name VARCHAR(100) NOT NULL COMMENT '租户名称',
|
||
tenant_type TINYINT DEFAULT 1 COMMENT '租户类型:1-一库多租户,2-一库一租户',
|
||
contact_name VARCHAR(50) COMMENT '联系人姓名',
|
||
contact_phone VARCHAR(20) COMMENT '联系人电话',
|
||
contact_email VARCHAR(100) COMMENT '联系人邮箱',
|
||
db_config JSON COMMENT '数据库配置(一库一租户模式使用)',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
expire_time DATETIME COMMENT '过期时间',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
INDEX idx_code (tenant_code),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';
|
||
|
||
-- 部门表
|
||
CREATE TABLE IF NOT EXISTS sys_dept (
|
||
dept_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
dept_name VARCHAR(100) NOT NULL COMMENT '部门名称',
|
||
parent_id BIGINT DEFAULT 0 COMMENT '父部门ID(0表示顶级部门)',
|
||
dept_code VARCHAR(50) COMMENT '部门编码',
|
||
dept_level INT DEFAULT 1 COMMENT '部门层级',
|
||
sort_order INT DEFAULT 0 COMMENT '排序顺序',
|
||
leader VARCHAR(50) COMMENT '部门负责人',
|
||
leader_phone VARCHAR(20) COMMENT '负责人电话',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_parent (parent_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
|
||
|
||
-- 用户表
|
||
CREATE TABLE IF NOT EXISTS sys_user (
|
||
user_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
username VARCHAR(50) NOT NULL COMMENT '用户名(登录账号)',
|
||
password VARCHAR(100) NOT NULL COMMENT '密码(加密存储)',
|
||
real_name VARCHAR(50) NOT NULL COMMENT '真实姓名',
|
||
gender TINYINT DEFAULT 0 COMMENT '性别:0-未知,1-男,2-女',
|
||
phone VARCHAR(20) COMMENT '手机号码',
|
||
email VARCHAR(100) COMMENT '邮箱地址',
|
||
dept_id BIGINT COMMENT '所属部门ID',
|
||
position VARCHAR(50) COMMENT '岗位/职位',
|
||
avatar VARCHAR(255) COMMENT '头像URL',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
last_login_time DATETIME COMMENT '最后登录时间',
|
||
last_login_ip VARCHAR(50) COMMENT '最后登录IP',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_username (tenant_id, username),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_dept (dept_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||
|
||
-- 角色表
|
||
CREATE TABLE IF NOT EXISTS sys_role (
|
||
role_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
role_code VARCHAR(50) NOT NULL COMMENT '角色编码',
|
||
role_name VARCHAR(100) NOT NULL COMMENT '角色名称',
|
||
role_type VARCHAR(20) DEFAULT 'custom' COMMENT '角色类型:system-系统角色,custom-自定义角色',
|
||
data_scope VARCHAR(20) DEFAULT 'self' COMMENT '数据范围:all-全部,dept-本部门,self-本人',
|
||
sort_order INT DEFAULT 0 COMMENT '排序顺序',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, role_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
||
|
||
-- 菜单表
|
||
CREATE TABLE IF NOT EXISTS sys_menu (
|
||
menu_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '菜单ID',
|
||
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID(0表示系统通用菜单)',
|
||
menu_name VARCHAR(100) NOT NULL COMMENT '菜单名称',
|
||
menu_type VARCHAR(20) NOT NULL COMMENT '菜单类型:dir-目录,menu-菜单,button-按钮',
|
||
parent_id BIGINT DEFAULT 0 COMMENT '父菜单ID(0表示顶级菜单)',
|
||
menu_level INT DEFAULT 1 COMMENT '菜单层级',
|
||
icon VARCHAR(100) COMMENT '菜单图标',
|
||
path VARCHAR(200) COMMENT '路由路径',
|
||
component VARCHAR(200) COMMENT '组件路径',
|
||
permission VARCHAR(100) COMMENT '权限标识(如:user:list)',
|
||
sort_order INT DEFAULT 0 COMMENT '排序顺序',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_parent (parent_id),
|
||
INDEX idx_type (menu_type),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
|
||
|
||
-- 用户角色关联表
|
||
CREATE TABLE IF NOT EXISTS sys_user_role (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
role_id BIGINT NOT NULL COMMENT '角色ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
UNIQUE KEY uk_user_role (tenant_id, user_id, role_id),
|
||
INDEX idx_user (user_id),
|
||
INDEX idx_role (role_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
|
||
|
||
-- 角色菜单关联表
|
||
CREATE TABLE IF NOT EXISTS sys_role_menu (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
role_id BIGINT NOT NULL COMMENT '角色ID',
|
||
menu_id BIGINT NOT NULL COMMENT '菜单ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
UNIQUE KEY uk_role_menu (tenant_id, role_id, menu_id),
|
||
INDEX idx_role (role_id),
|
||
INDEX idx_menu (menu_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
|
||
|
||
-- 操作日志表
|
||
CREATE TABLE IF NOT EXISTS sys_operation_log (
|
||
log_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
user_id BIGINT COMMENT '操作人ID',
|
||
username VARCHAR(50) COMMENT '操作人用户名',
|
||
operation VARCHAR(100) COMMENT '操作描述',
|
||
method VARCHAR(200) COMMENT '操作方法',
|
||
params TEXT COMMENT '操作参数(JSON格式)',
|
||
ip VARCHAR(50) COMMENT '操作IP',
|
||
user_agent VARCHAR(500) COMMENT '用户代理',
|
||
operation_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
||
cost_time BIGINT DEFAULT 0 COMMENT '耗时(毫秒)',
|
||
result VARCHAR(20) DEFAULT 'success' COMMENT '操作结果:success-成功,fail-失败',
|
||
error_msg TEXT COMMENT '错误信息',
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_user (user_id),
|
||
INDEX idx_time (operation_time),
|
||
INDEX idx_result (result)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
|
||
|
||
-- ============================================
|
||
-- 2. 客户管理模块表结构
|
||
-- ============================================
|
||
|
||
-- 客户表
|
||
CREATE TABLE IF NOT EXISTS customer (
|
||
customer_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '客户ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
customer_code VARCHAR(50) NOT NULL COMMENT '客户编码(唯一)',
|
||
customer_name VARCHAR(200) NOT NULL COMMENT '客户名称',
|
||
customer_short VARCHAR(100) COMMENT '客户简称',
|
||
customer_type VARCHAR(20) DEFAULT 'enterprise' COMMENT '客户类型:enterprise-企业,individual-个人',
|
||
industry VARCHAR(50) COMMENT '所属行业',
|
||
scale VARCHAR(20) COMMENT '企业规模:small-小型,medium-中型,large-大型',
|
||
level VARCHAR(20) DEFAULT 'normal' COMMENT '客户等级:A/B/C/D/normal',
|
||
tax_no VARCHAR(50) COMMENT '纳税人识别号',
|
||
legal_person VARCHAR(50) COMMENT '法定代表人',
|
||
address VARCHAR(500) COMMENT '公司地址',
|
||
phone VARCHAR(20) COMMENT '联系电话',
|
||
email VARCHAR(100) COMMENT '邮箱地址',
|
||
website VARCHAR(200) COMMENT '公司网站',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
cooperation_start DATE COMMENT '合作开始日期',
|
||
cooperation_end DATE COMMENT '合作结束日期',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, customer_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_status (status),
|
||
INDEX idx_level (level)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户表';
|
||
|
||
-- 客户联系人表
|
||
CREATE TABLE IF NOT EXISTS customer_contact (
|
||
contact_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '联系人ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
customer_id BIGINT NOT NULL COMMENT '客户ID',
|
||
contact_name VARCHAR(50) NOT NULL COMMENT '联系人姓名',
|
||
position VARCHAR(50) COMMENT '职位/职务',
|
||
department VARCHAR(100) COMMENT '所属部门',
|
||
phone VARCHAR(20) COMMENT '联系电话',
|
||
mobile VARCHAR(20) COMMENT '手机号码',
|
||
email VARCHAR(100) COMMENT '邮箱地址',
|
||
wechat VARCHAR(50) COMMENT '微信号',
|
||
qq VARCHAR(20) COMMENT 'QQ号',
|
||
is_primary TINYINT DEFAULT 0 COMMENT '是否主要联系人:0-否,1-是',
|
||
sort_order INT DEFAULT 0 COMMENT '排序顺序',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
remark VARCHAR(200) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_customer (customer_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户联系人表';
|
||
|
||
-- ============================================
|
||
-- 3. 项目管理模块表结构
|
||
-- ============================================
|
||
|
||
-- 项目表
|
||
CREATE TABLE IF NOT EXISTS project (
|
||
project_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '项目ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
project_code VARCHAR(50) NOT NULL COMMENT '项目编号(唯一)',
|
||
project_name VARCHAR(200) NOT NULL COMMENT '项目名称',
|
||
project_short VARCHAR(100) COMMENT '项目简称',
|
||
customer_id BIGINT NOT NULL COMMENT '客户ID',
|
||
project_type VARCHAR(20) DEFAULT 'development' COMMENT '项目类型:development-开发,maintenance-维护,consulting-咨询',
|
||
project_manager_id BIGINT COMMENT '项目经理ID',
|
||
start_date DATE COMMENT '项目开始日期',
|
||
end_date DATE COMMENT '项目结束日期',
|
||
budget_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '项目预算金额',
|
||
contract_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '合同金额',
|
||
status VARCHAR(20) DEFAULT 'preparing' COMMENT '项目状态:preparing-筹备中,ongoing-进行中,completed-已完成,archived-已归档,cancelled-已取消',
|
||
progress INT DEFAULT 0 COMMENT '项目进度(0-100)',
|
||
description TEXT COMMENT '项目描述',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
attachment_url VARCHAR(500) COMMENT '附件URL',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, project_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_customer (customer_id),
|
||
INDEX idx_manager (project_manager_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表';
|
||
|
||
-- 项目成员表
|
||
CREATE TABLE IF NOT EXISTS project_member (
|
||
member_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '成员关系ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
project_id BIGINT NOT NULL COMMENT '项目ID',
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
role VARCHAR(50) DEFAULT 'member' COMMENT '项目角色:pm-项目经理,dev-开发,test-测试,finance-财务,member-普通成员',
|
||
join_date DATE COMMENT '加入日期',
|
||
leave_date DATE COMMENT '离开日期',
|
||
workload DECIMAL(5,2) DEFAULT 0.00 COMMENT '工作量占比(0-100)',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-已离开,1-在职',
|
||
remark VARCHAR(200) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_project_user (tenant_id, project_id, user_id),
|
||
INDEX idx_project (project_id),
|
||
INDEX idx_user (user_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目成员表';
|
||
|
||
-- ============================================
|
||
-- 4. 需求工单模块表结构
|
||
-- ============================================
|
||
|
||
-- 需求工单表
|
||
CREATE TABLE IF NOT EXISTS requirement (
|
||
requirement_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '需求ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
requirement_code VARCHAR(50) NOT NULL COMMENT '需求编号(唯一)',
|
||
requirement_name VARCHAR(200) NOT NULL COMMENT '需求名称',
|
||
description TEXT COMMENT '需求描述',
|
||
project_id BIGINT NOT NULL COMMENT '项目ID',
|
||
customer_id BIGINT NOT NULL COMMENT '客户ID',
|
||
priority VARCHAR(20) DEFAULT 'normal' COMMENT '优先级:high-高,normal-中,low-低',
|
||
estimated_hours DECIMAL(8,2) DEFAULT 0.00 COMMENT '预估开发工时(小时)',
|
||
actual_hours DECIMAL(8,2) DEFAULT 0.00 COMMENT '实际开发工时(小时)',
|
||
planned_start DATE COMMENT '计划开始日期',
|
||
planned_end DATE COMMENT '计划结束日期',
|
||
actual_start DATE COMMENT '实际开始日期',
|
||
actual_end DATE COMMENT '实际结束日期',
|
||
delivery_date DATE COMMENT '交付日期',
|
||
receivable_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '应收款金额',
|
||
receivable_date DATE COMMENT '应收款日期',
|
||
status VARCHAR(20) DEFAULT 'pending' COMMENT '状态:pending-待开发,developing-开发中,delivered-已交付,completed-已完成',
|
||
progress INT DEFAULT 0 COMMENT '开发进度(0-100)',
|
||
attachment_url VARCHAR(500) COMMENT '附件URL',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, requirement_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_project (project_id),
|
||
INDEX idx_customer (customer_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='需求工单表';
|
||
|
||
-- ============================================
|
||
-- 5. 支出管理模块表结构
|
||
-- ============================================
|
||
|
||
-- 支出类型表
|
||
CREATE TABLE IF NOT EXISTS expense_type (
|
||
type_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '支出类型ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
type_code VARCHAR(50) COMMENT '支出类型编码',
|
||
type_name VARCHAR(100) NOT NULL COMMENT '支出类型名称',
|
||
parent_id BIGINT DEFAULT 0 COMMENT '父类型ID(0表示一级类型)',
|
||
type_level INT DEFAULT 1 COMMENT '类型层级',
|
||
sort_order INT DEFAULT 0 COMMENT '排序顺序',
|
||
description VARCHAR(200) COMMENT '类型描述',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_parent (parent_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支出类型表';
|
||
|
||
-- 支出表
|
||
CREATE TABLE IF NOT EXISTS expense (
|
||
expense_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '支出ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
expense_code VARCHAR(50) NOT NULL COMMENT '支出编号(唯一)',
|
||
expense_type_id BIGINT NOT NULL COMMENT '支出类型ID',
|
||
expense_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '支出金额',
|
||
expense_date DATE COMMENT '支出日期',
|
||
expense_reason TEXT COMMENT '支出事由',
|
||
project_id BIGINT COMMENT '所属项目ID',
|
||
applicant_id BIGINT NOT NULL COMMENT '申请人ID',
|
||
department_id BIGINT COMMENT '申请部门ID',
|
||
payment_method VARCHAR(20) DEFAULT 'transfer' COMMENT '付款方式:transfer-转账,cash-现金,check-支票,other-其他',
|
||
payment_account VARCHAR(100) COMMENT '付款账户',
|
||
attachment_url VARCHAR(500) COMMENT '附件URL',
|
||
status VARCHAR(20) DEFAULT 'pending' COMMENT '状态:pending-待付款,paid-已付款,completed-已完成,cancelled-已作废',
|
||
payment_date DATE COMMENT '付款日期',
|
||
payment_voucher VARCHAR(255) COMMENT '付款凭证',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, expense_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_type (expense_type_id),
|
||
INDEX idx_project (project_id),
|
||
INDEX idx_applicant (applicant_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支出表';
|
||
|
||
-- ============================================
|
||
-- 6. 应收款管理模块表结构
|
||
-- ============================================
|
||
|
||
-- 应收款表
|
||
CREATE TABLE IF NOT EXISTS receivable (
|
||
receivable_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '应收款ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
receivable_code VARCHAR(50) NOT NULL COMMENT '应收款编号(唯一)',
|
||
requirement_id BIGINT NOT NULL COMMENT '需求ID',
|
||
project_id BIGINT NOT NULL COMMENT '项目ID',
|
||
customer_id BIGINT NOT NULL COMMENT '客户ID',
|
||
receivable_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '应收款金额',
|
||
receivable_date DATE COMMENT '应收款日期',
|
||
payment_due_date DATE COMMENT '付款截止日期',
|
||
payment_method VARCHAR(20) COMMENT '付款方式:transfer-转账,cash-现金,check-支票,other-其他',
|
||
bank_account VARCHAR(100) COMMENT '收款账户',
|
||
status VARCHAR(20) DEFAULT 'pending' COMMENT '状态:pending-待收款,partial-部分收款,received-已收款,overdue-逾期',
|
||
received_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '已收款金额',
|
||
unpaid_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '未收款金额',
|
||
overdue_days INT DEFAULT 0 COMMENT '逾期天数',
|
||
remark VARCHAR(500) COMMENT '备注说明',
|
||
created_by BIGINT COMMENT '创建人ID',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_by BIGINT COMMENT '更新人ID',
|
||
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, receivable_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_requirement (requirement_id),
|
||
INDEX idx_project (project_id),
|
||
INDEX idx_customer (customer_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应收款表';
|
||
|
||
-- 收款记录表
|
||
CREATE TABLE IF NOT EXISTS receipt (
|
||
receipt_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '收款记录ID',
|
||
tenant_id BIGINT NOT NULL COMMENT '租户ID',
|
||
receipt_code VARCHAR(50) NOT NULL COMMENT '收款编号(唯一)',
|
||
receivable_id BIGINT NOT NULL COMMENT '应收款ID',
|
||
receipt_amount DECIMAL(15,2) DEFAULT 0.00 COMMENT '收款金额',
|
||
receipt_date DATE COMMENT '收款日期',
|
||
receipt_method VARCHAR(20) DEFAULT 'transfer' COMMENT '收款方式:transfer-转账,cash-现金,check-支票,other-其他',
|
||
receipt_account VARCHAR(100) COMMENT '收款账户',
|
||
payer_name VARCHAR(100) COMMENT '付款方名称',
|
||
receipt_voucher VARCHAR(255) COMMENT '收款凭证URL',
|
||
operator_id BIGINT COMMENT '操作人ID',
|
||
remark VARCHAR(200) COMMENT '备注说明',
|
||
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
UNIQUE KEY uk_tenant_code (tenant_id, receipt_code),
|
||
INDEX idx_tenant (tenant_id),
|
||
INDEX idx_receivable (receivable_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收款记录表';
|