123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- package service
- import (
- "context"
- "fmt"
- "strconv"
- "time"
- "go-common/app/admin/main/videoup-task/dao"
- "go-common/app/admin/main/videoup-task/model"
- accmdl "go-common/app/service/main/account/model"
- "go-common/library/database/sql"
- "go-common/library/ecode"
- "go-common/library/log"
- "go-common/library/queue/databus/report"
- )
- //GetVideoList list qa video tasks
- func (s *Service) GetVideoList(ctx context.Context, pm *model.ListParams) (list *model.QAVideoList, err error) {
- var (
- listLen int
- detailMap map[int64]map[string]int64
- midList []int64
- users map[int64]*model.UserRole
- infos map[int64]*accmdl.Info
- upGroupList map[int64][]*model.UPGroup
- )
- if list, err = s.searchQAVideo(ctx, pm); err != nil || list == nil || len(list.Result) <= 0 {
- return
- }
- ids := make([]int64, listLen)
- uids := make([]int64, listLen)
- for _, item := range list.Result {
- ids = append(ids, item.ID)
- uids = append(uids, item.UID)
- }
- if detailMap, midList, err = s.dao.QAVideoDetail(ctx, ids); err != nil {
- return
- }
- if users, err = s.dao.GetUsernameAndRole(ctx, uids); err != nil {
- return
- }
- if infos, err = s.dao.AccountInfos(ctx, midList); err != nil {
- return
- }
- //获取列表页获取
- if upGroupList, err = s.dao.UPGroups(ctx, midList); err != nil {
- return
- }
- for _, item := range list.Result {
- item.User = users[item.UID]
- item.StateName = model.QAStates[item.State]
- item.UPName = ""
- dt, exist := detailMap[item.ID]
- if exist {
- item.DetailID = dt["detail_id"]
- item.TaskUTime = dt["task_utime"]
- item.MID = dt["mid"]
- item.UPGroupList = upGroupList[item.MID]
- if infos[item.MID] != nil {
- item.UPName = infos[item.MID].Name
- }
- }
- }
- return
- }
- //AddQATaskVideo add a qa video task
- func (s *Service) AddQATaskVideo(ctx context.Context, detail *model.AddVideoParams) (taskID int64, err error) {
- var vid int64
- if vid, err = s.dao.GetVID(ctx, detail.AID, detail.CID); err != nil {
- log.Error("AddQATaskVideo s.dao.GetVID(aid(%d), cid(%d)) error(%v)", detail.AID, detail.CID, err)
- return
- }
- if vid <= 0 {
- log.Error("AddQATaskVideo non-deleted video(aid(%d), cid(%d)) not exist", detail.AID, detail.CID)
- return
- }
- taskID, err = s.insertVideoTask(ctx, detail)
- return
- }
- func (s *Service) insertVideoTask(ctx context.Context, detail *model.AddVideoParams) (taskID int64, err error) {
- var (
- tx *sql.Tx
- detailID int64
- )
- defer func() {
- if msg := recover(); msg != nil {
- if tx != nil {
- tx.Rollback()
- }
- log.Error("insertVideoTask panic recover, msg(%s)", msg)
- }
- }()
- if tx, err = s.dao.BeginTran(ctx); err != nil {
- return
- }
- if detailID, err = s.dao.InsertQAVideo(tx, &detail.VideoDetail); err != nil {
- tx.Rollback()
- return
- }
- if taskID, err = s.dao.InTaskQA(tx, detail.OUID, detailID, model.QATypeVideo); err != nil {
- tx.Rollback()
- return
- }
- if err = tx.Commit(); err != nil {
- dao.PromeErr("arcdb: commit", "insertVideoTask commit error(%v) aid(%d) cid(%d)", err, detail.AID, detail.CID)
- }
- return
- }
- func (s *Service) getQATaskVideo(ctx context.Context, id int64, simple bool) (task *model.QATaskVideo, err error) {
- if simple {
- task, err = s.dao.QATaskVideoSimpleByID(ctx, id)
- } else {
- task, err = s.dao.QATaskVideoByID(ctx, id)
- }
- if err != nil {
- return
- }
- if task == nil {
- err = ecode.NothingFound
- return
- }
- task.GetAttributeList()
- return
- }
- //GetDetail get qa video task detail
- func (s *Service) GetDetail(ctx context.Context, id int64) (dt *model.TaskVideoDetail, err error) {
- var (
- taskVideo *model.QATaskVideo
- video *model.Video
- history []*model.VideoOperInfo
- )
- if taskVideo, err = s.getQATaskVideo(ctx, id, false); err != nil {
- return
- }
- info := &model.VideoTaskInfo{
- QATaskVideo: *taskVideo,
- }
- groups, _ := s.dao.UPGroups(ctx, []int64{taskVideo.MID})
- info.UPGroupList = groups[taskVideo.MID]
- info.GetWarnings()
- if video, err = s.getVideo(ctx, taskVideo.AID, taskVideo.CID); err != nil {
- return
- }
- if history, err = s.getVideoOperInfo(ctx, video.ID); err != nil {
- return
- }
- dt = &model.TaskVideoDetail{
- Task: info,
- Video: video,
- VideoHistory: history,
- }
- return
- }
- //QAVideoSubmit submit qa video task
- func (s *Service) QAVideoSubmit(ctx context.Context, username string, uid int64, vp *model.QASubmitParams) (err error) {
- var (
- task *model.QATaskVideo
- video *model.Video
- )
- if task, err = s.getQATaskVideo(ctx, vp.ID, true); err != nil {
- log.Error("QAVideoSubmit s.arc.QATaskVideoByID error(%v), id(%d) task(%+v)", err, vp.ID, task)
- return
- }
- if video, err = s.getVideo(ctx, task.AID, task.CID); err != nil {
- log.Error("sendLog s.getVideo error(%v) qa.id(%d) aid(%d) cid(%d)", err, vp.ID, task.AID, task.CID)
- return
- }
- //不重复质检
- if task.State == model.QAStateFinish {
- return
- }
- //更新task
- task.State = model.QAStateFinish
- task.FTime = time.Now()
- if _, err = s.dao.UpTask(ctx, vp.ID, task.State, task.FTime); err != nil {
- return
- }
- s.dao.AddVideoOper(ctx, task.AID, uid, video.ID, video.Attribute, video.Status, 0, fmt.Sprintf("一审任务质检TAG: [%s]", vp.QATag), vp.QaNote)
- s.sendLog(ctx, username, uid, video, task, vp)
- return
- }
- func (s *Service) sendLog(ctx context.Context, username string, uid int64, video *model.Video, task *model.QATaskVideo, vp *model.QASubmitParams) (err error) {
- var (
- note string
- taskUIDName string
- )
- if task == nil || len(task.AttributeList) == 0 {
- log.Error("sendLog task/task.attributelist not exist, task(%+v) params(%+v)", task, vp)
- return
- }
- if note, err = task.GetNote(); err != nil {
- log.Error("sendLog task.GetNote() error(%v), params(%+v)", err, vp)
- return
- }
- if vp.Norank == 1 {
- video.AttributeList["norank"] = 1
- }
- if vp.Nodynamic == 1 {
- video.AttributeList["nodynamic"] = 1
- }
- if vp.Norecommend == 1 {
- video.AttributeList["norecommend"] = 1
- }
- if vp.Nosearch == 1 {
- video.AttributeList["nosearch"] = 1
- }
- if vp.PushBlog == 1 {
- video.AttributeList["push_blog"] = 1
- }
- if vp.OverseaBlock == 1 {
- video.AttributeList["oversea_block"] = 1
- }
- video.TagID = vp.TagID
- video.Status = vp.AuditStatus
- video.Note = vp.Note
- video.Reason = vp.Reason
- video.Encoding = vp.Encoding
- if taskUIDNames, err := s.dao.GetUsername(ctx, []int64{task.UID}); err != nil {
- taskUIDName = ""
- err = nil
- } else {
- taskUIDName = taskUIDNames[task.UID]
- }
- content := map[string]interface{}{
- "audit_status": task.AuditStatus,
- "audit_attr": task.AttributeList,
- "audit_tag_id": task.TagID,
- "audit_note": note,
- "qa_status": video.Status,
- "qa_attr": video.AttributeList,
- "qa_tag_id": video.TagID,
- "qa_note": video.Note,
- }
- data := &report.ManagerInfo{
- Uname: username,
- UID: uid,
- Business: model.LogQATask,
- Type: model.LogQATaskVideo,
- Oid: vp.ID,
- Action: strconv.Itoa(int(video.Status)),
- Ctime: task.FTime,
- Index: []interface{}{task.TaskID, task.MID, task.CTime.Unix(), strconv.FormatInt(vp.QaTagID, 10), strconv.FormatInt(task.UID, 10), taskUIDName},
- Content: content,
- }
- report.Manager(data)
- log.Info(" sendLog data(%+v)", data)
- return
- }
- //UpVideoUTime update qa video task utime
- func (s *Service) UpVideoUTime(ctx context.Context, aid, cid, taskID, utime int64) (err error) {
- var id int64
- if id, err = s.dao.GetQAVideoID(ctx, aid, cid, taskID); err != nil {
- log.Error("UpVideoUTime s.dao.GetQAVideoID error(%v) aid(%d) cid(%d) taskid(%d) utime(%d)", err, aid, cid, taskID, utime)
- return
- }
- if id <= 0 {
- log.Error("UpVideoUTime s.dao.GetQAVideoID not found aid(%d) cid(%d) taskid(%d) utime(%d)", aid, cid, taskID, utime)
- err = ecode.RequestErr
- return
- }
- return s.dao.UpdateQAVideoUTime(ctx, aid, cid, taskID, utime)
- }
- func (s *Service) delProc() {
- var (
- err error
- qaVideoRows, qaTaskRows int64 = 1, 1
- limit = 1000
- )
- for {
- deadLine := time.Now().AddDate(0, -1, 0)
- for {
- if qaVideoRows > 0 {
- if qaVideoRows, err = s.dao.DelQAVideo(context.TODO(), deadLine, limit); err != nil {
- log.Error("delProc s.dao.DelQAVideo(%v,%d) error(%v)", deadLine, limit, err)
- }
- }
- if qaTaskRows > 0 {
- if qaTaskRows, err = s.dao.DelQATask(context.TODO(), deadLine, limit); err != nil {
- log.Error("delProc s.dao.DelQATask(%v,%d) error(%v)", deadLine, limit, err)
- }
- }
- if qaVideoRows+qaTaskRows == 0 {
- break
- }
- time.Sleep(time.Minute)
- }
- time.Sleep(time.Hour * 24)
- }
- }
|