package house import ( "context" dashboardv1 "service.xpcool.com/api/house/dashboard" dashboard "service.xpcool.com/internal/service/house/dashboard" ) // DashboardOverview 看板统计概览。 func (c *Controller) DashboardOverview(ctx context.Context, req *dashboardv1.OverviewReq) (res *dashboardv1.OverviewRes, err error) { o, err := dashboard.Dashboard().Overview(ctx, req.Region) if err != nil { return nil, err } return &dashboardv1.OverviewRes{ CommunityCount: o.CommunityCount, ListingCount: o.ListingCount, BargainCount: o.BargainCount, LowConfidence: o.LowConfidence, AvgUnitPrice: o.AvgUnitPrice, AvgTotalPrice: o.AvgTotalPrice, AvgListDays: o.AvgListDays, }, nil } // DashboardMapPoints 地图点位聚合。 func (c *Controller) DashboardMapPoints(ctx context.Context, req *dashboardv1.MapPointsReq) (res *dashboardv1.MapPointsRes, err error) { pts, err := dashboard.Dashboard().MapPoints(ctx, req.Region, req.PriceMin, req.PriceMax, req.Status) if err != nil { return nil, err } out := make([]*dashboardv1.MapPoint, 0, len(pts)) for i := range pts { p := &pts[i] out = append(out, &dashboardv1.MapPoint{ CommunityId: p.CommunityId, Name: p.Name, Region: p.Region, Lng: p.Lng, Lat: p.Lat, AvgUnitPrice: p.AvgUnitPrice, ListingCount: p.ListingCount, BargainCount: p.BargainCount, }) } return &dashboardv1.MapPointsRes{Points: out}, nil } // DashboardPriceTrend 价格趋势聚合。 func (c *Controller) DashboardPriceTrend(ctx context.Context, req *dashboardv1.PriceTrendReq) (res *dashboardv1.PriceTrendRes, err error) { trend, err := dashboard.Dashboard().PriceTrend(ctx, req.CommunityId, req.Region, req.Limit) if err != nil { return nil, err } out := make([]*dashboardv1.TrendPoint, 0, len(trend)) for i := range trend { t := &trend[i] out = append(out, &dashboardv1.TrendPoint{Date: t.Date, AvgListPrice: t.AvgListPrice, AvgDealPrice: t.AvgDealPrice}) } return &dashboardv1.PriceTrendRes{Trend: out}, nil } // DashboardAggregateRegion 区域聚合。 func (c *Controller) DashboardAggregateRegion(ctx context.Context, req *dashboardv1.AggregateRegionReq) (res *dashboardv1.AggregateRegionRes, err error) { list, err := dashboard.Dashboard().AggregateRegion(ctx) if err != nil { return nil, err } out := make([]*dashboardv1.RegionAgg, 0, len(list)) for i := range list { r := &list[i] out = append(out, &dashboardv1.RegionAgg{ Region: r.Region, AvgUnitPrice: r.AvgUnitPrice, ListingCount: r.ListingCount, BargainCount: r.BargainCount, }) } return &dashboardv1.AggregateRegionRes{List: out}, nil }