12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package ugc
- import (
- "encoding/json"
- "os"
- "time"
- model "go-common/app/job/main/tv/model/pgc"
- "go-common/library/log"
- )
- const (
- errFormat = "Func:[%s] - Step:[%s] - Error:[%v]"
- //ContLimit is used for getting pgc season value 50 records every time
- _ContLimit = 50
- )
- func (s *Service) seaUgcContproc() {
- for {
- if s.daoClosed {
- log.Info("seaUgcContproc DB closed!")
- return
- }
- s.seaUgcCont()
- time.Sleep(time.Duration(s.c.Search.Cfg.UploadFre))
- }
- }
- // seaUgcCont is used for generate search content content
- func (s *Service) seaUgcCont() {
- var (
- archives []*model.SearUgcCon
- str []byte // the json string to write in file
- cycle int //cycle count and every cycle is 50 records
- maxID = 0
- cnt int
- file *os.File
- err error
- )
- if cnt, err = s.dao.UgcCnt(ctx); err != nil {
- log.Error(errFormat, "searUgcCont", "UgcCnt", err)
- return
- }
- cycle = cnt / _ContLimit
- if cnt%_ContLimit != 0 {
- cycle = cnt/_ContLimit + 1
- }
- // write into the file
- if file, err = os.OpenFile(s.c.Search.UgcContPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0766); err != nil {
- log.Error(errFormat, "searUgcCont", "OpenFile", err)
- return
- }
- //cycle get sql value
- for i := 0; i < cycle; i++ {
- if archives, maxID, err = s.dao.UgcCont(ctx, maxID, _ContLimit); err != nil {
- log.Error(errFormat, "searUgcCont", "UgcCont", err)
- return
- }
- for _, v := range archives {
- v.Typeid = s.getPType(v.Typeid)
- if str, err = json.Marshal(v); err != nil {
- log.Error(errFormat, "searUgcCont", "JsonMarshal", err)
- return
- }
- file.WriteString(string(str) + "\n")
- }
- }
- file.Close()
- //calculate file's md5
- if err = s.ftpDao.FileMd5(s.c.Search.UgcContPath, s.c.Search.UgcContMd5Path); err != nil {
- log.Error(errFormat, "searUgcCont", "fileMd5", err)
- return
- }
- // upload original file
- if err = s.ftpDao.UploadFile(s.c.Search.UgcContPath, s.c.Search.FTP.RemoteUgcCont, s.c.Search.FTP.RemoteUgcURL); err != nil {
- log.Error(errFormat, "searUgcCont-File", "uploadFile", err)
- return
- }
- // upload md5 file
- if err = s.ftpDao.UploadFile(s.c.Search.UgcContMd5Path, s.c.Search.FTP.RemoteUgcContMd5, s.c.Search.FTP.RemoteUgcURL); err != nil {
- log.Error(errFormat, "searUgcCont-Md5", "uploadFile", err)
- return
- }
- log.Info("FTP Upload Success")
- }
|