70 lines
3.7 KiB
SQL
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;
|