瀏覽代碼

sketchAutoTask

Xingyu Xian 6 月之前
父節點
當前提交
fd54e5d8c2
共有 10 個文件被更改,包括 597 次插入97 次删除
  1. 24 5
      config/pro.yaml
  2. 457 0
      db/auto_task.go
  3. 3 0
      go.mod
  4. 4 0
      go.sum
  5. 33 34
      model/gorm_model/project.go
  6. 18 0
      model/gorm_model/project_task.go
  7. 21 24
      model/gorm_model/recruit_strategy.go
  8. 2 5
      model/gorm_model/sketch.go
  9. 0 13
      model/gorm_model/subaccount.go
  10. 35 16
      service/autoTask.go

+ 24 - 5
config/pro.yaml

@@ -1,8 +1,27 @@
+# mysql:
+#   host: 192.168.0.165
+#   port: 3306
+#   user: test
+#   password: testDB_123
+#   database: youngmini
+#
+# redis:
+#   host: 139.9.53.143
+#   port: 6379
+#   auth: younggeeRedis_123
+#   database: 1
+#
+# server:
+#   host: 0.0.0.0
+#   port: 8388
+#   session:
+#     ttl: -1 #minute
+
 mysql:
-  host: 192.168.0.165
+  host: 139.9.53.143
   port: 3306
-  user: test
-  password: testDB_123
+  user: talent
+  password: talentDB_123
   database: youngmini
 
 redis:
@@ -10,9 +29,9 @@ redis:
   port: 6379
   auth: younggeeRedis_123
   database: 1
-  
+
 server:
   host: 0.0.0.0
   port: 8388
   session:
-    ttl: -1 #minute
+    ttl: -1 # minute

+ 457 - 0
db/auto_task.go

@@ -2,6 +2,7 @@ package db
 
 import (
 	"context"
+	"fmt"
 	"github.com/issue9/conv"
 	"time"
 	"youngee_b_api/model/gorm_model"
@@ -144,3 +145,459 @@ func AutoCompleteSelection() error {
 
 	return nil
 }
+
+/*
+// GetAutoDraftDefaultInPicTask 图文-初稿超时违约判断
+func GetAutoDraftDefaultInPicTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? ", 1, 1).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	projectIdToAutoTaskIdMap := map[string]int{}    // 项目id 对 定时任务id 的map
+	projectIdToAutoDefaultIdMap := map[string]int{} // 项目id 对 违约扣款设置id 的map
+	taskIdToFeeFormMap := make(map[string]int)      // taskId 对 稿费形式的 map
+	TaskIdToProjectId := make(map[string]string)    // taskId 对 项目id的 map
+	var taskNeedModIds []string                     // 首次提交初稿的任务记录id
+	var submitTaskNeedModIds []string               // 修改后提交初稿的任务记录id
+	// 构造map及list
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+	}
+	for _, projectId := range projectIds {
+		db1 := GetReadDB(context.Background())
+
+		var taskInfos []gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3", projectId, 2, 9, 0).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			TaskIdToProjectId[taskInfo.TaskId] = projectId
+			taskNeedMod := gorm_model.YoungeeTaskInfo{}
+			db2 := GetReadDB(context.Background())
+			// 保存所有满足物流状态为 3 且 初稿上传状态为 1或 3 的任务记录的id
+			db2.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskInfo.TaskId).First(&taskNeedMod)
+			taskIdToFeeFormMap[taskInfo.TaskId] = taskInfo.FeeForm
+			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 1 {
+				taskNeedModIds = append(taskNeedModIds, taskInfo.TaskId)
+			}
+			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 3 {
+				submitTaskNeedModIds = append(submitTaskNeedModIds, taskInfo.TaskId)
+			}
+		}
+	}
+	// 判断应首次上传初稿的任务
+	for _, taskNeedModId := range taskNeedModIds {
+		// 获取 autoTaskId 及其对应的限制时间
+		autoTaskId := projectIdToAutoTaskIdMap[TaskIdToProjectId[taskNeedModId]]
+		dbStart := GetReadDB(context.Background())
+		var DraftDefaultInPic int32
+		dbStart.Model(gorm_model.InfoAutoTask{}).Select("draft_default_in_pic").Where("auto_task_id = ?", autoTaskId).First(&DraftDefaultInPic)
+		db3 := GetReadDB(context.Background())
+
+		taskLogisticNeedMod := gorm_model.YoungeeTaskLogistics{}
+		db3.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskNeedModId).First(&taskLogisticNeedMod)
+
+		// 查询违约扣款比例
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[taskNeedModId] == 1 { // 稿费形式为产品置换
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
+		} else { // 稿费形式为其他
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+
+		//	添加初稿违约自动处理时间
+		if taskLogisticNeedMod.Status == 1 && taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.AutoSketchBreakAt == nil || taskLogisticNeedMod.AutoSketchBreakAt.IsZero() {
+			dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInPic, "") + "h")
+			db4 := GetReadDB(context.Background())
+			t := taskLogisticNeedMod.SignedTime.Add(dd)
+			db4.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YoungeeTaskLogistics{
+				AutoSketchBreakAt: &t,
+			})
+			taskLogisticNeedMod.AutoSketchBreakAt = &t
+			fmt.Println("已添加图片初稿违约自动处理时间")
+		}
+
+		// 判断是否超时违约
+		if taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			// 超时违约处理
+			db5 := GetReadDB(context.Background())
+			err1 := db5.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: taskLogisticNeedMod.TaskID, ProjectID: TaskIdToProjectId[taskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.0
+			}
+			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			if realPayment <= 0 {
+				realPayment = 0.0
+			}
+			db8 := GetReadDB(context.Background())
+			db8.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+					"real_payment":      realPayment,
+				})
+
+			err = CreateTaskLog(context.Background(), taskLogisticNeedMod.TaskID, "初稿逾期")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 22, 4, taskLogisticNeedMod.TaskID)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("已创建图文类型的初稿违约记录")
+		}
+	}
+	// 判断应修改后上传初稿的任务
+	for _, submitTaskNeedModId := range submitTaskNeedModIds {
+		// 获取 autoTaskId 及其对应的限制时间
+		db2 := GetReadDB(context.Background())
+		var DraftDefaultInMv int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[TaskIdToProjectId[submitTaskNeedModId]]).First(&DraftDefaultInMv)
+		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
+
+		// 查询违约扣款比例
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		} else {
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+		//	添加初稿违约自动处理时间
+		db1 := GetReadDB(context.Background())
+		var taskSketchInfo gorm_model.YounggeeSketchInfo
+		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", submitTaskNeedModId).Order("reject_at desc").First(&taskSketchInfo)
+		if taskSketchInfo.AutoSketchBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoSketchBreakAt: taskSketchInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			taskSketchInfo.AutoSketchBreakAt = taskSketchInfo.RejectAt.Add(dd)
+			fmt.Println("已添加图文形式的初稿违约自动处理时间")
+		}
+
+		// 判断是否违约
+		if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			db4 := GetReadDB(context.Background())
+			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: submitTaskNeedModId, ProjectID: TaskIdToProjectId[submitTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(sketchDefaultRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.
+			}
+			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			if realPayment <= 0 {
+				realPayment = 0.0
+			}
+			db3 := GetReadDB(context.Background())
+			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+					"real_payment":      realPayment,
+				}).Error
+			if err2 != nil {
+				return err2
+			}
+			err = CreateTaskLog(context.Background(), submitTaskNeedModId, "初稿逾期")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 22, 4, submitTaskNeedModId)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("创建已提交初稿的图文类型的初稿违约记录")
+		}
+	}
+	return nil
+}
+*/
+
+// GetAutoDraftDefaultInPicTask 品牌种草-商品寄拍 初稿超时违约
+func GetAutoDraftDefaultInPicTask() error {
+	fmt.Println("GetAutoDraftDefaultInPicTask Running")
+	db := GetReadDB(context.Background())
+
+	// 1. 根据种草任务形式取出对应的Project
+	var projectInfos []*gorm_model.ProjectInfo
+	projectInfoErr := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_form = ? ", 1, 1).Find(&projectInfos).Error
+	if projectInfoErr != nil {
+		return projectInfoErr
+	}
+
+	// 2. 构建查询map
+	var projectIds []string
+	projectIdToAutoTaskIdMap := map[string]int{}    // 项目id 对 定时任务id 的map
+	projectIdToAutoDefaultIdMap := map[string]int{} // 项目id 对 违约扣款设置id 的map
+	taskIdToFeeFormMap := make(map[string]int)      // taskId 对 稿费形式的 map
+	TaskIdToProjectId := make(map[string]string)    // taskId 对 项目id的 map
+	var taskNeedModIds []string                     // 首次提交初稿的任务记录id
+	var submitTaskNeedModIds []string               // 修改后提交初稿的任务记录id
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+	}
+	for _, projectId := range projectIds {
+		db1 := GetReadDB(context.Background())
+		var taskInfos []gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3", projectId, 2, 9, 0).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			TaskIdToProjectId[taskInfo.TaskID] = projectId
+			taskNeedMod := gorm_model.YoungeeTaskInfo{}
+			db2 := GetReadDB(context.Background())
+
+			// 保存所有满足物流状态为 3 且 初稿上传状态为 1或 3 的任务记录的id
+			db2.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskInfo.TaskID).First(&taskNeedMod)
+			taskIdToFeeFormMap[taskInfo.TaskID] = taskInfo.FeeForm
+			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 1 {
+				taskNeedModIds = append(taskNeedModIds, taskInfo.TaskID)
+			}
+			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 3 {
+				submitTaskNeedModIds = append(submitTaskNeedModIds, taskInfo.TaskID)
+			}
+		}
+	}
+
+	// 3. 对初次初稿未上传的操作
+	for _, taskNeedModId := range taskNeedModIds {
+		if taskNeedModId != "3601319242" {
+			break
+		}
+		fmt.Println("Task right")
+
+		// 获取taskId对应的autoTaskId
+		autoTaskId := projectIdToAutoTaskIdMap[TaskIdToProjectId[taskNeedModId]]
+
+		// 根据autoTaskId去查找对应的初稿违约小时数
+		dbStart := GetReadDB(context.Background())
+		var DraftDefaultInPic int32
+		dbStart.Model(gorm_model.InfoAutoTask{}).Select("draft_default_in_pic").Where("auto_task_id = ?", autoTaskId).First(&DraftDefaultInPic)
+
+		// 根据taskId查询taskInfo
+		db3 := GetReadDB(context.Background())
+		taskLogisticNeedMod := gorm_model.YoungeeTaskInfo{}
+		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).First(&taskLogisticNeedMod)
+
+		// 获取task对应的autoDefaultId 并取出违约扣款比例
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		// 稿费形式为产品置换
+		if taskIdToFeeFormMap[taskNeedModId] == 1 {
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
+		} else {
+			// 稿费形式为其他
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+
+		//	若无违约自动处理时间 则添加初稿违约自动处理时间
+		if taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.SketchMissingTime.IsZero() {
+			dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInPic, "") + "h")
+			db4 := GetReadDB(context.Background())
+			t := taskLogisticNeedMod.SignedTime.Add(dd)
+			db4.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YoungeeTaskInfo{
+				SketchMissingTime: t,
+			})
+			taskLogisticNeedMod.SketchMissingTime = t
+			fmt.Println("已添加 品牌种草-商品寄拍-初次初稿未上传 初稿违约自动处理时间")
+			fmt.Println(sketchDefaultRate, sketchErrRate)
+		}
+
+		// 判断是否超时违约
+		if taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.SketchMissingTime.Sub(time.Now()) <= 0 {
+			fmt.Println("taskId: ", taskLogisticNeedMod.TaskID, "超时违约触发")
+
+			// 超时违约处理
+			//db5 := GetReadDB(context.Background())
+			//err1 := db5.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+			//	TaskID:        taskLogisticNeedMod.TaskID,
+			//	ProjectID:     TaskIdToProjectId[taskNeedModId],
+			//	BreakType:     2,
+			//	BreakAt:       time.Now(),
+			//	DefaultStatus: 1}).Error
+			//if err1 != nil {
+			//	return err1
+			//}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.DraftFee * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.0
+			}
+
+			// realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			// if realPayment <= 0 {
+			// 	realPayment = 0.0
+			// }
+
+			db8 := GetReadDB(context.Background())
+			fmt.Println("待更新的taskId: ", taskLogisticNeedMod.TaskID)
+			db8.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+				})
+			createTaskLogErr := CreateTaskLog(context.Background(), taskLogisticNeedMod.TaskID, "初稿逾期")
+			if createTaskLogErr != nil {
+				log.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", createTaskLogErr)
+			}
+			createMessageByTaskIdErr := CreateMessageByTaskId(context.Background(), 22, 4, taskLogisticNeedMod.TaskID)
+			if createMessageByTaskIdErr != nil {
+				log.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", createMessageByTaskIdErr)
+			}
+			fmt.Println("已创建 品牌种草-商品寄拍-初次初稿未上传 初稿违约记录")
+		}
+	}
+
+	// 4. 判断应该修改后上传的任务
+	for _, submitTaskNeedModId := range submitTaskNeedModIds {
+		// 获取 autoTaskId 及其对应的限制时间
+		db2 := GetReadDB(context.Background())
+		var DraftDefaultInMv int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[TaskIdToProjectId[submitTaskNeedModId]]).First(&DraftDefaultInMv)
+		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
+
+		// 查询违约扣款比例
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		} else {
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+
+		//	添加初稿违约自动处理时间
+		db1 := GetReadDB(context.Background())
+		var taskSketchInfo gorm_model.YounggeeSketchInfo
+		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", submitTaskNeedModId).Order("reject_at desc").First(&taskSketchInfo)
+		if taskSketchInfo.AutoSketchBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoSketchBreakAt: taskSketchInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			taskSketchInfo.AutoSketchBreakAt = taskSketchInfo.RejectAt.Add(dd)
+			fmt.Println("已添加 品牌种草-商品寄拍-修改后上传初稿未上传自动处理时间")
+		}
+
+		// 判断是否违约
+		if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			db4 := GetReadDB(context.Background())
+			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: submitTaskNeedModId, ProjectID: TaskIdToProjectId[submitTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.DraftFee * (1.0 - float64(sketchDefaultRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.
+			}
+			// realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			// if realPayment <= 0 {
+			// 	realPayment = 0.0
+			// }
+			db3 := GetReadDB(context.Background())
+			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+				}).Error
+			if err2 != nil {
+				return err2
+			}
+			createTaskLogErr := CreateTaskLog(context.Background(), submitTaskNeedModId, "初稿逾期")
+			if createTaskLogErr != nil {
+				log.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", createTaskLogErr)
+			}
+			createMessageByTaskIdErr := CreateMessageByTaskId(context.Background(), 22, 4, submitTaskNeedModId)
+			if createMessageByTaskIdErr != nil {
+				log.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", createMessageByTaskIdErr)
+			}
+			fmt.Println("创建已提交初稿的图文类型的初稿违约记录")
+		}
+	}
+	return nil
+}

+ 3 - 0
go.mod

@@ -75,9 +75,11 @@ require (
 	github.com/stretchr/testify v1.8.4 // indirect
 	github.com/tidwall/match v1.1.1 // indirect
 	github.com/tidwall/pretty v1.2.0 // indirect
+	github.com/tjfoc/gmsm v1.4.1 // indirect
 	github.com/ugorji/go/codec v1.2.7 // indirect
 	github.com/urfave/cli/v2 v2.3.0 // indirect
 	github.com/yuin/goldmark v1.4.13 // indirect
+	go.mongodb.org/mongo-driver v1.12.0 // indirect
 	golang.org/x/mod v0.8.0 // indirect
 	golang.org/x/sync v0.1.0 // indirect
 	golang.org/x/term v0.20.0 // indirect
@@ -86,6 +88,7 @@ require (
 	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
 	gopkg.in/errgo.v2 v2.1.0 // indirect
 	gopkg.in/fsnotify.v1 v1.4.7 // indirect
+	gopkg.in/ini.v1 v1.67.0 // indirect
 	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 )

+ 4 - 0
go.sum

@@ -197,6 +197,7 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
 github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2 h1:+iNTcqQJy0OZ5jk6a5NLib47eqXK8uYcPX+O4+cBpEM=
 github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w=
@@ -211,6 +212,7 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
 github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
 github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
 github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
 github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
 github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
 github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
@@ -229,6 +231,7 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE=
 go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -382,6 +385,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
+gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
 gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=

+ 33 - 34
model/gorm_model/project.go

@@ -1,4 +1,3 @@
-// Code generated by sql2gorm. DO NOT EDIT.
 package gorm_model
 
 import (
@@ -6,39 +5,39 @@ import (
 )
 
 type ProjectInfo struct {
-	ProjectID         string      `gorm:"column:project_id;primary_key;"` // 项目id 项目ID生成规则:年(2位)+一年中的第几天(3位)+5位数随机数,雪花算法也可,生成10位订单号
-	ProjectName       string     `gorm:"column:project_name"`                          // 项目名称
-	ProjectStatus     int64      `gorm:"column:project_status"`                        // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
-	ProjectType       int64      `gorm:"column:project_type"`                          // 项目类型,1代表全流程项目,2代表专项项目
-	ProjectPlatform   int64      `gorm:"column:project_platform"`                      // 项目平台,1-7分别代表红book、抖音、微博、快手、b站、大众点评、知乎
-	ProjectForm       int64      `gorm:"column:project_form"`                          // 项目形式,1-4分别代表实体商品寄拍、虚拟产品测评、线下探店打卡、素材微原创
-	TalentType        string     `gorm:"column:talent_type"`                           // 达人类型
-	RecruitDdl        *time.Time `gorm:"column:recruit_ddl"`                           // 招募截止时间
-	ContentType       int64      `gorm:"column:content_type"`                          // 内容形式,1代表图文,2代表视频
-	ProjectDetail     string     `gorm:"column:project_detail"`                        // 项目详情
-	ApplyNum          int64      `gorm:"column:apply_num;default:0;NOT NULL"`          // 报名人数
-	RecruitNum        int64      `gorm:"column:recruit_num;default:0;NOT NULL"`        // 已招募人数
-	EnterpriseID      string      `gorm:"column:enterprise_id"`                         // 所属企业id
-	ProductID         int64      `gorm:"column:product_id"`                            // 关联商品id
-	CreatedAt         *time.Time `gorm:"column:created_at"`                            // 创建时间
-	UpdatedAt         *time.Time `gorm:"column:updated_at"`                            // 修改时间
-	FeeForm           string     `gorm:"column:fee_form"`                              // 稿费形式列表
-	AutoFailAt        *time.Time `gorm:"column:auto_fail_at"`                          // 失效自动处理时间
-	AutoTaskID        int64      `gorm:"column:auto_task_id;NOT NULL"`                 // 定时任务id
-	AutoDefaultID     int64      `gorm:"column:auto_default_id;NOT NULL"`              // 违约状态id
-	PaymentAmount     float64    `gorm:"column:payment_amount"`                        // 支付金额
-	PayAt             *time.Time `gorm:"column:pay_at"`                                // 支付时间
-	AutoScriptBreakAt *time.Time `gorm:"column:auto_script_break_at"`                  // 脚本违约自动处理时间
-	AutoSketchBreakAt *time.Time `gorm:"column:auto_sketch_break_at"`                  // 初稿违约自动处理时间
-	FailReason        int64      `gorm:"column:fail_reason"`                           // 失效原因,1、2分别表示逾期未支付、项目存在风险
-	PassAt            *time.Time `gorm:"column:pass_at"`                               // 审核通过时间
-	FinishAt          *time.Time `gorm:"column:finish_at"`                             // 结案时间
-	SubmitAt          *time.Time `gorm:"column:submit_at"`                             // 结案时间
-	EstimatedCost     float64    `gorm:"column:estimated_cost"`                        // 预估成本
-	IsRead            int64      `gorm:"column:is_read"`                               // 是否已读
-	SettlementAmount  float64    `gorm:"column:settlement_amount"`                     // 结算金额
-	ProductSnap       string     `gorm:"column:product_snap"`                          // 商品信息快照
-	ProductPhotoSnap  string     `gorm:"column:product_photo_snap"`                    // 商品图片快照
+	ProjectID         string     `gorm:"column:project_id;primary_key;"`        // 项目id 项目ID生成规则:年(2位)+一年中的第几天(3位)+5位数随机数,雪花算法也可,生成10位订单号
+	ProjectName       string     `gorm:"column:project_name"`                   // 项目名称
+	ProjectStatus     int64      `gorm:"column:project_status"`                 // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	ProjectType       int64      `gorm:"column:project_type"`                   // 项目类型,1代表全流程项目,2代表专项项目
+	ProjectPlatform   int64      `gorm:"column:project_platform"`               // 项目平台,1-7分别代表红book、抖音、微博、快手、b站、大众点评、知乎
+	ProjectForm       int64      `gorm:"column:project_form"`                   // 项目形式,1-4分别代表实体商品寄拍、虚拟产品测评、线下探店打卡、素材微原创
+	TalentType        string     `gorm:"column:talent_type"`                    // 达人类型
+	RecruitDdl        *time.Time `gorm:"column:recruit_ddl"`                    // 招募截止时间
+	ContentType       int64      `gorm:"column:content_type"`                   // 内容形式,1代表图文,2代表视频
+	ProjectDetail     string     `gorm:"column:project_detail"`                 // 项目详情
+	ApplyNum          int64      `gorm:"column:apply_num;default:0;NOT NULL"`   // 报名人数
+	RecruitNum        int64      `gorm:"column:recruit_num;default:0;NOT NULL"` // 已招募人数
+	EnterpriseID      string     `gorm:"column:enterprise_id"`                  // 所属企业id
+	ProductID         int64      `gorm:"column:product_id"`                     // 关联商品id
+	CreatedAt         *time.Time `gorm:"column:created_at"`                     // 创建时间
+	UpdatedAt         *time.Time `gorm:"column:updated_at"`                     // 修改时间
+	FeeForm           string     `gorm:"column:fee_form"`                       // 稿费形式列表
+	AutoFailAt        *time.Time `gorm:"column:auto_fail_at"`                   // 失效自动处理时间
+	AutoTaskID        int64      `gorm:"column:auto_task_id;NOT NULL"`          // 定时任务id
+	AutoDefaultID     int64      `gorm:"column:auto_default_id;NOT NULL"`       // 违约状态id
+	PaymentAmount     float64    `gorm:"column:payment_amount"`                 // 支付金额
+	PayAt             *time.Time `gorm:"column:pay_at"`                         // 支付时间
+	AutoScriptBreakAt *time.Time `gorm:"column:auto_script_break_at"`           // 脚本违约自动处理时间
+	AutoSketchBreakAt *time.Time `gorm:"column:auto_sketch_break_at"`           // 初稿违约自动处理时间
+	FailReason        int64      `gorm:"column:fail_reason"`                    // 失效原因,1、2分别表示逾期未支付、项目存在风险
+	PassAt            *time.Time `gorm:"column:pass_at"`                        // 审核通过时间
+	FinishAt          *time.Time `gorm:"column:finish_at"`                      // 结案时间
+	SubmitAt          *time.Time `gorm:"column:submit_at"`                      // 结案时间
+	EstimatedCost     float64    `gorm:"column:estimated_cost"`                 // 预估成本
+	IsRead            int64      `gorm:"column:is_read"`                        // 是否已读
+	SettlementAmount  float64    `gorm:"column:settlement_amount"`              // 结算金额
+	ProductSnap       string     `gorm:"column:product_snap"`                   // 商品信息快照
+	ProductPhotoSnap  string     `gorm:"column:product_photo_snap"`             // 商品图片快照
 }
 
 func (m *ProjectInfo) TableName() string {

+ 18 - 0
model/gorm_model/project_task.go

@@ -41,6 +41,24 @@ type YoungeeTaskInfo struct {
 	CurDefaultType         int       `gorm:"column:cur_default_type"`                     // 任务当前处于的违约类型 0-8分别表示未违约、脚本超时违约、脚本未上传违约、初稿超时违约、初稿未上传违约、链接超时违约、链接未上传违约、数据超时违约、数据未上传违约
 	WithdrawStatus         int       `gorm:"column:withdraw_status;default:1"`            // 提现状态,1-4分别代表不可提现、可提现、提现中、已提现
 	SettleStatus           int       `gorm:"column:settle_status;default:1"`              // 结算状态,1、2分别表示待结算、已结算
+	SupplierId             int       `gorm:"column:supplier_id;default:0"`                // 服务商ID
+	SupplierStatus         int       `gorm:"column:supplier_status;default:0"`            // 服务商任务状态 0表示达人来源非服务商 1待选 2已选 3落选
+	DraftFee               float64   `gorm:"column:draft_fee"`                            // 达人稿费
+	SignedTime             time.Time `gorm:"column:signed_time"`                          // 签收时间
+	FansNum                int       `gorm:"column:fans_num"`                             // 粉丝数
+	VoteAvg                int       `gorm:"column:vote_avg"`                             // 平均点赞数
+	CommitAvg              int       `gorm:"column:commit_avg"`                           // 平均评论数
+	BOperator              string    `gorm:"column:b_operator"`                           // 商家确定达人操作人ID
+	BOperatorType          int       `gorm:"column:b_operator_type"`                      // 商家操作人类型,1商家用户,2商家子账号,3管理后台
+	SOperator              int       `gorm:"column:s_operator"`                           // 服务商提报达人操作人ID
+	SOperatorType          int       `gorm:"column:s_operator_type"`                      // 服务商操作人类型,1服务商主账号,2服务商子账号,3管理后台
+	SProjectId             int       `gorm:"column:s_project_id"`                         // 服务商种草任务ID
+	SupportFee             float64   `gorm:"column:support_fee"`                          // 提报价格
+	TerminateTime          time.Time `gorm:"column:terminate_time"`                       // 终止合作时间
+	TerminateReason        string    `gorm:"column:terminate_reason"`                     // 终止合作理由
+	CancelTime             time.Time `gorm:"column:cancel_time"`                          // 解约时间
+	CancelReason           string    `gorm:"column:cancel_reason"`                        // 解约理由
+	SketchMissingTime      time.Time `gorm:"column:sketch_missing_time"`                  // 未传初稿违约时间
 }
 
 func (m *YoungeeTaskInfo) TableName() string {

+ 21 - 24
model/gorm_model/recruit_strategy.go

@@ -1,34 +1,31 @@
-// Code generated by sql2gorm. DO NOT EDIT.
 package gorm_model
 
-
 type RecruitStrategy struct {
-	RecruitStrategyID int64    `gorm:"column:recruit_strategy_id;primary_key;AUTO_INCREMENT"` // 招募策略id
-	FeeForm           int64    `gorm:"column:fee_form"`                                       // 稿费形式,1-3分别代表产品置换、固定稿费、自报价
-	StrategyID        int64    `gorm:"column:strategy_id"`                                    // 策略id
-	FollowersLow      int64    `gorm:"column:followers_low"`                                  // 达人粉丝数下限
-	FollowersUp       int64    `gorm:"column:followers_up"`                                   // 达人粉丝数上限
-	RecruitNumber     int64    `gorm:"column:recruit_number"`                                 // 招募数量
+	RecruitStrategyID int64   `gorm:"column:recruit_strategy_id;primary_key;AUTO_INCREMENT"` // 招募策略id
+	FeeForm           int64   `gorm:"column:fee_form"`                                       // 稿费形式,1-3分别代表产品置换、固定稿费、自报价
+	StrategyID        int64   `gorm:"column:strategy_id"`                                    // 策略id
+	FollowersLow      int64   `gorm:"column:followers_low"`                                  // 达人粉丝数下限
+	FollowersUp       int64   `gorm:"column:followers_up"`                                   // 达人粉丝数上限
+	RecruitNumber     int64   `gorm:"column:recruit_number"`                                 // 招募数量
 	Offer             float64 `gorm:"column:offer"`                                          // 报价
 	TOffer            float64 `gorm:"column:t_offer"`                                        // 达人所见报价
-	ProjectID         string   `gorm:"column:project_id"`                                     // 所属项目id
-	ServiceCharge     float64    `gorm:"column:service_charge"`                                 // 平台服务费,稿费形式为产品置换时必填
-	SelectedNumber    int64    `gorm:"column:selected_number;default:0"`                      // 已选数量,被企业选择的达人数量
-	WaitingNumber     int64    `gorm:"column:waiting_number;default:0"`                       // 待发货
-	DeliveredNumber   int64    `gorm:"column:delivered_number;default:0"`                     // 已发货
-	SignedNumber      int64    `gorm:"column:signed_number;default:0"`                        // 已签收
-	MaxOffer          int64    `gorm:"column:max_offer;default:0"`                            // 报价上限
-	MinOffer          int64    `gorm:"column:min_offer;default:0"`                            // 报价下限
-	FanNumber         int64    `gorm:"column:fan_number;default:0"`                           // 总粉丝量
-	PlayNumber        int64    `gorm:"column:play_number;default:0"`                          // 总播放量
-	LikeNumber        int64    `gorm:"column:like_number;default:0"`                          // 总点赞数
-	CollectNumber     int64    `gorm:"column:collect_number;default:0"`                       // 总收藏量
-	CommentNumber     int64    `gorm:"column:comment_number;default:0"`                       // 总评论数
-	FinishNumber      int64    `gorm:"column:finish_number;default:0"`                        // 结案数量
-	TotalOffer        float64    `gorm:"column:total_offer;default:0"`                          // 支付合计
+	ProjectID         string  `gorm:"column:project_id"`                                     // 所属项目id
+	ServiceCharge     float64 `gorm:"column:service_charge"`                                 // 平台服务费,稿费形式为产品置换时必填
+	SelectedNumber    int64   `gorm:"column:selected_number;default:0"`                      // 已选数量,被企业选择的达人数量
+	WaitingNumber     int64   `gorm:"column:waiting_number;default:0"`                       // 待发货
+	DeliveredNumber   int64   `gorm:"column:delivered_number;default:0"`                     // 已发货
+	SignedNumber      int64   `gorm:"column:signed_number;default:0"`                        // 已签收
+	MaxOffer          int64   `gorm:"column:max_offer;default:0"`                            // 报价上限
+	MinOffer          int64   `gorm:"column:min_offer;default:0"`                            // 报价下限
+	FanNumber         int64   `gorm:"column:fan_number;default:0"`                           // 总粉丝量
+	PlayNumber        int64   `gorm:"column:play_number;default:0"`                          // 总播放量
+	LikeNumber        int64   `gorm:"column:like_number;default:0"`                          // 总点赞数
+	CollectNumber     int64   `gorm:"column:collect_number;default:0"`                       // 总收藏量
+	CommentNumber     int64   `gorm:"column:comment_number;default:0"`                       // 总评论数
+	FinishNumber      int64   `gorm:"column:finish_number;default:0"`                        // 结案数量
+	TotalOffer        float64 `gorm:"column:total_offer;default:0"`                          // 支付合计
 }
 
 func (m *RecruitStrategy) TableName() string {
 	return "recruit_strategy"
 }
-

+ 2 - 5
model/gorm_model/sketch.go

@@ -1,14 +1,12 @@
 package gorm_model
 
-// Code generated by sql2gorm. DO NOT EDIT.
-
 import (
-"time"
+	"time"
 )
 
 type YounggeeSketchInfo struct {
 	SketchID          int       `gorm:"column:sketch_id;primary_key;AUTO_INCREMENT"` // 初稿id
-	TaskID            string       `gorm:"column:task_id;NOT NULL"`                     // 任务id
+	TaskID            string    `gorm:"column:task_id;NOT NULL"`                     // 任务id
 	Title             string    `gorm:"column:title"`                                // 标题
 	Type              int       `gorm:"column:type"`                                 // 初稿形式,1为图片,2为视频
 	Content           string    `gorm:"column:content"`                              // 正文
@@ -28,4 +26,3 @@ type YounggeeSketchInfo struct {
 func (m *YounggeeSketchInfo) TableName() string {
 	return "younggee_sketch_info"
 }
-

+ 0 - 13
model/gorm_model/subaccount.go

@@ -1,13 +0,0 @@
-package gorm_model
-
-type YounggeeSubAccount struct {
-	SubAccountId   int    `gorm:"column:sub_account_id;primary_key;AUTO_INCREMENT"` // 子账号ID
-	PhoneNumber    int    `gorm:"column:phone_number"`                              // 手机号
-	SubAccountName string `gorm:"column:sub_account_name"`                          // 子账号名称
-	JobId          int    `gorm:"column:job_id"`                                    // 岗位ID
-	EnterpriseId   string `gorm:"column:enterprise_id"`                             // 所属商家账号ID
-}
-
-func (m *YounggeeSubAccount) TableName() string {
-	return "younggee_sub_account"
-}

+ 35 - 16
service/autoTask.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+	"fmt"
 	"github.com/robfig/cron/v3"
 	log "github.com/sirupsen/logrus"
 	"time"
@@ -9,24 +10,34 @@ import (
 
 func AutoTask() error {
 	c := cron.New(cron.WithSeconds())
-	spec := "0 */30 * * * ?" //cron表达式,每半小时执行一次
-	//spec := "0 */1 * * * ?" //cron表达式,每1分钟一次
+	//spec := "0 */30 * * * ?" //cron表达式,每半小时执行一次
+	spec := "0 */1 * * * ?" //cron表达式,每1分钟一次
 	//spec := "*/10 * * * * ?" //cron表达式,每10秒一次
-	_, err1 := c.AddFunc(spec, AutoTaskUpdateStatus)
-	if err1 != nil {
-		log.Println("service [AutoTaskUpdateStatus] error:", err1)
-		return err1
-	}
-	_, err2 := c.AddFunc("@midnight", AutoTaskUpdateApplyTimes)
-	if err2 != nil {
-		log.Println("service [AutoTaskUpdateApplyTimes] error:", err2)
-		return err2
-	}
-	_, err3 := c.AddFunc(spec, AutoTaskCompleteSelection)
-	if err3 != nil {
-		log.Println("service [AutoTaskCompleteSecTask] error:", err2)
-		return err3
+
+	/*
+		_, err1 := c.AddFunc(spec, AutoTaskUpdateStatus)
+		if err1 != nil {
+			log.Println("service [AutoTaskUpdateStatus] error:", err1)
+			return err1
+		}
+		_, err2 := c.AddFunc("@midnight", AutoTaskUpdateApplyTimes)
+		if err2 != nil {
+			log.Println("service [AutoTaskUpdateApplyTimes] error:", err2)
+			return err2
+		}
+		_, err3 := c.AddFunc(spec, AutoTaskCompleteSelection)
+		if err3 != nil {
+			log.Println("service [AutoTaskCompleteSecTask] error:", err2)
+			return err3
+		}
+
+	*/
+	_, err4 := c.AddFunc(spec, GetAutoDraftDefaultInPicTask)
+	if err4 != nil {
+		log.Println("service [AutoTaskCompleteSecTask] error:", err4)
+		return err4
 	}
+	fmt.Println(spec)
 	c.Start()
 	return nil
 }
@@ -54,3 +65,11 @@ func AutoTaskCompleteSelection() {
 		log.Println("AutoUpdateApplyTimes error : ", err)
 	}
 }
+
+func GetAutoDraftDefaultInPicTask() {
+	err := db.GetAutoDraftDefaultInPicTask()
+	log.Println("GetAutoDraftDefaultInPicTask is running ,Time :", time.Now())
+	if err != nil {
+		log.Println("GetAutoDraftDefaultInPicTask error : ", err)
+	}
+}