auto_task_review.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. package schedule
  2. import (
  3. "github.com/caixw/lib.go/conv"
  4. "github.com/robfig/cron/v3"
  5. "log"
  6. "strings"
  7. "time"
  8. "youngee_b_api/app/dao"
  9. "youngee_b_api/app/entity"
  10. "youngee_b_api/app/service/review_service"
  11. )
  12. func AutoTaskReview() error {
  13. // 新建一个定时任务对象
  14. crontab := cron.New(cron.WithSeconds()) // 精确到秒
  15. spec := "0 */1 * * * ?" //cron表达式,每1分钟一次
  16. // "0 0 12 * * ?" 每天中午12点执行
  17. // 添加定时任务
  18. // 定时任务1 品牌种草API自动审核
  19. _, err1 := crontab.AddFunc(spec, AutoProjectReviewTask)
  20. if err1 != nil {
  21. return err1
  22. }
  23. // 定时任务2 电商带货API自动审核
  24. _, err2 := crontab.AddFunc(spec, AutoSelectionReviewTask)
  25. if err2 != nil {
  26. return err2
  27. }
  28. // 定时任务3 本地生活API自动审核
  29. _, err3 := crontab.AddFunc(spec, AutoLocalLifeReviewTask)
  30. if err3 != nil {
  31. return err3
  32. }
  33. // 启动定时器
  34. crontab.Start()
  35. // 定时任务是另起协程执行的,这里使用 select 简单阻塞.需要根据实际情况进行控制
  36. //select {} //阻塞主线程停止
  37. return nil
  38. }
  39. // 定时任务1 品牌种草API自动审核
  40. func AutoProjectReviewTask() {
  41. log.Println("AutoProjectReviewTask running Start, Time :", time.Now())
  42. var reviewProjects []*entity.ReviewProject
  43. reviewProjects, _ = dao.ProjectReviewDao{}.GetProjectReviewByStatus(1)
  44. reviewService := review_service.GetConfig()
  45. for _, reviewProject := range reviewProjects {
  46. if reviewProject.TaskName != "" {
  47. var suggestion *string
  48. var reviewErr error
  49. i := 3
  50. for {
  51. suggestion, reviewErr = reviewService.CheckContent(reviewProject.TaskName)
  52. if reviewErr == nil || i == 0 {
  53. break
  54. }
  55. i -= 1
  56. }
  57. if reviewErr != nil || "pass" != *suggestion {
  58. // 交给人工审核
  59. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  60. continue
  61. }
  62. }
  63. if reviewProject.TaskDetail != "" {
  64. var suggestion *string
  65. var reviewErr error
  66. i := 3
  67. for {
  68. suggestion, reviewErr = reviewService.CheckContent(reviewProject.TaskDetail)
  69. if reviewErr == nil || i == 0 {
  70. break
  71. }
  72. i -= 1
  73. }
  74. if reviewErr != nil || "pass" != *suggestion {
  75. // 交给人工审核
  76. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  77. continue
  78. }
  79. }
  80. if reviewProject.ProductName != "" {
  81. var suggestion *string
  82. var reviewErr error
  83. i := 3
  84. for {
  85. suggestion, reviewErr = reviewService.CheckContent(reviewProject.ProductName)
  86. if reviewErr == nil || i == 0 {
  87. break
  88. }
  89. i -= 1
  90. }
  91. if reviewErr != nil || "pass" != *suggestion {
  92. // 交给人工审核
  93. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  94. continue
  95. }
  96. }
  97. if reviewProject.ProductDetail != "" {
  98. var suggestion *string
  99. var reviewErr error
  100. i := 3
  101. for {
  102. suggestion, reviewErr = reviewService.CheckContent(reviewProject.ProductDetail)
  103. if reviewErr == nil || i == 0 {
  104. break
  105. }
  106. i -= 1
  107. }
  108. if reviewErr != nil || "pass" != *suggestion {
  109. // 交给人工审核
  110. dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  111. continue
  112. }
  113. }
  114. if reviewProject.MainPhoto != "" {
  115. var suggestion *string
  116. var reviewErr error
  117. i := 3
  118. for {
  119. suggestion, reviewErr = reviewService.CheckImage(reviewProject.MainPhoto)
  120. if reviewErr == nil || i == 0 {
  121. break
  122. }
  123. i -= 1
  124. }
  125. if reviewErr != nil || "pass" != *suggestion {
  126. // 交给人工审核
  127. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  128. continue
  129. }
  130. }
  131. images := strings.Split(reviewProject.Images, ",")
  132. imageFlag := false
  133. for _, image := range images {
  134. if image != "" {
  135. var suggestion *string
  136. var reviewErr error
  137. i := 3
  138. for {
  139. suggestion, reviewErr = reviewService.CheckImage(image)
  140. if reviewErr == nil || i == 0 {
  141. break
  142. }
  143. i -= 1
  144. }
  145. if reviewErr != nil || "pass" != *suggestion {
  146. imageFlag = true
  147. break
  148. }
  149. }
  150. }
  151. if imageFlag {
  152. // 交给人工审核
  153. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  154. continue
  155. }
  156. documentJobIds := strings.Split(reviewProject.DocumentJobIds, ",")
  157. documentFlag := 0 // 0通过 1未通过 2正在运行
  158. for _, documentJobId := range documentJobIds {
  159. if documentJobId != "" {
  160. var status *string
  161. var suggestion *string
  162. var reviewErr error
  163. i := 3
  164. for {
  165. status, suggestion, reviewErr = reviewService.CheckDocumentInfo(documentJobId)
  166. if reviewErr == nil || i == 0 {
  167. break
  168. }
  169. i -= 1
  170. }
  171. if reviewErr == nil && "running" == *status {
  172. documentFlag = 2
  173. break
  174. }
  175. if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
  176. documentFlag = 1
  177. break
  178. }
  179. }
  180. }
  181. if documentFlag == 2 {
  182. continue
  183. } else if documentFlag == 1 {
  184. // 交给人工审核
  185. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  186. continue
  187. }
  188. videoJobIds := strings.Split(reviewProject.VideoJobIds, ",")
  189. videoFlag := 0 // 0通过 1未通过 2正在运行
  190. for _, videoJobId := range videoJobIds {
  191. if videoJobId != "" {
  192. var status *string
  193. var suggestion *string
  194. var reviewErr error
  195. i := 3
  196. for {
  197. status, suggestion, reviewErr = reviewService.CheckVideoInfo(videoJobId)
  198. if reviewErr == nil || i == 0 {
  199. break
  200. }
  201. i -= 1
  202. }
  203. if reviewErr == nil && "running" == *status {
  204. videoFlag = 2
  205. break
  206. }
  207. if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
  208. videoFlag = 1
  209. break
  210. }
  211. }
  212. }
  213. if videoFlag == 2 {
  214. continue
  215. } else if videoFlag == 1 {
  216. // 交给人工审核
  217. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 3})
  218. continue
  219. }
  220. // 审核通过
  221. _ = dao.ProjectReviewDao{}.UpdateProjectReview(&entity.ReviewProject{ID: reviewProject.ID, Status: 2})
  222. // 更新审核通过时间 与 支付截止时间:任务截止时间 + 设置的失效自动执行时间
  223. var projectInfo entity.Project
  224. err10 := dao.Db.Model(&entity.Project{}).Where("project_id = ?", reviewProject.ProjectID).Select("project_id,recruit_ddl,auto_task_id").Find(&projectInfo).Error
  225. if err10 != nil {
  226. continue
  227. }
  228. autoTaskId := projectInfo.AutoTaskID
  229. autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
  230. dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
  231. timeInvalid := projectInfo.RecruitDdl.Add(dd)
  232. var projectType int64
  233. var projectStatus int64
  234. _ = dao.Db.Model(&entity.Project{}).Where("project_id = ?", reviewProject.ProjectID).Select("project_type").Find(&projectType).Error
  235. t := time.Now()
  236. if projectType == 2 {
  237. projectStatus = 8
  238. } else {
  239. projectStatus = 4
  240. }
  241. _ = dao.ProjectDAO{}.UpdateProject(entity.Project{
  242. ProjectId: reviewProject.ProjectID,
  243. ProjectStatus: projectStatus,
  244. PassAt: t,
  245. AutoFailAt: timeInvalid,
  246. })
  247. }
  248. log.Println("AutoProjectReviewTask running End, Time :", time.Now())
  249. }
  250. // 定时任务2 电商带货API自动审核
  251. func AutoSelectionReviewTask() {
  252. log.Println("AutoSelectionInvalidTask running Start, Time :", time.Now())
  253. var reviewSelections []*entity.ReviewSelection
  254. reviewSelections, _ = dao.SelectionReviewDao{}.GetSelectionReviewByStatus(1)
  255. reviewService := review_service.GetConfig()
  256. for _, reviewSelection := range reviewSelections {
  257. if reviewSelection.TaskName != "" {
  258. var suggestion *string
  259. var reviewErr error
  260. i := 3
  261. for {
  262. suggestion, reviewErr = reviewService.CheckContent(reviewSelection.TaskName)
  263. if reviewErr == nil || i == 0 {
  264. break
  265. }
  266. i -= 1
  267. }
  268. if reviewErr != nil || "pass" != *suggestion {
  269. // 交给人工审核
  270. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  271. continue
  272. }
  273. }
  274. if reviewSelection.ProductName != "" {
  275. var suggestion *string
  276. var reviewErr error
  277. i := 3
  278. for {
  279. suggestion, reviewErr = reviewService.CheckContent(reviewSelection.ProductName)
  280. if reviewErr == nil || i == 0 {
  281. break
  282. }
  283. i -= 1
  284. }
  285. if reviewErr != nil || "pass" != *suggestion {
  286. // 交给人工审核
  287. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  288. continue
  289. }
  290. }
  291. if reviewSelection.ProductDetail != "" {
  292. var suggestion *string
  293. var reviewErr error
  294. i := 3
  295. for {
  296. suggestion, reviewErr = reviewService.CheckContent(reviewSelection.ProductDetail)
  297. if reviewErr == nil || i == 0 {
  298. break
  299. }
  300. i -= 1
  301. }
  302. if reviewErr != nil || "pass" != *suggestion {
  303. // 交给人工审核
  304. dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  305. continue
  306. }
  307. }
  308. if reviewSelection.MainPhoto != "" {
  309. var suggestion *string
  310. var reviewErr error
  311. i := 3
  312. for {
  313. suggestion, reviewErr = reviewService.CheckImage(reviewSelection.MainPhoto)
  314. if reviewErr == nil || i == 0 {
  315. break
  316. }
  317. i -= 1
  318. }
  319. if reviewErr != nil || "pass" != *suggestion {
  320. // 交给人工审核
  321. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  322. continue
  323. }
  324. }
  325. images := strings.Split(reviewSelection.Images, ",")
  326. imageFlag := false
  327. for _, image := range images {
  328. if image != "" {
  329. var suggestion *string
  330. var reviewErr error
  331. i := 3
  332. for {
  333. suggestion, reviewErr = reviewService.CheckImage(image)
  334. if reviewErr == nil || i == 0 {
  335. break
  336. }
  337. i -= 1
  338. }
  339. if reviewErr != nil || "pass" != *suggestion {
  340. imageFlag = true
  341. break
  342. }
  343. }
  344. }
  345. if imageFlag {
  346. // 交给人工审核
  347. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  348. continue
  349. }
  350. documentJobIds := strings.Split(reviewSelection.DocumentJobIds, ",")
  351. documentFlag := 0 // 0通过 1未通过 2正在运行
  352. for _, documentJobId := range documentJobIds {
  353. if documentJobId != "" {
  354. var status *string
  355. var suggestion *string
  356. var reviewErr error
  357. i := 3
  358. for {
  359. status, suggestion, reviewErr = reviewService.CheckDocumentInfo(documentJobId)
  360. if reviewErr == nil || i == 0 {
  361. break
  362. }
  363. i -= 1
  364. }
  365. if reviewErr == nil && "running" == *status {
  366. documentFlag = 2
  367. break
  368. }
  369. if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
  370. documentFlag = 1
  371. break
  372. }
  373. }
  374. }
  375. if documentFlag == 2 {
  376. continue
  377. } else if documentFlag == 1 {
  378. // 交给人工审核
  379. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  380. continue
  381. }
  382. videoJobIds := strings.Split(reviewSelection.VideoJobIds, ",")
  383. videoFlag := 0 // 0通过 1未通过 2正在运行
  384. for _, videoJobId := range videoJobIds {
  385. if videoJobId != "" {
  386. var status *string
  387. var suggestion *string
  388. var reviewErr error
  389. i := 3
  390. for {
  391. status, suggestion, reviewErr = reviewService.CheckVideoInfo(videoJobId)
  392. if reviewErr == nil || i == 0 {
  393. break
  394. }
  395. i -= 1
  396. }
  397. if reviewErr == nil && "running" == *status {
  398. videoFlag = 2
  399. break
  400. }
  401. if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
  402. videoFlag = 1
  403. break
  404. }
  405. }
  406. }
  407. if videoFlag == 2 {
  408. continue
  409. } else if videoFlag == 1 {
  410. // 交给人工审核
  411. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 3})
  412. continue
  413. }
  414. // 审核通过
  415. t := time.Now()
  416. _ = dao.SelectionReviewDao{}.UpdateSelectionReview(&entity.ReviewSelection{ID: reviewSelection.ID, Status: 2})
  417. // 非悬赏任务审核通过直接变为执行中
  418. selection, _ := dao.SelectionInfoDAO{}.GetSelectionInfoById(reviewSelection.SelectionID)
  419. if selection != nil && selection.TaskMode == 2 {
  420. _ = dao.SelectionInfoDAO{}.UpdateSelectionInfo(entity.SelectionInfo{SelectionID: reviewSelection.SelectionID, SelectionStatus: 6, PassAt: t})
  421. } else {
  422. var selectionInfo entity.SelectionInfo
  423. err10 := dao.Db.Model(&entity.SelectionInfo{}).Where("selection_id = ?", reviewSelection.SelectionID).Select("selection_id,task_ddl,auto_task_id").Find(&selectionInfo).Error
  424. if err10 != nil {
  425. continue
  426. }
  427. autoTaskId := selectionInfo.AutoTaskID
  428. autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
  429. dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
  430. timeInvalid := selectionInfo.TaskDdl.Add(dd)
  431. _ = dao.SelectionInfoDAO{}.UpdateSelectionInfo(entity.SelectionInfo{
  432. SelectionID: reviewSelection.SelectionID,
  433. SelectionStatus: 4,
  434. PassAt: t,
  435. AutoFailAt: timeInvalid,
  436. })
  437. }
  438. }
  439. log.Println("AutoSelectionInvalidTask running End, Time :", time.Now())
  440. }
  441. // 定时任务3 本地生活API自动审核
  442. func AutoLocalLifeReviewTask() {
  443. log.Println("AutoLocalLifeInvalidTask running Start, Time :", time.Now())
  444. var reviewLocalLifes []*entity.ReviewLocalLife
  445. reviewLocalLifes, _ = dao.LocalLifeReviewDao{}.GetLocalReviewByStatus(1)
  446. reviewService := review_service.GetConfig()
  447. for _, reviewLocalLife := range reviewLocalLifes {
  448. if reviewLocalLife.TaskName != "" {
  449. var suggestion *string
  450. var reviewErr error
  451. i := 3
  452. for {
  453. suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TaskName)
  454. if reviewErr == nil || i == 0 {
  455. break
  456. }
  457. i -= 1
  458. }
  459. if reviewErr != nil || "pass" != *suggestion {
  460. // 交给人工审核
  461. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  462. continue
  463. }
  464. }
  465. if reviewLocalLife.TaskDetail != "" {
  466. var suggestion *string
  467. var reviewErr error
  468. i := 3
  469. for {
  470. suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TaskDetail)
  471. if reviewErr == nil || i == 0 {
  472. break
  473. }
  474. i -= 1
  475. }
  476. if reviewErr != nil || "pass" != *suggestion {
  477. // 交给人工审核
  478. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  479. continue
  480. }
  481. }
  482. if reviewLocalLife.StoreName != "" {
  483. var suggestion *string
  484. var reviewErr error
  485. i := 3
  486. for {
  487. suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.StoreName)
  488. if reviewErr == nil || i == 0 {
  489. break
  490. }
  491. i -= 1
  492. }
  493. if reviewErr != nil || "pass" != *suggestion {
  494. // 交给人工审核
  495. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  496. continue
  497. }
  498. }
  499. if reviewLocalLife.StoreDetail != "" {
  500. var suggestion *string
  501. var reviewErr error
  502. i := 3
  503. for {
  504. suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.StoreDetail)
  505. if reviewErr == nil || i == 0 {
  506. break
  507. }
  508. i -= 1
  509. }
  510. if reviewErr != nil || "pass" != *suggestion {
  511. // 交给人工审核
  512. dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  513. continue
  514. }
  515. }
  516. if reviewLocalLife.StoreMainPhoto != "" {
  517. var suggestion *string
  518. var reviewErr error
  519. i := 3
  520. for {
  521. suggestion, reviewErr = reviewService.CheckImage(reviewLocalLife.StoreMainPhoto)
  522. if reviewErr == nil || i == 0 {
  523. break
  524. }
  525. i -= 1
  526. }
  527. if reviewErr != nil || "pass" != *suggestion {
  528. // 交给人工审核
  529. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  530. continue
  531. }
  532. }
  533. if reviewLocalLife.TeamBuyingName != "" {
  534. var suggestion *string
  535. var reviewErr error
  536. i := 3
  537. for {
  538. suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TeamBuyingName)
  539. if reviewErr == nil || i == 0 {
  540. break
  541. }
  542. i -= 1
  543. }
  544. if reviewErr != nil || "pass" != *suggestion {
  545. // 交给人工审核
  546. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  547. continue
  548. }
  549. }
  550. if reviewLocalLife.TeamBuyingDetail != "" {
  551. var suggestion *string
  552. var reviewErr error
  553. i := 3
  554. for {
  555. suggestion, reviewErr = reviewService.CheckContent(reviewLocalLife.TeamBuyingDetail)
  556. if reviewErr == nil || i == 0 {
  557. break
  558. }
  559. i -= 1
  560. }
  561. if reviewErr != nil || "pass" != *suggestion {
  562. // 交给人工审核
  563. dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  564. continue
  565. }
  566. }
  567. if reviewLocalLife.TeamBuyingMainPhoto != "" {
  568. var suggestion *string
  569. var reviewErr error
  570. i := 3
  571. for {
  572. suggestion, reviewErr = reviewService.CheckImage(reviewLocalLife.TeamBuyingMainPhoto)
  573. if reviewErr == nil || i == 0 {
  574. break
  575. }
  576. i -= 1
  577. }
  578. if reviewErr != nil || "pass" != *suggestion {
  579. // 交给人工审核
  580. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  581. continue
  582. }
  583. }
  584. images := strings.Split(reviewLocalLife.Images, ",")
  585. imageFlag := false
  586. for _, image := range images {
  587. if image != "" {
  588. var suggestion *string
  589. var reviewErr error
  590. i := 3
  591. for {
  592. suggestion, reviewErr = reviewService.CheckImage(image)
  593. if reviewErr == nil || i == 0 {
  594. break
  595. }
  596. i -= 1
  597. }
  598. if reviewErr != nil || "pass" != *suggestion {
  599. imageFlag = true
  600. break
  601. }
  602. }
  603. }
  604. if imageFlag {
  605. // 交给人工审核
  606. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  607. continue
  608. }
  609. documentJobIds := strings.Split(reviewLocalLife.DocumentJobIds, ",")
  610. documentFlag := 0 // 0通过 1未通过 2正在运行
  611. for _, documentJobId := range documentJobIds {
  612. if documentJobId != "" {
  613. var status *string
  614. var suggestion *string
  615. var reviewErr error
  616. i := 3
  617. for {
  618. status, suggestion, reviewErr = reviewService.CheckDocumentInfo(documentJobId)
  619. if reviewErr == nil || i == 0 {
  620. break
  621. }
  622. i -= 1
  623. }
  624. if reviewErr == nil && "running" == *status {
  625. documentFlag = 2
  626. break
  627. }
  628. if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
  629. documentFlag = 1
  630. break
  631. }
  632. }
  633. }
  634. if documentFlag == 2 {
  635. continue
  636. } else if documentFlag == 1 {
  637. // 交给人工审核
  638. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  639. continue
  640. }
  641. videoJobIds := strings.Split(reviewLocalLife.VideoJobIds, ",")
  642. videoFlag := 0 // 0通过 1未通过 2正在运行
  643. for _, videoJobId := range videoJobIds {
  644. if videoJobId != "" {
  645. var status *string
  646. var suggestion *string
  647. var reviewErr error
  648. i := 3
  649. for {
  650. status, suggestion, reviewErr = reviewService.CheckVideoInfo(videoJobId)
  651. if reviewErr == nil || i == 0 {
  652. break
  653. }
  654. i -= 1
  655. }
  656. if reviewErr == nil && "running" == *status {
  657. videoFlag = 2
  658. break
  659. }
  660. if reviewErr != nil || "failed" == *status || "pass" != *suggestion {
  661. videoFlag = 1
  662. break
  663. }
  664. }
  665. }
  666. if videoFlag == 2 {
  667. continue
  668. } else if videoFlag == 1 {
  669. // 交给人工审核
  670. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 3})
  671. continue
  672. }
  673. // 审核通过
  674. _ = dao.LocalLifeReviewDao{}.UpdateLocalReview(&entity.ReviewLocalLife{ID: reviewLocalLife.ID, Status: 2})
  675. var localLifeInfo entity.LocalLifeInfo
  676. err10 := dao.Db.Model(&entity.LocalLifeInfo{}).Where("local_id = ?", reviewLocalLife.LocalID).Select("local_id,recruit_ddl,auto_task_id").Find(&localLifeInfo).Error
  677. if err10 != nil {
  678. continue
  679. }
  680. autoTaskId := localLifeInfo.AutoTaskID
  681. autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
  682. dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
  683. timeInvalid := localLifeInfo.RecruitDdl.Add(dd)
  684. var localType int64
  685. var taskStatus int64
  686. _ = dao.Db.Model(&entity.LocalLifeInfo{}).Where("local_id = ?", reviewLocalLife.LocalID).Select("local_type").Find(&localType).Error
  687. t := time.Now()
  688. if localType == 2 {
  689. taskStatus = 8
  690. } else {
  691. taskStatus = 4
  692. }
  693. _ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{
  694. LocalID: reviewLocalLife.LocalID,
  695. TaskStatus: taskStatus,
  696. PassAt: t,
  697. AutoFailAt: timeInvalid,
  698. })
  699. }
  700. log.Println("AutoLocalLifeInvalidTask running End, Time :", time.Now())
  701. }