123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package member
- import (
- "context"
- "fmt"
- "go-common/app/interface/main/account/model"
- artMdl "go-common/app/interface/openplatform/article/model"
- "go-common/app/service/main/archive/api"
- arcMdl "go-common/app/service/main/archive/model/archive"
- "go-common/library/log"
- "go-common/library/net/metadata"
- )
- var (
- _typeToURL = map[int64]string{
- 1: "https://www.bilibili.com/video/av%d/", // 稿件
- 2: "https://www.bilibili.com/topic/%d.html", // 话题
- 3: "https://h.bilibili.com/dy%d", // 画站
- 5: "https://vc.bilibili.com/video/%d", // 直播小视频
- 6: "https://www.bilibili.com/blackroom/ban/%d", // 封禁信息
- 7: "https://www.bilibili.com/blackroom/notice/%d", // 公告信息
- 10: "https://link.bilibili.com/p/eden/news#/newsdetail?id=%d", // 直播公告
- 11: "https://h.bilibili.com/%d", // 直播有文画
- 12: "https://www.bilibili.com/read/cv%d", // 专栏
- 13: "https://show.bilibili.com/platform/detail.html?id=%d", // 票务
- 15: "https://www.bilibili.com/judgement/case/%d", // 风纪委
- }
- )
- // ReplyHistoryList reply history list
- func (s *Service) ReplyHistoryList(c context.Context, mid int64, stime, etime, order, sort string, pn, ps int64, accessKey, cookie string) (rhl *model.ReplyHistory, err error) {
- ip := metadata.String(c, metadata.RemoteIP)
- if rhl, err = s.replyDao.ReplyHistoryList(c, mid, stime, etime, order, sort, pn, ps, accessKey, cookie, ip); err != nil {
- log.Error("s.replyDao.ReplyHistoryList error(%v)", err)
- return
- }
- idsMap := make(map[int64][]int64) // type -> ids
- unique := make(map[int64]struct{})
- for _, v := range rhl.Records {
- if _, ok := unique[v.Oid]; !ok {
- idsMap[v.Type] = append(idsMap[v.Type], v.Oid)
- unique[v.Oid] = struct{}{}
- }
- }
- rhlt, _ := s.fetchData(c, mid, idsMap, accessKey, cookie, ip)
- for _, v := range rhl.Records {
- if t, ok := rhlt[v.Type]; ok {
- for _, b := range t {
- if o, ok := b[v.Oid]; ok {
- v.Title = o.Title
- v.URL = o.URL
- }
- }
- }
- }
- return
- }
- // fetchData
- func (s *Service) fetchData(c context.Context, mid int64, idsMap map[int64][]int64, accessKey, cookie, ip string) (rhlt map[int64][]map[int64]*model.RecordAppend, err error) {
- rhlt = make(map[int64][]map[int64]*model.RecordAppend) // type -> oid -> title/url
- for t, v := range idsMap {
- switch t {
- case 1:
- // 稿件
- if len(v) > 0 {
- var arcs map[int64]*api.Arc
- arcArg := &arcMdl.ArgAids2{Aids: v, RealIP: ip}
- if arcs, err = s.arcRPC.Archives3(c, arcArg); err != nil {
- log.Error("s.arcRPC.Archives3 error(%v)", err)
- return
- }
- for _, vv := range v {
- if arc, ok := arcs[vv]; ok {
- itu := &model.RecordAppend{
- Title: arc.Title,
- }
- if arc.RedirectURL != "" {
- itu.URL = arc.RedirectURL
- } else {
- itu.URL = fmt.Sprintf(_typeToURL[t], arc.Aid)
- }
- vitu := make(map[int64]*model.RecordAppend)
- vitu[vv] = itu
- rhlt[t] = append(rhlt[t], vitu)
- }
- }
- }
- case 4:
- // 活动
- if len(v) > 0 {
- var aps map[int64]*model.RecordAppend
- if aps, err = s.replyDao.ActivityPages(c, mid, v, accessKey, cookie, ip); err != nil {
- log.Error("s.replyDao.ActivityPages error(%v)", err)
- return
- }
- for _, vv := range v {
- if ap, ok := aps[vv]; ok {
- vitu := make(map[int64]*model.RecordAppend)
- vitu[vv] = ap
- rhlt[t] = append(rhlt[t], vitu)
- }
- }
- }
- case 12:
- // 专栏
- if len(v) > 0 {
- var arts map[int64]*artMdl.Meta
- artArg := &artMdl.ArgAids{Aids: v}
- if arts, err = s.artRPC.ArticleMetas(c, artArg); err != nil {
- log.Error("s.artRPC.ArticleMetas error(%v)", err)
- return
- }
- for _, vv := range v {
- if ap, ok := arts[vv]; ok {
- itu := &model.RecordAppend{
- Title: ap.Title,
- URL: fmt.Sprintf(_typeToURL[t], ap.ID),
- }
- vitu := make(map[int64]*model.RecordAppend)
- vitu[vv] = itu
- rhlt[t] = append(rhlt[t], vitu)
- }
- }
- }
- default:
- if len(v) > 0 {
- for _, vv := range v {
- itu := &model.RecordAppend{
- Title: "",
- URL: "",
- }
- if _, ok := _typeToURL[t]; ok {
- itu.URL = fmt.Sprintf(_typeToURL[t], vv)
- }
- vitu := make(map[int64]*model.RecordAppend)
- vitu[vv] = itu
- rhlt[t] = append(rhlt[t], vitu)
- }
- }
- }
- }
- return
- }
|