Files
hfb_sys/backend/migrations/000022_order_deposit_hold.sql
T

39 lines
1.8 KiB
SQL

-- +goose Up
-- 押金暂扣:客服可对进行中订单的押金退款进行暂扣,订单照常结算/关闭/仲裁,
-- 但本应原路退给租客的押金部分不自动退,挂起为“已暂扣”,后续由客服手动归还。
ALTER TABLE rental_orders
ADD COLUMN deposit_hold_status VARCHAR(16) NOT NULL DEFAULT 'none' COMMENT '押金暂扣状态: none无/held已暂扣/released已归还' AFTER refunded_at,
ADD COLUMN deposit_hold_amount_cent BIGINT NOT NULL DEFAULT 0 COMMENT '实际暂扣的押金金额(分),结算时确定' AFTER deposit_hold_status,
ADD COLUMN deposit_hold_reason VARCHAR(255) NOT NULL DEFAULT '' COMMENT '暂扣原因' AFTER deposit_hold_amount_cent,
ADD COLUMN deposit_held_by BIGINT UNSIGNED NULL COMMENT '暂扣操作管理员' AFTER deposit_hold_reason,
ADD COLUMN deposit_held_at DATETIME NULL COMMENT '暂扣时间' AFTER deposit_held_by,
ADD COLUMN deposit_hold_released_at DATETIME NULL COMMENT '押金归还时间' AFTER deposit_held_at;
CREATE INDEX idx_deposit_hold_status ON rental_orders (deposit_hold_status);
INSERT INTO permissions (code, name, resource, action)
VALUES ('order:deposit_hold', '押金暂扣与归还', 'order', 'deposit_hold');
INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id FROM roles r, permissions p
WHERE r.code IN ('cs', 'ops') AND p.code = 'order:deposit_hold';
-- +goose Down
DROP INDEX idx_deposit_hold_status ON rental_orders;
ALTER TABLE rental_orders
DROP COLUMN deposit_hold_status,
DROP COLUMN deposit_hold_amount_cent,
DROP COLUMN deposit_hold_reason,
DROP COLUMN deposit_held_by,
DROP COLUMN deposit_held_at,
DROP COLUMN deposit_hold_released_at;
DELETE rp FROM role_permissions rp
JOIN permissions p ON p.id = rp.permission_id
WHERE p.code = 'order:deposit_hold';
DELETE FROM permissions WHERE code = 'order:deposit_hold';