- 4张表: voucher_template, voucher_rule, voucher_instance, voucher_usage_log - 可配置规则引擎: registry + validators + engine - 8种内置规则: min_amount, max_amount, applicable_product_type, applicable_product, exclude_product, max_usage_count, valid_period, user_level - CRUD定义 + API接口 + 前端页面 - SQL建表脚本 + RBAC权限配置 - 一次性使用,不找零
108 lines
5.6 KiB
SQL
108 lines
5.6 KiB
SQL
-- ============================================
|
|
-- 代金券模块建表脚本
|
|
-- ============================================
|
|
|
|
-- 代金券模板表
|
|
CREATE TABLE IF NOT EXISTS voucher_template (
|
|
id VARCHAR(32) NOT NULL COMMENT '主键ID',
|
|
name VARCHAR(64) NOT NULL COMMENT '模板名称',
|
|
code VARCHAR(32) NOT NULL COMMENT '模板编码',
|
|
face_value DECIMAL(10,2) NOT NULL COMMENT '面值',
|
|
total_count INT NOT NULL DEFAULT 0 COMMENT '总发行量',
|
|
issued_count INT NOT NULL DEFAULT 0 COMMENT '已发放量',
|
|
valid_days INT NOT NULL DEFAULT 30 COMMENT '有效期天数',
|
|
status VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT '状态: draft/active/inactive',
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
creator VARCHAR(32) DEFAULT NULL COMMENT '创建人',
|
|
updater VARCHAR(32) DEFAULT NULL COMMENT '更新人',
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY idx_template_code (code),
|
|
KEY idx_template_status (status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代金券模板';
|
|
|
|
-- 代金券规则表
|
|
CREATE TABLE IF NOT EXISTS voucher_rule (
|
|
id VARCHAR(32) NOT NULL COMMENT '主键ID',
|
|
template_id VARCHAR(32) NOT NULL COMMENT '模板ID',
|
|
rule_type VARCHAR(32) NOT NULL COMMENT '规则类型',
|
|
rule_config TEXT NOT NULL COMMENT '规则配置(JSON)',
|
|
enabled SMALLINT NOT NULL DEFAULT 1 COMMENT '是否启用',
|
|
sort_order INT NOT NULL DEFAULT 0 COMMENT '执行顺序',
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (id),
|
|
KEY idx_rule_template (template_id),
|
|
KEY idx_rule_enabled (enabled)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代金券规则定义';
|
|
|
|
-- 代金券实例表
|
|
CREATE TABLE IF NOT EXISTS voucher_instance (
|
|
id VARCHAR(32) NOT NULL COMMENT '主键ID',
|
|
template_id VARCHAR(32) NOT NULL COMMENT '模板ID',
|
|
customer_id VARCHAR(32) NOT NULL COMMENT '客户ID',
|
|
code VARCHAR(64) NOT NULL COMMENT '唯一券码',
|
|
status VARCHAR(16) NOT NULL DEFAULT 'unused' COMMENT '状态: unused/used/expired',
|
|
face_value DECIMAL(10,2) NOT NULL COMMENT '面值',
|
|
actual_deducted DECIMAL(10,2) DEFAULT NULL COMMENT '实际抵扣金额',
|
|
valid_from DATETIME NOT NULL COMMENT '生效时间',
|
|
valid_to DATETIME NOT NULL COMMENT '过期时间',
|
|
issued_at DATETIME NOT NULL COMMENT '发放时间',
|
|
used_at DATETIME DEFAULT NULL COMMENT '使用时间',
|
|
order_id VARCHAR(64) DEFAULT NULL COMMENT '使用的订单ID',
|
|
source VARCHAR(32) DEFAULT NULL COMMENT '来源',
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY idx_instance_code (code),
|
|
KEY idx_instance_customer (customer_id),
|
|
KEY idx_instance_template (template_id),
|
|
KEY idx_instance_status (status),
|
|
KEY idx_instance_valid_to (valid_to)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代金券实例(一次性使用)';
|
|
|
|
-- 代金券使用流水表
|
|
CREATE TABLE IF NOT EXISTS voucher_usage_log (
|
|
id VARCHAR(32) NOT NULL COMMENT '主键ID',
|
|
instance_id VARCHAR(32) NOT NULL COMMENT '券实例ID',
|
|
customer_id VARCHAR(32) NOT NULL COMMENT '客户ID',
|
|
order_id VARCHAR(64) NOT NULL COMMENT '订单/消费ID',
|
|
face_value DECIMAL(10,2) NOT NULL COMMENT '券面值',
|
|
deducted_amount DECIMAL(10,2) NOT NULL COMMENT '实际抵扣金额',
|
|
used_at DATETIME NOT NULL COMMENT '使用时间',
|
|
used_by VARCHAR(32) DEFAULT NULL COMMENT '操作人',
|
|
product_type VARCHAR(32) DEFAULT NULL COMMENT '产品类型',
|
|
product_name VARCHAR(64) DEFAULT NULL COMMENT '产品名称',
|
|
PRIMARY KEY (id),
|
|
KEY idx_log_instance (instance_id),
|
|
KEY idx_log_customer (customer_id),
|
|
KEY idx_log_order (order_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代金券使用流水';
|
|
|
|
-- 初始化编码数据
|
|
INSERT INTO appcodes (id, name, hierarchy_flg) VALUES
|
|
('voucher_template_status', '代金券模板状态', '0'),
|
|
('voucher_instance_status', '代金券实例状态', '0'),
|
|
('voucher_rule_type', '代金券规则类型', '0')
|
|
ON DUPLICATE KEY UPDATE name=VALUES(name);
|
|
|
|
INSERT INTO appcodes_kv (id, parentid, k, v) VALUES
|
|
('vts_draft', 'voucher_template_status', 'draft', '草稿'),
|
|
('vts_active', 'voucher_template_status', 'active', '启用'),
|
|
('vts_inactive', 'voucher_template_status', 'inactive', '停用'),
|
|
('vis_unused', 'voucher_instance_status', 'unused', '未使用'),
|
|
('vis_used', 'voucher_instance_status', 'used', '已使用'),
|
|
('vis_expired', 'voucher_instance_status', 'expired', '已过期'),
|
|
('vrt_min', 'voucher_rule_type', 'min_amount', '最低消费'),
|
|
('vrt_max', 'voucher_rule_type', 'max_amount', '最高消费'),
|
|
('vrt_ptype', 'voucher_rule_type', 'applicable_product_type', '限定产品类型'),
|
|
('vrt_prod', 'voucher_rule_type', 'applicable_product', '限定特定产品'),
|
|
('vrt_exprod', 'voucher_rule_type', 'exclude_product', '排除特定产品'),
|
|
('vrt_usage', 'voucher_rule_type', 'max_usage_count', '最大使用次数'),
|
|
('vrt_period', 'voucher_rule_type', 'valid_period', '有效期'),
|
|
('vrt_level', 'voucher_rule_type', 'user_level', '用户等级')
|
|
ON DUPLICATE KEY UPDATE v=VALUES(v);
|