This commit is contained in:
hailin 2025-07-09 19:44:24 +08:00
parent add87f49a0
commit 4e0f5b9b8a
1 changed files with 72 additions and 5 deletions

View File

@ -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 {