102 lines
3.5 KiB
SQL
102 lines
3.5 KiB
SQL
-- +goose Up
|
|
|
|
-- 初始化本地测试分销站点 test_1、分销管理员 test_fx1 (密码 admin123456) 以及对应的金库钱包与商品货架
|
|
|
|
-- 1. 插入或激活测试分销站点 test_1
|
|
INSERT INTO distribution_sites (
|
|
site_code, site_name, domain, status, display_account_enabled, tax_enabled, tax_rate_bps, created_at, updated_at
|
|
) VALUES (
|
|
'test_1', '测试分销商1', 'test_1.localhost', 'active', 1, 0, 100, NOW(), NOW()
|
|
) ON DUPLICATE KEY UPDATE
|
|
site_name = VALUES(site_name),
|
|
domain = VALUES(domain),
|
|
status = 'active',
|
|
display_account_enabled = 1,
|
|
updated_at = NOW();
|
|
|
|
-- 2. 插入或激活测试分销管理员 test_fx1 (初始密码: admin123456)
|
|
INSERT INTO admin_users (
|
|
username, password_hash, nickname, status, created_at, updated_at
|
|
) VALUES (
|
|
'test_fx1',
|
|
'$2a$10$zj3KqZJArsYVKVjA7uHDbeP7sWML20xjxRfb3a100xBx.f20Gu.8O',
|
|
'分销操作员1',
|
|
'active',
|
|
NOW(),
|
|
NOW()
|
|
) ON DUPLICATE KEY UPDATE
|
|
status = 'active',
|
|
password_hash = VALUES(password_hash),
|
|
updated_at = NOW();
|
|
|
|
-- 3. 关联分销商成员 (operator 角色)
|
|
INSERT INTO distribution_site_members (
|
|
site_id, admin_user_id, member_type, status, data_scope, created_at, updated_at
|
|
)
|
|
SELECT s.id, u.id, 'operator', 'active', 'site', NOW(), NOW()
|
|
FROM distribution_sites s
|
|
JOIN admin_users u ON u.username = 'test_fx1'
|
|
WHERE s.site_code = 'test_1'
|
|
ON DUPLICATE KEY UPDATE
|
|
status = 'active',
|
|
member_type = 'operator',
|
|
updated_at = NOW();
|
|
|
|
-- 4. 初始化 test_1 分销站金库钱包账户 (user_id = 0, distribution_site_id = site.id)
|
|
INSERT INTO wallet_accounts (
|
|
user_id, distribution_site_id, available_balance_cent, frozen_balance_cent, status, created_at, updated_at
|
|
)
|
|
SELECT 0, s.id, 0, 0, 'active', NOW(), NOW()
|
|
FROM distribution_sites s
|
|
WHERE s.site_code = 'test_1'
|
|
ON DUPLICATE KEY UPDATE status = 'active';
|
|
|
|
-- 5. 初始化 test_1 分销站点专属规则版本 (两方-分销卖出,收号 35%、卖出 40%、服务费 25%)
|
|
INSERT INTO distribution_rule_versions (
|
|
site_id, mode, version, status,
|
|
platform_receive_ratio, distributor_sell_ratio, service_fee_value, service_fee_unit, payment_fee_bps,
|
|
effective_from, created_at
|
|
)
|
|
SELECT s.id, 'two_party_platform_receive', 1, 'active',
|
|
35, 40, 25, 'percent', 50,
|
|
NOW(), NOW()
|
|
FROM distribution_sites s
|
|
WHERE s.site_code = 'test_1'
|
|
ON DUPLICATE KEY UPDATE
|
|
status = 'active',
|
|
platform_receive_ratio = 35,
|
|
distributor_sell_ratio = 40,
|
|
service_fee_value = 25;
|
|
|
|
-- 6. 默认将当前已发布的合规商品直接铺入 test_1 货架
|
|
INSERT IGNORE INTO distribution_site_accounts (
|
|
site_id, account_id, listing_id, display_status, markup_amount_cent, shelf_ratio_delta, created_at, updated_at
|
|
)
|
|
SELECT s.id, l.account_id, l.id, 'enabled', 0, 0, NOW(), NOW()
|
|
FROM distribution_sites s
|
|
CROSS JOIN rental_listings l
|
|
WHERE s.site_code = 'test_1'
|
|
AND l.status = 'published'
|
|
AND l.review_status = 'approved';
|
|
|
|
-- +goose Down
|
|
|
|
DELETE dsa FROM distribution_site_accounts dsa
|
|
JOIN distribution_sites s ON s.id = dsa.site_id
|
|
WHERE s.site_code = 'test_1';
|
|
|
|
DELETE drv FROM distribution_rule_versions drv
|
|
JOIN distribution_sites s ON s.id = drv.site_id
|
|
WHERE s.site_code = 'test_1';
|
|
|
|
DELETE wa FROM wallet_accounts wa
|
|
JOIN distribution_sites s ON s.id = wa.distribution_site_id
|
|
WHERE s.site_code = 'test_1' AND wa.user_id = 0;
|
|
|
|
DELETE dsm FROM distribution_site_members dsm
|
|
JOIN distribution_sites s ON s.id = dsm.site_id
|
|
WHERE s.site_code = 'test_1';
|
|
|
|
DELETE FROM admin_users WHERE username = 'test_fx1';
|
|
DELETE FROM distribution_sites WHERE site_code = 'test_1';
|