package app import ( "context" "qnc-server/app/main/api/internal/svc" "qnc-server/app/main/api/internal/types" "qnc-server/app/main/model" "github.com/zeromicro/go-zero/core/logx" ) type GetHomeDynamicDataLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewGetHomeDynamicDataLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetHomeDynamicDataLogic { return &GetHomeDynamicDataLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *GetHomeDynamicDataLogic) GetHomeDynamicData(req *types.GetHomeDynamicDataReq) (resp *types.GetHomeDynamicDataResp, err error) { // 1. 获取真实查询案例 (支持增量查询) // 增加日志输出,方便调试 l.Infof("获取首页动态数据, lastId: %d", req.LastId) builder := l.svcCtx.InquiryRecordModel.SelectBuilder().Where("status = ?", 1) var records []*model.InquiryRecord if req.LastId > 0 { // 增量获取大于 lastId 的记录 records, err = l.svcCtx.InquiryRecordModel.FindPageListByIdASC(l.ctx, builder, req.LastId, 50) } else { // 首次加载获取最新的 10 条 records, err = l.svcCtx.InquiryRecordModel.FindPageListByPage(l.ctx, builder, 1, 10, "id DESC") } if err != nil { l.Errorf("查询查询记录失败: %v", err) } cases := make([]types.InquiryRecordItem, 0) if err == nil && len(records) > 0 { for _, r := range records { cases = append(cases, types.InquiryRecordItem{ Id: r.Id, Tag: r.InquiryTag, Vin: r.VinMasked, Model: r.CarModel, }) } } else { // 如果数据库没有数据或查询失败,返回一些兜底的 Mock 数据,确保前端有展示 if req.LastId == 0 { l.Info("使用兜底 Mock 案例数据") mockCases := []struct { Id int64 Tag string Vin string Model string }{ {1, "查询成功", "湘A·12345", "奔驰GLC"}, {2, "查询成功", "粤B·67890", "丰田凯美瑞"}, {3, "查询成功", "京A·00011", "特斯拉ModelY"}, {4, "查询成功", "苏E·88888", "大众迈腾"}, {5, "查询成功", "沪A·87654", "宝马325"}, } for _, m := range mockCases { cases = append(cases, types.InquiryRecordItem{ Id: m.Id, Tag: m.Tag, Vin: m.Vin, Model: m.Model, }) } } } // 2. 评价数据不再从后端返回,改为前端硬编码 reviews := make([]types.ReviewItem, 0) return &types.GetHomeDynamicDataResp{ Cases: cases, Reviews: reviews, }, nil }