|
@@ -0,0 +1,670 @@
|
|
|
+package schedule
|
|
|
+
|
|
|
+import (
|
|
|
+ "github.com/robfig/cron/v3"
|
|
|
+ "log"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+ "youngee_b_api/app/dao"
|
|
|
+ "youngee_b_api/app/entity"
|
|
|
+ "youngee_b_api/app/service/review_service"
|
|
|
+)
|
|
|
+
|
|
|
+func AutoTaskReview() error {
|
|
|
+ // 新建一个定时任务对象
|
|
|
+ crontab := cron.New(cron.WithSeconds()) // 精确到秒
|
|
|
+ spec := "0 */5 * * * ?" //cron表达式,每5分钟一次
|
|
|
+ // "0 0 12 * * ?" 每天中午12点执行
|
|
|
+
|
|
|
+ // 添加定时任务
|
|
|
+ // 定时任务1 品牌种草API自动审核
|
|
|
+ _, err1 := crontab.AddFunc(spec, AutoProjectReviewTask)
|
|
|
+ if err1 != nil {
|
|
|
+ return err1
|
|
|
+ }
|
|
|
+ // 定时任务2 电商带货API自动审核
|
|
|
+ _, err2 := crontab.AddFunc(spec, AutoSelectionReviewTask)
|
|
|
+ if err2 != nil {
|
|
|
+ return err2
|
|
|
+ }
|
|
|
+ // 定时任务3 本地生活API自动审核
|
|
|
+ _, err3 := crontab.AddFunc(spec, AutoLocalLifeReviewTask)
|
|
|
+ if err3 != nil {
|
|
|
+ return err3
|
|
|
+ }
|
|
|
+
|
|
|
+ // 启动定时器
|
|
|
+ crontab.Start()
|
|
|
+ // 定时任务是另起协程执行的,这里使用 select 简单阻塞.需要根据实际情况进行控制
|
|
|
+ //select {} //阻塞主线程停止
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// 定时任务1 品牌种草API自动审核
|
|
|
+func AutoProjectReviewTask() {
|
|
|
+ log.Println("AutoProjectReviewTask running Start, Time :", time.Now())
|
|
|
+
|
|
|
+ var reviewProjects []*entity.ReviewProject
|
|
|
+ reviewProjects, _ = dao.ProjectReviewDao{}.GetProjectReviewByStatus(1)
|
|
|
+ reviewService := review_service.GetConfig()
|
|
|
+ for _, reviewProject := range reviewProjects {
|
|
|
+
|
|
|
+ if reviewProject.TaskName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewProject.TaskName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewProject.TaskDetail != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewProject.TaskDetail)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewProject.ProductName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewProject.ProductName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewProject.ProductDetail != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewProject.ProductDetail)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewProject.MainPhoto != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(reviewProject.MainPhoto)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ images := strings.Split(reviewProject.Images, ",")
|
|
|
+ imageFlag := false
|
|
|
+ for _, image := range images {
|
|
|
+ if image != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(image)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ imageFlag = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if imageFlag {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ documentJobIds := strings.Split(reviewProject.DocumentJobIds, ",")
|
|
|
+ documentFlag := 0 // 0通过 1未通过 2正在运行
|
|
|
+ for _, documentJobId := range documentJobIds {
|
|
|
+ if documentJobId != "" {
|
|
|
+ var status *string
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ status, suggestion, reviewErr = reviewService.CheckDocumentInfo(documentJobId)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr == nil && "running" == *status {
|
|
|
+ documentFlag = 2
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
|
|
|
+ documentFlag = 1
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if documentFlag == 2 {
|
|
|
+ continue
|
|
|
+ } else if documentFlag == 1 {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ videoJobIds := strings.Split(reviewProject.VideoJobIds, ",")
|
|
|
+ videoFlag := 0 // 0通过 1未通过 2正在运行
|
|
|
+ for _, videoJobId := range videoJobIds {
|
|
|
+ if videoJobId != "" {
|
|
|
+ var status *string
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ status, suggestion, reviewErr = reviewService.CheckVideoInfo(videoJobId)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr == nil && "running" == *status {
|
|
|
+ videoFlag = 2
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
|
|
|
+ videoFlag = 1
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if videoFlag == 2 {
|
|
|
+ continue
|
|
|
+ } else if videoFlag == 1 {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ // 审核通过
|
|
|
+ _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 2})
|
|
|
+ _ = dao.ProjectDAO{}.UpdateProject(entity.Project{ProjectId: reviewProject.ProjectID, ProjectStatus: 4})
|
|
|
+ }
|
|
|
+
|
|
|
+ log.Println("AutoProjectReviewTask running End, Time :", time.Now())
|
|
|
+}
|
|
|
+
|
|
|
+// 定时任务2 电商带货API自动审核
|
|
|
+func AutoSelectionReviewTask() {
|
|
|
+ log.Println("AutoSelectionInvalidTask running Start, Time :", time.Now())
|
|
|
+
|
|
|
+ var reviewSelections []*entity.ReviewSelection
|
|
|
+ reviewSelections, _ = dao.SelectionReviewDao{}.GetSelectionReviewByStatus(1)
|
|
|
+ reviewService := review_service.GetConfig()
|
|
|
+ for _, reviewSelection := range reviewSelections {
|
|
|
+
|
|
|
+ if reviewSelection.TaskName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewSelection.TaskName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewSelection.ProductName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewSelection.ProductName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewSelection.ProductDetail != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewSelection.ProductDetail)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewSelection.MainPhoto != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(reviewSelection.MainPhoto)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ images := strings.Split(reviewSelection.Images, ",")
|
|
|
+ imageFlag := false
|
|
|
+ for _, image := range images {
|
|
|
+ if image != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(image)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ imageFlag = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if imageFlag {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ documentJobIds := strings.Split(reviewSelection.DocumentJobIds, ",")
|
|
|
+ documentFlag := 0 // 0通过 1未通过 2正在运行
|
|
|
+ for _, documentJobId := range documentJobIds {
|
|
|
+ if documentJobId != "" {
|
|
|
+ var status *string
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ status, suggestion, reviewErr = reviewService.CheckDocumentInfo(documentJobId)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr == nil && "running" == *status {
|
|
|
+ documentFlag = 2
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
|
|
|
+ documentFlag = 1
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if documentFlag == 2 {
|
|
|
+ continue
|
|
|
+ } else if documentFlag == 1 {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ videoJobIds := strings.Split(reviewSelection.VideoJobIds, ",")
|
|
|
+ videoFlag := 0 // 0通过 1未通过 2正在运行
|
|
|
+ for _, videoJobId := range videoJobIds {
|
|
|
+ if videoJobId != "" {
|
|
|
+ var status *string
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ status, suggestion, reviewErr = reviewService.CheckVideoInfo(videoJobId)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr == nil && "running" == *status {
|
|
|
+ videoFlag = 2
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
|
|
|
+ videoFlag = 1
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if videoFlag == 2 {
|
|
|
+ continue
|
|
|
+ } else if videoFlag == 1 {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ // 审核通过
|
|
|
+ _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 2})
|
|
|
+ _ = dao.SelectionInfoDAO{}.UpdateSelectionInfo(entity.SelectionInfo{SelectionID: reviewSelection.SelectionID, SelectionStatus: 4})
|
|
|
+ }
|
|
|
+
|
|
|
+ log.Println("AutoSelectionInvalidTask running End, Time :", time.Now())
|
|
|
+}
|
|
|
+
|
|
|
+// 定时任务3 本地生活API自动审核
|
|
|
+func AutoLocalLifeReviewTask() {
|
|
|
+ log.Println("AutoLocalLifeInvalidTask running Start, Time :", time.Now())
|
|
|
+
|
|
|
+ var reviewLocalLifes []*entity.ReviewLocalLife
|
|
|
+ reviewLocalLifes, _ = dao.LocalLifeReviewDao{}.GetLocalReviewByStatus(1)
|
|
|
+ reviewService := review_service.GetConfig()
|
|
|
+ for _, reviewLocalLife := range reviewLocalLifes {
|
|
|
+
|
|
|
+ if reviewLocalLife.TaskName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TaskName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewLocalLife.TaskDetail != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TaskDetail)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewLocalLife.StoreName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.StoreName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if reviewLocalLife.StoreDetail != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.StoreDetail)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if reviewLocalLife.StoreMainPhoto != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(reviewLocalLife.StoreMainPhoto)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if reviewLocalLife.TeamBuyingName != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TeamBuyingName)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if reviewLocalLife.TeamBuyingDetail != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TeamBuyingDetail)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if reviewLocalLife.TeamBuyingMainPhoto != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(reviewLocalLife.TeamBuyingMainPhoto)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ images := strings.Split(reviewLocalLife.Images, ",")
|
|
|
+ imageFlag := false
|
|
|
+ for _, image := range images {
|
|
|
+ if image != "" {
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ suggestion, reviewErr = reviewService.CheckImage(image)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "pass" != *suggestion {
|
|
|
+ imageFlag = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if imageFlag {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ documentJobIds := strings.Split(reviewLocalLife.DocumentJobIds, ",")
|
|
|
+ documentFlag := 0 // 0通过 1未通过 2正在运行
|
|
|
+ for _, documentJobId := range documentJobIds {
|
|
|
+ if documentJobId != "" {
|
|
|
+ var status *string
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ status, suggestion, reviewErr = reviewService.CheckDocumentInfo(documentJobId)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr == nil && "running" == *status {
|
|
|
+ documentFlag = 2
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
|
|
|
+ documentFlag = 1
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if documentFlag == 2 {
|
|
|
+ continue
|
|
|
+ } else if documentFlag == 1 {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ videoJobIds := strings.Split(reviewLocalLife.VideoJobIds, ",")
|
|
|
+ videoFlag := 0 // 0通过 1未通过 2正在运行
|
|
|
+ for _, videoJobId := range videoJobIds {
|
|
|
+ if videoJobId != "" {
|
|
|
+ var status *string
|
|
|
+ var suggestion *string
|
|
|
+ var reviewErr error
|
|
|
+ i := 3
|
|
|
+ for {
|
|
|
+ status, suggestion, reviewErr = reviewService.CheckVideoInfo(videoJobId)
|
|
|
+ if reviewErr == nil || i == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i -= 1
|
|
|
+ }
|
|
|
+ if reviewErr == nil && "running" == *status {
|
|
|
+ videoFlag = 2
|
|
|
+ break
|
|
|
+ }
|
|
|
+ if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
|
|
|
+ videoFlag = 1
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if videoFlag == 2 {
|
|
|
+ continue
|
|
|
+ } else if videoFlag == 1 {
|
|
|
+ // 交给人工审核
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ // 审核通过
|
|
|
+ _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 2})
|
|
|
+ _ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{LocalID: reviewLocalLife.LocalID, TaskStatus: 4})
|
|
|
+ }
|
|
|
+
|
|
|
+ log.Println("AutoLocalLifeInvalidTask running End, Time :", time.Now())
|
|
|
+}
|