Jelajahi Sumber

招募截止时间转待支付&超时未支付转失效

Ethan 1 bulan lalu
induk
melakukan
c4c8e1a63b
1 mengubah file dengan 65 tambahan dan 40 penghapusan
  1. 65 40
      app/schedule/auto_task_invalid.go

+ 65 - 40
app/schedule/auto_task_invalid.go

@@ -48,26 +48,40 @@ func AutoProjectInvalidTask() {
 	// 对于所有未支付的品牌种草项目进行处理
 	for _, projectInfo := range projectInfos {
 		projectId := projectInfo.ProjectId
+		if time.Now().After(projectInfo.RecruitDdl) && projectInfo.ProjectStatus < 4 {
+			// 变成失效
+			_ = dao.ProjectDAO{}.UpdateProject(entity.Project{
+				ProjectId:     projectId,
+				ProjectStatus: 9,
+			})
+			continue
+		}
+		if time.Now().After(projectInfo.RecruitDdl) && projectInfo.ProjectStatus == 4 {
+			// 变成待支付
+			_ = dao.ProjectDAO{}.UpdateProject(entity.Project{
+				ProjectId:     projectId,
+				ProjectStatus: 6,
+			})
+			continue
+		}
 		autoTaskId := projectInfo.AutoTaskID
 		autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
 		dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
 		// 失效时间计算:任务截止时间 + 设置的失效自动执行时间
-		timeInvalid := projectInfo.RecruitDdl.Add(dd)
 		if projectInfo.AutoFailAt.IsZero() {
+			timeInvalid := projectInfo.RecruitDdl.Add(dd)
 			dao.Db.Model(&entity.Project{}).Where("project_id = ?", projectId).Updates(&entity.Project{AutoFailAt: timeInvalid})
+			projectInfo.AutoFailAt = timeInvalid
 		}
-		projectNeedMod := entity.Project{}
-		dao.Db.Where("project_id = ?", projectId).First(&projectNeedMod)
-		//fmt.Println(fmt.Sprintf("品牌种草项目 %s 失效自动处理时间为:%s", projectId, projectNeedMod.AutoFailAt))
-		// 如果失效自动处理的时间不为空
-		if !projectNeedMod.AutoFailAt.IsZero() {
-			timeNow := time.Now()
-			// 如果 未失效 && 已经过了失效自动处理的时间
-			if projectNeedMod.ProjectStatus < 9 && projectNeedMod.AutoFailAt.Sub(time.Now()) <= 0 {
-				dao.Db.Model(entity.Project{}).Where("project_id = ?", projectId).Updates(&entity.Project{ProjectStatus: 9, FinishAt: timeInvalid, FailReason: 1})
-				fmt.Println(fmt.Sprintf("已更新品牌种草项目 %s 状态为超时未支付的失效状态", projectId))
-				dao.Db.Model(entity.ProjectTaskInfo{}).Where("project_id = ?", projectId).Updates(entity.ProjectTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: timeNow})
-			}
+		// 超时未支付则变为失效
+		if time.Now().After(projectInfo.AutoFailAt) && projectInfo.ProjectStatus == 6 {
+			_ = dao.ProjectDAO{}.UpdateProject(entity.Project{
+				ProjectId:     projectId,
+				ProjectStatus: 9,
+				FailReason:    1,
+			})
+			fmt.Println(fmt.Sprintf("已更新品牌种草项目 %s 状态为超时未支付的失效状态", projectId))
+			dao.Db.Model(entity.ProjectTaskInfo{}).Where("project_id = ?", projectId).Updates(entity.ProjectTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: time.Now()})
 		}
 	}
 	log.Println("AutoProjectInvalidTask running End, Time :", time.Now())
@@ -84,23 +98,20 @@ func AutoSelectionInvalidTask() {
 		autoTaskId := selectionInfo.AutoTaskID
 		autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "selection_invalid")
 		dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.SelectionInvalid, "") + "h")
-		// 失效时间计算:任务截止时间 + 设置的失效自动执行时间
-		timeInvalid := selectionInfo.PassAt.Add(dd)
 		if selectionInfo.AutoFailAt.IsZero() {
+			timeInvalid := selectionInfo.PassAt.Add(dd)
 			dao.Db.Model(&entity.SelectionInfo{}).Where("selection_id = ?", selectionId).Updates(&entity.SelectionInfo{AutoFailAt: timeInvalid})
+			selectionInfo.AutoFailAt = timeInvalid
 		}
-		selectionInfoNeedMod := entity.SelectionInfo{}
-		dao.Db.Where("selection_id = ?", selectionId).First(&selectionInfoNeedMod)
-		//fmt.Println(fmt.Sprintf("电商带货项目 %s 失效自动处理时间为:%s", selectionId, selectionInfoNeedMod.AutoFailAt))
-		// 如果失效自动处理的时间不为空
-		if !selectionInfoNeedMod.AutoFailAt.IsZero() {
-			timeNow := time.Now()
-			// 如果 未失效 && 已经过了失效自动处理的时间
-			if selectionInfoNeedMod.SelectionStatus < 5 && selectionInfoNeedMod.AutoFailAt.Sub(time.Now()) <= 0 {
-				dao.Db.Model(entity.SelectionInfo{}).Where("selection_id = ?", selectionId).Updates(&entity.SelectionInfo{SelectionStatus: 7, FinishAt: timeInvalid, FailReason: 1})
-				fmt.Println(fmt.Sprintf("已更新电商带货项目 %s 状态为超时未支付的失效状态", selectionId))
-				dao.Db.Model(entity.SelectionInfo{}).Where("selection_id = ?", selectionId).Updates(entity.SelectionTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: timeNow})
-			}
+		// 超时未支付则变为失效
+		if time.Now().After(selectionInfo.AutoFailAt) && selectionInfo.SelectionStatus == 4 {
+			_ = dao.SelectionInfoDAO{}.UpdateSelectionInfo(entity.SelectionInfo{
+				SelectionID:     selectionId,
+				SelectionStatus: 7,
+				FailReason:      1,
+			})
+			fmt.Println(fmt.Sprintf("已更新电商带货项目 %s 状态为超时未支付的失效状态", selectionId))
+			dao.Db.Model(entity.SelectionInfo{}).Where("selection_id = ?", selectionId).Updates(entity.SelectionTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: time.Now()})
 		}
 	}
 	log.Println("AutoSelectionInvalidTask running End, Time :", time.Now())
@@ -114,26 +125,40 @@ func AutoLocalLifeInvalidTask() {
 	// 对于所有未支付的本地生活项目进行处理
 	for _, localLifeInfo := range localLifeInfos {
 		localId := localLifeInfo.LocalID
+		if time.Now().After(localLifeInfo.RecruitDdl) && localLifeInfo.TaskStatus < 4 {
+			// 变成失效
+			_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{
+				LocalID:    localId,
+				TaskStatus: 9,
+			})
+			continue
+		}
+		if time.Now().After(localLifeInfo.RecruitDdl) && localLifeInfo.TaskStatus == 4 {
+			// 变成待支付
+			_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{
+				LocalID:    localId,
+				TaskStatus: 6,
+			})
+			continue
+		}
 		autoTaskId := localLifeInfo.AutoTaskID
 		autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
 		dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
 		// 失效时间计算:任务截止时间 + 设置的失效自动执行时间
-		timeInvalid := localLifeInfo.RecruitDdl.Add(dd)
 		if localLifeInfo.AutoFailAt.IsZero() {
+			timeInvalid := localLifeInfo.RecruitDdl.Add(dd)
 			dao.Db.Model(&entity.LocalLifeInfo{}).Where("local_id = ?", localId).Updates(&entity.LocalLifeInfo{AutoFailAt: timeInvalid})
+			localLifeInfo.AutoFailAt = timeInvalid
 		}
-		localLifeNeedMod := entity.LocalLifeInfo{}
-		dao.Db.Where("local_id = ?", localId).First(&localLifeNeedMod)
-		//fmt.Println(fmt.Sprintf("本地生活项目 %s 失效自动处理时间为:%s", localId, localLifeNeedMod.AutoFailAt))
-		// 如果失效自动处理的时间不为空
-		if !localLifeNeedMod.AutoFailAt.IsZero() {
-			timeNow := time.Now()
-			// 如果 未失效 && 已经过了失效自动处理的时间
-			if localLifeNeedMod.TaskStatus < 9 && localLifeNeedMod.AutoFailAt.Sub(time.Now()) <= 0 {
-				dao.Db.Model(entity.LocalLifeInfo{}).Where("local_id = ?", localId).Updates(&entity.LocalLifeInfo{TaskStatus: 9, FinishAt: timeInvalid, FailReason: 1})
-				fmt.Println(fmt.Sprintf("已更新本地生活项目 %s 状态为超时未支付的失效状态", localId))
-				dao.Db.Model(entity.LocalLifeTaskInfo{}).Where("local_id = ?", localId).Updates(entity.LocalLifeTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: timeNow})
-			}
+		// 超时未支付则变为失效
+		if time.Now().After(localLifeInfo.AutoFailAt) && localLifeInfo.TaskStatus == 6 {
+			_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{
+				LocalID:    localId,
+				TaskStatus: 9,
+				FailReason: 1,
+			})
+			fmt.Println(fmt.Sprintf("已更新本地生活项目 %s 状态为超时未支付的失效状态", localId))
+			dao.Db.Model(entity.LocalLifeTaskInfo{}).Where("local_id = ?", localId).Updates(entity.LocalLifeTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: time.Now()})
 		}
 	}
 	log.Println("AutoLocalLifeInvalidTask running End, Time :", time.Now())