From dd4d8002c9a3ca5a533fec81f49c438bffa27239 Mon Sep 17 00:00:00 2001 From: lapuda <577732344@qq.com> Date: Fri, 24 Jul 2026 12:03:10 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=94=9F=E6=88=90=E6=88=B7=E5=A4=96?= =?UTF-8?q?=E6=8B=9B=E8=81=98=E4=BC=9A=E9=80=80=E8=AE=A2=E6=AD=A3=E5=BC=8F?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...bscribe.test-verified-production-ready.sql | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 sql/migration_outdoor_fair_company_unsubscribe.test-verified-production-ready.sql diff --git a/sql/migration_outdoor_fair_company_unsubscribe.test-verified-production-ready.sql b/sql/migration_outdoor_fair_company_unsubscribe.test-verified-production-ready.sql new file mode 100644 index 0000000..e275b3b --- /dev/null +++ b/sql/migration_outdoor_fair_company_unsubscribe.test-verified-production-ready.sql @@ -0,0 +1,84 @@ +-- 户外招聘会企业退订:企业退订后移除参会关系,并保留退订快照。 +-- 瀚高数据库 / PostgreSQL 兼容;可重复执行。 +-- 执行状态:测试环境已执行,功能验证已通过,正式环境待执行 +-- 测试环境:test +-- 测试执行时间:2026-07-24 11:46:48 +0800 +-- 功能验证时间:2026-07-24 12:02:05 +0800 +-- 正式环境:待明确授权后执行 + +BEGIN; + +SET LOCAL search_path = shz, public; + +CREATE SEQUENCE IF NOT EXISTS "shz"."cms_outdoor_fair_company_unsubscribe_id_seq" + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; + +CREATE TABLE IF NOT EXISTS "shz"."cms_outdoor_fair_company_unsubscribe" ( + "id" BIGINT NOT NULL DEFAULT nextval('"shz"."cms_outdoor_fair_company_unsubscribe_id_seq"'::regclass) PRIMARY KEY, + "fair_id" BIGINT NOT NULL, + "company_id" BIGINT NOT NULL, + "company_name" VARCHAR(255) NOT NULL, + "contact_person" VARCHAR(64), + "contact_phone" VARCHAR(64), + "reason" VARCHAR(500) NOT NULL, + "unsubscribe_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + "create_by" VARCHAR(64) DEFAULT '', + "create_time" TIMESTAMP, + "update_by" VARCHAR(64) DEFAULT '', + "update_time" TIMESTAMP, + "remark" VARCHAR(500), + "del_flag" CHAR(1) DEFAULT '0' +); + +COMMENT ON TABLE "shz"."cms_outdoor_fair_company_unsubscribe" IS '户外招聘会企业退订记录表'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."fair_id" IS '招聘会ID'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."company_id" IS '企业ID'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."company_name" IS '企业名称快照'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."contact_person" IS '联系人快照'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."contact_phone" IS '联系电话快照'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."reason" IS '退订原因'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."unsubscribe_time" IS '退订时间'; +COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_unsubscribe"."del_flag" IS '删除标志(0代表存在 2代表删除)'; + +CREATE INDEX IF NOT EXISTS "idx_cms_outdoor_fair_company_unsubscribe_fair_time" + ON "shz"."cms_outdoor_fair_company_unsubscribe" ("fair_id", "unsubscribe_time" DESC); +CREATE INDEX IF NOT EXISTS "idx_cms_outdoor_fair_company_unsubscribe_company" + ON "shz"."cms_outdoor_fair_company_unsubscribe" ("company_id"); + +-- 企业端退订按钮权限。授权给已有户外招聘会列表权限的角色,覆盖企业角色和管理角色。 +INSERT INTO "shz"."sys_menu" ( + "menu_id", "menu_name", "parent_id", "order_num", "path", "component", + "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", + "status", "perms", "icon", "create_by", "create_time", "update_by", + "update_time", "remark" +) +SELECT + (SELECT COALESCE(MAX("menu_id"), 0) + 1 FROM "shz"."sys_menu"), + '企业退订', list_menu."menu_id", 5, '', '', '', '', + 1, 0, 'F', '0', '0', 'cms:outdoorFair:unsubscribe', '#', 'system', CURRENT_TIMESTAMP, + '', NULL, '户外招聘会企业端退订按钮权限' +FROM "shz"."sys_menu" list_menu +WHERE list_menu."perms" = 'cms:outdoorFair:list' + AND NOT EXISTS ( + SELECT 1 FROM "shz"."sys_menu" + WHERE "perms" = 'cms:outdoorFair:unsubscribe' + ) +ORDER BY list_menu."menu_id" +LIMIT 1; + +INSERT INTO "shz"."sys_role_menu" ("role_id", "menu_id") +SELECT DISTINCT role_menu."role_id", unsubscribe_menu."menu_id" +FROM "shz"."sys_role_menu" role_menu +JOIN "shz"."sys_menu" list_menu + ON list_menu."menu_id" = role_menu."menu_id" +JOIN "shz"."sys_menu" unsubscribe_menu + ON unsubscribe_menu."perms" = 'cms:outdoorFair:unsubscribe' +WHERE list_menu."perms" = 'cms:outdoorFair:list' + AND NOT EXISTS ( + SELECT 1 + FROM "shz"."sys_role_menu" existing + WHERE existing."role_id" = role_menu."role_id" + AND existing."menu_id" = unsubscribe_menu."menu_id" + ); + +COMMIT;