fwhTaskSiteInfoUpdate.go 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package fwhQueueOld
  2. import (
  3. "context"
  4. "fmt"
  5. "fwh-toolbox-server/domain"
  6. "fwh-toolbox-server/dto"
  7. "fwh-toolbox-server/logger"
  8. "fwh-toolbox-server/repositories"
  9. "go.uber.org/zap"
  10. )
  11. var (
  12. TaskTypeSiteInfoUpdate = "task_SiteInfoUpdate"
  13. )
  14. // type TaskSiteInfoUpdate = types.TaskSiteInfoUpdate
  15. func handleTaskSiteInfoUpdate(ctx context.Context, payload domain.TaskSiteInfoUpdate) error {
  16. // 更新运行状态
  17. fmt.Println("更新任务运行状态")
  18. if repoErr := repositories.UpdateSiteInfoUpdateResult(payload.Id, domain.ProgressRunning, 0); repoErr != nil {
  19. zap.L().Error("更新站点信息Update结果状态失败(Running)", zap.String("err", repoErr.Error()))
  20. return repoErr
  21. }
  22. fmt.Printf("开始执行任务 %v\n", payload)
  23. total, err := executeTaskSiteInfoUpdate(ctx, payload)
  24. // 记录任务执行结果
  25. if err != nil {
  26. fmt.Printf("任务执行失败 %s\n", err.Error())
  27. if repoErr := repositories.UpdateSiteInfoUpdateResult(payload.Id, domain.ProgressError, 0); repoErr != nil {
  28. zap.L().Error("更新站点信息Update结果状态失败(Error)", zap.String("err", repoErr.Error()))
  29. return repoErr
  30. }
  31. } else {
  32. fmt.Println("任务执行成功")
  33. if repoErr := repositories.UpdateSiteInfoUpdateResult(payload.Id, domain.ProgressComplete, total); repoErr != nil {
  34. zap.L().Error("更新站点信息Update结果状态失败(Complete)", zap.String("err", repoErr.Error()))
  35. return repoErr
  36. }
  37. }
  38. return err
  39. }
  40. var executeTaskSiteInfoUpdate = func(ctx context.Context, payload domain.TaskSiteInfoUpdate) (uint64, error) {
  41. var pageSize uint = 50
  42. var pageNum uint = 1
  43. var total uint64 = 0
  44. var realTotal uint64 = 0
  45. fmt.Println("查询站点信息")
  46. for {
  47. resp, err := repositories.QuerySiteInfoList(dto.SiteInfoPara{
  48. PageSize: pageSize,
  49. PageNum: pageNum,
  50. })
  51. if err != nil {
  52. zap.L().Error("查询站点信息失败", zap.String("err", err.Error()), zap.Uint("pageSize", pageSize), zap.Uint("pageNum", pageNum), zap.Uint64("total", total))
  53. return 0, err
  54. }
  55. for _, info := range *resp.Result {
  56. if err := repositories.InsertSiteInfoData(*domain.FwhSiteInfoToSiteInfoDomain(&info)); err != nil {
  57. zap.L().Error("保存站点信息失败", zap.String("err", err.Error()), zap.Uint("pageSize", pageSize), zap.Uint("pageNum", pageNum), zap.Uint64("total", total))
  58. return 0, err
  59. }
  60. realTotal++
  61. }
  62. pageNum++
  63. total = resp.Total
  64. if (int64(pageNum)-1)*int64(pageSize) >= int64(total) {
  65. break
  66. }
  67. }
  68. return realTotal, nil
  69. }
  70. // 插入站点分析队列
  71. func EnqueueSiteInfoUpdateTask(payload domain.TaskSiteInfoUpdate) error {
  72. p := TaskPayload[domain.TaskSiteInfoUpdate]{
  73. TaskPayloadBase: TaskPayloadBase{
  74. Type: TaskTypeSiteInfoUpdate,
  75. },
  76. Payload: payload,
  77. }
  78. if err := EnqueueUniqueTask[domain.TaskSiteInfoUpdate](p); err != nil {
  79. logger.Std.Printf("EnqueueSiteInfoUpdateTask error : %s\n", err.Error())
  80. return err
  81. }
  82. return nil
  83. }