7.9 KiB
发票模块设计
实体关系 订单:发票 1:1
表结构设计
发票申请号 订单ID 客户ID 发票金额 开票完成时间 开票状态 待处理 已开票 已驳回
发票类型 个人,企业,增值税专用发票 发票抬头 纳税人识别号 开票内容 收票邮箱 备注信息 申请人ID
发票文件url 上传时间 上传人ID
驳回原因 驳回时间 驳回人ID 建议修改内容
创建时间 更新时间 id
接口
客户申请发票
请求 订单ID 发票类型 收票邮箱 发票抬头 纳税人识别号 开票内容 备注信息
客户发票列表
请求 search 发票号或订单号模糊匹配 开票状态 申请时间(某日) 分页
返回 发票ID 发票申请号 用户名 订单号 发票金额 开票完成时间 开票状态 申请时间 套餐类型 订单的package_name
客户发票详情
请求 发票ID
返回 发票表所有字段 关联订单号
客户发票汇总信息
返回 全部发票数 待处理发票数 已开票数 已驳回数
管理员发票列表
请求 search 发票号或订单号模糊匹配 开票状态 申请时间(某日) 分页
返回 发票ID 发票申请号 用户名 订单号 发票金额 开票完成时间 开票状态 申请时间 套餐类型 订单的package_name
管理员发票详情
返回 发票表所有字段 关联订单号 申请人电话 申请人姓名 套餐类型 订单的package_name 开票人full_name
管理员发票汇总信息
返回 全部发票数 待处理发票数 已开票数 已驳回数
管理员发票驳回
请求 发票ID 驳回原因 建议修改内容
管理员发票开票(支持覆盖重开)
请求 发票ID 发票文件url 开票完成时间
相关表结构
-- license_manager.users definition
CREATE TABLE users (
id varchar(36) NOT NULL,
username varchar(50) NOT NULL,
email varchar(255) NOT NULL,
password_hash varchar(255) NOT NULL,
full_name varchar(100) NOT NULL,
phone varchar(20) DEFAULT NULL,
role varchar(20) NOT NULL DEFAULT 'viewer',
status varchar(20) NOT NULL DEFAULT 'active',
last_login_at datetime(3) DEFAULT NULL,
last_login_ip varchar(45) DEFAULT NULL,
login_attempts bigint NOT NULL DEFAULT '0',
locked_until datetime(3) DEFAULT NULL,
created_at datetime(3) NOT NULL,
updated_at datetime(3) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY idx_users_username (username),
UNIQUE KEY idx_users_email (email),
KEY idx_users_role (role),
KEY idx_users_status (status),
KEY idx_users_last_login_at (last_login_at),
KEY idx_users_locked_until (locked_until),
KEY idx_users_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- license_manager.cu_users definition
CREATE TABLE cu_users (
id varchar(36) NOT NULL,
customer_id varchar(36) NOT NULL,
phone varchar(20) NOT NULL,
phone_country_code varchar(10) NOT NULL DEFAULT '+86',
password varchar(255) DEFAULT NULL,
salt varchar(32) DEFAULT NULL,
user_role varchar(20) NOT NULL DEFAULT 'member',
real_name varchar(100) DEFAULT NULL,
email varchar(255) DEFAULT NULL,
status varchar(20) NOT NULL DEFAULT 'active',
phone_verified tinyint(1) NOT NULL DEFAULT '1',
email_verified tinyint(1) NOT NULL DEFAULT '0',
last_login_at datetime(3) DEFAULT NULL,
last_login_ip varchar(50) DEFAULT NULL,
login_attempts bigint NOT NULL DEFAULT '0',
locked_until datetime(3) DEFAULT NULL,
avatar_url varchar(500) DEFAULT NULL,
language varchar(10) NOT NULL DEFAULT 'zh-CN',
timezone varchar(50) NOT NULL DEFAULT 'Asia/Shanghai',
additional_info json DEFAULT NULL,
remark text,
created_at datetime(3) NOT NULL,
updated_at datetime(3) NOT NULL,
deleted_at datetime(3) DEFAULT NULL,
PRIMARY KEY (id),
KEY idx_cu_users_customer_id (customer_id),
KEY idx_cu_users_email (email),
KEY idx_cu_users_status (status),
KEY idx_cu_users_last_login_at (last_login_at),
KEY idx_cu_users_locked_until (locked_until),
KEY idx_cu_users_created_at (created_at),
KEY idx_cu_users_deleted_at (deleted_at),
KEY idx_cu_users_phone (phone,phone_country_code),
KEY idx_cu_users_customer_status (customer_id,status),
KEY idx_cu_users_status_locked (status,locked_until)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- license_manager.cu_orders definition
CREATE TABLE cu_orders (
id varchar(36) NOT NULL,
order_no varchar(50) NOT NULL,
customer_id varchar(36) NOT NULL,
cu_user_id varchar(36) NOT NULL,
package_id varchar(50) NOT NULL,
package_name varchar(100) NOT NULL,
license_count bigint NOT NULL,
unit_price decimal(10,2) NOT NULL,
discount_rate decimal(3,2) NOT NULL DEFAULT '1.00',
total_amount decimal(10,2) NOT NULL,
status varchar(20) NOT NULL DEFAULT 'paid',
authorization_code varchar(500) DEFAULT NULL,
expired_at datetime(3) DEFAULT NULL,
created_at datetime(3) NOT NULL,
updated_at datetime(3) NOT NULL,
deleted_at datetime(3) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY idx_cu_orders_order_no (order_no),
KEY idx_cu_orders_customer_id (customer_id),
KEY idx_cu_orders_cu_user_id (cu_user_id),
KEY idx_cu_orders_package_id (package_id),
KEY idx_cu_orders_status (status),
KEY idx_cu_orders_expired_at (expired_at),
KEY idx_cu_orders_created_at (created_at),
KEY idx_cu_orders_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- license_manager.customers definition
CREATE TABLE customers (
id varchar(36) NOT NULL DEFAULT (uuid()),
customer_code varchar(20) NOT NULL,
customer_name varchar(200) NOT NULL,
customer_type varchar(20) NOT NULL DEFAULT 'enterprise',
contact_person varchar(100) NOT NULL,
contact_title varchar(100) DEFAULT NULL,
email varchar(255) DEFAULT NULL,
phone varchar(20) DEFAULT NULL,
address text,
company_size varchar(20) DEFAULT NULL,
customer_level varchar(20) NOT NULL DEFAULT 'basic',
status varchar(20) NOT NULL DEFAULT 'active',
description text,
created_at datetime(3) NOT NULL,
updated_at datetime(3) NOT NULL,
created_by varchar(36) NOT NULL,
updated_by varchar(36) DEFAULT NULL,
deleted_at datetime(3) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY idx_customers_customer_code (customer_code),
KEY idx_customers_customer_name (customer_name),
KEY idx_customers_customer_type (customer_type),
KEY idx_customers_customer_level (customer_level),
KEY idx_customers_status (status),
KEY idx_customers_created_at (created_at),
KEY idx_customers_created_by (created_by),
KEY idx_customers_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- license_manager.authorization_codes definition
CREATE TABLE authorization_codes (
id varchar(36) NOT NULL,
code varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
customer_id varchar(36) NOT NULL,
created_by varchar(36) NOT NULL,
software_id varchar(50) DEFAULT NULL,
description text,
start_date datetime(3) NOT NULL,
end_date datetime(3) NOT NULL,
deployment_type varchar(20) NOT NULL DEFAULT 'standalone',
encryption_type varchar(20) DEFAULT 'standard',
software_version varchar(50) DEFAULT NULL,
max_activations bigint NOT NULL DEFAULT '1',
is_locked tinyint(1) NOT NULL DEFAULT '0',
lock_reason text,
locked_at datetime(3) DEFAULT NULL,
locked_by varchar(36) DEFAULT NULL,
feature_config json DEFAULT NULL,
usage_limits json DEFAULT NULL,
custom_parameters json DEFAULT NULL,
created_at datetime(3) NOT NULL,
updated_at datetime(3) NOT NULL,
PRIMARY KEY (id),
KEY idx_authorization_codes_customer_id (customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;