This commit is contained in:
hailin 2025-06-19 23:01:58 +08:00
parent 042322604d
commit cf00395c54
1 changed files with 15 additions and 5 deletions

View File

@ -218,7 +218,10 @@ func (dao *NewsDAO) QueryList(cond *NewsCondition) (dos []*models.NewsDO, total
}
func (dao *NewsDAO) QueryAsync(cond *NewsAsyncCondition) (dos []*models.NewsDO, total int64, err error) {
log.Infof("[QueryAsync] >>> 调用开始org_id=%d, digest='%s'", cond.Org_Id, cond.Digest)
if cond.Org_Id == 0 {
log.Warnf("[QueryAsync] org_id 为空,非法请求")
return nil, 0, errors.New("org_id is required")
}
@ -260,32 +263,39 @@ func (dao *NewsDAO) QueryAsync(cond *NewsAsyncCondition) (dos []*models.NewsDO,
}
if total == 0 {
log.Warnf("[QueryAsync] org_id=%d 无匹配记录", cond.Org_Id)
return nil, 0, errors.New("未找到对应 org_id 的记录")
}
if total > 1 {
log.Errorf("[QueryAsync] org_id=%d 数据异常,记录不唯一", cond.Org_Id)
return nil, 0, errors.New("org_id 不唯一,数据异常")
}
record := dos[0]
if cond.Digest == "" {
// 客户端没传 digest直接返回
log.Infof("[QueryAsync] org_id=%d digest 为空,直接返回记录", cond.Org_Id)
return []*models.NewsDO{record}, 1, nil
}
// 客户端传了 digest进行比较
log.Infof("[QueryAsync] org_id=%d 开始比较 digest客户端='%s'", cond.Org_Id, cond.Digest)
if record.ExtraData != nil {
if val, ok := record.ExtraData["digest"]; ok {
log.Infof("[QueryAsync] org_id=%d 数据库 digest='%v'", cond.Org_Id, val)
if ds, ok := val.(string); ok && ds == cond.Digest {
// 相等,不返回
log.Infof("[QueryAsync] digest 相同,跳过返回")
log.Infof("[QueryAsync] org_id=%d digest 相同,跳过返回", cond.Org_Id)
return nil, 0, nil
}
} else {
log.Infof("[QueryAsync] org_id=%d ExtraData 中无 digest 字段", cond.Org_Id)
}
} else {
log.Infof("[QueryAsync] org_id=%d ExtraData 为空", cond.Org_Id)
}
// 不相等,返回该记录
log.Infof("..................[QueryAsync] digest 不同,返回记录 org_id=%d", cond.Org_Id)
log.Infof("[QueryAsync] org_id=%d digest 不同,返回记录", cond.Org_Id)
return []*models.NewsDO{record}, 1, nil
}