From 4e0f5b9b8a399d45fce3af3862a42fe11286998b Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 9 Jul 2025 19:44:24 +0800 Subject: [PATCH] . --- pkg/dal/dao/news.go | 77 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/pkg/dal/dao/news.go b/pkg/dal/dao/news.go index a65af2a..5e7167e 100644 --- a/pkg/dal/dao/news.go +++ b/pkg/dal/dao/news.go @@ -375,12 +375,78 @@ 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 - } +// 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, // 注意:这里是 raw JSON 字段 +// ) + +// 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 +// } + +// // ✅ 解析 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 +// } + +func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.NewsDO, total int64, err error) { e := dao.db.Model(&dos). Table(models.TableNameNews). Select( @@ -415,6 +481,7 @@ func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.News models.NEWS_COLUMN_EXTRA_DATA, // 注意:这里是 raw JSON 字段 ) + // ✅ 如果指定了 Pairs,则做 NOT IN org_id 过滤 if cond != nil && len(cond.Pairs) > 0 { orgIDs := make([]string, 0, len(cond.Pairs)) for _, p := range cond.Pairs {