Explorar o código

更新定时任务12.24

Ohio-HYF %!s(int64=2) %!d(string=hai) anos
pai
achega
8d6a2fdd2d

+ 10 - 10
db/operate.go

@@ -255,7 +255,7 @@ func UpdateAutoDefaultRate(ctx context.Context, rate int, num int32) error {
 func GetSignInOfflineTask(projectForm int32) error {
 	db := GetReadDB(context.Background())
 	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_form = ?", 1, projectForm).Find(&projectInfos).Error
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_form = ? AND project_status = 9", 1, projectForm).Find(&projectInfos).Error
 	if err != nil {
 		return err
 	}
@@ -280,7 +280,7 @@ func GetSignInOfflineTask(projectForm int32) error {
 			projectIdMap[projectInfo.ProjectID] = projectInfo.ContentType
 			db1 := GetReadDB(context.Background())
 			var taskInfos []gorm_model.YoungeeTaskInfo
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND logistics_status = ?", projectInfo.ProjectID, 2).Find(&taskInfos)
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND logistics_status = ? AND task_stage = 5", projectInfo.ProjectID, 2).Find(&taskInfos)
 			//fmt.Println("taskInfos", taskInfos)
 			for _, taskInfo := range taskInfos {
 				//fmt.Println("TaskId", taskInfo.TaskId)
@@ -348,7 +348,7 @@ func GetAutoReviewTask(contentType int32) error {
 	if contentType == 2 {
 		// 项目内容形式为视频
 		// 1. 补全scriptInfo表中的自动审核脚本时间
-		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ?", 1, contentType).Find(&projectInfos).Error
+		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? AND project_status = 9", 1, contentType).Find(&projectInfos).Error
 		if err != nil {
 			return err
 		}
@@ -369,7 +369,7 @@ func GetAutoReviewTask(contentType int32) error {
 			//fmt.Println("t:", autoTaskInfo.ReviewInMv)
 			// 获取 projectId 对应的 taskId 及添加脚本自动审核时间
 			var taskInfos []gorm_model.YoungeeTaskInfo
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2", projectId).Find(&taskInfos)
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 8", projectId).Find(&taskInfos)
 			for _, taskInfo := range taskInfos {
 				//fmt.Println("TaskID:", taskInfo.TaskId)
 				db2 := GetReadDB(context.Background())
@@ -428,7 +428,7 @@ func GetAutoReviewTask(contentType int32) error {
 	} else {
 		// 项目内容形式为图文
 		// 1. 补全sketchInfo表中的自动审核初稿时间
-		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? ", 1).Find(&projectInfos).Error
+		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
 		if err != nil {
 			return err
 		}
@@ -448,7 +448,7 @@ func GetAutoReviewTask(contentType int32) error {
 			dbStart.Model(gorm_model.InfoAutoTask{}).Select("review_unlimited").Where("auto_task_id = ?", autoTaskId).First(&ReviewUnlimited)
 			//fmt.Println("t:", autoTaskInfo.ReviewUnlimited)
 			var taskInfos []gorm_model.YoungeeTaskInfo
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2", projectId).Find(&taskInfos)
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 10", projectId).Find(&taskInfos)
 			for _, taskInfo := range taskInfos {
 				db2 := GetReadDB(context.Background())
 				var sketchInfo gorm_model.YounggeeSketchInfo
@@ -510,7 +510,7 @@ func GetAutoPostReviewTask() error {
 	// 1. 补全linkInfo表中的自动审核链接时间
 	db := GetReadDB(context.Background())
 	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? ", 1).Find(&projectInfos).Error
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
 	if err != nil {
 		return err
 	}
@@ -530,7 +530,7 @@ func GetAutoPostReviewTask() error {
 		dbStart.Model(gorm_model.InfoAutoTask{}).Select("postreview").Where("auto_task_id = ?", autoTaskId).First(&Postreview)
 		//fmt.Println("t:", autoTaskInfo.Postreview)
 		var taskInfos []gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2", projectId).Find(&taskInfos)
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 12", projectId).Find(&taskInfos)
 		for _, taskInfo := range taskInfos {
 			db2 := GetReadDB(context.Background())
 			var linkInfos gorm_model.YounggeeLinkInfo
@@ -590,7 +590,7 @@ func GetAutoCaseCloseTask() error {
 	// 1. 补全dataInfo表中的自动审核数据时间
 	db := GetReadDB(context.Background())
 	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? ", 1).Find(&projectInfos).Error
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
 	if err != nil {
 		return err
 	}
@@ -610,7 +610,7 @@ func GetAutoCaseCloseTask() error {
 		dbStart.Model(gorm_model.InfoAutoTask{}).Select("case_close").Where("auto_task_id = ?", autoTaskId).First(&CaseClose)
 		//fmt.Println("t:", autoTaskInfo.CaseClose)
 		var taskInfos []gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2", projectId).Find(&taskInfos)
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 14", projectId).Find(&taskInfos)
 		for _, taskInfo := range taskInfos {
 			db2 := GetReadDB(context.Background())
 			var dataInfos gorm_model.YounggeeDataInfo

+ 5 - 1
db/project.go

@@ -121,7 +121,11 @@ func ApproveProject(ctx context.Context, projectId string, isApprove int64) (err
 			return err, ""
 		}
 	} else if isApprove == 2 && projectInfo.ProjectStatus == 2 {
-		err := db.Update("project_status", 8).Error
+		err := db.Updates(gorm_model.ProjectInfo{
+			ProjectStatus: 8,
+			FinishAt:      &t,
+			FailReason:    2,
+		}).Error
 		message = "项目存在风险已禁止发布"
 		if err != nil {
 			logrus.Println("DB AutoUpdateStatus error :", err)

+ 1 - 1
model/gorm_model/project.go

@@ -33,7 +33,7 @@ type ProjectInfo struct {
 	FailReason        int64      `gorm:"column:fail_reason"`                           // 失效原因,1、2分别表示逾期未支付、项目存在风险
 	PassAt            *time.Time `gorm:"column:pass_at"`                               // 审核通过时间
 	FinishAt          *time.Time `gorm:"column:finish_at"`                             // 结案时间
-	EstimatedCost     string     `gorm:"column:estimated_cost"`                        // 预估成本
+	EstimatedCost     float64    `gorm:"column:estimated_cost"`                        // 预估成本
 	IsRead            int64      `gorm:"column:is_read"`                               // 是否已读
 }
 

+ 1 - 0
model/http_model/project_create.go

@@ -11,6 +11,7 @@ type CreateRecruitStrategy struct {
 	FollowersLow  int64   `json:"followers_low"`  // 达人粉丝数下限
 	FollowersUp   int64   `json:"followers_up"`   // 达人粉丝数上限
 	RecruitNumber int64   `json:"recruit_number"` // 招募数量
+	ServiceCharge float64 `json:"service_charge"` // 服务费
 	Offer         float64 `json:"offer"`          // 报价
 	TOffer        float64 `json:"t_offer"`        // 达人端报价
 }

+ 2 - 0
model/http_model/project_update.go

@@ -11,12 +11,14 @@ type UpdateRecruitStrategy struct {
 	FollowersLow  int64   `json:"followers_low"`  // 达人粉丝数下限
 	FollowersUp   int64   `json:"followers_up"`   // 达人粉丝数上限
 	RecruitNumber int64   `json:"recruit_number"` // 招募数量
+	ServiceCharge float64 `json:"service_charge"` // 服务费
 	Offer         float64 `json:"offer"`          // 报价
 	TOffer        float64 `json:"t_offer"`        // 报价
 }
 
 type UpdateProjectRequest struct {
 	ProjectForm      string                  `json:"project_form"`      // 项目形式,1-4分别代表实体商品寄拍、虚拟产品测评、线下探店打卡、素材微原创
+	ProjectType      int64                   `json:"project_type"`      // 项目类型,1代表全流程项目,2代表专项项目
 	TalentType       string                  `json:"talent_type"`       // 达人类型
 	ProjectStatus    int                     `json:"project_status"`    // 要保存的项目状态
 	RecruitDdl       string                  `json:"recruit_ddl"`       // 招募截止时间

+ 3 - 2
service/auto_task.go

@@ -197,11 +197,12 @@ func AutoTask() error {
 		log.Println("GetAutoCaseCloseDefaultTask is running ,Time :", time.Now())
 	}
 	//定时任务
-	//spec := "*/30 * * * * ?" //cron表达式,每10秒一次
+	spec := "*/30 * * * * ?" //cron表达式,每10秒一次
 	//spec := "0 */30 * * * ?" //cron表达式,每一分钟执行一次
-	spec := "0 0 * * * *" //每小时执行
+	//spec := "0 0 * * * *" //每小时执行
 	// 添加定时任务,
 	_, err := crontab.AddFunc("@midnight", taskKDStatus)
+	//_, err := crontab.AddFunc("*/30 * * * * ?", taskKDStatus)
 	if err != nil {
 		return err
 	}

+ 58 - 5
service/project.go

@@ -149,7 +149,6 @@ func (*project) GetProjectTaskList(ctx context.Context, projectID string, pageSi
 }
 
 func (*project) Create(ctx context.Context, newProject http_model.CreateProjectRequest, enterpriseID int64) (*http_model.CreateProjectData, error) {
-	fmt.Println("RecruitDdl:", newProject.RecruitDdl)
 	RecruitDdl, _ := time.ParseInLocation("2006-01-02 15:04:05", newProject.RecruitDdl, time.Local)
 	// 查询关联商品信息
 	product, err := db.GetProductByID(ctx, newProject.ProductID)
@@ -161,12 +160,22 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
 	//feeForm := fmt.Sprintf("[")
 	feeFrom := []string{}
 	for _, strategy := range newProject.RecruitStrategys {
-		//if strategy.StrategyID
 		feeFrom = append(feeFrom, strconv.FormatInt(strategy.FeeForm, 10))
-		//feeForm += string(strategy.StrategyID)
+	}
+	var ECost float64 = 0
+	if newProject.ProjectType == int64(1) {
+		for _, strategy := range newProject.RecruitStrategys {
+			// 计算预估成本
+			var tmpCost float64 = 0
+			if strategy.FeeForm == 1 {
+				tmpCost = strategy.ServiceCharge * float64(strategy.RecruitNumber)
+			} else if strategy.FeeForm == 2 {
+				tmpCost = strategy.Offer * float64(strategy.RecruitNumber)
+			}
+			ECost += tmpCost
+		}
 	}
 	feeFroms := strings.Join(feeFrom, ",")
-
 	projectInfo := gorm_model.ProjectInfo{
 		ProjectName:     projectName,
 		ProjectStatus:   1,
@@ -180,6 +189,7 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
 		EnterpriseID:    enterpriseID,
 		ProductID:       newProject.ProductID,
 		FeeForm:         feeFroms,
+		EstimatedCost:   ECost,
 		IsRead:          0,
 	}
 	// db create ProjectInfo
@@ -206,7 +216,15 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
 	}
 	// build
 	recruitStrategys := []gorm_model.RecruitStrategy{}
-	for _, strategy := range newProject.RecruitStrategys {
+	for _, strategy := range newProject.RecruitStrategys { // 查询对应定价策略
+		pricingStrategy, err := db.GetPricingStrategy(ctx, strategy.FollowersLow, strategy.FollowersUp, strategy.FeeForm, newProject.ProjectPlatform)
+		if err != nil {
+			return nil, err
+		}
+		// 根据定价策略计算达人所见报价
+		if strategy.FeeForm == 2 {
+			strategy.TOffer = strategy.Offer * (1 - conv.MustFloat64(pricingStrategy.ServiceRate, 0)/1000)
+		}
 		recruitStrategy := gorm_model.RecruitStrategy{
 			FeeForm:       strategy.FeeForm,
 			StrategyID:    strategy.StrategyID,
@@ -233,6 +251,30 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
 func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectRequest, enterpriseID int64) (*http_model.UpdateProjectData, error) {
 	//fmt.Println("newproject:", newProject)
 	RecruitDdl, _ := time.ParseInLocation("2006-01-02 15:04:05", newProject.RecruitDdl, time.Local)
+	oldProject, err3 := db.GetProjectDetail(ctx, conv.MustInt64(newProject.ProjectID, 0))
+	if err3 != nil {
+		return nil, err3
+	}
+	feeFrom := []string{}
+	for _, strategy := range newProject.RecruitStrategys {
+		//if strategy.StrategyID
+		feeFrom = append(feeFrom, strconv.FormatInt(strategy.FeeForm, 10))
+		//feeForm += string(strategy.StrategyID)
+	}
+	var ECost float64 = 0
+	if newProject.ProjectType == int64(1) {
+		for _, strategy := range newProject.RecruitStrategys {
+			// 计算预估成本
+			var tmpCost float64 = 0
+			if strategy.FeeForm == 1 {
+				tmpCost = strategy.ServiceCharge * float64(strategy.RecruitNumber)
+			} else if strategy.FeeForm == 2 {
+				tmpCost = strategy.Offer * float64(strategy.RecruitNumber)
+			}
+			ECost += tmpCost
+		}
+	}
+	feeFroms := strings.Join(feeFrom, ",")
 	project := gorm_model.ProjectInfo{
 		ProjectID:     conv.MustInt64(newProject.ProjectID, 0),
 		RecruitDdl:    &RecruitDdl,
@@ -242,6 +284,8 @@ func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectR
 		ProjectForm:   conv.MustInt64(newProject.ProjectForm, 0),
 		EnterpriseID:  enterpriseID,
 		ProjectStatus: int64(newProject.ProjectStatus),
+		FeeForm:       feeFroms,
+		EstimatedCost: ECost,
 	}
 	projectID, err := db.UpdateProject(ctx, project)
 	if err != nil {
@@ -279,6 +323,15 @@ func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectR
 		// 新增策略
 		RecruitStrategys := []gorm_model.RecruitStrategy{}
 		for _, Strategy := range newProject.RecruitStrategys {
+			// 查询对应定价策略
+			pricingStrategy, err := db.GetPricingStrategy(ctx, Strategy.FollowersLow, Strategy.FollowersUp, Strategy.FeeForm, oldProject.ProjectPlatform)
+			if err != nil {
+				return nil, err
+			}
+			// 根据定价策略计算达人所见报价
+			if Strategy.FeeForm == 2 {
+				Strategy.TOffer = Strategy.Offer * (1 - conv.MustFloat64(pricingStrategy.ServiceRate, 0)/1000)
+			}
 			RecruitStrategy := gorm_model.RecruitStrategy{
 				FeeForm:       conv.MustInt64(Strategy.FeeForm, 0),
 				StrategyID:    conv.MustInt64(Strategy.StrategyID, 0),