This commit is contained in:
hailin 2025-06-19 23:36:00 +08:00
parent 34243bacc9
commit c6f243ba82
1 changed files with 94 additions and 0 deletions

View File

@ -1,6 +1,7 @@
package dao
import (
"encoding/json"
"errors"
"fmt"
"intent-system/pkg/dal/models"
@ -217,6 +218,88 @@ func (dao *NewsDAO) QueryList(cond *NewsCondition) (dos []*models.NewsDO, total
return
}
// 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")
// }
// 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_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_CREATED_TIME,
// models.NEWS_COLUMN_UPDATED_TIME,
// models.NEWS_COLUMN_EXTRA_DATA,
// ).
// Eq(models.NEWS_COLUMN_ORG_ID, cond.Org_Id)
// _, total, err = e.QueryEx()
// if err != nil {
// log.Errorf("[QueryAsync] 查询失败: %v", err)
// return nil, 0, err
// }
// 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 == "" {
// 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] 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] org_id=%d digest 不同,返回记录", cond.Org_Id)
// return []*models.NewsDO{record}, 1, nil
// }
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)
@ -273,6 +356,17 @@ func (dao *NewsDAO) QueryAsync(cond *NewsAsyncCondition) (dos []*models.NewsDO,
record := dos[0]
// ✅ 解析 ExtraDataRaw → ExtraData
if record.ExtraDataRaw != "" {
if err := json.Unmarshal([]byte(record.ExtraDataRaw), &record.ExtraData); err != nil {
log.Warnf("[QueryAsync] org_id=%d ExtraData 解析失败: %v", record.OrgId, err)
} else {
log.Infof("[QueryAsync] org_id=%d ExtraData 成功解析: %+v", record.OrgId, record.ExtraData)
}
} else {
log.Infof("[QueryAsync] org_id=%d ExtraDataRaw 为空", record.OrgId)
}
if cond.Digest == "" {
log.Infof("[QueryAsync] org_id=%d digest 为空,直接返回记录", cond.Org_Id)
return []*models.NewsDO{record}, 1, nil