Files
shz-backend/sql/migration_outdoor_fair_company_attendance.test-executed.sql

126 lines
5.5 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 户外招聘会企业签到与未参会失信统计
-- 瀚高数据库 / PostgreSQL 兼容;可重复执行。
-- 执行状态:测试环境已执行
-- 测试环境test
-- 测试执行时间2026-07-24 12:23:44 +0800
-- 正式环境:未执行
BEGIN;
SET LOCAL search_path = shz, public;
-- 兼容尚未执行招聘会报名审核迁移的旧库;已存在字段不会被覆盖。
ALTER TABLE "shz"."fair_company"
ADD COLUMN IF NOT EXISTS "review_status" CHAR(1) DEFAULT '1';
ALTER TABLE "shz"."fair_company"
ADD COLUMN IF NOT EXISTS "review_by" VARCHAR(64);
ALTER TABLE "shz"."fair_company"
ADD COLUMN IF NOT EXISTS "review_time" TIMESTAMP;
ALTER TABLE "shz"."fair_company"
ADD COLUMN IF NOT EXISTS "review_remark" VARCHAR(500);
UPDATE "shz"."fair_company"
SET "review_status" = '1'
WHERE "review_status" IS NULL;
CREATE SEQUENCE IF NOT EXISTS "shz"."cms_outdoor_fair_company_attendance_id_seq"
START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
CREATE TABLE IF NOT EXISTS "shz"."cms_outdoor_fair_company_attendance" (
"id" BIGINT NOT NULL DEFAULT nextval('"shz"."cms_outdoor_fair_company_attendance_id_seq"'::regclass) PRIMARY KEY,
"fair_id" BIGINT NOT NULL,
"company_id" BIGINT NOT NULL,
"company_name" VARCHAR(255),
"contact_person" VARCHAR(64),
"contact_phone" VARCHAR(64),
"attendance_status" CHAR(1) NOT NULL DEFAULT '0',
"check_in_time" 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_attendance" IS '户外招聘会企业签到记录表';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."fair_id" IS '招聘会ID';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."company_id" IS '企业ID';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."company_name" IS '企业名称快照';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."contact_person" IS '联系人快照';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."contact_phone" IS '联系电话快照';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."attendance_status" IS '签到状态0未签到1已签到';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."check_in_time" IS '签到时间';
COMMENT ON COLUMN "shz"."cms_outdoor_fair_company_attendance"."del_flag" IS '删除标志0代表存在 2代表删除';
CREATE UNIQUE INDEX IF NOT EXISTS "uk_cms_outdoor_fair_company_attendance"
ON "shz"."cms_outdoor_fair_company_attendance" ("fair_id", "company_id")
WHERE "del_flag" = '0';
CREATE INDEX IF NOT EXISTS "idx_cms_outdoor_fair_company_attendance_fair_status"
ON "shz"."cms_outdoor_fair_company_attendance" ("fair_id", "attendance_status");
CREATE INDEX IF NOT EXISTS "idx_cms_outdoor_fair_company_attendance_company"
ON "shz"."cms_outdoor_fair_company_attendance" ("company_id");
-- 为历史审核通过的户外招聘会报名补齐“未签到”初始记录。
INSERT INTO "shz"."cms_outdoor_fair_company_attendance" (
"fair_id", "company_id", "company_name", "contact_person", "contact_phone",
"attendance_status", "create_by", "create_time", "del_flag"
)
SELECT fc."job_fair_id",
fc."company_id",
c."name",
c."contact_person",
c."contact_person_phone",
'0',
'system',
CURRENT_TIMESTAMP,
'0'
FROM "shz"."fair_company" fc
JOIN "shz"."company" c ON c."company_id" = fc."company_id" AND c."del_flag" = '0'
WHERE fc."del_flag" = '0'
AND fc."review_status" = '1'
AND NOT EXISTS (
SELECT 1
FROM "shz"."cms_outdoor_fair_company_attendance" existing
WHERE existing."fair_id" = fc."job_fair_id"
AND existing."company_id" = fc."company_id"
AND existing."del_flag" = '0'
);
-- 企业签到接口使用独立按钮权限;把权限授给已有户外招聘会列表权限的角色。
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", 6, '', '', '', '',
1, 0, 'F', '0', '0', 'cms:outdoorFair:companyCheckIn', '#', '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:companyCheckIn'
)
ORDER BY list_menu."menu_id"
LIMIT 1;
INSERT INTO "shz"."sys_role_menu" ("role_id", "menu_id")
SELECT DISTINCT role_menu."role_id", check_in_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" check_in_menu
ON check_in_menu."perms" = 'cms:outdoorFair:companyCheckIn'
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" = check_in_menu."menu_id"
);
COMMIT;