This commit is contained in:
hailin 2025-06-20 17:00:53 +08:00
parent cdb6cf7807
commit 4dce056c5f
2 changed files with 20 additions and 8 deletions

View File

@ -948,15 +948,18 @@ func (m *BizCore) NewsAsyncBatch(ctx *itypes.Context, req *proto.NewsAsyncBatchR
} }
func (m *BizCore) NewsPullNew(ctx *itypes.Context, req *proto.NewsPullNewReq) (resp *proto.NewsPullNewResp, total int64, code itypes.BizCode) { func (m *BizCore) NewsPullNew(ctx *itypes.Context, req *proto.NewsPullNewReq) (resp *proto.NewsPullNewResp, total int64, code itypes.BizCode) {
// 1. 提取 OrgIDs // 1. 转换 List 为 Pairs只用 OrgIdDigest 忽略但结构体字段需要赋值)
orgIDs := make([]int64, 0, len(req.List)) pairs := make([]dao.OrgDigestPair, 0, len(req.List))
for _, item := range req.List { for _, item := range req.List {
orgIDs = append(orgIDs, item.OrgID) pairs = append(pairs, dao.OrgDigestPair{
OrgId: item.OrgID, // 这个字段名必须匹配 dao.OrgDigestPair 里的定义
Digest: "", // 虽然不处理,但结构体字段得占上
})
} }
// 2. 调用 DAO 查询 // 2. 调用 DAO 查询
dos, total, err := m.newsDAO.QueryPullNew(&dao.NewsPullNewCondition{ dos, total, err := m.newsDAO.QueryPullNew(&dao.NewsPullNewCondition{
OrgIDs: orgIDs, Pairs: pairs,
}) })
if err != nil { if err != nil {
return nil, 0, itypes.NewBizCodeDatabaseError(err.Error()) return nil, 0, itypes.NewBizCodeDatabaseError(err.Error())

View File

@ -22,8 +22,12 @@ type NewsAsyncCondition struct {
Digest string Digest string
} }
// type NewsPullNewCondition struct {
// OrgIDs []int64 `json:"org_ids"`
// }
type NewsPullNewCondition struct { type NewsPullNewCondition struct {
OrgIDs []int64 `json:"org_ids"` Pairs []OrgDigestPair
} }
const ( const (
@ -484,10 +488,15 @@ func (dao *NewsDAO) QueryPullNew(cond *NewsPullNewCondition) (dos []*models.News
models.NEWS_COLUMN_EXTRA_DATA, models.NEWS_COLUMN_EXTRA_DATA,
) )
// 只按 org_ids 过滤 // 🔧 仅提取 org_id忽略 digest
if len(cond.OrgIDs) > 0 { if len(cond.Pairs) > 0 {
e.NotIn(models.NEWS_COLUMN_ORG_ID, cond.OrgIDs) orgIDs := make([]int64, 0, len(cond.Pairs))
for _, p := range cond.Pairs {
orgIDs = append(orgIDs, p.OrgID)
}
e.Where(fmt.Sprintf("%s NOT IN (?)", models.NEWS_COLUMN_ORG_ID), orgIDs)
} }
_, total, err = e.QueryEx() _, total, err = e.QueryEx()
if err != nil { if err != nil {
log.Errorf("QueryPullNew failed: %v", err) log.Errorf("QueryPullNew failed: %v", err)