service.xpcool.com/api/house/listing/listing.go
夏犀麟 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

140 lines
5.5 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.

// Package house_listing 定义房源/挂牌管理接口,路由前缀 /house。
package house_listing
import "github.com/gogf/gf/v2/frame/g"
// ListingItem 房源列表中的一行。
type ListingItem struct {
Id uint64 `json:"id"`
CommunityId uint64 `json:"communityId"`
CommunityName string `json:"communityName"`
BuildingId uint64 `json:"buildingId"`
HouseNo string `json:"houseNo"`
Layout string `json:"layout"`
Area float64 `json:"area"`
UsableArea float64 `json:"usableArea"`
Orientation string `json:"orientation"`
Floor int `json:"floor"`
TotalFloors int `json:"totalFloors"`
Decoration string `json:"decoration"`
TotalPrice float64 `json:"totalPrice"`
UnitPrice float64 `json:"unitPrice"`
ListPrice float64 `json:"listPrice"`
Source string `json:"source"`
SourceHouseId string `json:"sourceHouseId"`
SourceUrl string `json:"sourceUrl"`
MatchGroupId uint64 `json:"matchGroupId"`
OnMarketDays int `json:"onMarketDays"`
PriceChangeCount int `json:"priceChangeCount"`
Status int `json:"status"`
Confidence int `json:"confidence"`
IsBargain int `json:"isBargain"`
ListingTime string `json:"listingTime"`
CreatedAt string `json:"createdAt"`
}
// ListingListReq 分页查询房源(统一筛选入参,供管理列表与看板共用)。
type ListingListReq struct {
g.Meta `path:"/house/listing/list" method:"post" tags:"Admin/House/Listing" summary:"房源列表"`
Page int `json:"page" d:"1" v:"min:1"`
Size int `json:"size" d:"10" v:"min:1|max:100"`
CommunityId uint64 `json:"communityId"`
Keyword string `json:"keyword"` // 匹配房号/户型
Layout string `json:"layout"`
Region string `json:"region"`
Source string `json:"source"`
PriceMin float64 `json:"priceMin"`
PriceMax float64 `json:"priceMax"`
AreaMin float64 `json:"areaMin"`
AreaMax float64 `json:"areaMax"`
Status int `json:"status"`
IsBargain int `json:"isBargain"` // 0 全部1 仅笋盘
Confidence int `json:"confidence"` // 0 全部1 仅低可信
}
// ListingListRes 是 ListingListReq 的响应。
type ListingListRes struct {
List []*ListingItem `json:"list"`
Total int `json:"total"`
}
// ListingCreateReq 新增房源(采集器/手动录入)。
type ListingCreateReq struct {
g.Meta `path:"/house/listing/create" method:"post" tags:"Admin/House/Listing" summary:"新增房源"`
CommunityId uint64 `json:"communityId" v:"required"`
BuildingId uint64 `json:"buildingId"`
HouseNo string `json:"houseNo"`
Layout string `json:"layout"`
Area float64 `json:"area"`
UsableArea float64 `json:"usableArea"`
Orientation string `json:"orientation"`
Floor int `json:"floor"`
TotalFloors int `json:"totalFloors"`
Decoration string `json:"decoration"`
TotalPrice float64 `json:"totalPrice"`
UnitPrice float64 `json:"unitPrice"`
ListPrice float64 `json:"listPrice"`
Source string `json:"source"`
SourceHouseId string `json:"sourceHouseId"`
SourceUrl string `json:"sourceUrl"`
MatchGroupId uint64 `json:"matchGroupId"`
OnMarketDays int `json:"onMarketDays"`
PriceChangeCount int `json:"priceChangeCount"`
Status int `json:"status" d:"1"`
Confidence int `json:"confidence"`
IsBargain int `json:"isBargain"`
}
// ListingCreateRes 是 ListingCreateReq 的响应。
type ListingCreateRes struct {
Id uint64 `json:"id"`
}
// ListingUpdateReq 更新房源。
type ListingUpdateReq struct {
g.Meta `path:"/house/listing/update/{id}" method:"post" tags:"Admin/House/Listing" summary:"更新房源"`
Id uint64 `json:"id" in:"path" v:"required"`
CommunityId uint64 `json:"communityId"`
BuildingId uint64 `json:"buildingId"`
HouseNo string `json:"houseNo"`
Layout string `json:"layout"`
Area float64 `json:"area"`
UsableArea float64 `json:"usableArea"`
Orientation string `json:"orientation"`
Floor int `json:"floor"`
TotalFloors int `json:"totalFloors"`
Decoration string `json:"decoration"`
TotalPrice float64 `json:"totalPrice"`
UnitPrice float64 `json:"unitPrice"`
ListPrice float64 `json:"listPrice"`
MatchGroupId uint64 `json:"matchGroupId"`
Status int `json:"status"`
Confidence int `json:"confidence"`
IsBargain int `json:"isBargain"`
}
// ListingUpdateRes 是 ListingUpdateReq 的响应。
type ListingUpdateRes struct{}
// ListingDeleteReq 删除房源(软删除)。
type ListingDeleteReq struct {
g.Meta `path:"/house/listing/delete/{id}" method:"post" tags:"Admin/House/Listing" summary:"删除房源"`
Id uint64 `json:"id" in:"path" v:"required"`
}
// ListingDeleteRes 是 ListingDeleteReq 的响应。
type ListingDeleteRes struct{}
// ListingBatchMarkReq 批量标记房源(置信度/笋盘/状态)。
type ListingBatchMarkReq struct {
g.Meta `path:"/house/listing/batch-mark" method:"post" tags:"Admin/House/Listing" summary:"批量标记房源"`
Ids []uint64 `json:"ids" v:"required"`
Field string `json:"field" v:"required"` // confidence/isBargain/status
Value int `json:"value"`
}
// ListingBatchMarkRes 是 ListingBatchMarkReq 的响应。
type ListingBatchMarkRes struct {
Affected int64 `json:"affected"`
}