Files
hfb_sys/backend/migrations/000037_renter_growth_level.sql
T

70 lines
3.7 KiB
SQL

-- +goose Up
ALTER TABLE users
ADD COLUMN renter_growth_points BIGINT NOT NULL DEFAULT 0 COMMENT '租客成长积分' AFTER deposit_free_quota_cent,
ADD COLUMN renter_growth_level VARCHAR(32) NOT NULL DEFAULT 'normal' COMMENT '租客成长等级: normal普通/platinum铂金/diamond钻石/peak巅峰' AFTER renter_growth_points,
ADD KEY idx_users_renter_growth_level (renter_growth_level, renter_growth_points);
ALTER TABLE rental_orders
ADD COLUMN rent_original_amount_cent BIGINT NOT NULL DEFAULT 0 COMMENT '租客下单原始租金(分)' AFTER platform_fee_cent,
ADD COLUMN rent_discount_amount_cent BIGINT NOT NULL DEFAULT 0 COMMENT '租客成长等级优惠金额(分)' AFTER rent_original_amount_cent,
ADD COLUMN renter_growth_level VARCHAR(32) NOT NULL DEFAULT 'normal' COMMENT '下单时租客成长等级快照' AFTER rent_discount_amount_cent,
ADD COLUMN renter_growth_level_name VARCHAR(32) NOT NULL DEFAULT '普通' COMMENT '下单时租客成长等级名称快照' AFTER renter_growth_level,
ADD COLUMN renter_discount_bps INT NOT NULL DEFAULT 10000 COMMENT '下单时租客等级折扣,10000=无折扣' AFTER renter_growth_level_name,
ADD COLUMN growth_points_awarded BIGINT NOT NULL DEFAULT 0 COMMENT '订单完成后已发放成长积分' AFTER renter_discount_bps,
ADD COLUMN growth_points_awarded_at DATETIME NULL COMMENT '成长积分发放时间' AFTER growth_points_awarded,
ADD KEY idx_rental_orders_growth_awarded (growth_points_awarded_at, renter_id);
UPDATE rental_orders
SET rent_original_amount_cent = rent_amount_cent
WHERE rent_original_amount_cent = 0;
CREATE TABLE renter_growth_ledger (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
order_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租号订单ID',
points BIGINT NOT NULL DEFAULT 0 COMMENT '变动积分',
before_points BIGINT NOT NULL DEFAULT 0 COMMENT '变动前积分',
after_points BIGINT NOT NULL DEFAULT 0 COMMENT '变动后积分',
before_level VARCHAR(32) NOT NULL DEFAULT 'normal' COMMENT '变动前等级',
after_level VARCHAR(32) NOT NULL DEFAULT 'normal' COMMENT '变动后等级',
source VARCHAR(32) NOT NULL DEFAULT 'order_completed' COMMENT '来源',
remark VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uk_renter_growth_order_source (order_id, source),
KEY idx_renter_growth_ledger_user (user_id),
KEY idx_renter_growth_ledger_order (order_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租客成长积分流水';
INSERT INTO system_configs (`key`, `value`, `description`, `created_at`, `updated_at`)
VALUES (
'renter.growth_level_rules',
'{"enabled":true,"points_per_yuan":1,"levels":[{"code":"normal","name":"普通","min_points":0,"discount_bps":10000},{"code":"platinum","name":"铂金","min_points":300,"discount_bps":9900},{"code":"diamond","name":"钻石","min_points":1000,"discount_bps":9800},{"code":"peak","name":"巅峰","min_points":5000,"discount_bps":9500}]}',
'租客成长等级规则 JSON(积分门槛/下单折扣)',
NOW(),
NOW()
)
ON DUPLICATE KEY UPDATE description = VALUES(description);
-- +goose Down
DELETE FROM system_configs WHERE `key` = 'renter.growth_level_rules';
DROP TABLE renter_growth_ledger;
ALTER TABLE rental_orders
DROP KEY idx_rental_orders_growth_awarded,
DROP COLUMN growth_points_awarded_at,
DROP COLUMN growth_points_awarded,
DROP COLUMN renter_discount_bps,
DROP COLUMN renter_growth_level_name,
DROP COLUMN renter_growth_level,
DROP COLUMN rent_discount_amount_cent,
DROP COLUMN rent_original_amount_cent;
ALTER TABLE users
DROP KEY idx_users_renter_growth_level,
DROP COLUMN renter_growth_level,
DROP COLUMN renter_growth_points;