service.xpcool.com/manifest/sql/010_house_tables.sql
夏犀麟 4aca0c7f6f
Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 5m7s
feat(house): 实现看房模块后端功能
- 新增 9 张房屋相关数据表(社区/楼宇/房源/价格快照/交易/设施/社区设施/学区/偏好)
- 添加菜单权限种子数据并绑定超级管理员角色
- 生成 DAO 层代码和实体对象
- 实现房屋模块 API 接口(社区/房源/看板)和控制器服务层
- 支持多平台软关联匹配、笋盘标记和低可信度标记功能
- 更新超级管理员账号为 xxcool/xxCool@2026
- 调整 RBAC 菜单结构,移除管理员管理功能,新增日志管理菜单
- 修复 RBAC 安全漏洞,确保禁用角色权限失效
- 重构认证模块,将登录相关接口迁移到统一包结构下
- 移除废弃的管理模块和工具类接口定义
- 为通用工具包添加中文注释和文档说明
2026-08-26 23:42:38 +08:00

199 lines
9.8 KiB
Go
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.

-- 010_house_tables.sql
-- 看房系统House核心数据模型9 张表
-- 约定BIGINT UNSIGNED 自增主键统一 created_at/updated_at/deleted_atGoFrame 软删除
-- 经纬度 GCJ-02价格单位总价万元 / 单价元每平米
-- 幂等CREATE TABLE IF NOT EXISTS可重复执行
-- 1) 楼盘/小区主档
CREATE TABLE IF NOT EXISTS house_community (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(128) NOT NULL COMMENT '小区/楼盘名',
region VARCHAR(64) NOT NULL DEFAULT '' COMMENT '区县(云岩/南明/观山湖/花溪等)',
business_district VARCHAR(64) NOT NULL DEFAULT '' COMMENT '板块',
address VARCHAR(255) NOT NULL DEFAULT '' COMMENT '地址',
lng DECIMAL(10,6) NOT NULL DEFAULT 0 COMMENT '经度(GCJ-02)',
lat DECIMAL(10,6) NOT NULL DEFAULT 0 COMMENT '纬度(GCJ-02)',
build_year INT NOT NULL DEFAULT 0 COMMENT '建成年份',
households INT NOT NULL DEFAULT 0 COMMENT '总户数',
plot_ratio DECIMAL(6,3) NOT NULL DEFAULT 0 COMMENT '容积率',
green_rate DECIMAL(6,3) NOT NULL DEFAULT 0 COMMENT '绿化率',
property_company VARCHAR(128) NOT NULL DEFAULT '' COMMENT '物业公司',
property_fee DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '物业费(//平米)',
developer VARCHAR(128) NOT NULL DEFAULT '' COMMENT '开发商',
source VARCHAR(32) NOT NULL DEFAULT '' COMMENT '数据来源',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
KEY idx_community_name (name),
KEY idx_community_region (region, business_district),
KEY idx_community_lnglat (lng, lat),
KEY idx_community_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='楼盘/小区';
-- 2) 楼栋具体到栋
CREATE TABLE IF NOT EXISTS house_building (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
community_id BIGINT UNSIGNED NOT NULL COMMENT '小区ID',
building_no VARCHAR(32) NOT NULL DEFAULT '' COMMENT '栋号',
units INT NOT NULL DEFAULT 0 COMMENT '单元数',
total_floors INT NOT NULL DEFAULT 0 COMMENT '总楼层',
elevator_count INT NOT NULL DEFAULT 0 COMMENT '电梯数',
ladder_ratio VARCHAR(32) NOT NULL DEFAULT '' COMMENT '梯户比',
building_type VARCHAR(16) NOT NULL DEFAULT '' COMMENT '板楼/塔楼',
lng DECIMAL(10,6) NOT NULL DEFAULT 0 COMMENT '楼栋经度',
lat DECIMAL(10,6) NOT NULL DEFAULT 0 COMMENT '楼栋纬度',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
KEY idx_building_community (community_id),
KEY idx_building_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='楼栋';
-- 3) 房源/挂牌核心多平台不去重
CREATE TABLE IF NOT EXISTS house_listing (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
community_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '小区ID',
building_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '楼栋ID',
house_no VARCHAR(64) NOT NULL DEFAULT '' COMMENT '房号',
layout VARCHAR(32) NOT NULL DEFAULT '' COMMENT '户型(如3室2厅)',
area DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '建筑面积(平米)',
usable_area DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '套内面积(平米)',
orientation VARCHAR(32) NOT NULL DEFAULT '' COMMENT '朝向',
floor INT NOT NULL DEFAULT 0 COMMENT '所在楼层',
total_floors INT NOT NULL DEFAULT 0 COMMENT '总楼层',
decoration VARCHAR(32) NOT NULL DEFAULT '' COMMENT '装修',
total_price DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '总价(万元)',
unit_price DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '单价(/平米)',
list_price DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '挂牌价(万元)',
source VARCHAR(32) NOT NULL DEFAULT '' COMMENT '来源平台',
source_house_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '平台侧房源ID',
source_url VARCHAR(512) NOT NULL DEFAULT '' COMMENT '房源链接',
match_group_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '疑似同房源分组(跨平台软关联)',
on_market_days INT NOT NULL DEFAULT 0 COMMENT '挂牌天数',
price_change_count INT NOT NULL DEFAULT 0 COMMENT '调价次数',
status INT NOT NULL DEFAULT 1 COMMENT '1在售 2下架 3成交',
confidence INT NOT NULL DEFAULT 0 COMMENT '可信度 0正常 1低可信',
is_bargain INT NOT NULL DEFAULT 0 COMMENT '笋盘标记 0 1',
listing_time DATETIME NULL COMMENT '挂牌时间',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_listing_source_house (source, source_house_id),
KEY idx_listing_community (community_id),
KEY idx_listing_match_group (match_group_id),
KEY idx_listing_unit_price (unit_price),
KEY idx_listing_status (status),
KEY idx_listing_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房源/挂牌';
-- 4) 价格快照时序趋势分析命脉
CREATE TABLE IF NOT EXISTS house_price_snapshot (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
listing_id BIGINT UNSIGNED NOT NULL COMMENT '房源ID',
community_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '小区ID',
snap_date DATE NOT NULL COMMENT '快照日期',
list_price DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '挂牌价(万元)',
deal_price DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '成交价(万元)',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_snapshot_listing_date (listing_id, snap_date),
KEY idx_snapshot_community_date (community_id, snap_date),
KEY idx_snapshot_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='价格快照';
-- 5) 成交记录
CREATE TABLE IF NOT EXISTS house_transaction (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
community_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '小区ID',
building_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '楼栋ID',
layout VARCHAR(32) NOT NULL DEFAULT '' COMMENT '户型',
area DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '面积(平米)',
deal_price DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '成交总价(万元)',
deal_unit_price DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '成交单价(/平米)',
list_days INT NOT NULL DEFAULT 0 COMMENT '挂牌到成交天数',
deal_date DATE NULL COMMENT '成交日期',
source VARCHAR(32) NOT NULL DEFAULT '' COMMENT '来源',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
KEY idx_transaction_community (community_id),
KEY idx_transaction_deal_date (deal_date),
KEY idx_transaction_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成交记录';
-- 6) 配套 POI地铁站/学校/医院/商圈
CREATE TABLE IF NOT EXISTS house_facility (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(128) NOT NULL COMMENT '配套名称',
type VARCHAR(32) NOT NULL DEFAULT '' COMMENT '地铁/学校/医院/商圈',
lng DECIMAL(10,6) NOT NULL DEFAULT 0 COMMENT '经度',
lat DECIMAL(10,6) NOT NULL DEFAULT 0 COMMENT '纬度',
line VARCHAR(32) NOT NULL DEFAULT '' COMMENT '地铁线路',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
KEY idx_facility_type (type),
KEY idx_facility_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配套POI';
-- 7) 小区-配套关系
CREATE TABLE IF NOT EXISTS house_community_facility (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
community_id BIGINT UNSIGNED NOT NULL COMMENT '小区ID',
facility_id BIGINT UNSIGNED NOT NULL COMMENT '配套ID',
distance INT NOT NULL DEFAULT 0 COMMENT '距离()',
commute_minutes INT NOT NULL DEFAULT 0 COMMENT '通勤分钟',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_cf_community_facility (community_id, facility_id),
KEY idx_cf_facility (facility_id),
KEY idx_cf_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小区-配套关系';
-- 8) 学区划片版本化
CREATE TABLE IF NOT EXISTS house_school_district (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
school_name VARCHAR(128) NOT NULL COMMENT '学校名',
community_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '小区ID',
district_polygon TEXT NULL COMMENT '划片范围GeoJSON',
district_year INT NOT NULL DEFAULT 0 COMMENT '划片年度',
note VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
KEY idx_sd_community (community_id),
KEY idx_sd_year (district_year),
KEY idx_sd_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学区划片';
-- 9) 用户偏好画像
CREATE TABLE IF NOT EXISTS house_preference (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
budget_min DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '预算下限(万元)',
budget_max DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '预算上限(万元)',
area_min DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '面积下限(平米)',
area_max DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '面积上限(平米)',
layouts VARCHAR(255) NOT NULL DEFAULT '' COMMENT '户型偏好JSON',
subway_lines VARCHAR(255) NOT NULL DEFAULT '' COMMENT '地铁线路JSON',
school_required INT NOT NULL DEFAULT 0 COMMENT '是否要求学区',
commute_target VARCHAR(255) NOT NULL DEFAULT '' COMMENT '通勤目标点',
commute_limit_min INT NOT NULL DEFAULT 0 COMMENT '通勤上限(分钟)',
region_prefer VARCHAR(255) NOT NULL DEFAULT '' COMMENT '区域偏好JSON',
weights VARCHAR(512) NOT NULL DEFAULT '' COMMENT '权重JSON',
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
KEY idx_pref_deleted_at (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户偏好画像';