|
@@ -186,24 +186,6 @@ func SetTaskFinish(ctx context.Context, TaskIDs []string) error {
|
|
|
return err1
|
|
|
}
|
|
|
|
|
|
- //// 2. 创建任务收益
|
|
|
- //var productStruct gorm_model.YounggeeProduct
|
|
|
- //if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
|
|
|
- // fmt.Println("Error:", err)
|
|
|
- // return err
|
|
|
- //}
|
|
|
- //var productPhotoStruct []gorm_model.YounggeeProductPhoto
|
|
|
- //if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
|
|
|
- // fmt.Println("Error:", err)
|
|
|
- // return err
|
|
|
- //}
|
|
|
- //var mainPhoto = ""
|
|
|
- //for _, w := range productPhotoStruct {
|
|
|
- // if w.Symbol == 1 {
|
|
|
- // mainPhoto = w.PhotoUrl
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
t := time.Now()
|
|
|
income := gorm_model.YounggeeTalentIncome{
|
|
|
TalentID: taskInfo.TalentID,
|
|
@@ -281,24 +263,6 @@ func SetLocalTaskFinish(ctx context.Context, TaskIDs []string) error {
|
|
|
return err1
|
|
|
}
|
|
|
|
|
|
- // 2. 创建任务收益
|
|
|
- //var productStruct gorm_model.YounggeeProduct
|
|
|
- //if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
|
|
|
- // fmt.Println("Error:", err)
|
|
|
- // return err
|
|
|
- //}
|
|
|
- //var productPhotoStruct []gorm_model.YounggeeProductPhoto
|
|
|
- //if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
|
|
|
- // fmt.Println("Error:", err)
|
|
|
- // return err
|
|
|
- //}
|
|
|
- //var mainPhoto = ""
|
|
|
- //for _, w := range productPhotoStruct {
|
|
|
- // if w.Symbol == 1 {
|
|
|
- // mainPhoto = w.PhotoUrl
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
t := time.Now()
|
|
|
income := gorm_model.YounggeeTalentIncome{
|
|
|
TalentID: taskInfo.TalentId,
|
|
@@ -373,6 +337,59 @@ func SetProjectSettleFlag(ctx context.Context, projectid string) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+func SetSettleAmount(ctx context.Context, settleamount *string, TaskIDs []string) error {
|
|
|
+ db := GetReadDB(ctx)
|
|
|
+ // 2. 转换 *string → float64
|
|
|
+ amount, err := strconv.ParseFloat(*settleamount, 64)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("invalid settleamount: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 查询任务列表
|
|
|
+ var tasks []gorm_model.YoungeeTaskInfo
|
|
|
+ err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", TaskIDs).Find(&tasks).Error
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 更新 SettleAmount
|
|
|
+ for _, taskInfo := range tasks {
|
|
|
+ taskInfo.SettleAmount = amount
|
|
|
+ if err := db.Save(&taskInfo).Error; err != nil {
|
|
|
+ logrus.WithContext(ctx).Errorf("failed to update task SettleAmount")
|
|
|
+ return fmt.Errorf("failed to update task %s: %v", taskInfo.TaskID, err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func SetLocalSettleAmount(ctx context.Context, settleamount *string, TaskIDs []string) error {
|
|
|
+ db := GetReadDB(ctx)
|
|
|
+ // 2. 转换 *string → float64
|
|
|
+ amount, err := strconv.ParseFloat(*settleamount, 64)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("invalid settleamount: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 查询任务列表
|
|
|
+ var tasks []gorm_model.YoungeeLocalTaskInfo
|
|
|
+ err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", TaskIDs).Find(&tasks).Error
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 更新 SettleAmount
|
|
|
+ for _, taskInfo := range tasks {
|
|
|
+ taskInfo.SettleAmount = amount
|
|
|
+ if err := db.Save(&taskInfo).Error; err != nil {
|
|
|
+ logrus.WithContext(ctx).Errorf("failed to update task SettleAmount")
|
|
|
+ return fmt.Errorf("failed to update task %s: %v", taskInfo.TaskId, err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
// SetSpecialTaskSettleNum 结案人数+1
|
|
|
func SetSpecialTaskSettleNum(ctx context.Context, TaskIDs []string) error {
|
|
|
db := GetReadDB(ctx)
|
|
@@ -384,28 +401,26 @@ func SetSpecialTaskSettleNum(ctx context.Context, TaskIDs []string) error {
|
|
|
}
|
|
|
for _, taskInfo := range tasks {
|
|
|
if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 {
|
|
|
- //project招募数+1,预估成本+服务商价格
|
|
|
- var projectinfo gorm_model.ProjectInfo
|
|
|
- err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectID).Find(&projectinfo).Error
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- projectinfo.SettleNum += 1
|
|
|
- err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ? ", taskInfo.ProjectID).Updates(projectinfo).Error
|
|
|
+ // 在事务中更新
|
|
|
+ err = db.Transaction(func(tx *gorm.DB) error {
|
|
|
+ // 更新 ProjectInfo
|
|
|
+ if err := tx.Model(gorm_model.ProjectInfo{}).
|
|
|
+ Where("project_id = ?", taskInfo.ProjectID).
|
|
|
+ Update("settle_num", gorm.Expr("settle_num + ?", 1)).
|
|
|
+ Error; err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ // 更新 YounggeeSProjectInfo
|
|
|
+ if err := tx.Model(gorm_model.YounggeeSProjectInfo{}).
|
|
|
+ Where("project_id = ?", taskInfo.SprojectId).
|
|
|
+ Update("settle_num", gorm.Expr("settle_num + ?", 1)).
|
|
|
+ Error; err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- //服务商s_project已招募人数+1
|
|
|
- var sprojectinfo gorm_model.YounggeeSProjectInfo
|
|
|
- err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", taskInfo.SprojectId).Find(&sprojectinfo).Error
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- sprojectinfo.RecruitNum += 1
|
|
|
- //fmt.Println("......", projectinfo.RecruitNum)
|
|
|
- err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", taskInfo.SprojectId).Updates(sprojectinfo).Error
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
+ return fmt.Errorf("failed to update settle_num: %v", err)
|
|
|
}
|
|
|
}
|
|
|
if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 {
|
|
@@ -455,32 +470,31 @@ func SetSpecialLocalTaskSettleNum(ctx context.Context, TaskIDs []string) error {
|
|
|
}
|
|
|
for _, taskInfo := range tasks {
|
|
|
if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 {
|
|
|
- //project招募数+1,预估成本+服务商价格
|
|
|
- var projectinfo gorm_model.YounggeeLocalLifeInfo
|
|
|
- err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Find(&projectinfo).Error
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- projectinfo.SettleNum += 1
|
|
|
- err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", taskInfo.LocalId).Updates(projectinfo).Error
|
|
|
+ // 在事务中更新
|
|
|
+ err = db.Transaction(func(tx *gorm.DB) error {
|
|
|
+ // 更新 YounggeeLocalLifeInfo
|
|
|
+ if err := tx.Model(gorm_model.YounggeeLocalLifeInfo{}).
|
|
|
+ Where("local_id = ?", taskInfo.LocalId).
|
|
|
+ Update("settle_num", gorm.Expr("settle_num + ?", 1)).
|
|
|
+ Error; err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ // 更新 YounggeeSLocalLifeInfo
|
|
|
+ if err := tx.Model(gorm_model.YounggeeSLocalLifeInfo{}).
|
|
|
+ Where("s_local_life_id = ?", taskInfo.SLocalLifeId).
|
|
|
+ Update("settle_num", gorm.Expr("settle_num + ?", 1)).
|
|
|
+ Error; err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- //服务商s_project已招募人数+1
|
|
|
- var sprojectinfo gorm_model.YounggeeSLocalLifeInfo
|
|
|
- err = db.Model(gorm_model.YounggeeSLocalLifeInfo{}).Where(" s_local_life_id =?", taskInfo.SLocalLifeId).Find(&sprojectinfo).Error
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- sprojectinfo.RecruitNum += 1
|
|
|
- fmt.Println("......", projectinfo.RecruitNum)
|
|
|
- err = db.Model(gorm_model.YounggeeSLocalLifeInfo{}).Where(" s_local_life_id =?", taskInfo.SLocalLifeId).Updates(sprojectinfo).Error
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
+ return fmt.Errorf("failed to update settle_num: %v", err)
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 {
|
|
|
- //project招募数+1
|
|
|
+ //project结案人数+1
|
|
|
var projectinfo gorm_model.YounggeeLocalLifeInfo
|
|
|
err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Find(&projectinfo).Error
|
|
|
if err != nil {
|