相关问题优化以及新功能开发
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m57s

迁移 155- 157
This commit is contained in:
2026-06-22 17:21:13 +09:00
parent 2885b503b3
commit 5c2ef97c24
45 changed files with 1201 additions and 82 deletions

View File

@@ -0,0 +1,2 @@
ALTER TABLE tb_iot_card_import_task DROP COLUMN IF EXISTS creator_name;
ALTER TABLE tb_device_import_task DROP COLUMN IF EXISTS creator_name;

View File

@@ -0,0 +1,7 @@
-- 为 IoT 卡导入任务表和设备导入任务表添加操作人快照字段
-- 旧记录 creator_name 留空字符串,新任务创建时从登录用户快照姓名
ALTER TABLE tb_iot_card_import_task
ADD COLUMN IF NOT EXISTS creator_name varchar(100) NOT NULL DEFAULT '';
ALTER TABLE tb_device_import_task
ADD COLUMN IF NOT EXISTS creator_name varchar(100) NOT NULL DEFAULT '';

View File

@@ -0,0 +1,14 @@
-- 回滚jsonb 数组 → varchar(500),取第一个元素;空数组 → ''
ALTER TABLE tb_order
ALTER COLUMN payment_voucher_key TYPE varchar(500)
USING COALESCE(payment_voucher_key->>0, '');
ALTER TABLE tb_refund_request
ALTER COLUMN refund_voucher_key TYPE varchar(500)
USING COALESCE(refund_voucher_key->>0, '');
ALTER TABLE tb_agent_recharge_record
ALTER COLUMN payment_voucher_key TYPE varchar(500)
USING COALESCE(payment_voucher_key->>0, '');
ALTER TABLE tb_agent_recharge_record DROP COLUMN IF EXISTS remark;

View File

@@ -0,0 +1,38 @@
-- 将三个表的凭证字段从 varchar(500) 改为 jsonb 数组存储最多5个元素
-- 同时为代理预充值记录新增 remark 备注字段
-- 注意:旧数据可能为逗号分隔多路径,用 string_to_array 拆分为数组元素
-- USING 子句中必须显式 ::text 转换,避免 PostgreSQL 隐式将空字符串转 jsonb 报错
-- tb_order.payment_voucher_key: 空/NULL → [],非空 → 按逗号拆分为数组
ALTER TABLE tb_order
ALTER COLUMN payment_voucher_key TYPE jsonb
USING CASE
WHEN payment_voucher_key IS NULL OR payment_voucher_key::text = '' THEN '[]'::jsonb
ELSE to_jsonb(string_to_array(payment_voucher_key::text, ','))
END;
-- tb_refund_request.refund_voucher_key: 先删除旧 varchar DEFAULT 再转类型
ALTER TABLE tb_refund_request
ALTER COLUMN refund_voucher_key DROP DEFAULT;
ALTER TABLE tb_refund_request
ALTER COLUMN refund_voucher_key TYPE jsonb
USING CASE
WHEN refund_voucher_key IS NULL OR refund_voucher_key::text = '' THEN '[]'::jsonb
ELSE to_jsonb(string_to_array(refund_voucher_key::text, ','))
END;
ALTER TABLE tb_refund_request
ALTER COLUMN refund_voucher_key SET DEFAULT '[]'::jsonb;
-- tb_agent_recharge_record.payment_voucher_key: 同 tb_order
ALTER TABLE tb_agent_recharge_record
ALTER COLUMN payment_voucher_key TYPE jsonb
USING CASE
WHEN payment_voucher_key IS NULL OR payment_voucher_key::text = '' THEN '[]'::jsonb
ELSE to_jsonb(string_to_array(payment_voucher_key::text, ','))
END;
-- tb_agent_recharge_record 新增 remark 备注字段创建后只读NULL 表示未填写)
ALTER TABLE tb_agent_recharge_record
ADD COLUMN IF NOT EXISTS remark text;

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS tb_order_package_invalidate_task;

View File

@@ -0,0 +1,25 @@
CREATE TABLE IF NOT EXISTS tb_order_package_invalidate_task (
id bigserial PRIMARY KEY,
task_no varchar(50) NOT NULL UNIQUE,
status int NOT NULL DEFAULT 1,
total_count int NOT NULL DEFAULT 0,
success_count int NOT NULL DEFAULT 0,
fail_count int NOT NULL DEFAULT 0,
failed_items jsonb NOT NULL DEFAULT '[]',
file_name varchar(255) NOT NULL DEFAULT '',
storage_key varchar(500) NOT NULL DEFAULT '',
voucher_keys jsonb NOT NULL DEFAULT '[]',
remark text NOT NULL DEFAULT '',
creator_name varchar(100) NOT NULL DEFAULT '',
error_message text NOT NULL DEFAULT '',
started_at timestamptz,
completed_at timestamptz,
creator bigint NOT NULL DEFAULT 0,
updater bigint NOT NULL DEFAULT 0,
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamptz
);
CREATE INDEX IF NOT EXISTS idx_order_pkg_inv_task_status ON tb_order_package_invalidate_task (status) WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_order_pkg_inv_task_created_at ON tb_order_package_invalidate_task (created_at DESC) WHERE deleted_at IS NULL;