Files
shz-backend/sql/cms_venue_booth_map.sql

87 lines
3.4 KiB
MySQL
Raw Normal View History

-- 场地展位图与户外招聘会展位预定
-- 瀚高数据库 / PostgreSQL 兼容
CREATE SEQUENCE IF NOT EXISTS "cms_venue_booth_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
CREATE TABLE IF NOT EXISTS "cms_venue_booth" (
"id" BIGINT NOT NULL DEFAULT nextval('"cms_venue_booth_id_seq"') PRIMARY KEY,
"venue_id" BIGINT NOT NULL,
"booth_number" VARCHAR(50) NOT NULL,
"position_x" INTEGER NOT NULL DEFAULT 0,
"position_y" INTEGER NOT NULL DEFAULT 0,
"create_by" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP(0),
"update_by" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP(0),
"remark" VARCHAR(500),
"del_flag" CHAR(1) DEFAULT '0'
);
COMMENT ON TABLE "cms_venue_booth" IS '场地展位图';
COMMENT ON COLUMN "cms_venue_booth"."venue_id" IS '场地ID';
COMMENT ON COLUMN "cms_venue_booth"."booth_number" IS '展位号';
COMMENT ON COLUMN "cms_venue_booth"."position_x" IS 'X坐标';
COMMENT ON COLUMN "cms_venue_booth"."position_y" IS 'Y坐标';
CREATE UNIQUE INDEX IF NOT EXISTS "uk_cms_venue_booth_number" ON "cms_venue_booth" ("venue_id", "booth_number");
CREATE INDEX IF NOT EXISTS "idx_cms_venue_booth_venue" ON "cms_venue_booth" ("venue_id");
CREATE SEQUENCE IF NOT EXISTS "cms_outdoor_fair_booth_booking_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
CREATE TABLE IF NOT EXISTS "cms_outdoor_fair_booth_booking" (
"id" BIGINT NOT NULL DEFAULT nextval('"cms_outdoor_fair_booth_booking_id_seq"') PRIMARY KEY,
"fair_id" BIGINT NOT NULL,
"booth_id" BIGINT NOT NULL,
"booth_number" VARCHAR(50) NOT NULL,
"company_id" BIGINT,
"company_name" VARCHAR(200),
"status" VARCHAR(30) DEFAULT 'reserved',
"create_by" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP(0),
"update_by" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP(0),
"remark" VARCHAR(500),
"del_flag" CHAR(1) DEFAULT '0'
);
COMMENT ON TABLE "cms_outdoor_fair_booth_booking" IS '户外招聘会展位预定';
CREATE UNIQUE INDEX IF NOT EXISTS "uk_cms_outdoor_fair_booth_booking" ON "cms_outdoor_fair_booth_booking" ("fair_id", "booth_id");
CREATE INDEX IF NOT EXISTS "idx_cms_outdoor_fair_booth_booking_fair" ON "cms_outdoor_fair_booth_booking" ("fair_id");
WITH target_venue AS (
SELECT "id" AS venue_id
FROM "cms_venue_info"
WHERE "venue_name" = '石河子市人民广场户外招聘区'
LIMIT 1
),
seed AS (
SELECT
target_venue.venue_id,
'KJ' || LPAD(gs::text, 2, '0') AS booth_number,
40 + ((gs - 1) % 20) * 54 AS position_x,
40 + ((gs - 1) / 20) * 54 AS position_y
FROM target_venue
CROSS JOIN generate_series(1, 80) gs
)
INSERT INTO "cms_venue_booth" ("venue_id", "booth_number", "position_x", "position_y", "create_by", "create_time", "del_flag")
SELECT seed.venue_id, seed.booth_number, seed.position_x, seed.position_y, 'system', NOW(), '0'
FROM seed
WHERE NOT EXISTS (
SELECT 1
FROM "cms_venue_booth" existing
WHERE existing."venue_id" = seed.venue_id
AND existing."booth_number" = seed.booth_number
);
UPDATE "cms_venue_info" venue
SET "floor_count" = booth_counts.total
FROM (
SELECT "venue_id", COUNT(*) AS total
FROM "cms_venue_booth"
GROUP BY "venue_id"
) booth_counts
WHERE venue."id" = booth_counts."venue_id";
UPDATE "cms_outdoor_fair" fair
SET "booth_count" = venue."floor_count"
FROM "cms_venue_info" venue
WHERE fair."venue_id" = venue."id";