110 lines
2.5 KiB
Go
110 lines
2.5 KiB
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"time"
|
||
|
|
||
|
"go-common/app/job/main/growup/dao"
|
||
|
"go-common/app/job/main/growup/dao/dataplatform"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// TaskAvCharge .
|
||
|
TaskAvCharge = iota + 1
|
||
|
// TaskCmCharge .
|
||
|
TaskCmCharge
|
||
|
// TaskTagRatio .
|
||
|
TaskTagRatio
|
||
|
// TaskBubbleMeta .
|
||
|
TaskBubbleMeta
|
||
|
// TaskBlacklist .
|
||
|
TaskBlacklist
|
||
|
// TaskCreativeIncome .
|
||
|
TaskCreativeIncome
|
||
|
// TaskCreativeStatis .
|
||
|
TaskCreativeStatis
|
||
|
// TaskBgmSync .
|
||
|
TaskBgmSync
|
||
|
// TaskTagIncome .
|
||
|
TaskTagIncome
|
||
|
// TaskCreativeCharge .
|
||
|
TaskCreativeCharge
|
||
|
// TaskBudget .
|
||
|
TaskBudget
|
||
|
// TaskSnapshotBubbleIncome .
|
||
|
TaskSnapshotBubbleIncome
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
_taskSuccess = 1
|
||
|
_taskFail = 2
|
||
|
)
|
||
|
|
||
|
var taskSvr *taskService
|
||
|
|
||
|
type taskService struct {
|
||
|
dao *dao.Dao
|
||
|
dp *dataplatform.Dao
|
||
|
}
|
||
|
|
||
|
// GetTaskService get task service
|
||
|
func GetTaskService() *taskService {
|
||
|
return taskSvr
|
||
|
}
|
||
|
|
||
|
// TaskReady is task ready
|
||
|
func (s *taskService) TaskReady(c context.Context, date string, typs ...int) (err error) {
|
||
|
t, err := time.ParseInLocation("2006-01-02", date, time.Local)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
ok, err := s.checkBasicStatus(c, t)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
if !ok {
|
||
|
err = fmt.Errorf("basic task not ready yet: %s", date)
|
||
|
return
|
||
|
}
|
||
|
for _, typ := range typs {
|
||
|
var status int
|
||
|
status, err = s.dao.TaskStatus(c, date, typ)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
if status != 1 {
|
||
|
err = fmt.Errorf("task(%d) not ready yet: %s", typ, date)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *taskService) setTaskSuccess(c context.Context, typ int, date, message string) (rows int64, err error) {
|
||
|
return s.dao.InsertTaskStatus(c, typ, _taskSuccess, date, message)
|
||
|
}
|
||
|
|
||
|
func (s *taskService) setTaskFail(c context.Context, typ int, date, message string) (rows int64, err error) {
|
||
|
return s.dao.InsertTaskStatus(c, typ, _taskFail, date, message)
|
||
|
}
|
||
|
|
||
|
// SetTaskStatus set task status by error
|
||
|
func (s *taskService) SetTaskStatus(c context.Context, typ int, date string, err error) (int64, error) {
|
||
|
if err != nil {
|
||
|
return s.setTaskFail(c, typ, date, err.Error())
|
||
|
}
|
||
|
return s.setTaskSuccess(c, typ, date, "success")
|
||
|
}
|
||
|
|
||
|
// checkBasicStatus check basic date status
|
||
|
func (s *taskService) checkBasicStatus(c context.Context, date time.Time) (ok bool, err error) {
|
||
|
return s.dp.SendBasicDataRequest(c, fmt.Sprintf("{\"select\": [], \"where\":{\"job_name\":{\"in\":[\"ucs_%s\"]}}}", date.Format("20060102")))
|
||
|
}
|
||
|
|
||
|
// UpdateTaskStatus update task status
|
||
|
func (s *Service) UpdateTaskStatus(c context.Context, date string, typ int, status int) (err error) {
|
||
|
_, err = s.dao.UpdateTaskStatus(c, date, typ, status)
|
||
|
return
|
||
|
}
|