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