diff --git a/pkg/dal/dao/news.go b/pkg/dal/dao/news.go index 9c1a3ab..65b79df 100644 --- a/pkg/dal/dao/news.go +++ b/pkg/dal/dao/news.go @@ -457,6 +457,65 @@ func (dao *NewsDAO) QueryAsyncBatch(pairs []OrgDigestPair) (dos []*models.NewsDO return dos, int64(len(dos)), nil } +// func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.NewsDO, total int64, err error) { +// if cond == nil || len(cond.Pairs) == 0 { +// // 客户端没传org_id列表,返回空 +// return []*models.NewsDO{}, 0, nil +// } + +// e := dao.db.Model(&dos). +// Table(models.TableNameNews). +// Select( +// models.NEWS_COLUMN_ID, +// models.NEWS_COLUMN_ORG_ID, +// models.NEWS_COLUMN_SPIDER_ID, +// models.NEWS_COLUMN_PNAME_ID, +// models.NEWS_COLUMN_TAG, +// models.NEWS_COLUMN_CATEGORY, +// models.NEWS_COLUMN_MAIN_TITLE, +// models.NEWS_COLUMN_SUB_TITLE, +// models.NEWS_COLUMN_SUMMARY, +// models.NEWS_COLUMN_KEYWORDS, +// models.NEWS_COLUMN_SEO_KEYWORDS, +// models.NEWS_COLUMN_TAGS, +// models.NEWS_COLUMN_URL, +// models.NEWS_COLUMN_LANGUAGE, +// models.NEWS_COLUMN_DIGEST, +// models.NEWS_COLUMN_REPO_NAME, +// models.NEWS_COLUMN_IMAGE_URL, +// models.NEWS_COLUMN_LOGO_URL, +// models.NEWS_COLUMN_MODEL_PARAMETER, +// models.NEWS_COLUMN_CONTENT, +// models.NEWS_COLUMN_IS_HOTSPOT, +// models.NEWS_COLUMN_IS_OVERWRITTEN, +// models.NEWS_COLUMN_IS_DELETED, +// models.NEWS_COLUMN_IS_REPLICATE, +// models.NEWS_COLUMN_STATE, +// models.NEWS_COLUMN_DATA_TIME, +// models.NEWS_COLUMN_CREATED_TIME, +// models.NEWS_COLUMN_UPDATED_TIME, +// models.NEWS_COLUMN_EXTRA_DATA, +// ) + +// if cond != nil && len(cond.Pairs) > 0 { +// orgIDs := make([]string, 0, len(cond.Pairs)) +// for _, p := range cond.Pairs { +// orgIDs = append(orgIDs, fmt.Sprintf("%d", p.OrgId)) +// } +// notInClause := fmt.Sprintf("org_id NOT IN (%s)", strings.Join(orgIDs, ",")) +// e = e.Where(notInClause) +// } + +// _, total, err = e.QueryEx() +// if err != nil { +// log.Errorf("QueryPullNew failed: %v", err) +// return nil, 0, err +// } + +// log.Infof(".................[DEBUG] QueryPullNew 返回数据: %+v", dos) +// return +// } + func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.NewsDO, total int64, err error) { if cond == nil || len(cond.Pairs) == 0 { // 客户端没传org_id列表,返回空 @@ -494,7 +553,7 @@ func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.News models.NEWS_COLUMN_DATA_TIME, models.NEWS_COLUMN_CREATED_TIME, models.NEWS_COLUMN_UPDATED_TIME, - models.NEWS_COLUMN_EXTRA_DATA, + models.NEWS_COLUMN_EXTRA_DATA, // 注意:这里是 raw JSON 字段 ) if cond != nil && len(cond.Pairs) > 0 { @@ -512,6 +571,18 @@ func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.News return nil, 0, err } - log.Infof(".................[DEBUG] QueryPullNew 返回数据: %+v", dos) + // ✅ 解析 extra_data_raw → extra_data + for _, row := range dos { + if row.ExtraData == nil && row.ExtraDataRaw != "" { + var extra map[string]interface{} + if err := json.Unmarshal([]byte(row.ExtraDataRaw), &extra); err == nil { + row.ExtraData = extra + } else { + log.Warnf("[QueryPullNew] extra_data 解析失败 id=%d: %v", row.Id, err) + } + } + } + + log.Infof("[QueryPullNew] 返回 %d 条记录", len(dos)) return }