123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package service
- import (
- "context"
- "time"
- "go-common/app/admin/main/dm/model"
- "go-common/app/service/main/archive/api"
- "go-common/app/service/main/archive/model/archive"
- "go-common/library/log"
- manager "go-common/library/queue/databus/report"
- )
- // ArchiveList get archive list.
- func (s *Service) ArchiveList(c context.Context, req *model.ArchiveListReq) (res *model.ArchiveResult, err error) {
- var (
- oids, aids []int64
- aidMap = make(map[int64]struct{})
- arcMap = make(map[int64]*model.ArcVideo)
- archiveTypes = make(map[int64]*model.ArchiveType)
- subs map[int64]*model.Subject
- r = &model.SearchSubjectReq{
- State: req.State,
- Attrs: req.Attrs,
- Pn: req.Pn,
- Ps: req.Ps,
- Sort: req.Sort,
- Order: req.Order,
- }
- )
- res = &model.ArchiveResult{}
- res.Page = &model.Page{}
- if req.ID > 0 {
- switch req.IDType {
- case "oid":
- r.Oids = append(r.Oids, req.ID)
- case "mid":
- r.Mids = append(r.Mids, req.ID)
- case "aid":
- r.Aids = append(r.Aids, req.ID)
- case "ep", "ss":
- if r.Aids, r.Oids, err = s.dao.SeasonInfos(c, req.IDType, req.ID); err != nil {
- err = nil
- return
- }
- }
- }
- data := make([]*model.DMSubject, 0)
- if len(r.Aids) > 0 && req.Page >= 1 {
- var (
- pages []*api.Page
- arg = archive.ArgAid2{Aid: r.Aids[0]}
- )
- if pages, err = s.arcRPC.Page3(c, &arg); err != nil {
- log.Error("arcRPC.Page3(%v) error(%v)", arg, err)
- return
- }
- if len(pages) < int(req.Page) {
- log.Error("req.Page too big(%d) error(%v)", req.Page, err)
- return
- }
- r.Oids = append(r.Oids, pages[req.Page-1].Cid)
- }
- res = new(model.ArchiveResult)
- if oids, res.Page, err = s.dao.SearchSubject(c, r); err != nil {
- return
- }
- if subs, err = s.dao.Subjects(c, model.SubTypeVideo, oids); err != nil {
- return
- }
- for _, oid := range oids {
- if sub, ok := subs[oid]; ok {
- s := &model.DMSubject{
- OID: sub.Oid,
- Type: sub.Type,
- AID: sub.Pid,
- ACount: sub.ACount,
- Limit: sub.Maxlimit,
- CTime: sub.Ctime,
- MTime: sub.Mtime,
- MID: sub.Mid,
- State: sub.State,
- }
- data = append(data, s)
- }
- }
- if len(data) <= 0 {
- return
- }
- for _, idx := range data {
- if _, ok := aidMap[idx.AID]; !ok {
- aidMap[idx.AID] = struct{}{}
- aids = append(aids, idx.AID)
- }
- }
- if arcMap, err = s.dao.ArchiveVideos(c, aids); err != nil {
- return
- }
- if archiveTypes, err = s.dao.TypeInfo(c); err != nil {
- return
- }
- for _, idx := range data {
- info, ok := arcMap[idx.AID] // get archive info
- if !ok {
- continue
- }
- idx.Title = info.Archive.Title
- idx.TID = info.Archive.TID
- if v, ok := archiveTypes[idx.TID]; ok {
- idx.TName = v.Name
- }
- if len(info.Videos) > 0 { // get ep_title name
- for _, video := range info.Videos {
- if video.CID == idx.OID {
- idx.ETitle = video.Title
- }
- }
- }
- }
- res.ArcLists = data
- return
- }
- // UptSubjectsState change oids subject state and send manager log.
- func (s *Service) UptSubjectsState(c context.Context, tp int32, uid int64, uname string, oids []int64, state int32, comment string) (err error) {
- var affect int64
- for _, oid := range oids {
- if affect, err = s.dao.UpSubjectState(c, tp, oid, state); err != nil {
- return
- }
- if affect == 0 {
- log.Info("s.UpSubjectState affect=0 oid(%d)", oid)
- continue
- }
- managerInfo := &manager.ManagerInfo{
- UID: uid,
- Uname: uname,
- Business: model.DMLogBizID,
- Type: int(tp),
- Oid: oid,
- Ctime: time.Now(),
- Content: map[string]interface{}{
- "comment": comment,
- },
- }
- if state == model.SubStateOpen {
- managerInfo.Action = "开启弹幕池"
- } else {
- managerInfo.Action = "关闭弹幕池"
- }
- manager.Manager(managerInfo)
- log.Info("s.managerLogSend(%+v)", managerInfo)
- }
- return
- }
- // UpSubjectMaxLimit update maxlimit in dm subject.
- func (s *Service) UpSubjectMaxLimit(c context.Context, tp int32, oid, maxlimit int64) (err error) {
- _, err = s.dao.UpSubjectMaxlimit(c, tp, oid, maxlimit)
- return
- }
- // SubjectLog get subject log
- func (s *Service) SubjectLog(c context.Context, tp int32, oid int64) (data []*model.SubjectLog, err error) {
- data, err = s.dao.SearchSubjectLog(c, tp, oid)
- return
- }
|