diff --git a/pkg/api/biz_api.go b/pkg/api/biz_api.go index 574e0fc..02dd445 100644 --- a/pkg/api/biz_api.go +++ b/pkg/api/biz_api.go @@ -14,6 +14,8 @@ type BizApi interface { NewsDraftPublish(c *gin.Context) //草稿发布 NewsDraftDelete(c *gin.Context) //草稿删除 NewsTag(c *gin.Context) //新闻打标签 + NewsAsync(c *gin.Context) //异步同步数据 + NewsPullNew(c *gin.Context) //拉取新的数据 QaList(c *gin.Context) //Q&A列表 QaAdd(c *gin.Context) //Q&A新增 QaEdit(c *gin.Context) //Q&A编辑 diff --git a/pkg/controllers/controller_biz.go b/pkg/controllers/controller_biz.go index 5eb4111..d767d30 100644 --- a/pkg/controllers/controller_biz.go +++ b/pkg/controllers/controller_biz.go @@ -1,11 +1,12 @@ package controllers import ( - "github.com/civet148/log" - "github.com/gin-gonic/gin" "intent-system/pkg/privilege" "intent-system/pkg/proto" "intent-system/pkg/sessions" + + "github.com/civet148/log" + "github.com/gin-gonic/gin" ) func (m *Controller) NewsList(c *gin.Context) { @@ -534,3 +535,41 @@ func (m *Controller) TagDelete(c *gin.Context) { } m.OK(c, resp, 1, 1) } + +func (m *Controller) NewsAsync(c *gin.Context) { + var req proto.NewsListReq + if err := m.bindJSON(c, &req); err != nil { + log.Errorf("%s", err) + return + } + ctx := sessions.GetContext(c) + var ok bool + if ctx != nil { + ok = m.CheckPrivilege(c, ctx, privilege.NewsAccess) + } + resp, total, code := m.BizCore.NewsList(ctx, &req, ok) + if !code.Ok() { + m.Error(c, code) + return + } + m.OK(c, resp, len(resp.List), total) +} + +func (m *Controller) NewsPullNew(c *gin.Context) { + var req proto.NewsListReq + if err := m.bindJSON(c, &req); err != nil { + log.Errorf("%s", err) + return + } + ctx := sessions.GetContext(c) + var ok bool + if ctx != nil { + ok = m.CheckPrivilege(c, ctx, privilege.NewsAccess) + } + resp, total, code := m.BizCore.NewsList(ctx, &req, ok) + if !code.Ok() { + m.Error(c, code) + return + } + m.OK(c, resp, len(resp.List), total) +} diff --git a/pkg/dal/models/news_do.go b/pkg/dal/models/news_do.go index 4b48235..90c7bb9 100644 --- a/pkg/dal/models/news_do.go +++ b/pkg/dal/models/news_do.go @@ -66,7 +66,8 @@ type NewsDO struct { DataTime string `json:"data_time" db:"data_time" bson:"data_time"` //数据生成时间 CreatedTime string `json:"created_time" db:"created_time" sqlca:"readonly" bson:"created_time"` //数据创建时间 UpdatedTime string `json:"updated_time" db:"updated_time" sqlca:"readonly" bson:"updated_time"` //数据更新时间 - ExtraData CommonExtraData `json:"extra_data" db:"extra_data" sqlca:"isnull" bson:"extra_data"` //附带数据(JSON) + ExtraDataRaw string `db:"extra_data" json:"-"` // 原始 JSON 字符串,接收数据库字段 + ExtraData map[string]interface{} `db:"-" json:"extra_data"` // 实际对外使用的 map,跳过 DB 映射 } func (do *NewsDO) GetId() int64 { return do.Id } @@ -125,8 +126,8 @@ func (do *NewsDO) GetCreatedTime() string { return do.CreatedTime } func (do *NewsDO) SetCreatedTime(v string) { do.CreatedTime = v } func (do *NewsDO) GetUpdatedTime() string { return do.UpdatedTime } func (do *NewsDO) SetUpdatedTime(v string) { do.UpdatedTime = v } -func (do *NewsDO) GetExtraData() CommonExtraData { return do.ExtraData } -func (do *NewsDO) SetExtraData(v CommonExtraData) { do.ExtraData = v } +func (do *NewsDO) GetExtraData() map[string]interface{} { return do.ExtraData } +func (do *NewsDO) SetExtraData(v map[string]interface{}) { do.ExtraData = v } /* CREATE TABLE `news` ( diff --git a/pkg/proto/proto_biz.go b/pkg/proto/proto_biz.go index 75cfde7..4df84bc 100644 --- a/pkg/proto/proto_biz.go +++ b/pkg/proto/proto_biz.go @@ -279,3 +279,12 @@ type TagDeleteReq struct { type TagDeleteResp struct { } + +type NewsAsync struct { + Org_Id int64 `json:"org_id"` + Digest string `json:"digest"` +} + +type NewsAsyncResp struct { + List []*models.NewsDO `json:"list"` +} diff --git a/pkg/routers/router_biz.go b/pkg/routers/router_biz.go index 08c9acc..e7e36c7 100644 --- a/pkg/routers/router_biz.go +++ b/pkg/routers/router_biz.go @@ -1,9 +1,10 @@ package routers import ( - "github.com/gin-gonic/gin" "intent-system/pkg/api" "intent-system/pkg/middleware" + + "github.com/gin-gonic/gin" ) const ( @@ -25,6 +26,8 @@ const ( RouterSubPathNewsDraftPublish = "/draft/publish" RouterSubPathNewsDraftDelete = "/draft/delete" RouterSubPathNewsTag = "/tag" + RouterSubPathNewsAsync = "/async" + RouterSubPathNewsPullNew = "pullnew" RouterSubPathQaList = "/list" RouterSubPathQaAdd = "/add" RouterSubPathQaEdit = "/edit" @@ -47,6 +50,8 @@ func InitRouterGroupBiz(r *gin.Engine, handlers api.BizApi) { groupNews := r.Group(GroupRouterNewsV1) groupNews.POST(RouterSubPathNewsList, handlers.NewsList) + groupNews.POST(RouterSubPathNewsAsync, handlers.NewsList) + groupNews.POST(RouterSubPathNewsPullNew, handlers.NewsList) groupNews.Use(middleware.JWT()) //use JWT token middleware { groupNews.POST(RouterSubPathNewsAdd, handlers.NewsAdd)