feat(marketing): implement recharge tiers and coupon management across admin, server, and uniapp

这个提交包含在:
xcbyy
2026-10-10 09:22:46 +08:00
父节点 51682fffea
当前提交 d9c8388711
共有 12 个文件被更改,包括 1494 次插入 和 7 次删除

查看文件

@@ -337,6 +337,41 @@ export async function initDatabase(): Promise<void> {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
`);
// 18. 钱包充值阶梯与赠送配置表
await conn.query(`
CREATE TABLE IF NOT EXISTS recharge_tiers (
id INT PRIMARY KEY AUTO_INCREMENT,
amount DECIMAL(10,2) NOT NULL,
bonus_amount DECIMAL(10,2) DEFAULT 0.00,
tag VARCHAR(32) DEFAULT '',
sort_order INT DEFAULT 0,
status TINYINT DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_sort (sort_order),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
`);
// 19. 平台营销优惠券配置与发放表
await conn.query(`
CREATE TABLE IF NOT EXISTS coupons (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
discount_amount DECIMAL(10,2) NOT NULL,
min_spend DECIMAL(10,2) NOT NULL DEFAULT 0.00,
valid_days INT NOT NULL DEFAULT 7,
total_count INT NOT NULL DEFAULT 1000,
received_count INT NOT NULL DEFAULT 0,
category_limit VARCHAR(64) DEFAULT 'ALL',
description VARCHAR(255) DEFAULT '',
status TINYINT DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
`);
// 初始化配置单条记录
const [cfgRows]: any = await conn.query('SELECT COUNT(*) as count FROM finance_config WHERE id = 1');
if (cfgRows[0].count === 0) {
@@ -564,4 +599,31 @@ async function seedInitialDataIfEmpty(conn: any): Promise<void> {
(10, 'more', '全部活动', 'gridAll', 'bg-blue', 'all', '/pages/activity/list?category=ALL', '', 10, 1);
`);
}
// 15. 种子充值阶梯
const [tierRows]: any = await conn.query('SELECT COUNT(*) as count FROM recharge_tiers');
if (tierRows[0].count === 0) {
await conn.query(`
INSERT INTO recharge_tiers (id, amount, bonus_amount, tag, sort_order, status)
VALUES
(1, 50.00, 0.00, '基础充值', 1, 1),
(2, 100.00, 5.00, '热门畅享', 2, 1),
(3, 200.00, 15.00, '超值加赠', 3, 1),
(4, 500.00, 50.00, '尊享特惠', 4, 1),
(5, 1000.00, 120.00, '土豪专享', 5, 1);
`);
}
// 16. 种子平台优惠券
const [cpnRows]: any = await conn.query('SELECT COUNT(*) as count FROM coupons');
if (cpnRows[0].count === 0) {
await conn.query(`
INSERT INTO coupons (id, name, discount_amount, min_spend, valid_days, total_count, received_count, category_limit, description, status)
VALUES
(1, '新用户注册专享立减券', 20.00, 50.00, 15, 2000, 128, 'ALL', '全品类陪玩及同城组局满50可用', 1),
(2, '周末同城聚会AA抵扣券', 15.00, 80.00, 7, 1000, 85, 'MEAL', '仅限同城美食探店组局活动使用', 1),
(3, '工体K歌麦霸欢唱减免券', 30.00, 120.00, 10, 800, 62, 'SING', '仅限KTV陪唱预约与活动使用', 1),
(4, '电竞开黑连胜冲星券', 10.00, 30.00, 30, 5000, 340, 'ALL', '线上游戏陪玩下单立减', 1);
`);
}
}