Bladeren bron

全流程-执行中

Ohio-HYF 2 jaren geleden
bovenliggende
commit
8a5de97dac
60 gewijzigde bestanden met toevoegingen van 2500 en 139 verwijderingen
  1. 31 25
      db/data.go
  2. 491 0
      db/default.go
  3. 29 20
      db/link.go
  4. 28 6
      db/logistics.go
  5. 189 0
      db/number_info.go
  6. 28 20
      db/script.go
  7. 40 19
      db/sketch.go
  8. 25 0
      db/terminate.go
  9. 0 1
      handler/accept_data.go
  10. 59 0
      handler/data_number_info.go
  11. 59 0
      handler/default_number_info.go
  12. 59 0
      handler/link_number_info.go
  13. 59 0
      handler/review_number_info.go
  14. 59 0
      handler/sketch_info.go
  15. 4 4
      handler/task_data_list.go
  16. 73 0
      handler/task_default_data_list.go
  17. 73 0
      handler/task_default_review_list.go
  18. 4 4
      handler/task_link_list.go
  19. 4 4
      handler/task_script_list.go
  20. 4 4
      handler/task_sketch_list.go
  21. 55 0
      handler/task_terminate.go
  22. 73 0
      handler/task_terminated_list.go
  23. 73 0
      handler/task_terminating_list.go
  24. 5 4
      model/common_model/talent_condition.go
  25. 22 0
      model/gorm_model/contract_info.go
  26. 21 0
      model/gorm_model/contract_set.go
  27. 26 0
      model/http_model/data_number_info.go
  28. 29 0
      model/http_model/default_number_info.go
  29. 26 0
      model/http_model/link_number_info.go
  30. 27 0
      model/http_model/logistic_number_info.go
  31. 28 0
      model/http_model/review_number_info.go
  32. 26 0
      model/http_model/sktech_info.go
  33. 1 1
      model/http_model/task_data.go
  34. 61 0
      model/http_model/task_default_data.go
  35. 58 0
      model/http_model/task_default_review.go
  36. 11 11
      model/http_model/task_link.go
  37. 1 1
      model/http_model/task_script.go
  38. 1 1
      model/http_model/task_sketch.go
  39. 18 0
      model/http_model/task_terminate.go
  40. 61 0
      model/http_model/task_terminated.go
  41. 61 0
      model/http_model/task_terminating.go
  42. 1 1
      pack/task_data_list.go
  43. 1 1
      pack/task_data_list_conditions.go
  44. 55 0
      pack/task_default_data_list.go
  45. 48 0
      pack/task_default_list_conditions.go
  46. 53 0
      pack/task_default_review_list.go
  47. 1 3
      pack/task_link_list.go
  48. 2 2
      pack/task_link_list_conditions.go
  49. 1 1
      pack/task_logistics_list_conditions.go
  50. 1 1
      pack/task_script_list.go
  51. 3 2
      pack/task_script_list_conditions.go
  52. 1 1
      pack/task_sketch_list.go
  53. 3 2
      pack/task_sketch_list_conditions.go
  54. 53 0
      pack/task_terminated_list.go
  55. 55 0
      pack/task_terminating_list.go
  56. 10 0
      route/init.go
  57. 66 0
      service/default.go
  58. 77 0
      service/number_info.go
  59. 29 0
      service/sketch.go
  60. 38 0
      service/terminate.go

+ 31 - 25
db/data.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/gorm_model"
@@ -19,14 +20,16 @@ import (
 func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDataInfo, int64, error) {
 	db := GetReadDB(ctx)
 	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{})
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(conditions).Elem()
 	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
 	for i := 0; i < conditionType.NumField(); i++ {
 		field := conditionType.Field(i)
 		tag := field.Tag.Get("condition")
 		value := conditionValue.FieldByName(field.Name)
+
 		if tag == "data_status" {
 			fmt.Printf("Data %+v", value.Interface() == int64(0))
 			if value.Interface() == int64(0) {
@@ -35,11 +38,22 @@ func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum in
 				db = db.Where("task_stage > ?", 14)
 			}
 			continue
-		}
-		if !util.IsBlank(value) && tag != "platform_nickname" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "platform_nickname" {
-			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
 		}
 	}
 	var taskInfos []gorm_model.YoungeeTaskInfo
@@ -62,16 +76,6 @@ func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum in
 	db1 := GetReadDB(ctx)
 	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
 
-	// 根据Project条件过滤
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag == "platform_nickname" { // input:1		taskIdsbase:1,2,3    string
-			fmt.Printf("Test %s = ?\n", tag)
-			db1 = db1.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
 	var DataInfos []gorm_model.YounggeeDataInfo
 	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
 	if conditions.DataStatus == int64(0) {
@@ -109,6 +113,7 @@ func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum in
 
 	var TaskDatas []*http_model.TaskData
 	var taskDatas []*http_model.TaskDataInfo
+	var newTaskDatas []*http_model.TaskDataInfo
 	for _, taskId := range taskIds {
 		TaskData := new(http_model.TaskData)
 		TaskData.Talent = taskMap[taskId]
@@ -119,10 +124,16 @@ func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum in
 	taskDatas = pack.TaskDataToTaskInfo(TaskDatas)
 
 	for _, v := range taskDatas {
-		fmt.Printf("taskData: %+v \n", *v)
+		if platform_nickname == "" {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else {
+			totalTask--
+		}
 	}
 	// return fulltaskData, total, nil
-	return taskDatas, totalTask, nil
+	return newTaskDatas, totalTask, nil
 }
 
 // DataOpinion 提交意见
@@ -146,7 +157,7 @@ func DataOpinion(ctx context.Context, TaskID int, ReviseOpinion string) error {
 	return nil
 }
 
-// AcceptData 同意链接
+// AcceptData 同意数据-结案
 func AcceptData(ctx context.Context, TaskIDs []int) error {
 	db := GetReadDB(ctx)
 	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
@@ -154,12 +165,7 @@ func AcceptData(ctx context.Context, TaskIDs []int) error {
 		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 15}).Error
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err

+ 491 - 0
db/default.go

@@ -0,0 +1,491 @@
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strings"
+	"youngee_b_api/model/common_model"
+	"youngee_b_api/model/gorm_model"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/pack"
+	"youngee_b_api/util"
+
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+)
+
+func GetTaskDefaultReviewList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultReviewInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			fmt.Printf("default %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("cur_default_type = 1")
+			} else if value.Interface() == int64(1) {
+				db = db.Where("cur_default_type = 3")
+			} else if value.Interface() == int64(2) {
+				db = db.Where("cur_default_type = 5")
+			}
+			continue
+		}
+		if !util.IsBlank(value) {
+			logrus.Println("tag: ", tag)
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []int
+	taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskID)
+		taskMap[taskInfo.TaskID] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
+
+	var DefaultReviewInfos []gorm_model.YoungeeContractInfo
+	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
+	err := db1.Find(&DefaultReviewInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	DefaultReviewMap := make(map[int]gorm_model.YoungeeContractInfo)
+	for _, DefaultReviewInfo := range DefaultReviewInfos {
+		DefaultReviewMap[conv.MustInt(DefaultReviewInfo.TaskID)] = DefaultReviewInfo
+	}
+	// 查询总数
+	var totalDefaultReview int64
+	if err := db1.Count(&totalDefaultReview).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalDefaultReview > totalTask {
+		misNum = totalDefaultReview - totalTask
+	} else {
+		misNum = totalTask - totalDefaultReview
+	}
+	logrus.Println("totalDefaultReview,totalTalent,misNum:", totalDefaultReview, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskDefaultReviews []*http_model.TaskDefaultReview
+	var taskDefaultReviews []*http_model.TaskDefaultReviewInfo
+	var newTaskDefaultReviews []*http_model.TaskDefaultReviewInfo
+	for _, taskId := range taskIds {
+		TaskDefaultReview := new(http_model.TaskDefaultReview)
+		TaskDefaultReview.Talent = taskMap[taskId]
+		TaskDefaultReview.Default = DefaultReviewMap[taskId]
+		TaskDefaultReviews = append(TaskDefaultReviews, TaskDefaultReview)
+	}
+
+	taskDefaultReviews = pack.TaskDefaultReviewToTaskInfo(TaskDefaultReviews)
+
+	for _, v := range taskDefaultReviews {
+		if platform_nickname == "" {
+			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskDefaultReviews, totalTask, nil
+}
+
+func GetTaskDefaultDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultDataInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			if value.Interface() == int64(3) {
+				db = db.Where("cur_default_type = 7")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			logrus.Println("tag: ", tag)
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []int
+	taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskID)
+		taskMap[taskInfo.TaskID] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
+
+	var DefaultDataInfos []gorm_model.YoungeeContractInfo
+	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
+	err := db1.Find(&DefaultDataInfos).Error
+	DefaultDataMap := make(map[int]gorm_model.YoungeeContractInfo)
+	for _, DefaultDataInfo := range DefaultDataInfos {
+		DefaultDataMap[conv.MustInt(DefaultDataInfo.TaskID)] = DefaultDataInfo
+	}
+
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db2 := GetReadDB(ctx)
+	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
+	LinkMap := make(map[int]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[conv.MustInt(LinkInfo.TaskID)] = LinkInfo
+	}
+
+	// 查询总数
+	var totalDefaultData int64
+	if err := db2.Count(&totalDefaultData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalDefaultData > totalTask {
+		misNum = totalDefaultData - totalTask
+	} else {
+		misNum = totalTask - totalDefaultData
+	}
+	logrus.Println("totalDefaultData,totalTalent,misNum:", totalDefaultData, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskDefaultDatas []*http_model.TaskDefaultData
+	var taskDefaultDatas []*http_model.TaskDefaultDataInfo
+	var newTaskDefaultDatas []*http_model.TaskDefaultDataInfo
+	for _, taskId := range taskIds {
+		TaskDefaultData := new(http_model.TaskDefaultData)
+		TaskDefaultData.Talent = taskMap[taskId]
+		TaskDefaultData.Default = DefaultDataMap[taskId]
+		TaskDefaultData.Link = LinkMap[taskId]
+		TaskDefaultDatas = append(TaskDefaultDatas, TaskDefaultData)
+	}
+
+	taskDefaultDatas = pack.TaskDefaultDataToTaskInfo(TaskDefaultDatas)
+
+	for _, v := range taskDefaultDatas {
+		if platform_nickname == "" {
+			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskDefaultDatas, totalTask, nil
+}
+
+func GetTaskTerminatingList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatingInfo, int64, error) {
+	db := GetReadDB(ctx)
+
+	var taskIds1 []int
+	var totalTerminating int64
+	var TerminatingInfos []gorm_model.YoungeeContractInfo
+	db = db.Model(gorm_model.YoungeeContractInfo{})
+	err := db.Where("default_status = 3").Find(&TerminatingInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	TerminatingMap := make(map[int]gorm_model.YoungeeContractInfo)
+	for _, TerminatingInfo := range TerminatingInfos {
+		taskIds1 = append(taskIds1, TerminatingInfo.TaskID)
+		TerminatingMap[conv.MustInt(TerminatingInfo.TaskID)] = TerminatingInfo
+	}
+
+	if err := db.Count(&totalTerminating).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	db1 := GetReadDB(ctx)
+	// 查询Task表信息
+	db1 = db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_id in ?", taskIds1)
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			if value.Interface() == int64(4) {
+				db = db.Where("cur_default_type = 9")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			logrus.Println("tag: ", tag)
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db1 = db1.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db1 = db1.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db1 = db1.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	// db1 = db1.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db1.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db1.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []int
+	taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskID)
+		taskMap[taskInfo.TaskID] = taskInfo
+	}
+	var misNum int64
+	if totalTerminating > totalTask {
+		misNum = totalTerminating - totalTask
+	} else {
+		misNum = totalTask - totalTerminating
+	}
+	logrus.Println("totalTerminating,totalTalent,misNum:", totalTerminating, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db1.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskTerminatings []*http_model.TaskTerminating
+	var taskTerminatings []*http_model.TaskTerminatingInfo
+	var newTaskTerminatings []*http_model.TaskTerminatingInfo
+	for _, taskId := range taskIds {
+		TaskTerminating := new(http_model.TaskTerminating)
+		TaskTerminating.Talent = taskMap[taskId]
+		TaskTerminating.Default = TerminatingMap[taskId]
+		TaskTerminatings = append(TaskTerminatings, TaskTerminating)
+	}
+
+	taskTerminatings = pack.TaskTerminatingToTaskInfo(TaskTerminatings)
+
+	for _, v := range taskTerminatings {
+		if platform_nickname == "" {
+			newTaskTerminatings = append(newTaskTerminatings, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskTerminatings = append(newTaskTerminatings, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskTerminatings, totalTask, nil
+}
+
+func GetTaskTerminatedList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatedInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			fmt.Printf("default %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(5) {
+				db = db.Where("complete_status = 4")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			logrus.Println("tag: ", tag)
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []int
+	taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskID)
+		taskMap[taskInfo.TaskID] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
+
+	var TerminatedInfos []gorm_model.YoungeeContractInfo
+	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
+	if conditions.DefaultStatus == int64(0) {
+		db1 = db1.Where("is_review = 0").Find(&TerminatedInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&TerminatedInfos)
+	}
+	TerminatedMap := make(map[int]gorm_model.YoungeeContractInfo)
+	for _, TerminatedInfo := range TerminatedInfos {
+		TerminatedMap[conv.MustInt(TerminatedInfo.TaskID)] = TerminatedInfo
+	}
+	// 查询总数
+	var totalTerminated int64
+	if err := db1.Count(&totalTerminated).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalTerminated > totalTask {
+		misNum = totalTerminated - totalTask
+	} else {
+		misNum = totalTask - totalTerminated
+	}
+	logrus.Println("totalTerminated,totalTalent,misNum:", totalTerminated, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskTerminateds []*http_model.TaskTerminated
+	var taskTerminateds []*http_model.TaskTerminatedInfo
+	var newTaskTerminateds []*http_model.TaskTerminatedInfo
+	for _, taskId := range taskIds {
+		TaskTerminated := new(http_model.TaskTerminated)
+		TaskTerminated.Talent = taskMap[taskId]
+		TaskTerminated.Default = TerminatedMap[taskId]
+		TaskTerminateds = append(TaskTerminateds, TaskTerminated)
+	}
+
+	taskTerminateds = pack.TaskTerminatedToTaskInfo(TaskTerminateds)
+
+	for _, v := range taskTerminateds {
+		if platform_nickname == "" {
+			newTaskTerminateds = append(newTaskTerminateds, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskTerminateds = append(newTaskTerminateds, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskTerminateds, totalTask, nil
+}

+ 29 - 20
db/link.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/gorm_model"
@@ -19,10 +20,11 @@ import (
 func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskLinkInfo, int64, error) {
 	db := GetReadDB(ctx)
 	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{})
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(conditions).Elem()
 	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
 	for i := 0; i < conditionType.NumField(); i++ {
 		field := conditionType.Field(i)
 		tag := field.Tag.Get("condition")
@@ -35,11 +37,23 @@ func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum in
 				db = db.Where("task_stage > ?", 12)
 			}
 			continue
-		}
-		if !util.IsBlank(value) && tag != "platform_nickname" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "platform_nickname" {
-			continue
+		} else if !util.IsBlank(value) {
+			logrus.Println("tag: ", tag)
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
 		}
 	}
 	var taskInfos []gorm_model.YoungeeTaskInfo
@@ -62,16 +76,6 @@ func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum in
 	db1 := GetReadDB(ctx)
 	db1 = db1.Debug().Model(gorm_model.YounggeeLinkInfo{})
 
-	// 根据Project条件过滤
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag == "platform_nickname" { // input:1		taskIdsbase:1,2,3    string
-			fmt.Printf("Test %s = ?\n", tag)
-			db1 = db1.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
 	var LinkInfos []gorm_model.YounggeeLinkInfo
 	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
 	if conditions.LinkStatus == int64(0) {
@@ -101,7 +105,6 @@ func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum in
 	limit := pageSize + misNum
 	offset := pageSize * pageNum // assert pageNum start with 0
 	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
 		return nil, 0, err
@@ -109,6 +112,7 @@ func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum in
 
 	var TaskLinks []*http_model.TaskLink
 	var taskLinks []*http_model.TaskLinkInfo
+	var newTaskLinks []*http_model.TaskLinkInfo
 	for _, taskId := range taskIds {
 		TaskLink := new(http_model.TaskLink)
 		TaskLink.Talent = taskMap[taskId]
@@ -119,10 +123,15 @@ func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum in
 	taskLinks = pack.TaskLinkToTaskInfo(TaskLinks)
 
 	for _, v := range taskLinks {
-		fmt.Printf("taskLink: %+v \n", *v)
+		if platform_nickname == "" {
+			newTaskLinks = append(newTaskLinks, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskLinks = append(newTaskLinks, v)
+		} else {
+			totalTask--
+		}
 	}
-	// return fulltaskLink, total, nil
-	return taskLinks, totalTask, nil
+	return newTaskLinks, totalTask, nil
 }
 
 // LinkOpinion 提交意见

+ 28 - 6
db/logistics.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/gorm_model"
@@ -58,14 +59,28 @@ func GetTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageN
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(conditions).Elem()
 	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
 	for i := 0; i < conditionType.NumField(); i++ {
 		field := conditionType.Field(i)
 		tag := field.Tag.Get("condition")
 		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag != "platform_nickname" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "platform_nickname" {
-			continue
+		if !util.IsBlank(value) {
+			logrus.Println("tag: ", tag)
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
 		}
 	}
 	var taskInfos []gorm_model.YoungeeTaskInfo
@@ -131,6 +146,7 @@ func GetTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageN
 
 	var TaskLogisticss []*http_model.TaskLogistics
 	var taskLogisticss []*http_model.TaskLogisticsInfo
+	var newTaskLinks []*http_model.TaskLogisticsInfo
 	for _, taskId := range taskIds {
 		TaskLogistics := new(http_model.TaskLogistics)
 		TaskLogistics.Talent = taskMap[taskId]
@@ -141,10 +157,16 @@ func GetTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageN
 	taskLogisticss = pack.TaskLogisticsToTaskInfo(TaskLogisticss)
 
 	for _, v := range taskLogisticss {
-		fmt.Println("taskLogisticss: \n", *v)
+		if platform_nickname == "" {
+			newTaskLinks = append(newTaskLinks, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskLinks = append(newTaskLinks, v)
+		} else {
+			totalTask--
+		}
 	}
 	// return fulltaskLogisticss, total, nil
-	return taskLogisticss, totalTask, nil
+	return newTaskLinks, totalTask, nil
 }
 
 // 修改任务表的物流状态

+ 189 - 0
db/number_info.go

@@ -0,0 +1,189 @@
+package db
+
+import (
+	"context"
+	"youngee_b_api/model/gorm_model"
+	"youngee_b_api/model/http_model"
+
+	"github.com/sirupsen/logrus"
+)
+
+func GetLogisticsNumberInfo(ctx context.Context, projectId int64, strategyIds []int64) (*http_model.GetLogisticsNumberInfoData, error) {
+	var LogisticsNumberInfoDataList http_model.GetLogisticsNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var LogisticsNumberInfoData http_model.LogisticsNumberInfo
+		LogisticsNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("logistics_status = 1").Count(&LogisticsNumberInfoData.UndeliveredNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("logistics_status = 2").Count(&LogisticsNumberInfoData.DeliveredNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("logistics_status = 3").Count(&LogisticsNumberInfoData.SignedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		LogisticsNumberInfoDataList.LogisticsNumberInfoList = append(LogisticsNumberInfoDataList.LogisticsNumberInfoList, &LogisticsNumberInfoData)
+	}
+	return &LogisticsNumberInfoDataList, nil
+}
+
+func GetReviewNumberInfo(ctx context.Context, projectId int64, strategyIds []int64) (*http_model.GetReviewNumberInfoData, error) {
+	var ReviewNumberInfoDataList http_model.GetReviewNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var ReviewNumberInfoData http_model.ReviewNumberInfo
+		ReviewNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("task_stage = 8").Count(&ReviewNumberInfoData.ScriptUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 8").Count(&ReviewNumberInfoData.ScriptPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage = 10").Count(&ReviewNumberInfoData.SketchUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 10").Count(&ReviewNumberInfoData.SketchPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Count(&ReviewNumberInfoData.ReviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		ReviewNumberInfoDataList.ReviewNumberInfoList = append(ReviewNumberInfoDataList.ReviewNumberInfoList, &ReviewNumberInfoData)
+	}
+	return &ReviewNumberInfoDataList, nil
+}
+
+func GetLinkNumberInfo(ctx context.Context, projectId int64, strategyIds []int64) (*http_model.GetLinkNumberInfoData, error) {
+	var LinkNumberInfoDataList http_model.GetLinkNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var LinkNumberInfoData http_model.LinkNumberInfo
+		LinkNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("task_stage = 12").Count(&LinkNumberInfoData.LinkUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 12").Count(&LinkNumberInfoData.LinkPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Count(&LinkNumberInfoData.LinkNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		LinkNumberInfoDataList.LinkNumberInfoList = append(LinkNumberInfoDataList.LinkNumberInfoList, &LinkNumberInfoData)
+	}
+	return &LinkNumberInfoDataList, nil
+}
+
+func GetDataNumberInfo(ctx context.Context, projectId int64, strategyIds []int64) (*http_model.GetDataNumberInfoData, error) {
+	var DataNumberInfoDataList http_model.GetDataNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var DataNumberInfoData http_model.DataNumberInfo
+		DataNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("task_stage = 14").Count(&DataNumberInfoData.DataUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 14").Count(&DataNumberInfoData.DataPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Count(&DataNumberInfoData.DataNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		DataNumberInfoDataList.DataNumberInfoList = append(DataNumberInfoDataList.DataNumberInfoList, &DataNumberInfoData)
+	}
+	return &DataNumberInfoDataList, nil
+}
+
+func GetDefaultNumberInfo(ctx context.Context, projectId int64, strategyIds []int64) (*http_model.GetDefaultNumberInfoData, error) {
+	var DefaultNumberInfoDataList http_model.GetDefaultNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var DefaultNumberInfoData http_model.DefaultNumberInfo
+		DefaultNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("complete_status <> 4").Count(&DefaultNumberInfoData.ShouldFinishNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 1").Count(&DefaultNumberInfoData.UnuploadScriptNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 3").Count(&DefaultNumberInfoData.UnuploadSketchNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 5").Count(&DefaultNumberInfoData.UnuploadLinkNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 7").Count(&DefaultNumberInfoData.UnuploadDataNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("complete_status = 4").Count(&DefaultNumberInfoData.TerminateNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		DefaultNumberInfoDataList.DefaultNumberInfoList = append(DefaultNumberInfoDataList.DefaultNumberInfoList, &DefaultNumberInfoData)
+	}
+	return &DefaultNumberInfoDataList, nil
+}

+ 28 - 20
db/script.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/gorm_model"
@@ -19,10 +20,11 @@ import (
 func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskScriptInfo, int64, error) {
 	db := GetReadDB(ctx)
 	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{})
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(conditions).Elem()
 	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
 	for i := 0; i < conditionType.NumField(); i++ {
 		field := conditionType.Field(i)
 		tag := field.Tag.Get("condition")
@@ -36,10 +38,22 @@ func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum
 			}
 			continue
 		}
-		if !util.IsBlank(value) && tag != "platform_nickname" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "platform_nickname" {
-			continue
+		if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
 		}
 	}
 	var taskInfos []gorm_model.YoungeeTaskInfo
@@ -62,18 +76,6 @@ func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum
 	db1 := GetReadDB(ctx)
 	db1 = db1.Debug().Model(gorm_model.YounggeeScriptInfo{})
 
-	// 根据Project条件过滤
-	conditionType2 := reflect.TypeOf(conditions).Elem()
-	conditionValue2 := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType2.NumField(); i++ {
-		field := conditionType2.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue2.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag == "platform_nickname" { // input:1		taskIdsbase:1,2,3    string
-			fmt.Printf("Test %s = ?\n", tag)
-			db1 = db1.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
 	var ScriptInfos []gorm_model.YounggeeScriptInfo
 	db1 = db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
 	if conditions.ScriptStatus == int64(2) {
@@ -111,6 +113,7 @@ func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum
 
 	var TaskScripts []*http_model.TaskScript
 	var taskScripts []*http_model.TaskScriptInfo
+	var newTaskScripts []*http_model.TaskScriptInfo
 	for _, taskId := range taskIds {
 		TaskScript := new(http_model.TaskScript)
 		TaskScript.Talent = taskMap[taskId]
@@ -121,10 +124,15 @@ func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum
 	taskScripts = pack.TaskScriptToTaskInfo(TaskScripts)
 
 	for _, v := range taskScripts {
-		fmt.Printf("taskScript: %+v \n", *v)
+		if platform_nickname == "" {
+			newTaskScripts = append(newTaskScripts, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskScripts = append(newTaskScripts, v)
+		} else {
+			totalTask--
+		}
 	}
-	// return fulltaskScript, total, nil
-	return taskScripts, totalTask, nil
+	return newTaskScripts, totalTask, nil
 }
 
 // ScriptOpinion 提交意见

+ 40 - 19
db/sketch.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/gorm_model"
@@ -19,10 +20,11 @@ import (
 func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskSketchInfo, int64, error) {
 	db := GetReadDB(ctx)
 	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{})
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(conditions).Elem()
 	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
 	for i := 0; i < conditionType.NumField(); i++ {
 		field := conditionType.Field(i)
 		tag := field.Tag.Get("condition")
@@ -35,11 +37,22 @@ func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum
 				db = db.Where("task_stage > ?", 10)
 			}
 			continue
-		}
-		if !util.IsBlank(value) && tag != "platform_nickname" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "platform_nickname" {
-			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			} else if tag == "strategy_ids" {
+				strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
+				var strategyIdList []int
+				for _, strategyId := range strategyIds {
+					strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
+				}
+				db = db.Where("strategy_id in ?", strategyIdList)
+			} else {
+				db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
+			}
 		}
 	}
 	var taskInfos []gorm_model.YoungeeTaskInfo
@@ -62,16 +75,6 @@ func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum
 	db1 := GetReadDB(ctx)
 	db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
 
-	// 根据Project条件过滤
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag == "platform_nickname" { // input:1		taskIdsbase:1,2,3    string
-			fmt.Printf("Test %s = ?\n", tag)
-			db1 = db1.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
 	var SketchInfos []gorm_model.YounggeeSketchInfo
 	db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
 	if conditions.SketchStatus == int64(0) {
@@ -111,6 +114,7 @@ func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum
 
 	var TaskSketches []*http_model.TaskSketch
 	var taskSketches []*http_model.TaskSketchInfo
+	var newTaskSketches []*http_model.TaskSketchInfo
 	for _, taskId := range taskIds {
 		TaskSketch := new(http_model.TaskSketch)
 		TaskSketch.Talent = taskMap[taskId]
@@ -121,10 +125,15 @@ func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum
 	taskSketches = pack.TaskSketchToTaskInfo(TaskSketches)
 
 	for _, v := range taskSketches {
-		fmt.Printf("taskSketch: %+v \n", *v)
+		if platform_nickname == "" {
+			newTaskSketches = append(newTaskSketches, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskSketches = append(newTaskSketches, v)
+		} else {
+			totalTask--
+		}
 	}
-	// return fulltaskSketch, total, nil
-	return taskSketches, totalTask, nil
+	return newTaskSketches, totalTask, nil
 }
 
 // SketchOption 提交意见
@@ -171,6 +180,18 @@ func AcceptSketch(ctx context.Context, TaskIDs []int) error {
 	return nil
 }
 
+// FindPhoto
+func FindSketchInfo(ctx context.Context, TaskID int64) (*gorm_model.YounggeeSketchInfo, error) {
+	db := GetReadDB(ctx)
+	var SketchInfo gorm_model.YounggeeSketchInfo
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_ok = 1", TaskID).Find(&SketchInfo).Error
+	if err != nil {
+		return nil, err
+	}
+	return &SketchInfo, nil
+
+}
+
 // FindPhoto
 func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
 	db := GetReadDB(ctx)

+ 25 - 0
db/terminate.go

@@ -0,0 +1,25 @@
+package db
+
+import (
+	"context"
+	"time"
+	"youngee_b_api/model/gorm_model"
+
+	"github.com/sirupsen/logrus"
+)
+
+// Terminate 批量提交解约申请
+func Terminate(ctx context.Context, TaskIDs []int) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ?  and default_status = 1", TaskIDs).Updates(map[string]interface{}{"default_status": 3, "terminate_at": time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeContractInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 9}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}

+ 0 - 1
handler/accept_data.go

@@ -52,7 +52,6 @@ func (h *AcceptDataHandler) run() {
 	}
 	h.resp.Message = "成功通过脚本"
 	h.resp.Data = res
-	h.resp.Data = data
 }
 
 func (h *AcceptDataHandler) checkParam() error {

+ 59 - 0
handler/data_number_info.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+)
+
+func WrapGetDataNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetDataNumberInfoHandler(ctx)
+	baseRun(handler)
+}
+
+func newGetDataNumberInfoHandler(ctx *gin.Context) *GetDataNumberInfoHandler {
+	return &GetDataNumberInfoHandler{
+		req:  http_model.NewGetDataNumberInfoRequest(),
+		resp: http_model.NewGetDataNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetDataNumberInfoHandler struct {
+	req  *http_model.GetDataNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetDataNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetDataNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetDataNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetDataNumberInfoHandler) run() {
+	data := http_model.GetDataNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetDataNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetDataNumberInfoHandler] call GetDataNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetDataNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetDataNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 59 - 0
handler/default_number_info.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+)
+
+func WrapGetDefaultNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetDefaultNumberInfoHandler(ctx)
+	baseRun(handler)
+}
+
+func newGetDefaultNumberInfoHandler(ctx *gin.Context) *GetDefaultNumberInfoHandler {
+	return &GetDefaultNumberInfoHandler{
+		req:  http_model.NewGetDefaultNumberInfoRequest(),
+		resp: http_model.NewGetDefaultNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetDefaultNumberInfoHandler struct {
+	req  *http_model.GetDefaultNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetDefaultNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetDefaultNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetDefaultNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetDefaultNumberInfoHandler) run() {
+	data := http_model.GetDefaultNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetDefaultNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetDefaultNumberInfoHandler] call GetDefaultNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetDefaultNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetDefaultNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 59 - 0
handler/link_number_info.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+)
+
+func WrapGetLinkNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetLinkNumberInfoHandler(ctx)
+	baseRun(handler)
+}
+
+func newGetLinkNumberInfoHandler(ctx *gin.Context) *GetLinkNumberInfoHandler {
+	return &GetLinkNumberInfoHandler{
+		req:  http_model.NewGetLinkNumberInfoRequest(),
+		resp: http_model.NewGetLinkNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetLinkNumberInfoHandler struct {
+	req  *http_model.GetLinkNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetLinkNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetLinkNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetLinkNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetLinkNumberInfoHandler) run() {
+	data := http_model.GetLinkNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetLinkNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLinkNumberInfoHandler] call GetLinkNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetLinkNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetLinkNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 59 - 0
handler/review_number_info.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+)
+
+func WrapGetReviewNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetReviewNumberInfoHandler(ctx)
+	baseRun(handler)
+}
+
+func newGetReviewNumberInfoHandler(ctx *gin.Context) *GetReviewNumberInfoHandler {
+	return &GetReviewNumberInfoHandler{
+		req:  http_model.NewGetReviewNumberInfoRequest(),
+		resp: http_model.NewGetReviewNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetReviewNumberInfoHandler struct {
+	req  *http_model.GetReviewNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetReviewNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetReviewNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetReviewNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetReviewNumberInfoHandler) run() {
+	data := http_model.GetReviewNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetReviewNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetReviewNumberInfoHandler] call GetReviewNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetReviewNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetReviewNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 59 - 0
handler/sketch_info.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+)
+
+// WrapGetSketchInfoHandler
+
+func WrapGetSketchInfoHandler(ctx *gin.Context) {
+	handler := newGetSketchInfoHandler(ctx)
+	baseRun(handler)
+}
+
+func newGetSketchInfoHandler(ctx *gin.Context) *GetSketchInfoHandler {
+	return &GetSketchInfoHandler{
+		req:  http_model.NewGetSketchInfoRequest(),
+		resp: http_model.NewGetSketchInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetSketchInfoHandler struct {
+	req  *http_model.GetSketchInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetSketchInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetSketchInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetSketchInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *GetSketchInfoHandler) run() {
+	data := *&http_model.GetSketchInfoRequest{}
+	data = *h.req
+	res, err := service.Sketch.GetSketchInfo(h.ctx, data)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[GetSketchInfoHandler] call GetByID err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetProduct fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Data = res
+}
+func (h *GetSketchInfoHandler) checkParam() error {
+	return nil
+}

+ 4 - 4
handler/task_data_list.go

@@ -62,10 +62,10 @@ func (h *TaskDataListHandler) checkParam() error {
 	if _, err := conv.Int64(h.req.ProjectId); err != nil {
 		errs = append(errs, err)
 	}
-	h.req.StrategyId = util.IsNull(h.req.StrategyId)
-	if _, err := conv.Int64(h.req.StrategyId); err != nil {
-		errs = append(errs, err)
-	}
+	// h.req.StrategyId = util.IsNull(h.req.StrategyId)
+	// if _, err := conv.Int64(h.req.StrategyId); err != nil {
+	// 	errs = append(errs, err)
+	// }
 	h.req.DataStatus = util.IsNull(h.req.DataStatus)
 	if _, err := conv.Int64(h.req.DataStatus); err != nil {
 		errs = append(errs, err)

+ 73 - 0
handler/task_default_data_list.go

@@ -0,0 +1,73 @@
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/pack"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapTaskDefaultDataListHandler(ctx *gin.Context) {
+	handler := newTaskDefaultDataListHandler(ctx)
+	baseRun(handler)
+}
+
+func newTaskDefaultDataListHandler(ctx *gin.Context) *TaskDefaultDataListHandler {
+	return &TaskDefaultDataListHandler{
+		req:  http_model.NewTaskDefaultDataListRequest(),
+		resp: http_model.NewTaskDefaultDataListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type TaskDefaultDataListHandler struct {
+	req  *http_model.TaskDefaultDataListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *TaskDefaultDataListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *TaskDefaultDataListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *TaskDefaultDataListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *TaskDefaultDataListHandler) run() {
+	conditions := pack.HttpTaskDefaultDataListRequestToCondition(h.req)
+	data, err := service.Default.GetTaskDefaultDataList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *TaskDefaultDataListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.ProjectId = util.IsNull(h.req.ProjectId)
+	if _, err := conv.Int64(h.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	h.req.DefaultStatus = util.IsNull(h.req.DefaultStatus)
+	if _, err := conv.Int64(h.req.DefaultStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 73 - 0
handler/task_default_review_list.go

@@ -0,0 +1,73 @@
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/pack"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapTaskDefaultReviewListHandler(ctx *gin.Context) {
+	handler := newTaskDefaultReviewListHandler(ctx)
+	baseRun(handler)
+}
+
+func newTaskDefaultReviewListHandler(ctx *gin.Context) *TaskDefaultReviewListHandler {
+	return &TaskDefaultReviewListHandler{
+		req:  http_model.NewTaskDefaultReviewListRequest(),
+		resp: http_model.NewTaskDefaultReviewListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type TaskDefaultReviewListHandler struct {
+	req  *http_model.TaskDefaultReviewListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *TaskDefaultReviewListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *TaskDefaultReviewListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *TaskDefaultReviewListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *TaskDefaultReviewListHandler) run() {
+	conditions := pack.HttpTaskDefaultReviewListRequestToCondition(h.req)
+	data, err := service.Default.GetTaskDefaultReviewList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *TaskDefaultReviewListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.ProjectId = util.IsNull(h.req.ProjectId)
+	if _, err := conv.Int64(h.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	h.req.DefaultStatus = util.IsNull(h.req.DefaultStatus)
+	if _, err := conv.Int64(h.req.DefaultStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 4 - 4
handler/task_link_list.go

@@ -62,10 +62,10 @@ func (h *TaskLinkListHandler) checkParam() error {
 	if _, err := conv.Int64(h.req.ProjectId); err != nil {
 		errs = append(errs, err)
 	}
-	h.req.StrategyId = util.IsNull(h.req.StrategyId)
-	if _, err := conv.Int64(h.req.StrategyId); err != nil {
-		errs = append(errs, err)
-	}
+	// h.req.StrategyId = util.IsNull(h.req.StrategyId)
+	// if _, err := conv.Int64(h.req.StrategyId); err != nil {
+	// 	errs = append(errs, err)
+	// }
 	h.req.LinkStatus = util.IsNull(h.req.LinkStatus)
 	if _, err := conv.Int64(h.req.LinkStatus); err != nil {
 		errs = append(errs, err)

+ 4 - 4
handler/task_script_list.go

@@ -62,10 +62,10 @@ func (h *TaskScriptListHandler) checkParam() error {
 	if _, err := conv.Int64(h.req.ProjectId); err != nil {
 		errs = append(errs, err)
 	}
-	h.req.StrategyId = util.IsNull(h.req.StrategyId)
-	if _, err := conv.Int64(h.req.StrategyId); err != nil {
-		errs = append(errs, err)
-	}
+	// h.req.StrategyId = util.IsNull(h.req.StrategyId)
+	// if _, err := conv.Int64(h.req.StrategyId); err != nil {
+	// 	errs = append(errs, err)
+	// }
 	h.req.ScriptStatus = util.IsNull(h.req.ScriptStatus)
 	if _, err := conv.Int64(h.req.ScriptStatus); err != nil {
 		errs = append(errs, err)

+ 4 - 4
handler/task_sketch_list.go

@@ -62,10 +62,10 @@ func (h *TaskSketchListHandler) checkParam() error {
 	if _, err := conv.Int64(h.req.ProjectId); err != nil {
 		errs = append(errs, err)
 	}
-	h.req.StrategyId = util.IsNull(h.req.StrategyId)
-	if _, err := conv.Int64(h.req.StrategyId); err != nil {
-		errs = append(errs, err)
-	}
+	// h.req.StrategyId = util.IsNull(h.req.StrategyId)
+	// if _, err := conv.Int64(h.req.StrategyId); err != nil {
+	// 	errs = append(errs, err)
+	// }
 	h.req.SketchStatus = util.IsNull(h.req.SketchStatus)
 	if _, err := conv.Int64(h.req.SketchStatus); err != nil {
 		errs = append(errs, err)

+ 55 - 0
handler/task_terminate.go

@@ -0,0 +1,55 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapTaskTerminateHandler(ctx *gin.Context) {
+	handler := newTaskTerminateHandler(ctx)
+	baseRun(handler)
+}
+
+func newTaskTerminateHandler(ctx *gin.Context) *TaskTerminateHandler {
+	return &TaskTerminateHandler{
+		req:  http_model.NewTaskTerminateRequest(),
+		resp: http_model.NewTaskTerminateResponse(),
+		ctx:  ctx,
+	}
+}
+
+type TaskTerminateHandler struct {
+	req  *http_model.TaskTerminateRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *TaskTerminateHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *TaskTerminateHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *TaskTerminateHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *TaskTerminateHandler) run() {
+	data := http_model.TaskTerminateRequest{}
+	data = *h.req
+	res, err := service.Terminate.TaskTerminate(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[TaskTerminateHandler] call TaskTerminate err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+func (h *TaskTerminateHandler) checkParam() error {
+	return nil
+}

+ 73 - 0
handler/task_terminated_list.go

@@ -0,0 +1,73 @@
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/pack"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapTaskTerminatedListHandler(ctx *gin.Context) {
+	handler := newTaskTerminatedListHandler(ctx)
+	baseRun(handler)
+}
+
+func newTaskTerminatedListHandler(ctx *gin.Context) *TaskTerminatedListHandler {
+	return &TaskTerminatedListHandler{
+		req:  http_model.NewTaskTerminatedListRequest(),
+		resp: http_model.NewTaskTerminatedListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type TaskTerminatedListHandler struct {
+	req  *http_model.TaskTerminatedListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *TaskTerminatedListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *TaskTerminatedListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *TaskTerminatedListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *TaskTerminatedListHandler) run() {
+	conditions := pack.HttpTaskTerminatedListRequestToCondition(h.req)
+	data, err := service.Default.GetTaskTerminatedList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *TaskTerminatedListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.ProjectId = util.IsNull(h.req.ProjectId)
+	if _, err := conv.Int64(h.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	h.req.DefaultStatus = util.IsNull(h.req.DefaultStatus)
+	if _, err := conv.Int64(h.req.DefaultStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 73 - 0
handler/task_terminating_list.go

@@ -0,0 +1,73 @@
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/pack"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapTaskTerminatingListHandler(ctx *gin.Context) {
+	handler := newTaskTerminatingListHandler(ctx)
+	baseRun(handler)
+}
+
+func newTaskTerminatingListHandler(ctx *gin.Context) *TaskTerminatingListHandler {
+	return &TaskTerminatingListHandler{
+		req:  http_model.NewTaskTerminatingListRequest(),
+		resp: http_model.NewTaskTerminatingListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type TaskTerminatingListHandler struct {
+	req  *http_model.TaskTerminatingListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *TaskTerminatingListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *TaskTerminatingListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *TaskTerminatingListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *TaskTerminatingListHandler) run() {
+	conditions := pack.HttpTaskTerminatingListRequestToCondition(h.req)
+	data, err := service.Default.GetTaskTerminatingList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *TaskTerminatingListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.ProjectId = util.IsNull(h.req.ProjectId)
+	if _, err := conv.Int64(h.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	h.req.DefaultStatus = util.IsNull(h.req.DefaultStatus)
+	if _, err := conv.Int64(h.req.DefaultStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 5 - 4
model/common_model/talent_condition.go

@@ -4,10 +4,11 @@ type TalentConditions struct {
 	ProjectId        int64  `condition:"project_id"`        // 项目ID
 	LogisticsStatus  int64  `condition:"logistics_status"`  // 物流状态
 	ScriptStatus     int64  `condition:"script_status"`     // 脚本状态
-	SketchStatus     int64  `condition:"sketch_status"`     //初稿状态
-	LinkStatus       int64  `condition:"link_status"`       //初稿状态
-	DataStatus       int64  `condition:"data_status"`       //初稿状态
-	StrategyId       int64  `condition:"strategy_id"`       // 策略ID
+	SketchStatus     int64  `condition:"sketch_status"`     // 初稿状态
+	LinkStatus       int64  `condition:"link_status"`       // 链接状态
+	DataStatus       int64  `condition:"data_status"`       // 数据状态
+	DefaultStatus    int64  `condition:"default_status"`    // 违约状态
+	StrategyIds      string `condition:"strategy_ids"`      // 策略ID
 	TaskId           string `condition:"task_id"`           // 任务ID
 	PlatformNickname string `condition:"platform_nickname"` // 账号昵称
 }

+ 22 - 0
model/gorm_model/contract_info.go

@@ -0,0 +1,22 @@
+// Code generated by sql2gorm. DO NOT EDIT.
+package gorm_model
+
+import (
+	"time"
+)
+
+type YoungeeContractInfo struct {
+	ContractID       int       `gorm:"column:contract_id;primary_key;AUTO_INCREMENT"` // 合约id
+	TaskID           int       `gorm:"column:task_id;NOT NULL"`                       // 任务id
+	BreakType        int       `gorm:"column:break_type;NOT NULL"`                    // 违约类型(4类严重违约):1(脚本)2(初稿)3(链接)4(数据)
+	SettlementAmount float64   `gorm:"column:settlement_amount;NOT NULL"`             // 应结算金额
+	BreakAt          time.Time `gorm:"column:break_at"`                               // 违约时间
+	HandleAt         time.Time `gorm:"column:handle_at"`                              // 处理时间
+	TerminateAt      time.Time `gorm:"column:terminate_at"`                           // 解约申请时间
+	DefaultStatus    int       `gorm:"column:default_status"`                         // 违约处理状态1-5分别表示为违约、已重新上传、解约待处理、解约已处理(驳回)、解约已处理(解约)
+}
+
+func (m *YoungeeContractInfo) TableName() string {
+	return "youngee_contract_info"
+}
+

+ 21 - 0
model/gorm_model/contract_set.go

@@ -0,0 +1,21 @@
+// Code generated by sql2gorm. DO NOT EDIT.
+package gorm_model
+
+import (
+	"time"
+)
+
+type YoungeeContractSet struct {
+	BreakManageID        int       `gorm:"column:break_manage_id;primary_key;AUTO_INCREMENT"` // 违约自动管理策略id
+	ProejctType          int       `gorm:"column:proejct_type;NOT NULL"`                      // 项目类型:1:全流程 2:专项
+	ProjectForm          int       `gorm:"column:project_form;NOT NULL"`                      // 任务形式:1-4分别代表实体商品寄拍、虚拟产品测评、线下探店打卡、素材微原创
+	FeeForm              int       `gorm:"column:fee_form;NOT NULL"`                          // 稿费形式:1,2,3分别代表产品置换、固定稿费、自报价
+	BreakType            time.Time `gorm:"column:break_type"`                                 // 违约类型:1-4:初稿、脚本、链接和数据
+	NouploadCutRatio     time.Time `gorm:"column:noupload_cut_ratio"`                         // 未上传 扣款比例
+	NotimeuploadCutRatio time.Time `gorm:"column:notimeupload_cut_ratio"`                     // 未按照规定时间上传脚本 扣款比例
+}
+
+func (m *YoungeeContractSet) TableName() string {
+	return "youngee_contract_set"
+}
+

+ 26 - 0
model/http_model/data_number_info.go

@@ -0,0 +1,26 @@
+package http_model
+
+type GetDataNumberInfoRequest struct {
+	ProjectId   int64  `json:"project_id"`   // 项目id
+	StrategyIds string `json:"strategy_ids"` // 招募策略id列表
+}
+
+type DataNumberInfo struct {
+	StrategyId         int64 `json:"strategy_id"`          // 招募策略id
+	DataNumber         int64 `json:"data_number"`          // 应传数据数量
+	DataUnreviewNumber int64 `json:"data_unreview_number"` // 数据待审数量
+	DataPassedNumber   int64 `json:"data_passed_number"`   // 数据已通过数量
+}
+
+type GetDataNumberInfoData struct {
+	DataNumberInfoList []*DataNumberInfo `json:"number_info_list"`
+}
+
+func NewGetDataNumberInfoRequest() *GetDataNumberInfoRequest {
+	return new(GetDataNumberInfoRequest)
+}
+func NewGetDataNumberInfoResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetDataNumberInfoData)
+	return resp
+}

+ 29 - 0
model/http_model/default_number_info.go

@@ -0,0 +1,29 @@
+package http_model
+
+type GetDefaultNumberInfoRequest struct {
+	ProjectId   int64  `json:"project_id"`   // 项目id
+	StrategyIds string `json:"strategy_ids"` // 招募策略id列表
+}
+
+type DefaultNumberInfo struct {
+	StrategyId           int64 `json:"strategy_id"`            // 招募策略id
+	ShouldFinishNumber   int64 `json:"should_finish_number"`   // 应结案数量
+	UnuploadSketchNumber int64 `json:"unupload_sketch_number"` // 未传初稿违约数量
+	UnuploadScriptNumber int64 `json:"unupload_script_number"` // 未传脚本违约数量
+	UnuploadLinkNumber   int64 `json:"unupload_link_number"`   // 未传链接违约数量
+	UnuploadDataNumber   int64 `json:"unupload_data_number"`   // 未传数据违约数量
+	TerminateNumber      int64 `json:"terminate_number"`       // 解约数量
+}
+
+type GetDefaultNumberInfoData struct {
+	DefaultNumberInfoList []*DefaultNumberInfo `json:"number_info_list"`
+}
+
+func NewGetDefaultNumberInfoRequest() *GetDefaultNumberInfoRequest {
+	return new(GetDefaultNumberInfoRequest)
+}
+func NewGetDefaultNumberInfoResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetDefaultNumberInfoData)
+	return resp
+}

+ 26 - 0
model/http_model/link_number_info.go

@@ -0,0 +1,26 @@
+package http_model
+
+type GetLinkNumberInfoRequest struct {
+	ProjectId   int64  `json:"project_id"`   // 项目id
+	StrategyIds string `json:"strategy_ids"` // 招募策略id列表
+}
+
+type LinkNumberInfo struct {
+	StrategyId         int64 `json:"strategy_id"`          // 招募策略id
+	LinkNumber         int64 `json:"link_number"`          // 应发布数量
+	LinkUnreviewNumber int64 `json:"link_unreview_number"` // 链接未审数量
+	LinkPassedNumber   int64 `json:"link_passed_number"`   // 链接已通过数量
+}
+
+type GetLinkNumberInfoData struct {
+	LinkNumberInfoList []*LinkNumberInfo `json:"number_info_list"`
+}
+
+func NewGetLinkNumberInfoRequest() *GetLinkNumberInfoRequest {
+	return new(GetLinkNumberInfoRequest)
+}
+func NewGetLinkNumberInfoResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLinkNumberInfoData)
+	return resp
+}

+ 27 - 0
model/http_model/logistic_number_info.go

@@ -0,0 +1,27 @@
+package http_model
+
+type GetLogisticsNumberInfoRequest struct {
+	ProjectId   int64  `json:"project_id"`   // 项目id
+	StrategyIds string `json:"strategy_ids"` // 招募策略id列表
+}
+
+type LogisticsNumberInfo struct {
+	StrategyId        int64 `json:"strategy_id"`        // 招募策略id
+	DeliverNumber     int64 `json:"deliver_number"`     // 应发货数量
+	UndeliveredNumber int64 `json:"undelivered_number"` // 未发货数量
+	DeliveredNumber   int64 `json:"delivered_number"`   // 已发货数量
+	SignedNumber      int64 `json:"signed_number"`      // 已签收数量
+}
+
+type GetLogisticsNumberInfoData struct {
+	LogisticsNumberInfoList []*LogisticsNumberInfo `json:"number_info_list"`
+}
+
+func NewGetLogisticsNumberInfoRequest() *GetLogisticsNumberInfoRequest {
+	return new(GetLogisticsNumberInfoRequest)
+}
+func NewGetLogisticsNumberInfoResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLogisticsNumberInfoData)
+	return resp
+}

+ 28 - 0
model/http_model/review_number_info.go

@@ -0,0 +1,28 @@
+package http_model
+
+type GetReviewNumberInfoRequest struct {
+	ProjectId   int64  `json:"project_id"`   // 项目id
+	StrategyIds string `json:"strategy_ids"` // 招募策略id列表
+}
+
+type ReviewNumberInfo struct {
+	StrategyId           int64 `json:"strategy_id"`            // 招募策略id
+	ReviewNumber         int64 `json:"review_number"`          // 应审稿数量
+	ScriptUnreviewNumber int64 `json:"script_unreview_number"` // 脚本待审数量
+	ScriptPassedNumber   int64 `json:"script_passed_number"`   // 脚本已通过数量
+	SketchUnreviewNumber int64 `json:"sketch_unreview_number"` // 初稿待审数量
+	SketchPassedNumber   int64 `json:"sketch_passed_number"`   // 初稿已通过数量
+}
+
+type GetReviewNumberInfoData struct {
+	ReviewNumberInfoList []*ReviewNumberInfo `json:"number_info_list"`
+}
+
+func NewGetReviewNumberInfoRequest() *GetReviewNumberInfoRequest {
+	return new(GetReviewNumberInfoRequest)
+}
+func NewGetReviewNumberInfoResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetReviewNumberInfoData)
+	return resp
+}

+ 26 - 0
model/http_model/sktech_info.go

@@ -0,0 +1,26 @@
+package http_model
+
+type GetSketchInfoRequest struct {
+	TaskID int64 `json:"task_id"`
+}
+
+type SketchPhotoInfo struct {
+	PhotoUrl string `json:"photo_url"` // 图片或视频url
+	PhotoUid string `json:"photo_uid"`
+	Symbol   int64  `json:"symbol"` // 标志位,1为详情图,2为视频
+}
+
+type GetSketchInfoData struct {
+	SketchPhotos []SketchPhotoInfo `json:"sketch_photos"` //初稿图片以及视频
+	Title        string            `json:"title"`
+	Content      string            `json:"content"`
+}
+
+func NewGetSketchInfoRequest() *GetSketchInfoRequest {
+	return new(GetSketchInfoRequest)
+}
+func NewGetSketchInfoResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetSketchInfoData)
+	return resp
+}

+ 1 - 1
model/http_model/task_data.go

@@ -10,7 +10,7 @@ type TaskDataListRequest struct {
 	PageNum          int64  `json:"page_num"`
 	ProjectId        string `json:"project_id"`        // 项目ID
 	TaskId           string `json:"task_id"`           // 任务ID
-	StrategyId       string `json:"strategy_id"`       // 策略ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
 	DataStatus       string `json:"data_status"`       // 稿件状态
 	PlatformNickname string `json:"platform_nickname"` // 账号昵称
 }

+ 61 - 0
model/http_model/task_default_data.go

@@ -0,0 +1,61 @@
+package http_model
+
+import (
+	"time"
+	"youngee_b_api/model/gorm_model"
+)
+
+type TaskDefaultDataListRequest struct {
+	PageSize         int64  `json:"page_size"`
+	PageNum          int64  `json:"page_num"`
+	ProjectId        string `json:"project_id"`        // 项目ID
+	TaskId           string `json:"task_id"`           // 任务ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
+	DefaultStatus    string `json:"default_status"`    // 稿件状态
+	PlatformNickname string `json:"platform_nickname"` // 账号昵称
+}
+
+type TaskDefaultDataPreview struct {
+	TaskID            string  `json:"task_id"`             // 任务ID
+	PlatformNickname  string  `json:"platform_nickname"`   // 账号昵称
+	FansCount         string  `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID string  `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        string  `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64 `json:"all_payment"`         // 企业支付
+	RealPayment       float64 `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	BreakAt           string  `json:"break_at"`            // 违约时间
+	LinkUrl           string  `json:"link_url"`            // 上传链接url
+}
+
+type TaskDefaultDataInfo struct {
+	TaskID            int       `json:"task_id"`             // 任务ID
+	PlatformNickname  string    `json:"platform_nickname"`   // 账号昵称
+	FansCount         string    `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID int       `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        int       `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64   `json:"all_payment"`         // 企业支付
+	RealPayment       float64   `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	BreakAt           time.Time `json:"break_at"`            // 违约时间
+	LinkUrl           string    `json:"link_url"`            // 上传链接url
+}
+
+type TaskDefaultData struct {
+	Talent  gorm_model.YoungeeTaskInfo
+	Default gorm_model.YoungeeContractInfo
+	Link    gorm_model.YounggeeLinkInfo
+}
+
+type TaskDefaultDataListData struct {
+	TaskDefaultPreview []*TaskDefaultDataPreview `json:"project_default_pre_view"`
+	Total              string                    `json:"total"`
+}
+
+func NewTaskDefaultDataListRequest() *TaskDefaultDataListRequest {
+	return new(TaskDefaultDataListRequest)
+}
+
+func NewTaskDefaultDataListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(ProjectTaskListData)
+	return resp
+}

+ 58 - 0
model/http_model/task_default_review.go

@@ -0,0 +1,58 @@
+package http_model
+
+import (
+	"time"
+	"youngee_b_api/model/gorm_model"
+)
+
+type TaskDefaultReviewListRequest struct {
+	PageSize         int64  `json:"page_size"`
+	PageNum          int64  `json:"page_num"`
+	ProjectId        string `json:"project_id"`        // 项目ID
+	TaskId           string `json:"task_id"`           // 任务ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
+	DefaultStatus    string `json:"default_status"`    // 稿件状态
+	PlatformNickname string `json:"platform_nickname"` // 账号昵称
+}
+
+type TaskDefaultReviewPreview struct {
+	TaskID            string  `json:"task_id"`             // 任务ID
+	PlatformNickname  string  `json:"platform_nickname"`   // 账号昵称
+	FansCount         string  `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID string  `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        string  `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64 `json:"all_payment"`         // 企业支付
+	RealPayment       float64 `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	BreakAt           string  `json:"break_at"`            // 违约时间
+}
+
+type TaskDefaultReviewInfo struct {
+	TaskID            int       `json:"task_id"`             // 任务ID
+	PlatformNickname  string    `json:"platform_nickname"`   // 账号昵称
+	FansCount         string    `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID int       `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        int       `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64   `json:"all_payment"`         // 企业支付
+	RealPayment       float64   `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	BreakAt           time.Time `json:"break_at"`            // 违约时间
+}
+
+type TaskDefaultReview struct {
+	Talent  gorm_model.YoungeeTaskInfo
+	Default gorm_model.YoungeeContractInfo
+}
+
+type TaskDefaultReviewListData struct {
+	TaskDefaultPreview []*TaskDefaultReviewPreview `json:"project_default_pre_view"`
+	Total              string                      `json:"total"`
+}
+
+func NewTaskDefaultReviewListRequest() *TaskDefaultReviewListRequest {
+	return new(TaskDefaultReviewListRequest)
+}
+
+func NewTaskDefaultReviewListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(ProjectTaskListData)
+	return resp
+}

+ 11 - 11
model/http_model/task_link.go

@@ -10,7 +10,7 @@ type TaskLinkListRequest struct {
 	PageNum          int64  `json:"page_num"`
 	ProjectId        string `json:"project_id"`        // 项目ID
 	TaskId           string `json:"task_id"`           // 任务ID
-	StrategyId       string `json:"strategy_id"`       // 策略ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
 	LinkStatus       string `json:"link_status"`       // 稿件状态
 	PlatformNickname string `json:"platform_nickname"` // 账号昵称
 }
@@ -19,13 +19,13 @@ type TaskLinkPreview struct {
 	TaskID            string `json:"task_id"`             // 任务ID
 	PlatformNickname  string `json:"platform_nickname"`   // 账号昵称
 	FansCount         string `json:"fans_count"`          // 粉丝数
-	RecruitStrategyID string `json:"recruit_strategy_id"` //招募策略ID
+	RecruitStrategyID string `json:"recruit_strategy_id"` // 招募策略ID
 	StrategyID        string `json:"strategy_id"`         // 报名选择的招募策略id
 	LinkUrl           string `json:"link_url"`            // 上传链接url
 	PhotoUrl          string `json:"photo_url"`           // 上传截图url
-	Submit            string `json:"link_upload_time"`    //创建时间
-	AgreeAt           string `json:"agree_at"`            //同意时间
-	ReviseOpinion     string `json:"revise_opinion"`      //审稿意见
+	Submit            string `json:"link_upload_time"`    // 创建时间
+	AgreeAt           string `json:"agree_at"`            // 同意时间
+	ReviseOpinion     string `json:"revise_opinion"`      // 审稿意见
 }
 
 type TaskLinkInfo struct {
@@ -34,15 +34,15 @@ type TaskLinkInfo struct {
 	FansCount         string    `json:"fans_count"`        // 粉丝数
 	RecruitStrategyID int       `json:"recruit_strategy_id"`
 	StrategyID        int       `json:"strategy_id"`    // 报名选择的招募策略id
-	LinkId            int       `json:"link_id"`        //链接ID
+	LinkId            int       `json:"link_id"`        // 链接ID
 	LinkUrl           string    `json:"link_url"`       // 上传链接url
 	PhotoUrl          string    `json:"photo_url"`      // 上传截图url
-	ReviseOpinion     string    `json:"revise_opinion"` //审稿意见
-	CreateAt          time.Time `json:"create_at"`      //创建时间
+	ReviseOpinion     string    `json:"revise_opinion"` // 审稿意见
+	CreateAt          time.Time `json:"create_at"`      // 创建时间
 	SubmitAt          time.Time `json:"submit_at"`      // 提交时间
-	AgreeAt           time.Time `json:"agree_at"`       //同意时间
-	RejectAt          time.Time `json:"reject_at"`      //拒绝时间
-	IsReview          int       `json:"is_review"`      //是否审核
+	AgreeAt           time.Time `json:"agree_at"`       // 同意时间
+	RejectAt          time.Time `json:"reject_at"`      // 拒绝时间
+	IsReview          int       `json:"is_review"`      // 是否审核
 }
 
 type TaskLink struct {

+ 1 - 1
model/http_model/task_script.go

@@ -10,7 +10,7 @@ type TaskScriptListRequest struct {
 	PageNum          int64  `json:"page_num"`
 	ProjectId        string `json:"project_id"`        // 项目ID
 	TaskId           string `json:"task_id"`           // 任务ID
-	StrategyId       string `json:"strategy_id"`       // 策略ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
 	ScriptStatus     string `json:"script_status"`     // 稿件状态
 	PlatformNickname string `json:"platform_nickname"` // 账号昵称
 }

+ 1 - 1
model/http_model/task_sketch.go

@@ -10,7 +10,7 @@ type TaskSketchListRequest struct {
 	PageNum          int64  `json:"page_num"`
 	ProjectId        string `json:"project_id"`        // 项目ID
 	TaskId           string `json:"task_id"`           // 任务ID
-	StrategyId       string `json:"strategy_id"`       // 策略ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
 	SketchStatus     string `json:"sketch_status"`     // 稿件状态
 	PlatformNickname string `json:"platform_nickname"` // 账号昵称
 }

+ 18 - 0
model/http_model/task_terminate.go

@@ -0,0 +1,18 @@
+package http_model
+
+type TaskTerminateRequest struct {
+	TaskIds string `json:"task_id_list"` //任务id列表
+}
+
+type TaskTerminateData struct {
+	TaskIds []int `json:"task_id_list"` //任务id列表
+}
+
+func NewTaskTerminateRequest() *TaskTerminateRequest {
+	return new(TaskTerminateRequest)
+}
+func NewTaskTerminateResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(TaskTerminateData)
+	return resp
+}

+ 61 - 0
model/http_model/task_terminated.go

@@ -0,0 +1,61 @@
+package http_model
+
+import (
+	"time"
+	"youngee_b_api/model/gorm_model"
+)
+
+type TaskTerminatedListRequest struct {
+	PageSize         int64  `json:"page_size"`
+	PageNum          int64  `json:"page_num"`
+	ProjectId        string `json:"project_id"`        // 项目ID
+	TaskId           string `json:"task_id"`           // 任务ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
+	DefaultStatus    string `json:"default_status"`    // 稿件状态
+	PlatformNickname string `json:"platform_nickname"` // 账号昵称
+}
+
+type TaskTerminatedPreview struct {
+	TaskID            string  `json:"task_id"`             // 任务ID
+	PlatformNickname  string  `json:"platform_nickname"`   // 账号昵称
+	FansCount         string  `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID string  `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        string  `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64 `json:"all_payment"`         // 企业支付
+	RealPayment       float64 `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	HandleAt          string  `json:"handle_at"`           // 处理时间
+	BreakType         string  `json:"break_type"`          // 违约类型(4类严重违约):1(脚本)2(初稿)3(链接)4(数据)
+}
+
+type TaskTerminatedInfo struct {
+	TaskID            int       `json:"task_id"`             // 任务ID
+	PlatformNickname  string    `json:"platform_nickname"`   // 账号昵称
+	FansCount         string    `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID int       `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        int       `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64   `json:"all_payment"`         // 企业支付
+	RealPayment       float64   `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	HandleAt          time.Time `json:"handle_at"`           // 处理时间
+	BreakType         int       `json:"break_type"`          // 违约类型(4类严重违约):1(脚本)2(初稿)3(链接)4(数据)
+}
+
+type TaskTerminated struct {
+	Talent   gorm_model.YoungeeTaskInfo
+	Default  gorm_model.YoungeeContractInfo
+	LinkInfo gorm_model.YounggeeLinkInfo
+}
+
+type TaskTerminatedListData struct {
+	TaskDefaultPreview []*TaskTerminatedPreview `json:"project_default_pre_view"`
+	Total              string                   `json:"total"`
+}
+
+func NewTaskTerminatedListRequest() *TaskTerminatedListRequest {
+	return new(TaskTerminatedListRequest)
+}
+
+func NewTaskTerminatedListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(ProjectTaskListData)
+	return resp
+}

+ 61 - 0
model/http_model/task_terminating.go

@@ -0,0 +1,61 @@
+package http_model
+
+import (
+	"time"
+	"youngee_b_api/model/gorm_model"
+)
+
+type TaskTerminatingListRequest struct {
+	PageSize         int64  `json:"page_size"`
+	PageNum          int64  `json:"page_num"`
+	ProjectId        string `json:"project_id"`        // 项目ID
+	TaskId           string `json:"task_id"`           // 任务ID
+	StrategyIds      string `json:"strategy_ids"`      // 策略ID
+	DefaultStatus    string `json:"default_status"`    // 稿件状态
+	PlatformNickname string `json:"platform_nickname"` // 账号昵称
+}
+
+type TaskTerminatingPreview struct {
+	TaskID            string  `json:"task_id"`             // 任务ID
+	PlatformNickname  string  `json:"platform_nickname"`   // 账号昵称
+	FansCount         string  `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID string  `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        string  `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64 `json:"all_payment"`         // 企业支付
+	RealPayment       float64 `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	TerminateAt       string  `json:"terminate_at"`        // 解约申请时间
+	BreakType         string  `json:"break_type"`          // 违约类型(4类严重违约):1(脚本)2(初稿)3(链接)4(数据)
+}
+
+type TaskTerminatingInfo struct {
+	TaskID            int       `json:"task_id"`             // 任务ID
+	PlatformNickname  string    `json:"platform_nickname"`   // 账号昵称
+	FansCount         string    `json:"fans_count"`          // 粉丝数
+	RecruitStrategyID int       `json:"recruit_strategy_id"` // 招募策略ID
+	StrategyID        int       `json:"strategy_id"`         // 报名选择的招募策略id
+	AllPayment        float64   `json:"all_payment"`         // 企业支付
+	RealPayment       float64   `json:"real_payment"`        // 企业实际支付(扣除违约扣款)
+	TerminateAt       time.Time `json:"terminate_at"`        // 解约申请时间
+	BreakType         int       `json:"break_type"`          // 违约类型(4类严重违约):1(脚本)2(初稿)3(链接)4(数据)
+}
+
+type TaskTerminating struct {
+	Talent   gorm_model.YoungeeTaskInfo
+	Default  gorm_model.YoungeeContractInfo
+	LinkInfo gorm_model.YounggeeLinkInfo
+}
+
+type TaskTerminatingListData struct {
+	TaskDefaultPreview []*TaskTerminatingPreview `json:"project_default_pre_view"`
+	Total              string                    `json:"total"`
+}
+
+func NewTaskTerminatingListRequest() *TaskTerminatingListRequest {
+	return new(TaskTerminatingListRequest)
+}
+
+func NewTaskTerminatingListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(ProjectTaskListData)
+	return resp
+}

+ 1 - 1
pack/task_data_list.go

@@ -52,7 +52,7 @@ func GetDataInfoStruct(TaskData *http_model.TaskData) *http_model.TaskDataInfo {
 	TalentPlatformInfoSnap := TaskData.Talent.TalentPlatformInfoSnap
 	return &http_model.TaskDataInfo{
 		TaskID:           TaskData.Talent.TaskID,
-		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "PlatformInfo.platform_name")),
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
 		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
 		StrategyID:       TaskData.Talent.StrategyID,
 		DataId:           TaskData.Data.DataID,

+ 1 - 1
pack/task_data_list_conditions.go

@@ -13,7 +13,7 @@ func HttpTaskDataListRequestToCondition(req *http_model.TaskDataListRequest) *co
 	return &common_model.TalentConditions{
 		ProjectId:        conv.MustInt64(req.ProjectId),
 		DataStatus:       conv.MustInt64(req.DataStatus),
-		StrategyId:       conv.MustInt64(req.StrategyId),
+		StrategyIds:      conv.MustString(req.StrategyIds),
 		TaskId:           conv.MustString(req.TaskId),
 		PlatformNickname: conv.MustString(req.PlatformNickname),
 	}

+ 55 - 0
pack/task_default_data_list.go

@@ -0,0 +1,55 @@
+package pack
+
+import (
+	"youngee_b_api/model/http_model"
+
+	"github.com/tidwall/gjson"
+
+	"github.com/issue9/conv"
+)
+
+func MGormTaskDefaultDataInfoListToHttpTaskDefaultDataPreviewList(gormTaskDefaultDataInfos []*http_model.TaskDefaultDataInfo) []*http_model.TaskDefaultDataPreview {
+	var httpProjectPreviews []*http_model.TaskDefaultDataPreview
+	for _, gormTaskDefaultDataInfo := range gormTaskDefaultDataInfos {
+		httpTaskDefaultDataPreview := MGormTaskDefaultDataInfoToHttpTaskDefaultDataPreview(gormTaskDefaultDataInfo)
+		httpProjectPreviews = append(httpProjectPreviews, httpTaskDefaultDataPreview)
+	}
+	return httpProjectPreviews
+}
+
+func MGormTaskDefaultDataInfoToHttpTaskDefaultDataPreview(TaskDefaultDataInfo *http_model.TaskDefaultDataInfo) *http_model.TaskDefaultDataPreview {
+	return &http_model.TaskDefaultDataPreview{
+		TaskID:            conv.MustString(TaskDefaultDataInfo.TaskID),
+		PlatformNickname:  conv.MustString(TaskDefaultDataInfo.PlatformNickname),
+		FansCount:         conv.MustString(TaskDefaultDataInfo.FansCount),
+		RecruitStrategyID: conv.MustString(TaskDefaultDataInfo.RecruitStrategyID),
+		StrategyID:        conv.MustString(TaskDefaultDataInfo.StrategyID),
+		AllPayment:        TaskDefaultDataInfo.AllPayment,
+		RealPayment:       TaskDefaultDataInfo.RealPayment,
+		BreakAt:           conv.MustString(TaskDefaultDataInfo.BreakAt)[0:19],
+		LinkUrl:           TaskDefaultDataInfo.LinkUrl,
+	}
+}
+
+func TaskDefaultDataToTaskInfo(TaskDefaultDatas []*http_model.TaskDefaultData) []*http_model.TaskDefaultDataInfo {
+	var TaskDefaultDataInfos []*http_model.TaskDefaultDataInfo
+	for _, TaskDefaultData := range TaskDefaultDatas {
+		TaskDefaultData := GetDefaultDataInfoStruct(TaskDefaultData)
+		TaskDefaultDataInfos = append(TaskDefaultDataInfos, TaskDefaultData)
+	}
+	return TaskDefaultDataInfos
+}
+
+func GetDefaultDataInfoStruct(TaskDefaultData *http_model.TaskDefaultData) *http_model.TaskDefaultDataInfo {
+	TalentPlatformInfoSnap := TaskDefaultData.Talent.TalentPlatformInfoSnap
+	return &http_model.TaskDefaultDataInfo{
+		TaskID:           TaskDefaultData.Talent.TaskID,
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
+		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
+		StrategyID:       TaskDefaultData.Talent.StrategyID,
+		AllPayment:       TaskDefaultData.Talent.AllPayment,
+		RealPayment:      TaskDefaultData.Talent.RealPayment,
+		BreakAt:          TaskDefaultData.Default.BreakAt,
+		LinkUrl:          TaskDefaultData.Link.LinkUrl,
+	}
+}

+ 48 - 0
pack/task_default_list_conditions.go

@@ -0,0 +1,48 @@
+package pack
+
+import (
+	"youngee_b_api/model/common_model"
+	"youngee_b_api/model/http_model"
+
+	"github.com/issue9/conv"
+)
+
+func HttpTaskDefaultReviewListRequestToCondition(req *http_model.TaskDefaultReviewListRequest) *common_model.TalentConditions {
+	return &common_model.TalentConditions{
+		ProjectId:        conv.MustInt64(req.ProjectId),
+		DefaultStatus:    conv.MustInt64(req.DefaultStatus),
+		StrategyIds:      conv.MustString(req.StrategyIds),
+		TaskId:           conv.MustString(req.TaskId),
+		PlatformNickname: conv.MustString(req.PlatformNickname),
+	}
+}
+
+func HttpTaskDefaultDataListRequestToCondition(req *http_model.TaskDefaultDataListRequest) *common_model.TalentConditions {
+	return &common_model.TalentConditions{
+		ProjectId:        conv.MustInt64(req.ProjectId),
+		DefaultStatus:    conv.MustInt64(req.DefaultStatus),
+		StrategyIds:      conv.MustString(req.StrategyIds),
+		TaskId:           conv.MustString(req.TaskId),
+		PlatformNickname: conv.MustString(req.PlatformNickname),
+	}
+}
+
+func HttpTaskTerminatingListRequestToCondition(req *http_model.TaskTerminatingListRequest) *common_model.TalentConditions {
+	return &common_model.TalentConditions{
+		ProjectId:        conv.MustInt64(req.ProjectId),
+		DefaultStatus:    conv.MustInt64(req.DefaultStatus),
+		StrategyIds:      conv.MustString(req.StrategyIds),
+		TaskId:           conv.MustString(req.TaskId),
+		PlatformNickname: conv.MustString(req.PlatformNickname),
+	}
+}
+
+func HttpTaskTerminatedListRequestToCondition(req *http_model.TaskTerminatedListRequest) *common_model.TalentConditions {
+	return &common_model.TalentConditions{
+		ProjectId:        conv.MustInt64(req.ProjectId),
+		DefaultStatus:    conv.MustInt64(req.DefaultStatus),
+		StrategyIds:      conv.MustString(req.StrategyIds),
+		TaskId:           conv.MustString(req.TaskId),
+		PlatformNickname: conv.MustString(req.PlatformNickname),
+	}
+}

+ 53 - 0
pack/task_default_review_list.go

@@ -0,0 +1,53 @@
+package pack
+
+import (
+	"youngee_b_api/model/http_model"
+
+	"github.com/tidwall/gjson"
+
+	"github.com/issue9/conv"
+)
+
+func MGormTaskDefaultReviewInfoListToHttpTaskDefaultReviewPreviewList(gormTaskDefaultReviewInfos []*http_model.TaskDefaultReviewInfo) []*http_model.TaskDefaultReviewPreview {
+	var httpProjectPreviews []*http_model.TaskDefaultReviewPreview
+	for _, gormTaskDefaultReviewInfo := range gormTaskDefaultReviewInfos {
+		httpTaskDefaultReviewPreview := MGormTaskDefaultReviewInfoToHttpTaskDefaultReviewPreview(gormTaskDefaultReviewInfo)
+		httpProjectPreviews = append(httpProjectPreviews, httpTaskDefaultReviewPreview)
+	}
+	return httpProjectPreviews
+}
+
+func MGormTaskDefaultReviewInfoToHttpTaskDefaultReviewPreview(TaskDefaultReviewInfo *http_model.TaskDefaultReviewInfo) *http_model.TaskDefaultReviewPreview {
+	return &http_model.TaskDefaultReviewPreview{
+		TaskID:            conv.MustString(TaskDefaultReviewInfo.TaskID),
+		PlatformNickname:  conv.MustString(TaskDefaultReviewInfo.PlatformNickname),
+		FansCount:         conv.MustString(TaskDefaultReviewInfo.FansCount),
+		RecruitStrategyID: conv.MustString(TaskDefaultReviewInfo.RecruitStrategyID),
+		StrategyID:        conv.MustString(TaskDefaultReviewInfo.StrategyID),
+		AllPayment:        TaskDefaultReviewInfo.AllPayment,
+		RealPayment:       TaskDefaultReviewInfo.RealPayment,
+		BreakAt:           conv.MustString(TaskDefaultReviewInfo.BreakAt)[0:19],
+	}
+}
+
+func TaskDefaultReviewToTaskInfo(TaskDefaultReviews []*http_model.TaskDefaultReview) []*http_model.TaskDefaultReviewInfo {
+	var TaskDefaultReviewInfos []*http_model.TaskDefaultReviewInfo
+	for _, TaskDefaultReview := range TaskDefaultReviews {
+		TaskDefaultReview := GetDefaultReviewInfoStruct(TaskDefaultReview)
+		TaskDefaultReviewInfos = append(TaskDefaultReviewInfos, TaskDefaultReview)
+	}
+	return TaskDefaultReviewInfos
+}
+
+func GetDefaultReviewInfoStruct(TaskDefaultReview *http_model.TaskDefaultReview) *http_model.TaskDefaultReviewInfo {
+	TalentPlatformInfoSnap := TaskDefaultReview.Talent.TalentPlatformInfoSnap
+	return &http_model.TaskDefaultReviewInfo{
+		TaskID:           TaskDefaultReview.Talent.TaskID,
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
+		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
+		StrategyID:       TaskDefaultReview.Talent.StrategyID,
+		AllPayment:       TaskDefaultReview.Talent.AllPayment,
+		RealPayment:      TaskDefaultReview.Talent.RealPayment,
+		BreakAt:          TaskDefaultReview.Default.BreakAt,
+	}
+}

+ 1 - 3
pack/task_link_list.go

@@ -18,8 +18,6 @@ func MGormTaskLinkInfoListToHttpTaskLinkPreviewList(gormTaskLinkInfos []*http_mo
 }
 
 func MGormTaskLinkInfoToHttpTaskLinkPreview(TaskLinkInfo *http_model.TaskLinkInfo) *http_model.TaskLinkPreview {
-	//deliveryTime := conv.MustString(TaskLinkInfo.DeliveryTime)
-	//deliveryTime = deliveryTime[0:19]
 	return &http_model.TaskLinkPreview{
 		TaskID:            conv.MustString(TaskLinkInfo.TaskID),
 		PlatformNickname:  conv.MustString(TaskLinkInfo.PlatformNickname),
@@ -47,7 +45,7 @@ func GetLinkInfoStruct(TaskLink *http_model.TaskLink) *http_model.TaskLinkInfo {
 	TalentPlatformInfoSnap := TaskLink.Talent.TalentPlatformInfoSnap
 	return &http_model.TaskLinkInfo{
 		TaskID:           TaskLink.Talent.TaskID,
-		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "PlatformInfo.platform_name")),
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
 		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
 		StrategyID:       TaskLink.Talent.StrategyID,
 		LinkId:           TaskLink.Link.LinkID,

+ 2 - 2
pack/task_link_list_conditions.go

@@ -9,11 +9,11 @@ import (
 )
 
 func HttpTaskLinkListRequestToCondition(req *http_model.TaskLinkListRequest) *common_model.TalentConditions {
-	fmt.Printf("初稿转换 %+v", req)
+	fmt.Printf("链接转换 %+v", req)
 	return &common_model.TalentConditions{
 		ProjectId:        conv.MustInt64(req.ProjectId),
 		LinkStatus:       conv.MustInt64(req.LinkStatus),
-		StrategyId:       conv.MustInt64(req.StrategyId),
+		StrategyIds:      conv.MustString(req.StrategyIds),
 		TaskId:           conv.MustString(req.TaskId),
 		PlatformNickname: conv.MustString(req.PlatformNickname),
 	}

+ 1 - 1
pack/task_logistics_list_conditions.go

@@ -11,7 +11,7 @@ func HttpTaskLogisticsListRequestToCondition(req *http_model.TaskLogisticsListRe
 	return &common_model.TalentConditions{
 		ProjectId:        conv.MustInt64(req.ProjectId),
 		LogisticsStatus:  conv.MustInt64(req.LogisticsStatus),
-		StrategyId:       conv.MustInt64(req.StrategyId),
+		StrategyIds:      conv.MustString(req.StrategyId),
 		TaskId:           conv.MustString(req.TaskId),
 		PlatformNickname: conv.MustString(req.PlatformNickname),
 	}

+ 1 - 1
pack/task_script_list.go

@@ -47,7 +47,7 @@ func GetScriptInfoStruct(TaskScript *http_model.TaskScript) *http_model.TaskScri
 	TalentPlatformInfoSnap := TaskScript.Talent.TalentPlatformInfoSnap
 	return &http_model.TaskScriptInfo{
 		TaskID:           TaskScript.Talent.TaskID,
-		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "PlatformInfo.platform_name")),
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
 		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
 		StrategyID:       TaskScript.Talent.StrategyID,
 		ScriptId:         TaskScript.Script.ScriptID,

+ 3 - 2
pack/task_script_list_conditions.go

@@ -2,9 +2,10 @@ package pack
 
 import (
 	"fmt"
-	"github.com/issue9/conv"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/http_model"
+
+	"github.com/issue9/conv"
 )
 
 func HttpTaskScriptListRequestToCondition(req *http_model.TaskScriptListRequest) *common_model.TalentConditions {
@@ -12,7 +13,7 @@ func HttpTaskScriptListRequestToCondition(req *http_model.TaskScriptListRequest)
 	return &common_model.TalentConditions{
 		ProjectId:        conv.MustInt64(req.ProjectId),
 		ScriptStatus:     conv.MustInt64(req.ScriptStatus),
-		StrategyId:       conv.MustInt64(req.StrategyId),
+		StrategyIds:      conv.MustString(req.StrategyIds),
 		TaskId:           conv.MustString(req.TaskId),
 		PlatformNickname: conv.MustString(req.PlatformNickname),
 	}

+ 1 - 1
pack/task_sketch_list.go

@@ -49,7 +49,7 @@ func GetSketchInfoStruct(TaskSketch *http_model.TaskSketch) *http_model.TaskSket
 	TalentPlatformInfoSnap := TaskSketch.Talent.TalentPlatformInfoSnap
 	return &http_model.TaskSketchInfo{
 		TaskID:           TaskSketch.Talent.TaskID,
-		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "PlatformInfo.platform_name")),
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
 		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
 		StrategyID:       TaskSketch.Talent.StrategyID,
 		SketchId:         TaskSketch.Sketch.SketchID,

+ 3 - 2
pack/task_sketch_list_conditions.go

@@ -2,9 +2,10 @@ package pack
 
 import (
 	"fmt"
-	"github.com/issue9/conv"
 	"youngee_b_api/model/common_model"
 	"youngee_b_api/model/http_model"
+
+	"github.com/issue9/conv"
 )
 
 func HttpTaskSketchListRequestToCondition(req *http_model.TaskSketchListRequest) *common_model.TalentConditions {
@@ -12,7 +13,7 @@ func HttpTaskSketchListRequestToCondition(req *http_model.TaskSketchListRequest)
 	return &common_model.TalentConditions{
 		ProjectId:        conv.MustInt64(req.ProjectId),
 		SketchStatus:     conv.MustInt64(req.SketchStatus),
-		StrategyId:       conv.MustInt64(req.StrategyId),
+		StrategyIds:      conv.MustString(req.StrategyIds),
 		TaskId:           conv.MustString(req.TaskId),
 		PlatformNickname: conv.MustString(req.PlatformNickname),
 	}

+ 53 - 0
pack/task_terminated_list.go

@@ -0,0 +1,53 @@
+package pack
+
+import (
+	"youngee_b_api/model/http_model"
+
+	"github.com/tidwall/gjson"
+
+	"github.com/issue9/conv"
+)
+
+func MGormTaskTerminatedInfoListToHttpTaskTerminatedPreviewList(gormTaskTerminatedInfos []*http_model.TaskTerminatedInfo) []*http_model.TaskTerminatedPreview {
+	var httpProjectPreviews []*http_model.TaskTerminatedPreview
+	for _, gormTaskTerminatedInfo := range gormTaskTerminatedInfos {
+		httpTaskTerminatedPreview := MGormTaskTerminatedInfoToHttpTaskTerminatedPreview(gormTaskTerminatedInfo)
+		httpProjectPreviews = append(httpProjectPreviews, httpTaskTerminatedPreview)
+	}
+	return httpProjectPreviews
+}
+
+func MGormTaskTerminatedInfoToHttpTaskTerminatedPreview(TaskTerminatedInfo *http_model.TaskTerminatedInfo) *http_model.TaskTerminatedPreview {
+	return &http_model.TaskTerminatedPreview{
+		TaskID:            conv.MustString(TaskTerminatedInfo.TaskID),
+		PlatformNickname:  conv.MustString(TaskTerminatedInfo.PlatformNickname),
+		FansCount:         conv.MustString(TaskTerminatedInfo.FansCount),
+		RecruitStrategyID: conv.MustString(TaskTerminatedInfo.RecruitStrategyID),
+		StrategyID:        conv.MustString(TaskTerminatedInfo.StrategyID),
+		AllPayment:        TaskTerminatedInfo.AllPayment,
+		RealPayment:       TaskTerminatedInfo.RealPayment,
+		BreakType:         conv.MustString(TaskTerminatedInfo.BreakType),
+	}
+}
+
+func TaskTerminatedToTaskInfo(TaskTerminateds []*http_model.TaskTerminated) []*http_model.TaskTerminatedInfo {
+	var TaskTerminatedInfos []*http_model.TaskTerminatedInfo
+	for _, TaskTerminated := range TaskTerminateds {
+		TaskTerminated := GetTerminatedInfoStruct(TaskTerminated)
+		TaskTerminatedInfos = append(TaskTerminatedInfos, TaskTerminated)
+	}
+	return TaskTerminatedInfos
+}
+
+func GetTerminatedInfoStruct(TaskTerminated *http_model.TaskTerminated) *http_model.TaskTerminatedInfo {
+	TalentPlatformInfoSnap := TaskTerminated.Talent.TalentPlatformInfoSnap
+	return &http_model.TaskTerminatedInfo{
+		TaskID:           TaskTerminated.Talent.TaskID,
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
+		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
+		StrategyID:       TaskTerminated.Talent.StrategyID,
+		AllPayment:       TaskTerminated.Talent.AllPayment,
+		RealPayment:      TaskTerminated.Talent.RealPayment,
+		BreakType:        TaskTerminated.Default.BreakType,
+	}
+}

+ 55 - 0
pack/task_terminating_list.go

@@ -0,0 +1,55 @@
+package pack
+
+import (
+	"youngee_b_api/model/http_model"
+
+	"github.com/tidwall/gjson"
+
+	"github.com/issue9/conv"
+)
+
+func MGormTaskTerminatingInfoListToHttpTaskTerminatingPreviewList(gormTaskTerminatingInfos []*http_model.TaskTerminatingInfo) []*http_model.TaskTerminatingPreview {
+	var httpProjectPreviews []*http_model.TaskTerminatingPreview
+	for _, gormTaskTerminatingInfo := range gormTaskTerminatingInfos {
+		httpTaskTerminatingPreview := MGormTaskTerminatingInfoToHttpTaskTerminatingPreview(gormTaskTerminatingInfo)
+		httpProjectPreviews = append(httpProjectPreviews, httpTaskTerminatingPreview)
+	}
+	return httpProjectPreviews
+}
+
+func MGormTaskTerminatingInfoToHttpTaskTerminatingPreview(TaskTerminatingInfo *http_model.TaskTerminatingInfo) *http_model.TaskTerminatingPreview {
+	return &http_model.TaskTerminatingPreview{
+		TaskID:            conv.MustString(TaskTerminatingInfo.TaskID),
+		PlatformNickname:  conv.MustString(TaskTerminatingInfo.PlatformNickname),
+		FansCount:         conv.MustString(TaskTerminatingInfo.FansCount),
+		RecruitStrategyID: conv.MustString(TaskTerminatingInfo.RecruitStrategyID),
+		StrategyID:        conv.MustString(TaskTerminatingInfo.StrategyID),
+		AllPayment:        TaskTerminatingInfo.AllPayment,
+		RealPayment:       TaskTerminatingInfo.RealPayment,
+		TerminateAt:       conv.MustString(TaskTerminatingInfo.TerminateAt)[0:19],
+		BreakType:         conv.MustString(TaskTerminatingInfo.BreakType),
+	}
+}
+
+func TaskTerminatingToTaskInfo(TaskTerminatings []*http_model.TaskTerminating) []*http_model.TaskTerminatingInfo {
+	var TaskTerminatingInfos []*http_model.TaskTerminatingInfo
+	for _, TaskTerminating := range TaskTerminatings {
+		TaskTerminating := GetTerminatingInfoStruct(TaskTerminating)
+		TaskTerminatingInfos = append(TaskTerminatingInfos, TaskTerminating)
+	}
+	return TaskTerminatingInfos
+}
+
+func GetTerminatingInfoStruct(TaskTerminating *http_model.TaskTerminating) *http_model.TaskTerminatingInfo {
+	TalentPlatformInfoSnap := TaskTerminating.Talent.TalentPlatformInfoSnap
+	return &http_model.TaskTerminatingInfo{
+		TaskID:           TaskTerminating.Talent.TaskID,
+		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
+		FansCount:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "fans_count")),
+		StrategyID:       TaskTerminating.Talent.StrategyID,
+		AllPayment:       TaskTerminating.Talent.AllPayment,
+		RealPayment:      TaskTerminating.Talent.RealPayment,
+		TerminateAt:      TaskTerminating.Default.TerminateAt,
+		BreakType:        TaskTerminating.Default.BreakType,
+	}
+}

+ 10 - 0
route/init.go

@@ -72,5 +72,15 @@ func InitRoute(r *gin.Engine) {
 		m.POST("/project/taskdatalist", handler.WrapTaskDataListHandler)       //查询数据列表
 		m.POST("/project/dataopinion", handler.WrapDataOpinionHandler)         //数据审核意见提交
 		m.POST("/project/acceptdata", handler.WrapAcceptDataHandler)           //同意数据
+		m.POST("/project/getlinknumberinfo", handler.WrapGetLinkNumberInfoHandler)
+		m.POST("/project/getdatanumberinfo", handler.WrapGetDataNumberInfoHandler)
+		m.POST("/project/getreviewnumberinfo", handler.WrapGetReviewNumberInfoHandler)
+		m.POST("/project/getdefaultnumberinfo", handler.WrapGetDefaultNumberInfoHandler)
+		m.POST("/project/taskdefaultreviewlist", handler.WrapTaskDefaultReviewListHandler) // 查询违约列表-脚本、初稿、链接上传违约
+		m.POST("/project/taskdefaultdatalist", handler.WrapTaskDefaultDataListHandler)     // 查询违约列表-数据违约
+		m.POST("/project/taskteminatinglist", handler.WrapTaskTerminatingListHandler)      // 查询违约列表-解约待处理
+		m.POST("/project/taskteminatedlist", handler.WrapTaskTerminatedListHandler)        // 查询违约列表-解约
+		m.POST("/project/taskteminate", handler.WrapTaskTerminateHandler)                  // 查询违约列表-解约
+		m.POST("/project/getsketchinfo", handler.WrapGetSketchInfoHandler)                 // 获取初稿
 	}
 }

+ 66 - 0
service/default.go

@@ -0,0 +1,66 @@
+package service
+
+import (
+	"youngee_b_api/db"
+	"youngee_b_api/model/common_model"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/pack"
+
+	"github.com/gin-gonic/gin"
+	"github.com/issue9/conv"
+
+	"github.com/sirupsen/logrus"
+)
+
+var Default *ddefault
+
+type ddefault struct {
+}
+
+func (*ddefault) GetTaskDefaultReviewList(ctx *gin.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) (*http_model.TaskDefaultReviewListData, error) {
+	TaskDefaults, total, err := db.GetTaskDefaultReviewList(ctx, projectID, pageSize, pageNum, conditions)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[project service] call GetTaskDefaultList error,err:%+v", err)
+		return nil, err
+	}
+	TaskDefaultListDefault := new(http_model.TaskDefaultReviewListData)
+	TaskDefaultListDefault.TaskDefaultPreview = pack.MGormTaskDefaultReviewInfoListToHttpTaskDefaultReviewPreviewList(TaskDefaults)
+	TaskDefaultListDefault.Total = conv.MustString(total)
+	return TaskDefaultListDefault, nil
+}
+
+func (*ddefault) GetTaskDefaultDataList(ctx *gin.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) (*http_model.TaskDefaultDataListData, error) {
+	TaskDefaults, total, err := db.GetTaskDefaultDataList(ctx, projectID, pageSize, pageNum, conditions)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[project service] call GetTaskDefaultList error,err:%+v", err)
+		return nil, err
+	}
+	TaskDefaultListDefault := new(http_model.TaskDefaultDataListData)
+	TaskDefaultListDefault.TaskDefaultPreview = pack.MGormTaskDefaultDataInfoListToHttpTaskDefaultDataPreviewList(TaskDefaults)
+	TaskDefaultListDefault.Total = conv.MustString(total)
+	return TaskDefaultListDefault, nil
+}
+
+func (*ddefault) GetTaskTerminatingList(ctx *gin.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) (*http_model.TaskTerminatingListData, error) {
+	TaskDefaults, total, err := db.GetTaskTerminatingList(ctx, projectID, pageSize, pageNum, conditions)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[project service] call GetTaskDefaultList error,err:%+v", err)
+		return nil, err
+	}
+	TaskDefaultListDefault := new(http_model.TaskTerminatingListData)
+	TaskDefaultListDefault.TaskDefaultPreview = pack.MGormTaskTerminatingInfoListToHttpTaskTerminatingPreviewList(TaskDefaults)
+	TaskDefaultListDefault.Total = conv.MustString(total)
+	return TaskDefaultListDefault, nil
+}
+
+func (*ddefault) GetTaskTerminatedList(ctx *gin.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) (*http_model.TaskTerminatedListData, error) {
+	TaskDefaults, total, err := db.GetTaskTerminatedList(ctx, projectID, pageSize, pageNum, conditions)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[project service] call GetTaskDefaultList error,err:%+v", err)
+		return nil, err
+	}
+	TaskDefaultListDefault := new(http_model.TaskTerminatedListData)
+	TaskDefaultListDefault.TaskDefaultPreview = pack.MGormTaskTerminatedInfoListToHttpTaskTerminatedPreviewList(TaskDefaults)
+	TaskDefaultListDefault.Total = conv.MustString(total)
+	return TaskDefaultListDefault, nil
+}

+ 77 - 0
service/number_info.go

@@ -0,0 +1,77 @@
+package service
+
+import (
+	"context"
+	"strings"
+	"youngee_b_api/db"
+	"youngee_b_api/model/http_model"
+
+	"github.com/issue9/conv"
+
+	"github.com/sirupsen/logrus"
+)
+
+var Number *number
+
+type number struct {
+}
+
+func (*number) GetReviewNumberInfo(ctx context.Context, request http_model.GetReviewNumberInfoRequest) (*http_model.GetReviewNumberInfoData, error) {
+	var StrategyIdList []int64
+	StrategyIds := strings.Split(request.StrategyIds, ",")
+	for _, strategyId := range StrategyIds {
+		StrategyIdList = append(StrategyIdList, conv.MustInt64(strategyId))
+	}
+	NumberData, err := db.GetReviewNumberInfo(ctx, request.ProjectId, StrategyIdList)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data service] call CreateData error,err:%+v", err)
+		return nil, err
+	}
+
+	return NumberData, nil
+}
+
+func (*number) GetLinkNumberInfo(ctx context.Context, request http_model.GetLinkNumberInfoRequest) (*http_model.GetLinkNumberInfoData, error) {
+	var StrategyIdList []int64
+	StrategyIds := strings.Split(request.StrategyIds, ",")
+	for _, strategyId := range StrategyIds {
+		StrategyIdList = append(StrategyIdList, conv.MustInt64(strategyId))
+	}
+	NumberData, err := db.GetLinkNumberInfo(ctx, request.ProjectId, StrategyIdList)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data service] call CreateData error,err:%+v", err)
+		return nil, err
+	}
+
+	return NumberData, nil
+}
+
+func (*number) GetDataNumberInfo(ctx context.Context, request http_model.GetDataNumberInfoRequest) (*http_model.GetDataNumberInfoData, error) {
+	var StrategyIdList []int64
+	StrategyIds := strings.Split(request.StrategyIds, ",")
+	for _, strategyId := range StrategyIds {
+		StrategyIdList = append(StrategyIdList, conv.MustInt64(strategyId))
+	}
+	NumberData, err := db.GetDataNumberInfo(ctx, request.ProjectId, StrategyIdList)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data service] call CreateData error,err:%+v", err)
+		return nil, err
+	}
+
+	return NumberData, nil
+}
+
+func (*number) GetDefaultNumberInfo(ctx context.Context, request http_model.GetDefaultNumberInfoRequest) (*http_model.GetDefaultNumberInfoData, error) {
+	var StrategyIdList []int64
+	StrategyIds := strings.Split(request.StrategyIds, ",")
+	for _, strategyId := range StrategyIds {
+		StrategyIdList = append(StrategyIdList, conv.MustInt64(strategyId))
+	}
+	NumberData, err := db.GetDefaultNumberInfo(ctx, request.ProjectId, StrategyIdList)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data service] call CreateData error,err:%+v", err)
+		return nil, err
+	}
+
+	return NumberData, nil
+}

+ 29 - 0
service/sketch.go

@@ -74,3 +74,32 @@ func (*sketch) FindPhoto(ctx context.Context, request http_model.FindSketchPhoto
 	}
 	return SketchPhotos, nil
 }
+
+// GetSketchInfo 获取初稿
+func (*sketch) GetSketchInfo(ctx context.Context, request http_model.GetSketchInfoRequest) (*http_model.GetSketchInfoData, error) {
+	var SketchPhotos []http_model.SketchPhotoInfo
+	SketchInfo, err := db.FindSketchInfo(ctx, request.TaskID)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch service] call CreateSketch error,err:%+v", err)
+		return nil, err
+	}
+	res, err := db.FindPhoto(ctx, int64(SketchInfo.SketchID))
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch service] call CreateSketch error,err:%+v", err)
+		return nil, err
+	}
+	for _, photo := range res {
+		sketchPhoto := http_model.SketchPhotoInfo{
+			PhotoUrl: photo.PhotoUrl,
+			PhotoUid: photo.PhotoUid,
+			Symbol:   conv.MustInt64(photo.Symbol),
+		}
+		SketchPhotos = append(SketchPhotos, sketchPhoto)
+	}
+	SketchInfoData := http_model.GetSketchInfoData{
+		Title:        SketchInfo.Title,
+		Content:      SketchInfo.Content,
+		SketchPhotos: SketchPhotos,
+	}
+	return &SketchInfoData, nil
+}

+ 38 - 0
service/terminate.go

@@ -0,0 +1,38 @@
+package service
+
+import (
+	"context"
+	"fmt"
+	"strings"
+	"youngee_b_api/db"
+	"youngee_b_api/model/http_model"
+
+	"github.com/issue9/conv"
+
+	"github.com/sirupsen/logrus"
+)
+
+var Terminate *terminate
+
+type terminate struct {
+}
+
+// TaskTerminate 同意初稿
+func (*terminate) TaskTerminate(ctx context.Context, request http_model.TaskTerminateRequest) (*http_model.TaskTerminateData, error) {
+	var TaskIDList []int
+	TaskIDs := strings.Split(request.TaskIds, ",")
+	for _, taskId := range TaskIDs {
+		TaskIDList = append(TaskIDList, conv.MustInt(taskId))
+	}
+	fmt.Printf("acc request %+v", TaskIDList)
+	err := db.Terminate(ctx, TaskIDList)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Terminate service] call CreateTerminate error,err:%+v", err)
+		return nil, err
+	}
+
+	res := &http_model.TaskTerminateData{
+		TaskIds: TaskIDList,
+	}
+	return res, nil
+}