Browse Source

Merge branch 'refs/heads/develop-ljl' into develop_all

# Conflicts:
#	consts/error_code.go
#	route/init.go
lin-jim-leon 4 months ago
parent
commit
8c68a41b27
100 changed files with 4161 additions and 349 deletions
  1. 6 1
      config/dev.yaml
  2. 7 0
      config/pro.yaml
  3. 2 2
      consts/error_code.go
  4. 102 8
      db/data.go
  5. 200 11
      db/link.go
  6. 822 0
      db/locallife_task.go
  7. 183 24
      db/project_task.go
  8. 209 10
      db/sketch.go
  9. 252 21
      db/task.go
  10. 57 0
      handler/LocalPrelinklist.go
  11. 61 0
      handler/PasslocalTaskCoop.go
  12. 3 2
      handler/PassproTaskCoop.go
  13. 2 1
      handler/Prelinklist.go
  14. 61 0
      handler/Refuseloacltaskcoop.go
  15. 2 1
      handler/RefuseproTaskCoop.go
  16. 2 1
      handler/accept_data.go
  17. 2 2
      handler/accept_link.go
  18. 32 29
      handler/accept_sketch.go
  19. 32 29
      handler/data_opinion.go
  20. 2 1
      handler/endtask.go
  21. 2 1
      handler/executedata.go
  22. 60 0
      handler/getlocaltasklist.go
  23. 2 1
      handler/gettasklist.go
  24. 32 29
      handler/link_opinion.go
  25. 60 0
      handler/localaccept_data.go
  26. 60 0
      handler/localaccept_link.go
  27. 59 0
      handler/localaccept_sketch.go
  28. 60 0
      handler/localdata_opinion.go
  29. 61 0
      handler/locallifedata.go
  30. 60 0
      handler/locallink_opinion.go
  31. 57 0
      handler/localpredatalist.go
  32. 60 0
      handler/localpresketchlist.go
  33. 60 0
      handler/localreject_data.go
  34. 60 0
      handler/localreject_link.go
  35. 58 0
      handler/localreject_sketch.go
  36. 59 0
      handler/localsketch_opinion.go
  37. 60 0
      handler/localtaskdatalist.go
  38. 60 0
      handler/localtasklinklist.go
  39. 60 0
      handler/localtasksketchlist.go
  40. 2 1
      handler/predatalist.go
  41. 2 1
      handler/presketchlist.go
  42. 2 1
      handler/projectdata.go
  43. 2 2
      handler/reject_data.go
  44. 2 2
      handler/reject_link.go
  45. 2 2
      handler/reject_sketch.go
  46. 2 1
      handler/sketch_info.go
  47. 32 29
      handler/sketch_opinion.go
  48. 2 1
      handler/sketch_photo.go
  49. 2 1
      handler/taskdatalist.go
  50. 2 1
      handler/tasklinklist.go
  51. 2 1
      handler/tasksketchlist.go
  52. 15 0
      model/gorm_model/enterprise_talent_cooperate.go
  53. 17 14
      model/gorm_model/info_auto_task.go
  54. 2 0
      model/gorm_model/link.go
  55. 54 0
      model/gorm_model/locallife_info.go
  56. 86 0
      model/gorm_model/locallife_task_info.go
  57. 30 0
      model/gorm_model/platform_kuaishou_user_info.go
  58. 31 21
      model/gorm_model/project.go
  59. 18 12
      model/gorm_model/project_task.go
  60. 30 0
      model/gorm_model/s_locallife_info.go
  61. 2 0
      model/gorm_model/sketch.go
  62. 31 0
      model/http_model/LocalPrelinkList.go
  63. 23 0
      model/http_model/PassLocalTaskCoopRequest.go
  64. 2 0
      model/http_model/PassproTaskCoopRequest.go
  65. 6 5
      model/http_model/PreLinkList.go
  66. 6 4
      model/http_model/data_accept.go
  67. 24 0
      model/http_model/data_localaccept.go
  68. 4 1
      model/http_model/data_opinion.go
  69. 52 0
      model/http_model/getlocaltasklist.go
  70. 27 21
      model/http_model/gettasklist.go
  71. 5 1
      model/http_model/link_accept.go
  72. 22 0
      model/http_model/link_localaccept.go
  73. 4 1
      model/http_model/link_opinion.go
  74. 22 0
      model/http_model/localdata_opinion.go
  75. 31 0
      model/http_model/locallifedatarequest.go
  76. 22 0
      model/http_model/locallink_opinion.go
  77. 31 0
      model/http_model/localpredatalist.go
  78. 31 0
      model/http_model/localpresketchlistrequest.go
  79. 21 0
      model/http_model/localreject_data.go
  80. 21 0
      model/http_model/localreject_link.go
  81. 22 0
      model/http_model/localsketch_opinion.go
  82. 41 0
      model/http_model/localtaskdatalist.go
  83. 36 0
      model/http_model/localtasklinklist.go
  84. 33 0
      model/http_model/localtasksketchlist.go
  85. 6 5
      model/http_model/predatalist.go
  86. 1 0
      model/http_model/presketchlist.go
  87. 20 0
      model/http_model/refuselocaltaskcooprequest.go
  88. 4 1
      model/http_model/reject_data.go
  89. 4 1
      model/http_model/reject_link.go
  90. 5 1
      model/http_model/sketch_accept.go
  91. 22 0
      model/http_model/sketch_loaclaccept.go
  92. 21 0
      model/http_model/sketch_localreject.go
  93. 4 1
      model/http_model/sketch_opinion.go
  94. 4 1
      model/http_model/sketch_reject.go
  95. 9 5
      model/http_model/taskdatalist.go
  96. 7 5
      model/http_model/tasklinklist.go
  97. 2 1
      model/http_model/tasksketchlist.go
  98. 56 30
      route/init.go
  99. 110 0
      service/Localtask.go
  100. 1 1
      service/Task.go

+ 6 - 1
config/dev.yaml

@@ -1,10 +1,15 @@
+#mysql:
+#  host: 139.9.53.143
+#  port: 3306
+#  user: talent
+#  password: talentDB_123
+#  database: youngmini
 mysql:
   host: 1.92.142.62
   port: 3306
   user: root
   password: Younggee_root_DB_123
   database: youngmini
-
 redis:
   host: 1.92.142.62
   port: 6379

+ 7 - 0
config/pro.yaml

@@ -17,6 +17,12 @@
 #   session:
 #     ttl: -1 #minute
 
+#mysql:
+#  host: 139.9.53.143
+#  port: 3306
+#  user: talent
+#  password: talentDB_123
+#  database: youngmini
 mysql:
   host: 1.92.142.62
   port: 3306
@@ -24,6 +30,7 @@ mysql:
   password: Younggee_root_DB_123
   database: youngmini
 
+
 redis:
   host: 1.92.142.62
   port: 6379

+ 2 - 2
consts/error_code.go

@@ -10,12 +10,12 @@ const DefaultToast = ""
 const ErrorSuccess int32 = 20000
 const ErrorNotLogin int32 = 44000
 const ErrorParamCheck int32 = 40000
-const ErrorInternal int32 = 40000
+const ErrorInternal int32 = 50001
 
 func init() {
 	errorCodeToastMap[ErrorSuccess] = "请求成功"
 	errorCodeToastMap[ErrorNotLogin] = "请登录后操作"
-	errorCodeToastMap[ErrorParamCheck] = "参数有误"
+	errorCodeToastMap[ErrorParamCheck] = "error"
 	errorCodeToastMap[ErrorInternal] = "网络错误"
 }
 

+ 102 - 8
db/data.go

@@ -152,14 +152,27 @@ func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum in
 }
 
 // DataOpinion 提交意见
-func DataOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
+func DataOpinion(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 3}).Error
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var data_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&data_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(data_default.CaseCloseDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -172,10 +185,44 @@ func DataOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error
 	return nil
 }
 
+// DataOpinion 提交意见
+func LocalDataOpinion(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
+		return err
+	}
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var data_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&data_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(data_default.CaseCloseDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{DataStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 13}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 // AcceptData 同意数据-结案
-func AcceptData(ctx context.Context, TaskIDs []string) error {
+func AcceptData(ctx context.Context, TaskIDs []string, operatorid string, operatetype 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
+	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(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
 		return err
@@ -184,14 +231,27 @@ func AcceptData(ctx context.Context, TaskIDs []string) error {
 }
 
 // RejectData 拒绝数据-结案
-func RejectData(ctx context.Context, TaskIDs []string) error {
+func RejectData(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"reject_at": time.Now(), "is_review": 1}).Error
+	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		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: 3}).Error
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var data_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&data_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(data_default.CaseCloseDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -204,6 +264,40 @@ func RejectData(ctx context.Context, TaskIDs []string) error {
 	return nil
 }
 
+// RejectData 拒绝数据-结案
+func LocalRejectData(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
+		return err
+	}
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var data_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&data_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(data_default.CaseCloseDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{DataStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 13}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 // GetSpecialTaskDataList 专项任务-查询上传数据的task list
 func GetSpecialTaskDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskDataInfo, int64, error) {
 	db := GetReadDB(ctx)

+ 200 - 11
db/link.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strconv"
 	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
@@ -127,14 +128,27 @@ func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum in
 }
 
 // LinkOpinion 提交意见
-func LinkOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
+func LinkOpinion(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 3}).Error
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var link_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&link_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(link_default.LinkBreach) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -147,20 +161,90 @@ func LinkOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error
 	return nil
 }
 
+// LinkOpinion 提交意见
+func LocalLinkOpinion(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
+		return err
+	}
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var link_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&link_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(link_default.LinkBreach) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{LinkStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 11}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 // AcceptLink 同意链接
-func AcceptLink(ctx context.Context, TaskIDs []string) error {
+func AcceptLink(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 5}).Error
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+	taskstages := 13
+	nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
+	if isspecial == 1 {
+
+		toolList := strings.Split(project.Tools, ",")
+		for _, tool := range toolList {
+			// 将 tool 转换为整数
+			if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
+				nextstage[t-1] = 1
+			}
+		}
+		for i := 4; i < len(nextstage); i++ { // 从位置1开始
+			if nextstage[i] == 1 {
+				switch i {
+				case 4:
+					taskstages = 13
+				case 5:
+					taskstages = 15
+				}
+				break
+			}
+		}
+	}
+	var data_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&data_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(data_default.CaseCloseDefault) * time.Hour
+
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link 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: 13}).Error
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: taskstages}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -168,15 +252,86 @@ func AcceptLink(ctx context.Context, TaskIDs []string) error {
 	return nil
 }
 
-// RejectLink 同意链接
-func RejectLink(ctx context.Context, TaskIDs []string) error {
+// AcceptLink 同意链接
+func LocalAcceptLink(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now()}).Error
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 3}).Error
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find YounggeeLocalLifeInfo error,err:%+v", err)
+		return err
+	}
+	taskstages := 13
+	nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
+	if isspecial == 1 {
+
+		toolList := strings.Split(project.Tools, ",")
+		for _, tool := range toolList {
+			// 将 tool 转换为整数
+			if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
+				nextstage[t-1] = 1
+			}
+		}
+		for i := 4; i < len(nextstage); i++ { // 从位置1开始
+			if nextstage[i] == 1 {
+				switch i {
+				case 4:
+					taskstages = 13
+				case 5:
+					taskstages = 15
+				}
+				break
+			}
+		}
+	}
+
+	var data_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&data_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(data_default.CaseCloseDefault) * time.Hour
+
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{LinkStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: taskstages}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// RejectLink 不同意链接
+func RejectLink(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
+		return err
+	}
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var link_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&link_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(link_default.LinkBreach) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -189,6 +344,40 @@ func RejectLink(ctx context.Context, TaskIDs []string) error {
 	return nil
 }
 
+// RejectLink 不同意链接
+func LocalRejectLink(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
+		return err
+	}
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var link_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&link_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(link_default.LinkBreach) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{LinkStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 11}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeLocalTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 // GetSpecialTaskLinkList 专项任务-查询上传链接的task list
 func GetSpecialTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskLinkInfo, int64, error) {
 	db := GetReadDB(ctx)

+ 822 - 0
db/locallife_task.go

@@ -0,0 +1,822 @@
+package db
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"strconv"
+	"strings"
+	"time"
+	"youngee_b_api/model/gorm_model"
+	"youngee_b_api/model/http_model"
+)
+
+func GetLocallifetaskList(ctx context.Context, request http_model.GetLocalTaskListRequest) (*http_model.GetLocalTaskListData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_status = ?", request.ProjectId, request.CoopType)
+	fmt.Println(query)
+	// 构建查询条件
+	if request.FeeFrom != nil {
+		query = query.Where("fee_form = ?", request.FeeFrom)
+	}
+	if request.Type != nil {
+		switch *request.Type {
+		case 1:
+			query = query.Where("supplier_id = 0 AND supplier_status = 0")
+		case 2:
+			query = query.Where("supplier_id !=0 AND supplier_status = 2")
+		}
+	}
+	if request.TalentFromList != "" {
+		citylist := strings.Split(request.TalentFromList, ",")
+		query = query.Where("city in ?", citylist)
+	}
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocaLTaskInfo, 0, len(projecrtaskinfo))
+	for _, task := range projecrtaskinfo {
+		var Time time.Time
+		switch request.CoopType {
+		case 1:
+			Time = task.CreateDate
+		case 2:
+			Time = task.SelectDate //2 signedtime
+		case 3:
+			Time = task.CompleteDate
+		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		Iscoop := getIscoop(db, task.TalentId, request.EnterPriseId)
+		response := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			Boperator:          boperator,
+			CreateAt:           Time,
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			Sprojectid:         task.SLocalLifeId,
+			City:               task.City,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+	}
+
+	return &http_model.GetLocalTaskListData{
+		TaskList: taskInfoPointers,
+		Total:    conv.MustString(total, ""),
+	}, nil
+}
+
+func PassLocalTaskCoop(ctx context.Context, req http_model.PasslocalTaskCoopRequest) (bool, error) {
+	db := GetReadDB(ctx)
+	var count int64
+	fmt.Println("task_ids: ", req.TaskIds)
+	err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Count(&count).Error
+
+	fmt.Println("count: ", count)
+	if err != nil {
+		return false, err
+	}
+	if int64(len(req.TaskIds)) == 0 || count != int64(len(req.TaskIds)) {
+		return false, errors.New("任务id有误")
+	}
+
+	// 2. 查询任务对应达人id(用于生成达人消息)
+	var talentIds []string
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", req.TaskIds).Select("talent_id").Find(&talentIds).Error
+	if err != nil {
+		return false, err
+	}
+
+	// 3. 查询任务对应project名称(用于生成达人消息)
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", req.ProjectId).Find(&project).Error
+	if err != nil {
+		return false, err
+	}
+
+	var taskstages int
+	if project.TaskForm == 1 {
+		taskstages = 4
+	} else {
+		taskstages = 9
+	}
+
+	nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
+	if req.IsSpecial == 1 {
+		toolList := strings.Split(project.Tools, ",")
+		for _, tool := range toolList {
+			// 将 tool 转换为整数
+			if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
+				nextstage[t-1] = 1
+			}
+		}
+		fmt.Println(nextstage)
+		for i := 1; i < len(nextstage); i++ { // 从位置1开始
+			if nextstage[i] == 1 {
+				switch i {
+				case 1:
+					taskstages = 4
+				case 2:
+					taskstages = 9
+				case 3:
+					taskstages = 11
+				case 4:
+					taskstages = 13
+				case 5:
+					taskstages = 15
+				}
+				break
+			}
+		}
+	}
+
+	//4.根据达人来源改变状态、阶段、数目
+	var tasks []gorm_model.YoungeeLocalTaskInfo
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Find(&tasks).Error
+	if err != nil {
+		return false, err
+	}
+	err = db.Transaction(func(tx *gorm.DB) error {
+		// 2. 修改任务状态和任务阶段
+		for _, taskInfo := range tasks {
+			if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 { //服务商招募数量+1
+				updateData := gorm_model.YoungeeLocalTaskInfo{
+					TaskStage:     taskstages,
+					TaskStatus:    2,
+					UpdateAt:      time.Now(),
+					BOperator:     req.OperatorId,
+					BOperatorType: req.OperateType,
+					SelectDate:    time.Now(),
+				}
+				err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskId).Updates(updateData).Error
+				if err != nil {
+					return err
+				}
+
+				//project招募数+1,预估成本+服务商价格
+				var projectinfo gorm_model.YounggeeLocalLifeInfo
+				err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", req.ProjectId).Find(&projectinfo).Error
+				if err != nil {
+					return err
+				}
+				projectinfo.RecruitNum += 1
+				projectinfo.EstimatedCost += taskInfo.SupportFee
+				err = tx.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", req.ProjectId).Updates(projectinfo).Error
+				if err != nil {
+					return err
+				}
+				//服务商s_project已招募人数+1改成s_locallife
+				var sprojectinfo gorm_model.YounggeeSProjectInfo
+				err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", req.SProjectId).Find(&sprojectinfo).Error
+				if err != nil {
+					return err
+				}
+				sprojectinfo.RecruitNum += 1
+				fmt.Println("......", projectinfo.RecruitNum)
+				err = tx.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", req.SProjectId).Updates(sprojectinfo).Error
+				if err != nil {
+					return err
+				} //
+
+			}
+
+			//if project.TaskForm != 1 { //素材分发
+			//	var draft_default gorm_model.InfoAutoTask
+			//	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
+			//	if err != nil {
+			//		return err
+			//	}
+			//	duration := time.Duration(draft_default.DraftDefault) * time.Hour
+			//	upbreakdate := gorm_model.YoungeeLocalTaskInfo{
+			//		CurBreakAt: time.Now().Add(duration),
+			//	}
+			//	err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? ", taskInfo.TaskId).Updates(upbreakdate).Error
+			//	if err != nil {
+			//		return err
+			//	}
+			//}
+
+			if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 { //来源于公海
+				updateData := gorm_model.YoungeeLocalTaskInfo{
+					TaskStage:     taskstages,
+					TaskStatus:    2,
+					UpdateAt:      time.Now(),
+					BOperator:     req.OperatorId,
+					BOperatorType: req.OperateType,
+					SelectDate:    time.Now(),
+				}
+				err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskId).Updates(updateData).Error
+				if err != nil {
+					return err
+				}
+
+				//project招募数+1
+				var projectinfo gorm_model.YounggeeLocalLifeInfo
+				err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", req.ProjectId).Find(&projectinfo).Error
+				if err != nil {
+					return err
+				}
+				projectinfo.RecruitNum += 1
+				err = tx.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", req.ProjectId).Updates(projectinfo).Error
+				if err != nil {
+					return err
+				}
+			}
+
+		}
+		// 4. 生成达人消息
+		for _, talendId := range talentIds {
+			err = CreateMessage(ctx, 1, 1, talendId, project.LocalName)
+			if err != nil {
+				return err
+			}
+		}
+		// 返回 nil 提交事务
+		return nil
+	})
+	if err != nil {
+		return false, err
+	}
+	return true, nil
+}
+
+func RefuseLocalTaskCoop(ctx context.Context, req http_model.RefuselocalTaskCoopRequest) (bool, error) {
+	db := GetWriteDB(ctx)
+	// 1. 校验
+	var count int64
+	err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Count(&count).Error
+	if err != nil {
+		return false, err
+	}
+	if count != int64(len(req.TaskIds)) {
+		return false, errors.New("任务id有误")
+	}
+
+	// 2. 查询任务对应达人id(用于生成达人消息)
+	var talentIds []string
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", req.TaskIds).Select("talent_id").Find(&talentIds).Error
+	if err != nil {
+		return false, err
+	}
+
+	var tasks []gorm_model.YoungeeLocalTaskInfo
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Find(&tasks).Error
+
+	err = db.Transaction(func(tx *gorm.DB) error {
+		// 2. 修改任务状态和任务阶段
+		for _, taskInfo := range tasks {
+			updateData := gorm_model.YoungeeLocalTaskInfo{
+				TaskStage:     3,
+				TaskStatus:    3,
+				UpdateAt:      time.Now(),
+				BOperator:     req.OperatorId,
+				BOperatorType: req.OperateType,
+				CompleteDate:  time.Now(),
+			}
+			err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskId).Updates(updateData).Error
+		}
+		if err != nil {
+			return err
+		}
+
+		// 返回 nil 提交事务
+		return nil
+	})
+	if err != nil {
+		return false, err
+	}
+	return true, nil
+}
+
+func GetLocallifeData(ctx context.Context, req http_model.LocallifeDataRequest) (http_model.LocallifeDataResponse, error) {
+	db := GetReadDB(ctx)
+	var projectInfo gorm_model.YounggeeLocalLifeInfo
+	// 查询项目基本信息
+	if err := db.Where("local_id = ?", req.LocallifeId).First(&projectInfo).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[Locallife db] GetLocallifeData error, err: %+v", err)
+		return http_model.LocallifeDataResponse{}, err
+	}
+	fmt.Println("projectInfo---", projectInfo.LocalId)
+	var projectTasks []gorm_model.YoungeeLocalTaskInfo
+	if err := db.Where("local_id = ? AND task_status = ?", req.LocallifeId, 2).Find(&projectTasks).Error; err != nil {
+		return http_model.LocallifeDataResponse{}, err
+	}
+
+	var totalTasks int64
+	if err := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_status = ?", req.LocallifeId, 2).Count(&totalTasks).Error; err != nil {
+		return http_model.LocallifeDataResponse{}, err
+	}
+
+	// 初始化统计数据
+	dateStats := make(map[string]int)
+	fansCounts := map[int64]int{0: 0, 1: 0, 2: 0, 3: 0}
+	feeCounts := map[int]int{1: 0, 2: 0, 3: 0}
+	startDate := *projectInfo.CreatedAt
+	endDate := time.Now()
+
+	// 填充日期统计
+	for d := startDate; d.Before(endDate) || d.Equal(endDate); d = d.Add(24 * time.Hour) {
+		dateStats[d.Format("2006-01-02")] = 0
+	}
+
+	var totalCost float64
+	var totalFans int
+	var serverTaskCount float64
+	var maleCount int64
+
+	// 处理每个任务
+	for _, task := range projectTasks {
+		totalCost += task.DraftFee
+		var talentInfo gorm_model.YoungeeTalentInfo
+
+		// 查询达人信息
+		if err := db.Where("id = ?", task.TalentId).First(&talentInfo).Error; err != nil {
+			logrus.WithContext(ctx).Errorf("[Locallife db] GetLocallifeData error, err: %+v", err)
+			return http_model.LocallifeDataResponse{}, err
+		}
+
+		// 统计性别
+		if talentInfo.Sex == 1 {
+			maleCount++
+		}
+		totalFans += task.FansNum
+
+		// 统计来自服务商的任务
+		if task.SupplierId != 0 && task.SupplierStatus == 2 {
+			serverTaskCount++
+		}
+
+		// 稿费形式统计
+		feeCounts[task.FeeForm]++
+
+		// 统计粉丝数
+		switch {
+		case task.FansNum < 10000:
+			fansCounts[0]++
+		case task.FansNum < 100000:
+			fansCounts[1]++
+		case task.FansNum < 1000000:
+			fansCounts[2]++
+		default:
+			fansCounts[3]++
+		}
+
+		SelectDate := task.SelectDate.Format("2006-01-02")
+		if _, exists := dateStats[SelectDate]; exists {
+			dateStats[SelectDate]++
+		}
+	}
+
+	// 计算平均值
+	var avgFansNum int
+	if totalTasks > 0 {
+		avgFansNum = totalFans / int(totalTasks)
+	} else {
+		avgFansNum = 0
+	}
+
+	var fromType float64
+	if totalTasks > 0 {
+		fromType = serverTaskCount / float64(totalTasks)
+	} else {
+		fromType = 0
+	}
+
+	var manRatio float64
+	if totalTasks > 0 {
+		manRatio = float64(maleCount) / float64(totalTasks)
+	} else {
+		manRatio = 0
+	}
+	// 构建响应
+	res := http_model.LocallifeDataResponse{
+		Recruittime: *projectInfo.PassAt,
+		RecruitDDl:  *projectInfo.RecruitDdl,
+		AgreeNum:    projectInfo.RecruitNum,
+		ApplyNum:    projectInfo.ApplyNum,
+		DraftFee:    totalCost,
+		AvgFansNum:  avgFansNum,
+		FromType:    fromType,
+		ManRatio:    manRatio,
+		DateStats:   dateStats,
+		FeeMap:      feeCounts,
+		FansMap:     fansCounts,
+	}
+	return res, nil
+}
+
+func GetLocalPreSketchList(ctx context.Context, request http_model.LocalPreSketchListRequest) (*http_model.GetLocalSketchTaskListData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.ScriptStatus)
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocalTasksketchInfo, 0, len(projecrtaskinfo))
+
+	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
+		taskinfo := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
+		}
+		response := &http_model.LocalTasksketchInfo{
+			Task: taskinfo,
+			DDl:  task.CurBreakAt,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+
+	}
+	return &http_model.GetLocalSketchTaskListData{
+		TasksketchList: taskInfoPointers,
+		Total:          conv.MustString(total, ""),
+	}, nil
+}
+
+func GetLocalSketchList(ctx context.Context, request http_model.LocalTasksketchlistRequest) (*http_model.GetsketchlocaltaskListData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.ScriptStatus)
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocalTasksketchinfo, 0, len(projecrtaskinfo))
+	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		taskinfo := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			City:               task.City,
+		}
+		var sketchinfo gorm_model.YounggeeSketchInfo
+		err := db.Model(&gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", task.TaskId).First(&sketchinfo).Error
+		if err != nil {
+			return nil, err
+		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
+		response := &http_model.LocalTasksketchinfo{
+			Task:     taskinfo,
+			SketchId: sketchinfo.SketchID,
+			SubmitAt: sketchinfo.SubmitAt,
+			AgreeAt:  sketchinfo.AgreeAt,
+			Operator: boperator,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+
+	}
+	return &http_model.GetsketchlocaltaskListData{
+		LocalTasksketchList: taskInfoPointers,
+		Total:               conv.MustString(total, ""),
+	}, nil
+}
+
+func GetLocalPreLinkList(ctx context.Context, request http_model.LocalPreLinkListRequest) (*http_model.GetLocalPreLinkListData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.LinkStatus)
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocalTasklinkinfo, 0, len(projecrtaskinfo))
+	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
+		taskinfo := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
+		}
+		response := &http_model.LocalTasklinkinfo{
+			Task: taskinfo,
+			DDl:  task.CurBreakAt,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+
+	}
+	return &http_model.GetLocalPreLinkListData{
+		TasklinkList: taskInfoPointers,
+		Total:        conv.MustString(total, ""),
+	}, nil
+}
+
+func GetLocalLinkList(ctx context.Context, request http_model.LocalTaskLinklistRequest) (*http_model.GetLocalTaskLinkListData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.LinkStatus)
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocalTaskLinkinfo, 0, len(projecrtaskinfo))
+	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
+		taskinfo := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
+		}
+		var linkinfo gorm_model.YounggeeLinkInfo
+		err := db.Model(&gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", task.TaskId).First(&linkinfo).Error
+		if err != nil {
+			return nil, err
+		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
+		response := &http_model.LocalTaskLinkinfo{
+			Task:     taskinfo,
+			LinkId:   linkinfo.LinkID,
+			SubmitAt: linkinfo.SubmitAt,
+			AgreeAt:  linkinfo.AgreeAt,
+			LinkUrl:  linkinfo.LinkUrl,
+			PhotoUrl: linkinfo.PhotoUrl,
+			Operator: boperator,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+
+	}
+	return &http_model.GetLocalTaskLinkListData{
+		LocalTaskLinklist: taskInfoPointers,
+		Total:             conv.MustString(total, ""),
+	}, nil
+}
+
+func GetLocalPreDataList(ctx context.Context, request http_model.LocalPreDataListRequest) (*http_model.GetLocalPreDataListData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.DataStatus)
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocalTaskdatainfo, 0, len(projecrtaskinfo))
+	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
+		taskinfo := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
+		}
+		response := &http_model.LocalTaskdatainfo{
+			Task: taskinfo,
+			DDl:  task.CurBreakAt,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+
+	}
+	return &http_model.GetLocalPreDataListData{
+		TaskdataList: taskInfoPointers,
+		Total:        conv.MustString(total, ""),
+	}, nil
+}
+
+func GetLocalDataList(ctx context.Context, request http_model.LocalTaskDatalistRequest) (*http_model.GetLocalTaskDatalistData, error) {
+	db := GetReadDB(ctx)
+	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.DataStatus)
+	// 计算总数
+	var total int64
+	if err := query.Count(&total).Error; err != nil {
+		return nil, err
+	}
+
+	// 添加分页逻辑
+	pageSize := request.PageSize
+	if pageSize == 0 {
+		pageSize = 10
+	}
+	pageNum := request.PageNum
+	if pageNum == 0 {
+		pageNum = 1
+	}
+	offset := (pageNum - 1) * pageSize
+	// 执行分页查询
+	if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
+		return nil, err
+	}
+	taskInfoPointers := make([]*http_model.LocalTaskDatainfo, 0, len(projecrtaskinfo))
+	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentId)
+		Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
+		taskinfo := &http_model.LocaLTaskInfo{
+			TaskId:             task.TaskId,
+			ProjectId:          task.LocalId,
+			TalentId:           task.TalentId,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
+		}
+		var datainfo gorm_model.YounggeeDataInfo
+		err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", task.TaskId).First(&datainfo).Error
+		if err != nil {
+			return nil, err
+		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
+		response := &http_model.LocalTaskDatainfo{
+			Task:          taskinfo,
+			DataId:        datainfo.DataID,
+			SubmitAt:      datainfo.SubmitAt,
+			AgreeAt:       datainfo.AgreeAt,
+			PhotoUrl:      datainfo.PhotoUrl,
+			PlayNumber:    datainfo.PlayNumber,
+			LikeNumber:    datainfo.LikeNumber,
+			CollectNumber: datainfo.CollectNumber,
+			CommentNumber: datainfo.CommentNumber,
+			SettleAmount:  task.SettleAmount,
+			Breakrate:     task.SketchBreakRate + task.LinkBreakRate + task.DataBreakRate,
+			Operator:      boperator,
+		}
+		taskInfoPointers = append(taskInfoPointers, response)
+
+	}
+	return &http_model.GetLocalTaskDatalistData{
+		LocalTaskDatalist: taskInfoPointers,
+		Total:             conv.MustString(total, ""),
+	}, nil
+}

+ 183 - 24
db/project_task.go

@@ -6,6 +6,8 @@ import (
 	"fmt"
 	"github.com/issue9/conv"
 	"gorm.io/gorm"
+	"strconv"
+	"strings"
 	"time"
 	"youngee_b_api/model/gorm_model"
 	"youngee_b_api/model/http_model"
@@ -25,7 +27,7 @@ func GetProjecttaskList(ctx context.Context, request http_model.GetTaskListReque
 		case 1:
 			query = query.Where("supplier_id = 0 AND supplier_status = 0")
 		case 2:
-			query = query.Where("supplier_id != 0 AND supplier_status = 2")
+			query = query.Where("supplier_id !=0 AND supplier_status = 2")
 		}
 	}
 
@@ -53,7 +55,18 @@ func GetProjecttaskList(ctx context.Context, request http_model.GetTaskListReque
 
 	taskInfoPointers := make([]*http_model.TaskInfo, 0, len(projecrtaskinfo))
 	for _, task := range projecrtaskinfo {
-		boperator := getBOperator(db, task.BOperator)
+		var Time time.Time
+		switch request.CoopType {
+		case 1:
+			Time = task.CreateDate
+		case 2:
+			Time = task.SelectDate //2 signedtime
+		case 3:
+			Time = task.CompleteDate
+		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
+		nickname, headurl := getTalentinfo(db, task.TalentID)
+		Iscoop := getIscoop(db, task.TalentID, request.EnterPriseId)
 		response := &http_model.TaskInfo{
 			TaskId:             task.TaskID,
 			ProjectId:          task.ProjectID,
@@ -66,8 +79,14 @@ func GetProjecttaskList(ctx context.Context, request http_model.GetTaskListReque
 			Commentavg:         task.CommitAvg,
 			CurrentDefaultType: task.CurDefaultType,
 			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
 			Boperator:          boperator,
-			CreateAt:           task.CreateDate,
+			CreateAt:           Time,
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			Sprojectid:         task.SprojectId,
+			City:               task.City,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 	}
@@ -78,15 +97,44 @@ func GetProjecttaskList(ctx context.Context, request http_model.GetTaskListReque
 	}, nil
 }
 
-func getBOperator(db *gorm.DB, bOperatorID string) string {
+func getBOperator(db *gorm.DB, bOperatorID string, bOperatorType int) string {
 	if bOperatorID == "" {
 		return ""
 	}
-	var boperatorinfo gorm_model.Enterprise
-	if err := db.Where(gorm_model.Enterprise{EnterpriseID: bOperatorID}).First(&boperatorinfo).Error; err != nil {
-		return ""
+	if bOperatorType == 1 {
+		var boperatorinfo gorm_model.Enterprise
+		if err := db.Where(gorm_model.Enterprise{EnterpriseID: bOperatorID}).First(&boperatorinfo).Error; err != nil {
+			return ""
+		}
+		return boperatorinfo.BusinessName
+	}
+	if bOperatorType == 2 {
+		var bsubaccount gorm_model.YounggeeSubAccount
+		if err := db.Where(gorm_model.YounggeeSubAccount{SubAccountId: conv.MustInt(bOperatorID)}).First(&bsubaccount).Error; err != nil {
+			return ""
+		}
+		return bsubaccount.SubAccountName
 	}
-	return boperatorinfo.BusinessName
+	if bOperatorType == 3 {
+		return "管理后台"
+	}
+	return ""
+}
+
+func getTalentinfo(db *gorm.DB, talentID string) (string, string) {
+	var talentinfo gorm_model.PlatformKuaishouUserInfo
+	if err := db.Where(gorm_model.PlatformKuaishouUserInfo{TalentId: talentID}).First(&talentinfo).Error; err != nil {
+		return "", ""
+	}
+	return talentinfo.NickName, talentinfo.HeadUri
+}
+
+func getIscoop(db *gorm.DB, talentid string, enterpriseid string) int {
+	var etcoop gorm_model.EnterpriseTalentCooperate
+	if err := db.Where(gorm_model.EnterpriseTalentCooperate{TalentId: talentid, EnterpriseId: enterpriseid}).First(&etcoop).Error; err != nil {
+		return 0
+	}
+	return 1
 }
 
 func determineFrom(supplierID, supplierStatus int) int {
@@ -96,7 +144,18 @@ func determineFrom(supplierID, supplierStatus int) int {
 	return 1
 }
 
-func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, operatorid string, operatetype int) (bool, error) {
+func stype(db *gorm.DB, supplierID, supplierStatus int) int {
+	if supplierID != 0 && supplierStatus == 2 {
+		var supplierinfo gorm_model.Supplier
+		err := db.Model(gorm_model.Supplier{}).Where("supplier_id = ?", supplierID).First(&supplierinfo).Error
+		if err != nil {
+			return 0
+		}
+		return supplierinfo.SupplierType
+	}
+	return 0
+}
+func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, operatorid string, operatetype int, Isspecial int, req http_model.PassproTaskCoopRequest) (bool, error) {
 	db := GetReadDB(ctx)
 	var count int64
 	fmt.Println("task_ids: ", taskIds)
@@ -123,12 +182,41 @@ func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, op
 	if err != nil {
 		return false, err
 	}
+
 	var taskstages int
 	if project.ProjectForm == 1 {
 		taskstages = 4
 	} else {
 		taskstages = 9
 	}
+	nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
+	if Isspecial == 1 {
+		toolList := strings.Split(project.Tools, ",")
+		for _, tool := range toolList {
+			// 将 tool 转换为整数
+			if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
+				nextstage[t-1] = 1
+			}
+		}
+		fmt.Println(nextstage)
+		for i := 1; i < len(nextstage); i++ { // 从位置1开始
+			if nextstage[i] == 1 {
+				switch i {
+				case 1:
+					taskstages = 4
+				case 2:
+					taskstages = 9
+				case 3:
+					taskstages = 11
+				case 4:
+					taskstages = 13
+				case 5:
+					taskstages = 15
+				}
+				break
+			}
+		}
+	}
 
 	//4.根据达人来源改变状态、阶段、数目
 	var tasks []gorm_model.YoungeeTaskInfo
@@ -146,6 +234,7 @@ func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, op
 					UpdateAt:      time.Now(),
 					BOperator:     operatorid,
 					BOperatorType: operatetype,
+					SelectDate:    time.Now(),
 				}
 				err = tx.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskID).Updates(updateData).Error
 				if err != nil {
@@ -166,18 +255,35 @@ func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, op
 				}
 				//服务商s_project已招募人数+1
 				var sprojectinfo gorm_model.YounggeeSProjectInfo
-				err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where("project_id = ?", projectId).Find(&sprojectinfo).Error
+				err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", req.SProjectId).Find(&sprojectinfo).Error
 				if err != nil {
 					return err
 				}
 				sprojectinfo.RecruitNum += 1
-				err = tx.Model(gorm_model.YounggeeSProjectInfo{}).Where("project_id = ? ", projectId).Updates(projectinfo).Error
+				fmt.Println("......", projectinfo.RecruitNum)
+				err = tx.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", req.SProjectId).Updates(sprojectinfo).Error
 				if err != nil {
 					return err
 				}
 
 			}
 
+			if project.ProjectForm != 1 { //非签收截止时间
+				var draft_default gorm_model.InfoAutoTask
+				err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
+				if err != nil {
+					return err
+				}
+				duration := time.Duration(draft_default.DraftDefault) * time.Hour
+				upbreakdate := gorm_model.YoungeeTaskInfo{
+					CurBreakAt: time.Now().Add(duration),
+				}
+				err = tx.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ? ", taskInfo.TaskID).Updates(upbreakdate).Error
+				if err != nil {
+					return err
+				}
+			}
+
 			if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 { //来源于公海
 				updateData := gorm_model.YoungeeTaskInfo{
 					TaskStage:     taskstages,
@@ -185,6 +291,7 @@ func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, op
 					UpdateAt:      time.Now(),
 					BOperator:     operatorid,
 					BOperatorType: operatetype,
+					SelectDate:    time.Now(),
 				}
 				err = tx.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskID).Updates(updateData).Error
 				if err != nil {
@@ -225,7 +332,7 @@ func RefuseproTaskCoop(ctx context.Context, taskIds []string, operatorid string,
 	db := GetWriteDB(ctx)
 	// 1. 校验
 	var count int64
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Count(&count).Error
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ? AND task_stage = 1", taskIds).Count(&count).Error
 	if err != nil {
 		return false, err
 	}
@@ -252,6 +359,7 @@ func RefuseproTaskCoop(ctx context.Context, taskIds []string, operatorid string,
 				UpdateAt:      time.Now(),
 				BOperator:     operatorid,
 				BOperatorType: operatetype,
+				CompleteDate:  time.Now(),
 			}
 			err = tx.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskID).Updates(updateData).Error
 		}
@@ -293,7 +401,10 @@ func GetPreSketchList(ctx context.Context, request http_model.PreSketchListReque
 		return nil, err
 	}
 	taskInfoPointers := make([]*http_model.TasksketchInfo, 0, len(projecrtaskinfo))
+
 	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentID)
+		Iscoop := getIscoop(db, task.TalentID, request.EnterpriseId)
 		taskinfo := &http_model.TaskInfo{
 			TaskId:             task.TaskID,
 			ProjectId:          task.ProjectID,
@@ -306,10 +417,15 @@ func GetPreSketchList(ctx context.Context, request http_model.PreSketchListReque
 			Commentavg:         task.CommitAvg,
 			CurrentDefaultType: task.CurDefaultType,
 			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
 		}
 		response := &http_model.TasksketchInfo{
 			Task: taskinfo,
-			DDl:  time.Now(), //截止时间再改
+			DDl:  task.CurBreakAt,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 
@@ -346,6 +462,7 @@ func GetSketchList(ctx context.Context, request http_model.TasksketchlistRequest
 	}
 	taskInfoPointers := make([]*http_model.Tasksketchinfo, 0, len(projecrtaskinfo))
 	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentID)
 		taskinfo := &http_model.TaskInfo{
 			TaskId:             task.TaskID,
 			ProjectId:          task.ProjectID,
@@ -358,17 +475,23 @@ func GetSketchList(ctx context.Context, request http_model.TasksketchlistRequest
 			Commentavg:         task.CommitAvg,
 			CurrentDefaultType: task.CurDefaultType,
 			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			City:               task.City,
 		}
 		var sketchinfo gorm_model.YounggeeSketchInfo
 		err := db.Model(&gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", task.TaskID).First(&sketchinfo).Error
 		if err != nil {
 			return nil, err
 		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
 		response := &http_model.Tasksketchinfo{
 			Task:     taskinfo,
 			SketchId: sketchinfo.SketchID,
 			SubmitAt: sketchinfo.SubmitAt,
 			AgreeAt:  sketchinfo.AgreeAt,
+			Operator: boperator,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 
@@ -405,6 +528,8 @@ func GetPreLinkList(ctx context.Context, request http_model.PreLinkListRequest)
 	}
 	taskInfoPointers := make([]*http_model.Tasklinkinfo, 0, len(projecrtaskinfo))
 	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentID)
+		Iscoop := getIscoop(db, task.TalentID, request.EnterpriseId)
 		taskinfo := &http_model.TaskInfo{
 			TaskId:             task.TaskID,
 			ProjectId:          task.ProjectID,
@@ -417,10 +542,15 @@ func GetPreLinkList(ctx context.Context, request http_model.PreLinkListRequest)
 			Commentavg:         task.CommitAvg,
 			CurrentDefaultType: task.CurDefaultType,
 			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
 		}
 		response := &http_model.Tasklinkinfo{
 			Task: taskinfo,
-			DDl:  time.Now(), //截止时间再改
+			DDl:  task.CurBreakAt,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 
@@ -457,6 +587,8 @@ func GetLinkList(ctx context.Context, request http_model.TaskLinklistRequest) (*
 	}
 	taskInfoPointers := make([]*http_model.TaskLinkinfo, 0, len(projecrtaskinfo))
 	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentID)
+		Iscoop := getIscoop(db, task.TalentID, request.EnterpriseId)
 		taskinfo := &http_model.TaskInfo{
 			TaskId:             task.TaskID,
 			ProjectId:          task.ProjectID,
@@ -469,12 +601,18 @@ func GetLinkList(ctx context.Context, request http_model.TaskLinklistRequest) (*
 			Commentavg:         task.CommitAvg,
 			CurrentDefaultType: task.CurDefaultType,
 			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
 		}
 		var linkinfo gorm_model.YounggeeLinkInfo
 		err := db.Model(&gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", task.TaskID).First(&linkinfo).Error
 		if err != nil {
 			return nil, err
 		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
 		response := &http_model.TaskLinkinfo{
 			Task:     taskinfo,
 			LinkId:   linkinfo.LinkID,
@@ -482,6 +620,7 @@ func GetLinkList(ctx context.Context, request http_model.TaskLinklistRequest) (*
 			AgreeAt:  linkinfo.AgreeAt,
 			LinkUrl:  linkinfo.LinkUrl,
 			PhotoUrl: linkinfo.PhotoUrl,
+			Operator: boperator,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 
@@ -518,6 +657,8 @@ func GetPreDataList(ctx context.Context, request http_model.PreDataListRequest)
 	}
 	taskInfoPointers := make([]*http_model.Taskdatainfo, 0, len(projecrtaskinfo))
 	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentID)
+		Iscoop := getIscoop(db, task.TalentID, request.EnterpriseId)
 		taskinfo := &http_model.TaskInfo{
 			TaskId:             task.TaskID,
 			ProjectId:          task.ProjectID,
@@ -530,10 +671,15 @@ func GetPreDataList(ctx context.Context, request http_model.PreDataListRequest)
 			Commentavg:         task.CommitAvg,
 			CurrentDefaultType: task.CurDefaultType,
 			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
 		}
 		response := &http_model.Taskdatainfo{
 			Task: taskinfo,
-			DDl:  time.Now(), //截止时间再改
+			DDl:  task.CurBreakAt,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 
@@ -570,22 +716,32 @@ func GetDataList(ctx context.Context, request http_model.TaskDatalistRequest) (*
 	}
 	taskInfoPointers := make([]*http_model.TaskDatainfo, 0, len(projecrtaskinfo))
 	for _, task := range projecrtaskinfo {
+		nickname, headurl := getTalentinfo(db, task.TalentID)
+		Iscoop := getIscoop(db, task.TalentID, request.EnterpriseId)
 		taskinfo := &http_model.TaskInfo{
-			TaskId:       task.TaskID,
-			ProjectId:    task.ProjectID,
-			TalentId:     task.TalentID,
-			FansNum:      task.FansNum,
-			DraftFee:     task.DraftFee,
-			FeeFrom:      task.FeeForm,
-			TaskStage:    task.TaskStage,
-			SettleAmount: task.SettleAmount,
-			From:         determineFrom(task.SupplierId, task.SupplierStatus),
+			TaskId:             task.TaskID,
+			ProjectId:          task.ProjectID,
+			TalentId:           task.TalentID,
+			FansNum:            task.FansNum,
+			DraftFee:           task.DraftFee,
+			Voteavg:            task.VoteAvg,
+			FeeFrom:            task.FeeForm,
+			TaskStage:          task.TaskStage,
+			Commentavg:         task.CommitAvg,
+			CurrentDefaultType: task.CurDefaultType,
+			From:               determineFrom(task.SupplierId, task.SupplierStatus),
+			SType:              stype(db, task.SupplierId, task.SupplierStatus),
+			NickName:           nickname,
+			HeadUrl:            headurl,
+			ISCoop:             Iscoop,
+			City:               task.City,
 		}
 		var datainfo gorm_model.YounggeeDataInfo
 		err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", task.TaskID).First(&datainfo).Error
 		if err != nil {
 			return nil, err
 		}
+		boperator := getBOperator(db, task.BOperator, task.BOperatorType)
 		response := &http_model.TaskDatainfo{
 			Task:          taskinfo,
 			DataId:        datainfo.DataID,
@@ -596,6 +752,9 @@ func GetDataList(ctx context.Context, request http_model.TaskDatalistRequest) (*
 			LikeNumber:    datainfo.LikeNumber,
 			CollectNumber: datainfo.CollectNumber,
 			CommentNumber: datainfo.CommentNumber,
+			SettleAmount:  task.SettleAmount,
+			Breakrate:     task.SketchBreakRate + task.LinkBreakRate + task.DataBreakRate,
+			Operator:      boperator,
 		}
 		taskInfoPointers = append(taskInfoPointers, response)
 

+ 209 - 10
db/sketch.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strconv"
 	"strings"
 	"time"
 	"youngee_b_api/model/common_model"
@@ -130,15 +131,29 @@ func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum
 }
 
 // SketchOption 提交意见
-func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string) error {
+func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
 	db := GetReadDB(ctx)
 	fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
-	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3}).Error
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var draft_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
+	if err != nil {
+		return err
+	}
+
+	duration := time.Duration(draft_default.DraftDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -151,21 +166,155 @@ func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string) erro
 	return nil
 }
 
+// SketchOption 提交意见
+func LocalSketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
+		return err
+	}
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+
+	var draft_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
+	if err != nil {
+		return err
+	}
+
+	duration := time.Duration(draft_default.DraftDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 // AcceptSketch 同意初稿
-func AcceptSketch(ctx context.Context, TaskIDs []string) error {
+func AcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5}).Error
+
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+	taskstages := 11
+	nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
+	if isspecial == 1 {
+
+		toolList := strings.Split(project.Tools, ",")
+		for _, tool := range toolList {
+			// 将 tool 转换为整数
+			if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
+				nextstage[t-1] = 1
+			}
+		}
+		for i := 3; i < len(nextstage); i++ { // 从位置1开始
+			if nextstage[i] == 1 {
+				switch i {
+				case 3:
+					taskstages = 11
+				case 4:
+					taskstages = 13
+				case 5:
+					taskstages = 15
+				}
+				break
+			}
+		}
+	}
+	var link_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&link_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(link_default.LinkBreach) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch 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: 11}).Error
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: taskstages}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// AcceptSketch 同意初稿
+func LocalAcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
+		return err
+	}
+
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("LocalId = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
+		return err
+	}
+	taskstages := 11
+	nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
+	if isspecial == 1 {
+
+		toolList := strings.Split(project.Tools, ",")
+		for _, tool := range toolList {
+			// 将 tool 转换为整数
+			if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
+				nextstage[t-1] = 1
+			}
+		}
+		for i := 3; i < len(nextstage); i++ { // 从位置1开始
+			if nextstage[i] == 1 {
+				switch i {
+				case 3:
+					taskstages = 11
+				case 4:
+					taskstages = 13
+				case 5:
+					taskstages = 15
+				}
+				break
+			}
+		}
+	}
+	var link_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&link_default).Error //待确认
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(link_default.LinkBreach) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: taskstages}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -174,14 +323,28 @@ func AcceptSketch(ctx context.Context, TaskIDs []string) error {
 }
 
 // RejectSketch 不同意初稿
-func RejectSketch(ctx context.Context, TaskIDs []string) error {
+func RejectSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now()}).Error
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
 		return err
 	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3}).Error
+
+	var project gorm_model.ProjectInfo
+	err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+
+	var draft_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(draft_default.DraftDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
 		return err
@@ -195,6 +358,42 @@ func RejectSketch(ctx context.Context, TaskIDs []string) error {
 	return nil
 }
 
+// RejectSketch 不同意初稿
+func LocalRejectSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
+		return err
+	}
+
+	var project gorm_model.YounggeeLocalLifeInfo
+	err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("LocalId = ?", projectid).Find(&project).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
+		return err
+	}
+
+	var draft_default gorm_model.InfoAutoTask
+	err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
+	if err != nil {
+		return err
+	}
+	duration := time.Duration(draft_default.DraftDefault) * time.Hour
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
+		return err
+	}
+
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 // FindPhoto
 func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
 	db := GetReadDB(ctx)

+ 252 - 21
db/task.go

@@ -2,7 +2,6 @@ package db
 
 import (
 	"context"
-	"encoding/json"
 	"fmt"
 	"reflect"
 	"strconv"
@@ -187,33 +186,128 @@ func SetTaskFinish(ctx context.Context, TaskIDs []string) error {
 			return err1
 		}
 
-		// 2. 创建任务收益
-		var productStruct gorm_model.YounggeeProduct
-		if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
-			fmt.Println("Error:", err)
+		//// 2. 创建任务收益
+		//var productStruct gorm_model.YounggeeProduct
+		//if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
+		//	fmt.Println("Error:", err)
+		//	return err
+		//}
+		//var productPhotoStruct []gorm_model.YounggeeProductPhoto
+		//if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
+		//	fmt.Println("Error:", err)
+		//	return err
+		//}
+		//var mainPhoto = ""
+		//for _, w := range productPhotoStruct {
+		//	if w.Symbol == 1 {
+		//		mainPhoto = w.PhotoUrl
+		//	}
+		//}
+
+		t := time.Now()
+		income := gorm_model.YounggeeTalentIncome{
+			TalentID:  taskInfo.TalentID,
+			ProjectID: taskInfo.ProjectID,
+			TaskID:    taskInfo.TaskID,
+			Type:      1,
+			//BrandName:      productStruct.BrandName,
+			TaskName: projectInfo.ProjectName,
+			//PhotoUrl:       mainPhoto,
+			Income:         strconv.FormatFloat(taskInfo.SettleAmount, 'f', 10, 32),
+			IncomeType:     1,
+			WithdrawStatus: 1,
+			IncomeAt:       &t,
+			WithdrawAt:     nil,
+		}
+		err = CreateIncome(ctx, income, nil)
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[projectPay service] call SpecialSettlePay error,err:%+v", err)
 			return err
 		}
-		var productPhotoStruct []gorm_model.YounggeeProductPhoto
-		if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
-			fmt.Println("Error:", err)
+
+		// 3. 修改招募策略表,更新粉丝量、播放量、点赞数、收藏数、评论数、总支付、结案数量
+		// 更新招募策略
+		db = GetReadDB(ctx)
+		db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectID, taskInfo.StrategyID)
+		fansCount, _ := strconv.Atoi(conv.MustString(gjson.Get(taskInfo.TalentPlatformInfoSnap, "fans_count")))
+		err = db.Updates(map[string]interface{}{
+			"fan_number":     gorm.Expr("fan_number + ?", fansCount),
+			"play_number":    gorm.Expr("play_number + ?", dataInfo.PlayNumber),
+			"like_number":    gorm.Expr("like_number + ?", dataInfo.LikeNumber),
+			"collect_number": gorm.Expr("collect_number + ?", dataInfo.CollectNumber),
+			"comment_number": gorm.Expr("comment_number + ?", dataInfo.CommentNumber),
+			"finish_number":  gorm.Expr("finish_number + 1"),
+			"total_offer":    gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Update YounggeeDataInfo error,err:%+v", err)
 			return err
 		}
-		var mainPhoto = ""
-		for _, w := range productPhotoStruct {
-			if w.Symbol == 1 {
-				mainPhoto = w.PhotoUrl
-			}
+	}
+	return nil
+}
+
+// SetTaskFinish 任务结案
+func SetLocalTaskFinish(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	// 1. 修改任务表,更新任务阶段为已结案,结案方式为正常结束,数据状态为已通过,
+	err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2, WithdrawStatus: 2, CompleteDate: time.Now(), SettleStatus: 2}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Task db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+
+	for _, v := range TaskIDs {
+		// 查询task_info
+		db = GetReadDB(ctx)
+		taskInfo := gorm_model.YoungeeLocalTaskInfo{}
+		err1 := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", v).Scan(&taskInfo).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Find YoungeeTaskInfo error,err:%+v", err)
+			return err1
+		}
+		//查询project_info
+		projectInfo := gorm_model.YounggeeLocalLifeInfo{}
+		err1 = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("project_id = ?", taskInfo.LocalId).Scan(&projectInfo).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Find ProjectInfo error,err:%+v", err)
+			return err1
+		}
+		// 查询data_info
+		db = GetReadDB(ctx)
+		dataInfo := gorm_model.YounggeeDataInfo{}
+		err1 = db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_ok = 1", v).Scan(&dataInfo).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Find YounggeeDataInfo error,err:%+v", err)
+			return err1
 		}
 
+		// 2. 创建任务收益
+		//var productStruct gorm_model.YounggeeProduct
+		//if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
+		//	fmt.Println("Error:", err)
+		//	return err
+		//}
+		//var productPhotoStruct []gorm_model.YounggeeProductPhoto
+		//if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
+		//	fmt.Println("Error:", err)
+		//	return err
+		//}
+		//var mainPhoto = ""
+		//for _, w := range productPhotoStruct {
+		//	if w.Symbol == 1 {
+		//		mainPhoto = w.PhotoUrl
+		//	}
+		//}
+
 		t := time.Now()
 		income := gorm_model.YounggeeTalentIncome{
-			TalentID:       taskInfo.TalentID,
-			ProjectID:      taskInfo.ProjectID,
-			TaskID:         taskInfo.TaskID,
-			Type:           1,
-			BrandName:      productStruct.BrandName,
-			TaskName:       projectInfo.ProjectName,
-			PhotoUrl:       mainPhoto,
+			TalentID:  taskInfo.TalentId,
+			ProjectID: taskInfo.LocalId,
+			TaskID:    taskInfo.TaskId,
+			Type:      1,
+			//BrandName:      productStruct.BrandName,
+			TaskName: projectInfo.LocalName,
+			//PhotoUrl:       mainPhoto,
 			Income:         strconv.FormatFloat(taskInfo.SettleAmount, 'f', 10, 32),
 			IncomeType:     1,
 			WithdrawStatus: 1,
@@ -229,7 +323,7 @@ func SetTaskFinish(ctx context.Context, TaskIDs []string) error {
 		// 3. 修改招募策略表,更新粉丝量、播放量、点赞数、收藏数、评论数、总支付、结案数量
 		// 更新招募策略
 		db = GetReadDB(ctx)
-		db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectID, taskInfo.StrategyID)
+		db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.LocalId, taskInfo.StrategyId)
 		fansCount, _ := strconv.Atoi(conv.MustString(gjson.Get(taskInfo.TalentPlatformInfoSnap, "fans_count")))
 		err = db.Updates(map[string]interface{}{
 			"fan_number":     gorm.Expr("fan_number + ?", fansCount),
@@ -259,6 +353,122 @@ func SetSpecialTaskFinish(ctx context.Context, TaskIDs []string) error {
 	return nil
 }
 
+// SetSpecialTaskSettleNum 结案人数+1
+func SetSpecialTaskSettleNum(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	//4.根据达人来源改变状态、阶段、数目
+	var tasks []gorm_model.YoungeeTaskInfo
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ? ", TaskIDs).Find(&tasks).Error
+	if err != nil {
+		return err
+	}
+	for _, taskInfo := range tasks {
+		if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 {
+			//project招募数+1,预估成本+服务商价格
+			var projectinfo gorm_model.ProjectInfo
+			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectID).Find(&projectinfo).Error
+			if err != nil {
+				return err
+			}
+			projectinfo.SettleNum += 1
+			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ? ", taskInfo.ProjectID).Updates(projectinfo).Error
+			if err != nil {
+				return err
+			}
+			//服务商s_project已招募人数+1
+			var sprojectinfo gorm_model.YounggeeSProjectInfo
+			err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", taskInfo.SprojectId).Find(&sprojectinfo).Error
+			if err != nil {
+				return err
+			}
+			sprojectinfo.RecruitNum += 1
+			fmt.Println("......", projectinfo.RecruitNum)
+			err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", taskInfo.SprojectId).Updates(sprojectinfo).Error
+			if err != nil {
+				return err
+			}
+		}
+		if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 {
+			//project招募数+1
+			var projectinfo gorm_model.ProjectInfo
+			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectID).Find(&projectinfo).Error
+			if err != nil {
+				return err
+			}
+			projectinfo.RecruitNum += 1
+			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ? ", taskInfo.ProjectID).Updates(projectinfo).Error
+			if err != nil {
+				return err
+			}
+		}
+	}
+	return nil
+}
+
+// SetSpecialTaskSettleNum 结案人数+1
+func SetSpecialLocalTaskSettleNum(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	//4.根据达人来源改变状态、阶段、数目
+	var tasks []gorm_model.YoungeeLocalTaskInfo
+	err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? ", TaskIDs).Find(&tasks).Error
+	if err != nil {
+		return err
+	}
+	for _, taskInfo := range tasks {
+		if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 {
+			//project招募数+1,预估成本+服务商价格
+			var projectinfo gorm_model.YounggeeLocalLifeInfo
+			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Find(&projectinfo).Error
+			if err != nil {
+				return err
+			}
+			projectinfo.SettleNum += 1
+			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", taskInfo.LocalId).Updates(projectinfo).Error
+			if err != nil {
+				return err
+			}
+			//服务商s_project已招募人数+1
+			var sprojectinfo gorm_model.YounggeeSLocalLifeInfo
+			err = db.Model(gorm_model.YounggeeSLocalLifeInfo{}).Where(" s_local_life_id =?", taskInfo.SLocalLifeId).Find(&sprojectinfo).Error
+			if err != nil {
+				return err
+			}
+			sprojectinfo.RecruitNum += 1
+			fmt.Println("......", projectinfo.RecruitNum)
+			err = db.Model(gorm_model.YounggeeSLocalLifeInfo{}).Where(" s_local_life_id =?", taskInfo.SLocalLifeId).Updates(sprojectinfo).Error
+			if err != nil {
+				return err
+			}
+		}
+		if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 {
+			//project招募数+1
+			var projectinfo gorm_model.YounggeeLocalLifeInfo
+			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Find(&projectinfo).Error
+			if err != nil {
+				return err
+			}
+			projectinfo.RecruitNum += 1
+			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", taskInfo.LocalId).Updates(projectinfo).Error
+			if err != nil {
+				return err
+			}
+		}
+	}
+	return nil
+}
+
+// SetTaskFinish 专项任务结案
+func SetSpecialLocalTaskFinish(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	// 1. 修改任务表,更新任务阶段为已结案,结案方式为正常结束,数据状态为已通过,
+	err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2, WithdrawStatus: 2, CompleteDate: time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Task db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
 func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskInviteInfo, int64, error) {
 	db := GetReadDB(ctx)
 	// 查询task表信息
@@ -362,6 +572,27 @@ func SetTalentIncome(ctx context.Context, TaskIDs []string) error {
 	return nil
 }
 
+func SetLocalTalentIncome(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	var TaskInfoList []gorm_model.YoungeeLocalTaskInfo
+	fmt.Println("收入", TaskIDs)
+	err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Scan(&TaskInfoList).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Task db] Update SetTalentIncome error,err:%+v", err)
+		return err
+	}
+	for _, taskInfo := range TaskInfoList {
+		err := db.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", taskInfo.TalentId).Updates(map[string]interface{}{
+			"income":      gorm.Expr("income + ?", taskInfo.SettleAmount),
+			"canwithdraw": gorm.Expr("canwithdraw + ?", taskInfo.SettleAmount)}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Update SetTalentIncome error,err:%+v", err)
+			return err
+		}
+	}
+	return nil
+}
+
 // 获取任务ids
 func GetTaskIds(ctx context.Context, projectId string) ([]string, error) {
 	db := GetReadDB(ctx)

+ 57 - 0
handler/LocalPrelinklist.go

@@ -0,0 +1,57 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalPreLinkListHandler(ctx *gin.Context) {
+	handler := newLocalPreLinkListHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalPreLinkListHandler(ctx *gin.Context) *LocalPreLinkListHandler {
+	return &LocalPreLinkListHandler{
+		req:  http_model.NewLocalPreLinkListRequest(),
+		resp: http_model.NewLocalPreLinkListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalPreLinkListHandler struct {
+	req  *http_model.LocalPreLinkListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h LocalPreLinkListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h LocalPreLinkListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h LocalPreLinkListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h LocalPreLinkListHandler) run() {
+	data := http_model.LocalPreLinkListRequest{}
+	data = *h.req
+	res, err := service.LocalTask.GetLocalPreLinkList(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLocalPreLinkList] call GetLocalPreLinkList err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetLocalPreLinkList fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功查询链接待传列表"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h LocalPreLinkListHandler) checkParam() error {
+	return nil
+}

+ 61 - 0
handler/PasslocalTaskCoop.go

@@ -0,0 +1,61 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapPasslocalTaskCoopHandler(ctx *gin.Context) {
+	handler := newPasslocalTaskCoopHandler(ctx)
+	baseRun(handler)
+}
+
+type PasslocalTaskCoop struct {
+	ctx  *gin.Context
+	req  *http_model.PasslocalTaskCoopRequest
+	resp *http_model.CommonResponse
+}
+
+func (c PasslocalTaskCoop) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c PasslocalTaskCoop) getResponse() interface{} {
+	return c.resp
+}
+
+func (c PasslocalTaskCoop) getRequest() interface{} {
+	return c.req
+}
+
+func (c PasslocalTaskCoop) run() {
+	data := *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.LocalTask.PassCoop(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[PasslocalTaskCoop] call PasslocalTaskCoop err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("PasslocalTaskCoop fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功合作任务"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c PasslocalTaskCoop) checkParam() error {
+	return nil
+}
+
+func newPasslocalTaskCoopHandler(ctx *gin.Context) *PasslocalTaskCoop {
+	return &PasslocalTaskCoop{
+		ctx:  ctx,
+		req:  http_model.NewPasslocalTaskCoopRequest(),
+		resp: http_model.NewPasslocalTaskCoopResponse(),
+	}
+}

+ 3 - 2
handler/PassproTaskCoop.go

@@ -40,12 +40,13 @@ func (c PassproTaskCoop) run() {
 	res, err := service.Task.PassCoop(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[PassproTaskCoop] call PassproTaskCoop err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("PassproTaskCoop fail,req:%+v", c.req)
 		return
 	}
-	c.resp.Message = "成功合作公开种草任务"
+	c.resp.Message = "成功合作种草任务"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c PassproTaskCoop) checkParam() error {

+ 2 - 1
handler/Prelinklist.go

@@ -43,12 +43,13 @@ func (h PreLinkListHandler) run() {
 	res, err := service.Task.GetPreLinkList(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetPreLinkList] call GetPreLinkList err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetPreLinkList fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功查询链接待传列表"
 	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
 }
 
 func (h PreLinkListHandler) checkParam() error {

+ 61 - 0
handler/Refuseloacltaskcoop.go

@@ -0,0 +1,61 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapRefuselocalTaskCoopHandler(ctx *gin.Context) {
+	handler := newRefuselocalTaskCoopHandler(ctx)
+	baseRun(handler)
+}
+
+type RefuselocalTaskCoop struct {
+	ctx  *gin.Context
+	req  *http_model.RefuselocalTaskCoopRequest
+	resp *http_model.CommonResponse
+}
+
+func (c RefuselocalTaskCoop) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c RefuselocalTaskCoop) getResponse() interface{} {
+	return c.resp
+}
+
+func (c RefuselocalTaskCoop) getRequest() interface{} {
+	return c.req
+}
+
+func (c RefuselocalTaskCoop) run() {
+	data := *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.LocalTask.RefuseCoop(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[RefuselocalTaskCoop] call RefuselocalTaskCoop err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("RefuselocalTaskCoop fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功拒绝任务"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c RefuselocalTaskCoop) checkParam() error {
+	return nil
+}
+
+func newRefuselocalTaskCoopHandler(ctx *gin.Context) *RefuselocalTaskCoop {
+	return &RefuselocalTaskCoop{
+		ctx:  ctx,
+		req:  http_model.NewRefuselocalTaskCoopRequest(),
+		resp: http_model.NewRefuselocalTaskCoopResponse(),
+	}
+}

+ 2 - 1
handler/RefuseproTaskCoop.go

@@ -40,12 +40,13 @@ func (c RefuseproTaskCoop) run() {
 	res, err := service.Task.RefuseCoop(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[RefuseproTaskCoop] call RefuseproTaskCoop err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("RefuseproTaskCoop fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功拒绝种草任务"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c RefuseproTaskCoop) checkParam() error {

+ 2 - 1
handler/accept_data.go

@@ -46,12 +46,13 @@ func (h *AcceptDataHandler) run() {
 	res, err := service.Data.AcceptData(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功通过数据"
 	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
 }
 
 func (h *AcceptDataHandler) checkParam() error {

+ 2 - 2
handler/accept_link.go

@@ -46,13 +46,13 @@ func (h *AcceptLinkHandler) run() {
 	res, err := service.Link.AcceptLink(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功通过链接"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
 func (h *AcceptLinkHandler) checkParam() error {

+ 32 - 29
handler/accept_sketch.go

@@ -45,45 +45,48 @@ func (h *AcceptSketchHandler) run() {
 	res, err := service.Sketch.AcceptSketch(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功通过初稿"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
-/***
-func (h *AcceptSketchHandler) run() {
-	data := http_model.AcceptSketchRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
+/*
+**
+
+	func (h *AcceptSketchHandler) run() {
+		data := http_model.AcceptSketchRequest{}
+		data = *h.req
+		isRefuse := data.IsRefuse
+		if isRefuse== 0 {
+			fmt.Println("Create in")
+			res, err := service.Project.Create(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功添加修改意见"
+			h.resp.Data = res
+		} else {
+			res, err := service.Logistics.Update(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功修改物流信息"
+			h.resp.Data = res
 		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
 
 }
-***/
+**
+*/
 func (h *AcceptSketchHandler) checkParam() error {
 	return nil
 }

+ 32 - 29
handler/data_opinion.go

@@ -46,45 +46,48 @@ func (h *DataOpinionHandler) run() {
 	res, err := service.Data.DataOpinion(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "提交数据审核修改意见成功"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
-/***
-func (h *DataOpinionHandler) run() {
-	data := http_model.DataOpinionRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
+/*
+**
+
+	func (h *DataOpinionHandler) run() {
+		data := http_model.DataOpinionRequest{}
+		data = *h.req
+		isRefuse := data.IsRefuse
+		if isRefuse== 0 {
+			fmt.Println("Create in")
+			res, err := service.Project.Create(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功添加修改意见"
+			h.resp.Data = res
+		} else {
+			res, err := service.Logistics.Update(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功修改物流信息"
+			h.resp.Data = res
 		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
 
 }
-***/
+**
+*/
 func (h *DataOpinionHandler) checkParam() error {
 	return nil
 }

+ 2 - 1
handler/endtask.go

@@ -38,11 +38,12 @@ func (c EndTask) run() {
 	err := db.EndTask(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetSecTaskList] call EndTask err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetSecTaskList fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功终止任务状态"
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c EndTask) checkParam() error {

+ 2 - 1
handler/executedata.go

@@ -40,12 +40,13 @@ func (c ExecuteData) run() {
 	res, err := service.Project.ExecuteData(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ExecuteData] call ExecuteData err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("ExecuteData fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功看数据"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c ExecuteData) checkParam() error {

+ 60 - 0
handler/getlocaltasklist.go

@@ -0,0 +1,60 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapGetLocalTaskListHandler(ctx *gin.Context) {
+	handler := newGetLocalTaskListHandler(ctx)
+	baseRun(handler)
+}
+
+type GetLocalTaskList struct {
+	ctx  *gin.Context
+	req  *http_model.GetLocalTaskListRequest
+	resp *http_model.CommonResponse
+}
+
+func (c GetLocalTaskList) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c GetLocalTaskList) getResponse() interface{} {
+	return c.resp
+}
+
+func (c GetLocalTaskList) getRequest() interface{} {
+	return c.req
+}
+
+func (c GetLocalTaskList) run() {
+	data := http_model.GetLocalTaskListRequest{}
+	data = *c.req
+	res, err := service.LocalTask.GetLocalList(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSecTaskList] call GetSecTaskList err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetSecTaskList fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功查询本地生活报名达人"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c GetLocalTaskList) checkParam() error {
+	return nil
+}
+
+func newGetLocalTaskListHandler(ctx *gin.Context) *GetLocalTaskList {
+	return &GetLocalTaskList{
+		ctx:  ctx,
+		req:  http_model.NewGetLocalTaskListRequest(),
+		resp: http_model.NewGetLocalTaskListResponse(),
+	}
+}

+ 2 - 1
handler/gettasklist.go

@@ -38,12 +38,13 @@ func (c GetTaskList) run() {
 	res, err := service.Task.GetList(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetSecTaskList] call GetSecTaskList err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetSecTaskList fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功查询种草达人"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c GetTaskList) checkParam() error {

+ 32 - 29
handler/link_opinion.go

@@ -46,45 +46,48 @@ func (h *LinkOpinionHandler) run() {
 	res, err := service.Link.LinkOpinion(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[LinkOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "提交脚本修改意见成功"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
-/***
-func (h *LinkOpinionHandler) run() {
-	data := http_model.LinkOpinionRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[LinkOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[LinkOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
+/*
+**
+
+	func (h *LinkOpinionHandler) run() {
+		data := http_model.LinkOpinionRequest{}
+		data = *h.req
+		isRefuse := data.IsRefuse
+		if isRefuse== 0 {
+			fmt.Println("Create in")
+			res, err := service.Project.Create(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[LinkOpinionHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功添加修改意见"
+			h.resp.Data = res
+		} else {
+			res, err := service.Logistics.Update(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[LinkOpinionHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功修改物流信息"
+			h.resp.Data = res
 		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
 
 }
-***/
+**
+*/
 func (h *LinkOpinionHandler) checkParam() error {
 	return nil
 }

+ 60 - 0
handler/localaccept_data.go

@@ -0,0 +1,60 @@
+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 WrapLocalAcceptDataHandler(ctx *gin.Context) {
+	handler := newLocalAcceptDataHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalAcceptDataHandler(ctx *gin.Context) *LocalAcceptDataHandler {
+	return &LocalAcceptDataHandler{
+		req:  http_model.NewLocalAcceptDataRequest(),
+		resp: http_model.NewLocalAcceptDataResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalAcceptDataHandler struct {
+	req  *http_model.LocalAcceptDataRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalAcceptDataHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalAcceptDataHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalAcceptDataHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalAcceptDataHandler) run() {
+	data := http_model.LocalAcceptDataRequest{}
+	data = *h.req
+	res, err := service.Data.LocalAcceptData(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过数据"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalAcceptDataHandler) checkParam() error {
+	return nil
+}

+ 60 - 0
handler/localaccept_link.go

@@ -0,0 +1,60 @@
+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 WrapLocalAcceptLinkHandler(ctx *gin.Context) {
+	handler := newLocalAcceptLinkHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalAcceptLinkHandler(ctx *gin.Context) *LocalAcceptLinkHandler {
+	return &LocalAcceptLinkHandler{
+		req:  http_model.NewLocalAcceptLinkRequest(),
+		resp: http_model.NewLocalAcceptLinkResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalAcceptLinkHandler struct {
+	req  *http_model.LocalAcceptLinkRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalAcceptLinkHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalAcceptLinkHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalAcceptLinkHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalAcceptLinkHandler) run() {
+	data := http_model.LocalAcceptLinkRequest{}
+	data = *h.req
+	res, err := service.Link.LocalAcceptLink(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过链接"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalAcceptLinkHandler) checkParam() error {
+	return nil
+}

+ 59 - 0
handler/localaccept_sketch.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalAcceptSketchHandler(ctx *gin.Context) {
+	handler := newLocalAcceptSketchHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalAcceptSketchHandler(ctx *gin.Context) *LocalAcceptSketchHandler {
+	return &LocalAcceptSketchHandler{
+		req:  http_model.NewLocalAcceptSketchRequest(),
+		resp: http_model.NewLocalAcceptSketchResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalAcceptSketchHandler struct {
+	req  *http_model.LocalAcceptSketchRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalAcceptSketchHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalAcceptSketchHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalAcceptSketchHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalAcceptSketchHandler) run() {
+	data := http_model.LocalAcceptSketchRequest{}
+	data = *h.req
+	res, err := service.Sketch.LocalAcceptSketch(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过初稿"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalAcceptSketchHandler) checkParam() error {
+	return nil
+}

+ 60 - 0
handler/localdata_opinion.go

@@ -0,0 +1,60 @@
+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 WrapLocalDataOpinionHandler(ctx *gin.Context) {
+	handler := newLocalDataOpinionHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalDataOpinionHandler(ctx *gin.Context) *LocalDataOpinionHandler {
+	return &LocalDataOpinionHandler{
+		req:  http_model.NewLocalDataOpinionRequest(),
+		resp: http_model.NewLocalDataOpinionResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalDataOpinionHandler struct {
+	req  *http_model.LocalDataOpinionRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalDataOpinionHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalDataOpinionHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalDataOpinionHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalDataOpinionHandler) run() {
+	data := http_model.LocalDataOpinionRequest{}
+	data = *h.req
+	res, err := service.Data.LocalDataOpinion(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[LocalDataOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "提交数据审核修改意见成功"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalDataOpinionHandler) checkParam() error {
+	return nil
+}

+ 61 - 0
handler/locallifedata.go

@@ -0,0 +1,61 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocallifeDataHandler(ctx *gin.Context) {
+	handler := newLocallifeDataHandler(ctx)
+	baseRun(handler)
+}
+
+type LocallifeData struct {
+	ctx  *gin.Context
+	req  *http_model.LocallifeDataRequest
+	resp *http_model.CommonResponse
+}
+
+func (c LocallifeData) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c LocallifeData) getResponse() interface{} {
+	return c.resp
+}
+
+func (c LocallifeData) getRequest() interface{} {
+	return c.req
+}
+
+func (c LocallifeData) run() {
+	data := *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.LocalTask.Data(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[LocallifeData] call LocallifeData err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("LocallifeData fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功看数据"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c LocallifeData) checkParam() error {
+	return nil
+}
+
+func newLocallifeDataHandler(ctx *gin.Context) *LocallifeData {
+	return &LocallifeData{
+		ctx:  ctx,
+		req:  http_model.NewLocallifeDataRequest(),
+		resp: http_model.NewLocallifeDataResponse(),
+	}
+}

+ 60 - 0
handler/locallink_opinion.go

@@ -0,0 +1,60 @@
+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 WrapLocalLinkOpinionHandler(ctx *gin.Context) {
+	handler := newLocalLinkOpinionHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalLinkOpinionHandler(ctx *gin.Context) *LocalLinkOpinionHandler {
+	return &LocalLinkOpinionHandler{
+		req:  http_model.NewLocalLinkOpinionRequest(),
+		resp: http_model.NewLocalLinkOpinionResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalLinkOpinionHandler struct {
+	req  *http_model.LocalLinkOpinionRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalLinkOpinionHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalLinkOpinionHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalLinkOpinionHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalLinkOpinionHandler) run() {
+	data := http_model.LocalLinkOpinionRequest{}
+	data = *h.req
+	res, err := service.Link.LocalLinkOpinion(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[LocalLinkOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "提交脚本修改意见成功"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalLinkOpinionHandler) checkParam() error {
+	return nil
+}

+ 57 - 0
handler/localpredatalist.go

@@ -0,0 +1,57 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalPreDataListHandler(ctx *gin.Context) {
+	handler := newLocalPreDataListHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalPreDataListHandler(ctx *gin.Context) *LocalPreDataListHandler {
+	return &LocalPreDataListHandler{
+		req:  http_model.NewLocalPreDataListRequest(),
+		resp: http_model.NewLocalPreDataListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalPreDataListHandler struct {
+	req  *http_model.LocalPreDataListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h LocalPreDataListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h LocalPreDataListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h LocalPreDataListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h LocalPreDataListHandler) run() {
+	data := http_model.LocalPreDataListRequest{}
+	data = *h.req
+	res, err := service.LocalTask.GetLocalPreDataList(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLocalPreDataList] call GetLocalPreDataList err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetLocalPreDataList fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功查询数据待传列表"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h LocalPreDataListHandler) checkParam() error {
+	return nil
+}

+ 60 - 0
handler/localpresketchlist.go

@@ -0,0 +1,60 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalPreSketchListHandler(ctx *gin.Context) {
+	handler := newLocalPreSketchListHandler(ctx)
+	baseRun(handler)
+}
+
+type LocalPreSketchList struct {
+	ctx  *gin.Context
+	req  *http_model.LocalPreSketchListRequest
+	resp *http_model.CommonResponse
+}
+
+func (c LocalPreSketchList) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c LocalPreSketchList) getResponse() interface{} {
+	return c.resp
+}
+
+func (c LocalPreSketchList) getRequest() interface{} {
+	return c.req
+}
+
+func (c LocalPreSketchList) run() {
+	data := http_model.LocalPreSketchListRequest{}
+	data = *c.req
+	res, err := service.LocalTask.GetLocalPreSketchList(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLocalPreSketchList] call GetLocalPreSketchList err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetLocalPreSketchList fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功查询待传初稿"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c LocalPreSketchList) checkParam() error {
+	return nil
+}
+
+func newLocalPreSketchListHandler(ctx *gin.Context) *LocalPreSketchList {
+	return &LocalPreSketchList{
+		ctx:  ctx,
+		req:  http_model.NewLocalPreSketchListRequest(),
+		resp: http_model.NewLocalPreSketchListResponse(),
+	}
+}

+ 60 - 0
handler/localreject_data.go

@@ -0,0 +1,60 @@
+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 WrapLocalRejectDataHandler(ctx *gin.Context) {
+	handler := newLocalRejectDataHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalRejectDataHandler(ctx *gin.Context) *LocalRejectDataHandler {
+	return &LocalRejectDataHandler{
+		req:  http_model.NewLocalRejectDataRequest(),
+		resp: http_model.NewLocalRejectDataResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalRejectDataHandler struct {
+	req  *http_model.LocalRejectDataRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalRejectDataHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalRejectDataHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalRejectDataHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalRejectDataHandler) run() {
+	data := http_model.LocalRejectDataRequest{}
+	data = *h.req
+	res, err := service.Data.LocalRejectData(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功拒绝数据"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalRejectDataHandler) checkParam() error {
+	return nil
+}

+ 60 - 0
handler/localreject_link.go

@@ -0,0 +1,60 @@
+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 WrapLocalRejectLinkHandler(ctx *gin.Context) {
+	handler := newLocalRejectLinkHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalRejectLinkHandler(ctx *gin.Context) *LocalRejectLinkHandler {
+	return &LocalRejectLinkHandler{
+		req:  http_model.NewLocalRejectLinkRequest(),
+		resp: http_model.NewLocalRejectLinkResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalRejectLinkHandler struct {
+	req  *http_model.LocalRejectLinkRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalRejectLinkHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalRejectLinkHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalRejectLinkHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalRejectLinkHandler) run() {
+	data := http_model.LocalRejectLinkRequest{}
+	data = *h.req
+	res, err := service.Link.LocalRejectLink(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功拒绝链接"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalRejectLinkHandler) checkParam() error {
+	return nil
+}

+ 58 - 0
handler/localreject_sketch.go

@@ -0,0 +1,58 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalRejectSketchHandler(ctx *gin.Context) {
+	handler := newLocalRejectSketchHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalRejectSketchHandler(ctx *gin.Context) *LocalRejectSketchHandler {
+	return &LocalRejectSketchHandler{
+		req:  http_model.NewLocalRejectSketchRequest(),
+		resp: http_model.NewLocalRejectSketchResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalRejectSketchHandler struct {
+	req  *http_model.LocalRejectSketchRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalRejectSketchHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalRejectSketchHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalRejectSketchHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalRejectSketchHandler) run() {
+	data := http_model.LocalRejectSketchRequest{}
+	data = *h.req
+	res, err := service.Sketch.LocalRejectSketch(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功拒绝初稿"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+func (h *LocalRejectSketchHandler) checkParam() error {
+	return nil
+}

+ 59 - 0
handler/localsketch_opinion.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalSketchOpinionHandler(ctx *gin.Context) {
+	handler := newLocalSketchOpinionHandler(ctx)
+	baseRun(handler)
+}
+
+func newLocalSketchOpinionHandler(ctx *gin.Context) *LocalSketchOpinionHandler {
+	return &LocalSketchOpinionHandler{
+		req:  http_model.NewLocalSketchOpinionRequest(),
+		resp: http_model.NewLocalSketchOpinionResponse(),
+		ctx:  ctx,
+	}
+}
+
+type LocalSketchOpinionHandler struct {
+	req  *http_model.LocalSketchOpinionRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *LocalSketchOpinionHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *LocalSketchOpinionHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *LocalSketchOpinionHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *LocalSketchOpinionHandler) run() {
+	data := http_model.LocalSketchOpinionRequest{}
+	data = *h.req
+	res, err := service.Sketch.LocalSketchOption(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[LocalSketchOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "提交初稿修改意见成功"
+	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
+}
+
+func (h *LocalSketchOpinionHandler) checkParam() error {
+	return nil
+}

+ 60 - 0
handler/localtaskdatalist.go

@@ -0,0 +1,60 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalTaskDatalistHandler(ctx *gin.Context) {
+	handler := newLocalTaskDatalistHandler(ctx)
+	baseRun(handler)
+}
+
+type LocalTaskDatalist struct {
+	ctx  *gin.Context
+	req  *http_model.LocalTaskDatalistRequest
+	resp *http_model.CommonResponse
+}
+
+func (c LocalTaskDatalist) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c LocalTaskDatalist) getResponse() interface{} {
+	return c.resp
+}
+
+func (c LocalTaskDatalist) getRequest() interface{} {
+	return c.req
+}
+
+func (c LocalTaskDatalist) run() {
+	data := http_model.LocalTaskDatalistRequest{}
+	data = *c.req
+	res, err := service.LocalTask.GetLocalTaskDatalist(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLocalTaskDatalist] call GetLocalTaskDatalist err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetLocalTaskDatalist fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功查询数据待审列表"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c LocalTaskDatalist) checkParam() error {
+	return nil
+}
+
+func newLocalTaskDatalistHandler(ctx *gin.Context) *LocalTaskDatalist {
+	return &LocalTaskDatalist{
+		ctx:  ctx,
+		req:  http_model.NewLocalTaskDatalistRequest(),
+		resp: http_model.NewLocalTaskDatalistResponse(),
+	}
+}

+ 60 - 0
handler/localtasklinklist.go

@@ -0,0 +1,60 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalTaskLinklistHandler(ctx *gin.Context) {
+	handler := newLocalTaskLinklistHandler(ctx)
+	baseRun(handler)
+}
+
+type LocalTaskLinklist struct {
+	ctx  *gin.Context
+	req  *http_model.LocalTaskLinklistRequest
+	resp *http_model.CommonResponse
+}
+
+func (c LocalTaskLinklist) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c LocalTaskLinklist) getResponse() interface{} {
+	return c.resp
+}
+
+func (c LocalTaskLinklist) getRequest() interface{} {
+	return c.req
+}
+
+func (c LocalTaskLinklist) run() {
+	data := http_model.LocalTaskLinklistRequest{}
+	data = *c.req
+	res, err := service.LocalTask.GetLocalTaskLinklist(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLocalTaskLinklist] call GetLocalTaskLinklist err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetLocalTaskLinklist fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功查询链接待审列表"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c LocalTaskLinklist) checkParam() error {
+	return nil
+}
+
+func newLocalTaskLinklistHandler(ctx *gin.Context) *LocalTaskLinklist {
+	return &LocalTaskLinklist{
+		ctx:  ctx,
+		req:  http_model.NewLocalTaskLinklistRequest(),
+		resp: http_model.NewLocalTaskLinklistResponse(),
+	}
+}

+ 60 - 0
handler/localtasksketchlist.go

@@ -0,0 +1,60 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapLocalTasksketchlistHandler(ctx *gin.Context) {
+	handler := newLocalTasksketchlistHandler(ctx)
+	baseRun(handler)
+}
+
+type LocalTasksketchlist struct {
+	ctx  *gin.Context
+	req  *http_model.LocalTasksketchlistRequest
+	resp *http_model.CommonResponse
+}
+
+func (c LocalTasksketchlist) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c LocalTasksketchlist) getResponse() interface{} {
+	return c.resp
+}
+
+func (c LocalTasksketchlist) getRequest() interface{} {
+	return c.req
+}
+
+func (c LocalTasksketchlist) run() {
+	data := http_model.LocalTasksketchlistRequest{}
+	data = *c.req
+	res, err := service.LocalTask.GetLocalTasksketchlist(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetLocalTasksketchList] call GetLocalTasksketchList err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
+		logrus.Info("GetLocalTasksketchList fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功查询初稿列表"
+	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
+}
+
+func (c LocalTasksketchlist) checkParam() error {
+	return nil
+}
+
+func newLocalTasksketchlistHandler(ctx *gin.Context) *LocalTasksketchlist {
+	return &LocalTasksketchlist{
+		ctx:  ctx,
+		req:  http_model.NewLocalTasksketchlistRequest(),
+		resp: http_model.NewLocalTasksketchlistResponse(),
+	}
+}

+ 2 - 1
handler/predatalist.go

@@ -43,12 +43,13 @@ func (h PreDataListHandler) run() {
 	res, err := service.Task.GetPreDataList(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetPreDataList] call GetPreDataList err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetPreDataList fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功查询数据待传列表"
 	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
 }
 
 func (h PreDataListHandler) checkParam() error {

+ 2 - 1
handler/presketchlist.go

@@ -38,12 +38,13 @@ func (c PreSketchList) run() {
 	res, err := service.Task.GetPreSketchList(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetPreSketchList] call GetPreSketchList err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetPreSketchList fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功查询待传初稿"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c PreSketchList) checkParam() error {

+ 2 - 1
handler/projectdata.go

@@ -40,12 +40,13 @@ func (c ProjectData) run() {
 	res, err := service.Project.Data(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ProjectData] call ProjectData err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("ProjectData fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功看数据"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c ProjectData) checkParam() error {

+ 2 - 2
handler/reject_data.go

@@ -46,13 +46,13 @@ func (h *RejectDataHandler) run() {
 	res, err := service.Data.RejectData(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功拒绝数据"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
 func (h *RejectDataHandler) checkParam() error {

+ 2 - 2
handler/reject_link.go

@@ -46,13 +46,13 @@ func (h *RejectLinkHandler) run() {
 	res, err := service.Link.RejectLink(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功拒绝链接"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
 func (h *RejectLinkHandler) checkParam() error {

+ 2 - 2
handler/reject_sketch.go

@@ -45,13 +45,13 @@ func (h *RejectSketchHandler) run() {
 	res, err := service.Sketch.RejectSketch(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "成功拒绝初稿"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 func (h *RejectSketchHandler) checkParam() error {
 	return nil

+ 2 - 1
handler/sketch_info.go

@@ -48,11 +48,12 @@ func (h *GetSketchInfoHandler) run() {
 	if err != nil {
 		// 数据库查询失败,返回5001
 		logrus.Errorf("[GetSketchInfoHandler] call GetByID err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("GetProduct fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
 }
 func (h *GetSketchInfoHandler) checkParam() error {
 	return nil

+ 32 - 29
handler/sketch_opinion.go

@@ -45,45 +45,48 @@ func (h *SketchOpinionHandler) run() {
 	res, err := service.Sketch.SketchOption(h.ctx, data)
 	if err != nil {
 		logrus.Errorf("[SketchOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("CreateProject fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Message = "提交初稿修改意见成功"
 	h.resp.Data = res
-	h.resp.Data = data
+	h.resp.Status = consts.ErrorSuccess
 }
 
-/***
-func (h *SketchOpinionHandler) run() {
-	data := http_model.SketchOpinionRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[SketchOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[SketchOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
+/*
+**
+
+	func (h *SketchOpinionHandler) run() {
+		data := http_model.SketchOpinionRequest{}
+		data = *h.req
+		isRefuse := data.IsRefuse
+		if isRefuse== 0 {
+			fmt.Println("Create in")
+			res, err := service.Project.Create(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[SketchOpinionHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功添加修改意见"
+			h.resp.Data = res
+		} else {
+			res, err := service.Logistics.Update(h.ctx, data)
+			if err != nil {
+				logrus.Errorf("[SketchOpinionHandler] call Create err:%+v\n", err)
+				util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+				log.Info("CreateProject fail,req:%+v", h.req)
+				return
+			}
+			h.resp.Message = "成功修改物流信息"
+			h.resp.Data = res
 		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
 
 }
-***/
+**
+*/
 func (h *SketchOpinionHandler) checkParam() error {
 	return nil
 }

+ 2 - 1
handler/sketch_photo.go

@@ -48,11 +48,12 @@ func (h *FindSketchPhotoHandler) run() {
 	if err != nil {
 		// 数据库查询失败,返回5001
 		logrus.Errorf("[FindSketchPhotoHandler] call FindByID err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(h.resp, consts.ErrorParamCheck, "")
 		log.Info("FindProduct fail,req:%+v", h.req)
 		return
 	}
 	h.resp.Data = res
+	h.resp.Status = consts.ErrorSuccess
 }
 func (h *FindSketchPhotoHandler) checkParam() error {
 	return nil

+ 2 - 1
handler/taskdatalist.go

@@ -38,12 +38,13 @@ func (c TaskDatalist) run() {
 	res, err := service.Task.GetTaskDatalist(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetTaskDatalist] call GetTaskDatalist err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetTaskDatalist fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功查询数据待审列表"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c TaskDatalist) checkParam() error {

+ 2 - 1
handler/tasklinklist.go

@@ -38,12 +38,13 @@ func (c TaskLinklist) run() {
 	res, err := service.Task.GetTaskLinklist(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetTaskLinklist] call GetTaskLinklist err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetTaskLinklist fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功查询链接待审列表"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c TaskLinklist) checkParam() error {

+ 2 - 1
handler/tasksketchlist.go

@@ -38,12 +38,13 @@ func (c Tasksketchlist) run() {
 	res, err := service.Task.GetTasksketchlist(c.ctx, data)
 	if err != nil {
 		logrus.Errorf("[GetTasksketchList] call GetTasksketchList err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		util.HandlerPackErrorResp(c.resp, consts.ErrorParamCheck, "")
 		logrus.Info("GetTasksketchList fail,req:%+v", c.req)
 		return
 	}
 	c.resp.Message = "成功查询初稿待审列表"
 	c.resp.Data = res
+	c.resp.Status = consts.ErrorSuccess
 }
 
 func (c Tasksketchlist) checkParam() error {

+ 15 - 0
model/gorm_model/enterprise_talent_cooperate.go

@@ -0,0 +1,15 @@
+package gorm_model
+
+type EnterpriseTalentCooperate struct {
+	CooperateId   int    `gorm:"column:cooperate_id;type:int(11);primary_key;AUTO_INCREMENT;comment:主键ID" json:"cooperate_id"`
+	EnterpriseId  string `gorm:"column:enterprise_id;type:varchar(255);comment:商家ID" json:"enterprise_id"`
+	TalentId      string `gorm:"column:talent_id;type:varchar(255);comment:达人ID" json:"talent_id"`
+	SupplierId    int    `gorm:"column:supplier_id;type:int(11);comment:服务商ID" json:"supplier_id"`
+	TalentOrigin  int    `gorm:"column:talent_origin;type:int(11);comment:达人来源,1公海,2服务商" json:"talent_origin"`
+	CooperateType int    `gorm:"column:cooperate_type;type:int(11);comment:合作关系类型,1带货达人,2种草达人,3本地生活达人" json:"cooperate_type"`
+	CooperateNum  int    `gorm:"column:cooperate_num;type:int(11);comment:累计合作次数" json:"cooperate_num"`
+}
+
+func (m *EnterpriseTalentCooperate) TableName() string {
+	return "enterprise_talent_cooperate"
+}

+ 17 - 14
model/gorm_model/info_auto_task.go

@@ -1,20 +1,23 @@
 package gorm_model
 
+// Code generated by sql2gorm. DO NOT EDIT.
+
 type InfoAutoTask struct {
-	AutoTaskID       int    `gorm:"column:auto_task_id;primary_key;AUTO_INCREMENT"` // 自动处理规则id
-	EnterpriseId     string `gorm:"column:enterprise_id"`                           // 企业ID
-	SignInOffline    int    `gorm:"column:sign_in_offline"`                         // 线下探店自动签收时间
-	SignInVirtual    int    `gorm:"column:sign_in_virtual"`                         // 虚拟产品测评自动签收时间
-	ReviewInMv       int    `gorm:"column:review_in_mv"`                            // 视频形式的审稿处理
-	ReviewUnlimited  int    `gorm:"column:review_unlimited"`                        // 不限形式的审稿处理
-	Postreview       int    `gorm:"column:postreview"`                              // 发布审核自动处理
-	CaseClose        int    `gorm:"column:case_close"`                              // 结案自动处理
-	Invalid          int    `gorm:"column:invalid"`                                 // 失效自动处理
-	DraftDefault     int    `gorm:"column:draft_default"`                           // 初稿违约自动处理
-	DraftDefaultInMv int    `gorm:"column:draft_default_in_mv"`                     // 视频初稿违约自动处理
-	ScriptDefault    int    `gorm:"column:script_default"`                          // 脚本违约自动处理
-	LinkBreach       int    `gorm:"column:link_breach"`                             // 链接违约自动处理
-	CaseCloseDefault int    `gorm:"column:case_close_default"`                      // 结案违约自动处理
+	AutoTaskID        int `gorm:"column:auto_task_id;primary_key;AUTO_INCREMENT"` // 自动处理规则id
+	SignInOffline     int `gorm:"column:sign_in_offline"`                         // 线下探店自动签收时间
+	SignInVirtual     int `gorm:"column:sign_in_virtual"`                         // 虚拟产品测评自动签收时间
+	ReviewInMv        int `gorm:"column:review_in_mv"`                            // 视频形式的审稿处理
+	ReviewUnlimited   int `gorm:"column:review_unlimited"`                        // 不限形式的审稿处理
+	Postreview        int `gorm:"column:postreview"`                              // 发布审核自动处理
+	CaseClose         int `gorm:"column:case_close"`                              // 结案自动处理
+	Invalid           int `gorm:"column:invalid"`                                 // 失效自动处理
+	DraftDefaultInPic int `gorm:"column:draft_default_in_pic"`                    // 图片初稿违约自动处理
+	DraftDefaultInMv  int `gorm:"column:draft_default_in_mv"`                     // 视频初稿违约自动处理
+	ScriptDefault     int `gorm:"column:script_default"`                          // 脚本违约自动处理
+	LinkBreach        int `gorm:"column:link_breach"`                             // 链接违约自动处理
+	CaseCloseDefault  int `gorm:"column:case_close_default"`                      // 数据违约时间
+	DraftDefault      int `gorm:"column:draft_default;NOT NULL"`
+	EnterpriseId     string `gorm:"column:enterprise_id"`//   企业ID
 }
 
 func (m *InfoAutoTask) TableName() string {

+ 2 - 0
model/gorm_model/link.go

@@ -20,6 +20,8 @@ type YounggeeLinkInfo struct {
 	AutoAgreeAt     time.Time `gorm:"column:auto_agree_at"`                      // 发布审核自动处理时间
 	AutoDataBreakAt time.Time `gorm:"column:auto_data_break_at"`                 // 结案违约自动处理时间
 	AutoLinkBreakAt time.Time `gorm:"column:auto_link_break_at"`                 // 链接违约自动处理时间
+	BOperator       string    `gorm:"column:b_operator"`                         //商家确定操作人ID
+	BOperatorType   int       `gorm:"column:b_operator_type"`                    //商家操作人类型,1商家用户,2商家子账号,3管理后台
 }
 
 func (m *YounggeeLinkInfo) TableName() string {

+ 54 - 0
model/gorm_model/locallife_info.go

@@ -0,0 +1,54 @@
+package gorm_model
+
+import (
+	"time"
+)
+
+type YounggeeLocalLifeInfo struct {
+	Id                  int        `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT;comment:本地生活表主键ID" json:"id"`
+	LocalId             string     `gorm:"column:local_id;type:varchar(10);comment:项目id;NOT NULL" json:"local_id"`
+	LocalType           int        `gorm:"column:local_type;type:tinyint(4);comment:项目类型,1代表公开项目,2代表定向项目" json:"local_type"`
+	LocalPlatform       int        `gorm:"column:local_platform;type:tinyint(4);comment:项目平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎" json:"local_platform"`
+	ServiceChargeRate   float64    `gorm:"column:service_charge_rate;type:decimal(10,2);default:0.00;comment:公开服务费率;NOT NULL" json:"service_charge_rate"`
+	StoreId             int        `gorm:"column:store_id;type:int(11);comment:关联门店id" json:"store_id"`
+	StoreRelatedAt      *time.Time `gorm:"column:store_related_at;type:timestamp;comment:关联门店时间" json:"store_related_at"`
+	TeamBuyingId        int        `gorm:"column:team_buying_id;type:int(11);comment:关联团购id" json:"team_buying_id"`
+	TeamBuyingRelatedAt *time.Time `gorm:"column:team_buying_related_at;type:timestamp;comment:关联团购时间" json:"team_buying_related_at"`
+	PromoteBody         int        `gorm:"column:promote_body;type:int(11);comment:推广主体(1门店 2团购)" json:"promote_body"`
+	Donate              int        `gorm:"column:donate;type:int(11);comment:赠送达人套餐(1有赠送 2无赠送)" json:"donate"`
+	LocalName           string     `gorm:"column:local_name;type:varchar(50);comment:任务标题" json:"local_name"`
+	TalentType          string     `gorm:"column:talent_type;type:text;comment:达人类型(,分隔)" json:"talent_type"`
+	RecruitDdl          *time.Time `gorm:"column:recruit_ddl;type:timestamp;comment:招募截止时间" json:"recruit_ddl"`
+	TaskForm            int        `gorm:"column:task_form;type:tinyint(4);comment:任务形式,1-2分别代表线下探店,素材分发" json:"task_form"`
+	ContentType         int        `gorm:"column:content_type;type:tinyint(4);comment:内容形式,1代表图文,2代表视频" json:"content_type"`
+	TaskDetail          string     `gorm:"column:task_detail;type:varchar(1000);comment:任务详情" json:"task_detail"`
+	TaskStatus          int        `gorm:"column:task_status;type:tinyint(4);comment:项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案" json:"task_status"`
+	EnterpriseId        string     `gorm:"column:enterprise_id;type:varchar(10);comment:所属企业id" json:"enterprise_id"`
+	SubAccountId        int        `gorm:"column:sub_account_id;type:int(11);default:0;comment:子账号id;NOT NULL" json:"sub_account_id"`
+	OperatorType        int        `gorm:"column:operator_type;type:int(11);comment:创建者类型,1商家主账号,2商家子账号" json:"operator_type"`
+	ApplyNum            int64      `gorm:"column:apply_num;type:int(11);default:0;comment:报名人数;NOT NULL" json:"apply_num"`
+	RecruitNum          int64      `gorm:"column:recruit_num;type:int(11);default:0;comment:已招募人数;NOT NULL" json:"recruit_num"`
+	SettleNum           int64      `gorm:"column:settle_num;type:int(11);default:0;comment:结案人数;NOT NULL" json:"settle_num"`
+	CreatedAt           *time.Time `gorm:"column:created_at;type:timestamp;comment:创建时间" json:"created_at"`
+	UpdatedAt           *time.Time `gorm:"column:updated_at;type:timestamp;comment:修改时间" json:"updated_at"`
+	AutoFailAt          *time.Time `gorm:"column:auto_fail_at;type:timestamp;comment:失效自动处理时间" json:"auto_fail_at"`
+	AutoTaskId          int        `gorm:"column:auto_task_id;type:int(11);default:0;comment:定时任务id;NOT NULL" json:"auto_task_id"`
+	AutoDefaultId       int        `gorm:"column:auto_default_id;type:int(11);default:0;comment:违约状态id;NOT NULL" json:"auto_default_id"`
+	PaymentAmount       float64    `gorm:"column:payment_amount;type:float;comment:支付金额" json:"payment_amount"`
+	PayAt               *time.Time `gorm:"column:pay_at;type:timestamp;comment:支付时间" json:"pay_at"`
+	SubmitAt            *time.Time `gorm:"column:submit_at;type:timestamp;comment:提交审核时间" json:"submit_at"`
+	PassAt              *time.Time `gorm:"column:pass_at;type:timestamp;comment:审核通过时间" json:"pass_at"`
+	FinishAt            *time.Time `gorm:"column:finish_at;type:timestamp;comment:结案时间" json:"finish_at"`
+	EstimatedCost       float64    `gorm:"column:estimated_cost;type:decimal(10,2);comment:预估成本" json:"estimated_cost"`
+	SettlementAmount    float64    `gorm:"column:settlement_amount;type:decimal(10,2);comment:结算金额" json:"settlement_amount"`
+	TotalRecruitNum     int        `gorm:"column:total_recruit_num;type:int(11);comment:此任务各策略招募人数总和" json:"total_recruit_num"`
+	Tools               string     `gorm:"column:tools;type:varchar(255);comment:工具选择,1邀约招募 2样品物流 3审稿工具 4作品审查 5数据巡检 6结算账单(,分隔);NOT NULL" json:"tools"`
+	NeedReview          int        `gorm:"column:need_review;type:int(11);default:0;comment:待审稿;NOT NULL" json:"need_review"`
+	NeedQuality         int        `gorm:"column:need_quality;type:int(11);default:0;comment:待质检;NOT NULL" json:"need_quality"`
+	NeedCalculate       int        `gorm:"column:need_calculate;type:int(11);default:0;comment:待结算;NOT NULL" json:"need_calculate"`
+	InvoiceStatus       int        `gorm:"column:invoice_status;type:int(11);default:0;comment:开票状态(1开票中 2已开票);NOT NULL" json:"invoice_status"`
+}
+
+func (m *YounggeeLocalLifeInfo) TableName() string {
+	return "younggee_local_life_info"
+}

+ 86 - 0
model/gorm_model/locallife_task_info.go

@@ -0,0 +1,86 @@
+package gorm_model
+
+import (
+	"time"
+)
+
+// 种草子任务
+type YoungeeLocalTaskInfo struct {
+	TaskId                 string    `gorm:"column:task_id;type:char(15);primary_key;comment:任务id" json:"task_id"`
+	LocalId                string    `gorm:"column:local_id;type:char(10);comment:项目id;NOT NULL" json:"local_id"`
+	TalentId               string    `gorm:"column:talent_id;type:char(25);comment:达人id;NOT NULL" json:"talent_id"`
+	AccountId              int       `gorm:"column:account_id;type:int(11);comment:账号id;NOT NULL" json:"account_id"`
+	StrategyId             int       `gorm:"column:strategy_id;type:int(11);comment:报名选择的招募策略id" json:"strategy_id"`
+	TalentPlatformInfoSnap string    `gorm:"column:talent_platform_info_snap;type:json;comment:达人平台信息快照;NOT NULL" json:"talent_platform_info_snap"`
+	TalentPersonalInfoSnap string    `gorm:"column:talent_personal_info_snap;type:json;comment:达人个人信息快照;NOT NULL" json:"talent_personal_info_snap"`
+	TalentPostAddrSnap     string    `gorm:"column:talent_post_addr_snap;type:json;comment:收货地址快照;NOT NULL" json:"talent_post_addr_snap"`
+	TaskReward             float64   `gorm:"column:task_reward;type:decimal(10,2);comment:达人报酬(3.0未用);NOT NULL" json:"task_reward"`
+	SettleAmount           float64   `gorm:"column:settle_amount;type:decimal(10,2);comment:达人实际所得(自动填充)(扣除违约扣款);NOT NULL" json:"settle_amount"`
+	AllPayment             float64   `gorm:"column:all_payment;type:decimal(10,2);comment:企业支付(3.0未用);NOT NULL" json:"all_payment"`
+	RealPayment            float64   `gorm:"column:real_payment;type:decimal(10,2);comment:企业实际支付(加上服务商的服务费)(扣除违约扣款);NOT NULL" json:"real_payment"`
+	ServiceRate            int       `gorm:"column:service_rate;type:int(11);comment:服务费率,千分之" json:"service_rate"`
+	ServiceCharge          float64   `gorm:"column:service_charge;type:decimal(10,2);comment:服务费" json:"service_charge"`
+	RealServiceCharge      float64   `gorm:"column:real_service_charge;type:decimal(10,2);comment:服务商实际所得服务费(扣除违约)" json:"real_service_charge"`
+	FeeForm                int       `gorm:"column:fee_form;type:tinyint(4);comment:稿费形式,1,2,3分别代表产品置换、一口价、自报价" json:"fee_form"`
+	ErrBreakRate           int       `gorm:"column:err_break_rate;type:int(11);default:0;comment:未上传类型违约扣款比例,百分之;NOT NULL" json:"err_break_rate"`
+	ScriptBreakRate        int       `gorm:"column:script_break_rate;type:int(11);default:0;comment:脚本上传超时违约扣款比例,百分之;NOT NULL" json:"script_break_rate"`
+	SketchBreakRate        int       `gorm:"column:sketch_break_rate;type:int(11);default:0;comment:初稿上传超时违约扣款比例,百分之;NOT NULL" json:"sketch_break_rate"`
+	LinkBreakRate          int       `gorm:"column:link_break_rate;type:int(11);default:0;comment:链接上传超时违约扣款比例,百分之;NOT NULL" json:"link_break_rate"`
+	DataBreakRate          int       `gorm:"column:data_break_rate;type:int(11);default:0;comment:数据上传超时违约扣款比例,百分之;NOT NULL" json:"data_break_rate"`
+	TaskStage              int       `gorm:"column:task_stage;type:tinyint(1);comment:任务阶段,1:已报名, 2:申请成功, 3:申请失败, 4:待预约探店, 5:预约确认中 6:  , 7:待传脚本, 8:脚本待审, 9:待传初稿, 10:初稿待审, 11:待传链接, 12:链接待审, 13:待传数据, 14:数据待审, 15:已结案, 16:解约, 17:终止合作(过渡态);NOT NULL" json:"task_stage"`
+	TaskStatus             int       `gorm:"column:task_status;type:tinyint(4);default:1;comment:商家任务状态 1待选 2已选 3落选;NOT NULL" json:"task_status"`
+	LogisticsStatus        int       `gorm:"column:logistics_status;type:tinyint(1);default:1;comment:发货状态 1 待发货 2已发货 3 已签收" json:"logistics_status"`
+	BookStatus             uint      `gorm:"column:book_status;type:tinyint(4) unsigned;default:1;comment:预约探店状态 1-5分别代表待预约、已预约、待修改、已修改、已通过" json:"book_status"`
+	SketchStatus           uint      `gorm:"column:sketch_status;type:tinyint(4) unsigned;default:1;comment:初稿上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过" json:"sketch_status"`
+	LinkStatus             uint      `gorm:"column:link_status;type:tinyint(4) unsigned;default:1;comment:链接上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过" json:"link_status"`
+	DataStatus             uint      `gorm:"column:data_status;type:tinyint(4) unsigned;default:1;comment:数据上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过" json:"data_status"`
+	CompleteStatus         int       `gorm:"column:complete_status;type:tinyint(1);default:1;comment:结束方式 1未结束 2正常结束 3反选失败 4被解约" json:"complete_status"`
+	UpdateAt               time.Time `gorm:"column:update_at;type:datetime;comment:更新时间" json:"update_at"`
+	CreateDate             time.Time `gorm:"column:create_date;type:datetime;comment:创建时间,即报名时间;NOT NULL" json:"create_date"`
+	SelectDate             time.Time `gorm:"column:select_date;type:datetime;comment:反选时间,即任务开始执行时间" json:"select_date"`
+	DeliveryDate           time.Time `gorm:"column:delivery_date;type:datetime;comment:发货时间" json:"delivery_date"`
+	CompleteDate           time.Time `gorm:"column:complete_date;type:datetime;comment:结束时间" json:"complete_date"`
+	WithdrawDate           time.Time `gorm:"column:withdraw_date;type:datetime;comment:提现时间" json:"withdraw_date"`
+	CurDefaultType         int       `gorm:"column:cur_default_type;type:tinyint(4);comment:当前违约类型 0未违约 1脚本超时违约 2脚本未上传违约 3初稿超时违约 4初稿未上传违约 5链接超时违约 6链接未上传违约 7数据超时违约 8数据未上传违约 9解约待处理 10解约" json:"cur_default_type"`
+	WithdrawStatus         int       `gorm:"column:withdraw_status;type:tinyint(4);default:1;comment:提现状态,1-4分别代表不可提现、可提现、提现中、已提现" json:"withdraw_status"`
+	LeadTeamId             string    `gorm:"column:lead_team_id;type:char(10);comment:作为团长的young之团id,对应younggee_talent_team中的team_id字段" json:"lead_team_id"`
+	TeamId                 string    `gorm:"column:team_id;type:char(10);comment:作为团员的young之团id,对应younggee_talent_team中的team_id字段" json:"team_id"`
+	SettleStatus           int       `gorm:"column:settle_status;type:tinyint(4);default:1;comment:结算状态,1、2分别表示待结算、已结算" json:"settle_status"`
+	TeamIncome             float64   `gorm:"column:team_income;type:decimal(10,2);comment:young之团团长现金收益" json:"team_income"`
+	TeamPoint              int       `gorm:"column:team_point;type:int(11);comment:young之团团长积分收益" json:"team_point"`
+	CurBreakAt             time.Time `gorm:"column:cur_break_at;type:datetime;comment:当前阶段截止时间" json:"cur_break_at"`
+	SupplierId             int       `gorm:"column:supplier_id;type:int(11);default:0;comment:服务商ID" json:"supplier_id"`
+	SupplierStatus         int       `gorm:"column:supplier_status;type:int(11);default:0;comment:服务商任务状态 0表示达人来源非服务商 1待选 2已选 3落选" json:"supplier_status"`
+	DraftFee               float64   `gorm:"column:draft_fee;type:decimal(10,2);default:0.00;comment:达人稿费,达人所见的稿费金额" json:"draft_fee"`
+	SignedTime             time.Time `gorm:"column:signed_time;type:datetime;comment:签收时间" json:"signed_time"`
+	FansNum                int       `gorm:"column:fans_num;type:int(11);comment:粉丝数" json:"fans_num"`
+	VoteAvg                int       `gorm:"column:vote_avg;type:int(11);comment:平均点赞数" json:"vote_avg"`
+	CommitAvg              int       `gorm:"column:commit_avg;type:int(11);comment:平均评论数" json:"commit_avg"`
+	BOperator              string    `gorm:"column:b_operator;type:varchar(255);comment:商家确定达人操作人ID" json:"b_operator"`
+	BOperatorType          int       `gorm:"column:b_operator_type;type:int(11);default:0;comment:商家操作人类型,1商家用户,2商家子账号,3管理后台" json:"b_operator_type"`
+	SOperator              int       `gorm:"column:s_operator;type:int(11);default:0;comment:服务商提报达人操作人ID" json:"s_operator"`
+	SOperatorType          int       `gorm:"column:s_operator_type;type:int(11);default:0;comment:服务商操作人类型,1服务商主账号,2服务商子账号,3管理后台" json:"s_operator_type"`
+	OpenId                 string    `gorm:"column:open_id;type:varchar(255);comment:达人报名的快手唯一标识" json:"open_id"`
+	SLocalLifeId           int       `gorm:"column:s_local_life_id;type:int(11);comment:服务商种草任务ID" json:"s_local_life_id"`
+	SupportFee             float64   `gorm:"column:support_fee;type:decimal(10,2);comment:提报价格(达人自报价经过计算后,)" json:"support_fee"`
+	SketchMissingTime      time.Time `gorm:"column:sketch_missing_time;type:datetime;comment:未传初稿违约时间" json:"sketch_missing_time"`
+	SketchMissingStatus    int       `gorm:"column:sketch_missing_status;type:int(11);default:0;comment:未传初稿违约状态,0无违约,1有违约" json:"sketch_missing_status"`
+	LinkMissingTime        time.Time `gorm:"column:link_missing_time;type:datetime;comment:未发作品违约时间" json:"link_missing_time"`
+	LinkMissingStatus      int       `gorm:"column:link_missing_status;type:int(11);default:0;comment:未发作品违约状态,0无违约,1有违约" json:"link_missing_status"`
+	DataMissingTime        time.Time `gorm:"column:data_missing_time;type:datetime;comment:未传数据违约时间" json:"data_missing_time"`
+	DataMissingStatus      int       `gorm:"column:data_missing_status;type:int(11);default:0;comment:未传数据违约状态,0无违约,1有违约" json:"data_missing_status"`
+	TerminateOperatorType  int       `gorm:"column:terminate_operator_type;type:int(11);comment:终止合作操作人类型,1商家用户,2商家子账号,3管理后台" json:"terminate_operator_type"`
+	TerminateOperator      string    `gorm:"column:terminate_operator;type:varchar(255);comment:终止合作操作人ID" json:"terminate_operator"`
+	TerminateReason        string    `gorm:"column:terminate_reason;type:varchar(255);comment:终止理由" json:"terminate_reason"`
+	TerminateTime          time.Time `gorm:"column:terminate_time;type:datetime;comment:终止合作时间" json:"terminate_time"`
+	CancelOperatorType     int       `gorm:"column:cancel_operator_type;type:int(11);comment:解约操作人类型,1商家用户,2商家子账号,3管理后台" json:"cancel_operator_type"`
+	CancelOperator         string    `gorm:"column:cancel_operator;type:varchar(255);comment:解约操作人ID" json:"cancel_operator"`
+	CancelReason           string    `gorm:"column:cancel_reason;type:varchar(255);comment:解约原因" json:"cancel_reason"`
+	CancelTime             time.Time `gorm:"column:cancel_time;type:datetime;comment:解约时间" json:"cancel_time"`
+	PlatformId             int       `gorm:"column:platform_id;type:int(11);comment:平台" json:"platform_id"`
+	City                   string    `gorm:"column:city;type:varchar(255);comment:城市" json:"city"`
+}
+
+func (m *YoungeeLocalTaskInfo) TableName() string {
+	return "youngee_local_task_info"
+}

+ 30 - 0
model/gorm_model/platform_kuaishou_user_info.go

@@ -0,0 +1,30 @@
+package gorm_model
+
+import (
+	"time"
+)
+
+type PlatformKuaishouUserInfo struct {
+	Id           int       `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT;comment:主键,自增长" json:"id"`
+	OpenId       string    `gorm:"column:open_id;type:varchar(255);comment:快手用户唯一表示" json:"open_id"`
+	PlatformId   int       `gorm:"column:platform_id;type:int(11);comment:平台id,与third_platform_info中的id相同" json:"platform_id"`
+	TalentId     string    `gorm:"column:talent_id;type:varchar(255);comment:达人id" json:"talent_id"`
+	Code         string    `gorm:"column:code;type:varchar(255);comment:扫码后获得的临时票据" json:"code"`
+	AccessToken  string    `gorm:"column:access_token;type:varchar(1000);comment:调用API需要的参数" json:"access_token"`
+	RefreshToken string    `gorm:"column:refresh_token;type:varchar(1000);comment:用于刷新access_token" json:"refresh_token"`
+	NickName     string    `gorm:"column:nick_name;type:varchar(255);comment:快手昵称" json:"nick_name"`
+	HeadUri      string    `gorm:"column:head_uri;type:varchar(255);comment:用户头像" json:"head_uri"`
+	Fan          string    `gorm:"column:fan;type:varchar(255);comment:用户粉丝数" json:"fan"`
+	Expired      int       `gorm:"column:expired;type:tinyint(4);comment:access_token是否可用" json:"expired"`
+	SaleNum30Day int       `gorm:"column:sale_num_30day;type:int(11);comment:30日销量" json:"sale_num_30day"`
+	SaleNumTotal int       `gorm:"column:sale_num_total;type:int(11);comment:总销量" json:"sale_num_total"`
+	CreateTime   time.Time `gorm:"column:create_time;type:datetime;comment:创建时间" json:"create_time"`
+	UpdateTime   time.Time `gorm:"column:update_time;type:datetime;comment:更新时间" json:"update_time"`
+	IsDelete     int       `gorm:"column:is_delete;type:int(11);default:0;comment:是否被删除" json:"is_delete"`
+	LikeNum      int       `gorm:"column:like_num;type:int(11);default:0;comment:点赞数" json:"like_num"`
+	VideoNum     int       `gorm:"column:video_num;type:int(11);default:0;comment:作品数" json:"video_num"`
+}
+
+func (m *PlatformKuaishouUserInfo) TableName() string {
+	return "platform_kuaishou_user_info"
+}

+ 31 - 21
model/gorm_model/project.go

@@ -17,27 +17,37 @@ type ProjectInfo struct {
 	ProjectDetail     string     `gorm:"column:project_detail"`                 // 项目详情
 	ApplyNum          int64      `gorm:"column:apply_num;default:0;NOT NULL"`   // 报名人数
 	RecruitNum        int64      `gorm:"column:recruit_num;default:0;NOT NULL"` // 已招募人数
-	EnterpriseID      string     `gorm:"column:enterprise_id"`                  // 所属企业id
-	ProductID         int64      `gorm:"column:product_id"`                     // 关联商品id
-	CreatedAt         *time.Time `gorm:"column:created_at"`                     // 创建时间
-	UpdatedAt         *time.Time `gorm:"column:updated_at"`                     // 修改时间
-	FeeForm           string     `gorm:"column:fee_form"`                       // 稿费形式列表
-	AutoFailAt        *time.Time `gorm:"column:auto_fail_at"`                   // 失效自动处理时间
-	AutoTaskID        int64      `gorm:"column:auto_task_id;NOT NULL"`          // 定时任务id
-	AutoDefaultID     int64      `gorm:"column:auto_default_id;NOT NULL"`       // 违约状态id
-	PaymentAmount     float64    `gorm:"column:payment_amount"`                 // 支付金额
-	PayAt             *time.Time `gorm:"column:pay_at"`                         // 支付时间
-	AutoScriptBreakAt *time.Time `gorm:"column:auto_script_break_at"`           // 脚本违约自动处理时间
-	AutoSketchBreakAt *time.Time `gorm:"column:auto_sketch_break_at"`           // 初稿违约自动处理时间
-	FailReason        int64      `gorm:"column:fail_reason"`                    // 失效原因,1、2分别表示逾期未支付、项目存在风险
-	PassAt            *time.Time `gorm:"column:pass_at"`                        // 审核通过时间
-	FinishAt          *time.Time `gorm:"column:finish_at"`                      // 结案时间
-	SubmitAt          *time.Time `gorm:"column:submit_at"`                      // 结案时间
-	EstimatedCost     float64    `gorm:"column:estimated_cost"`                 // 预估成本
-	IsRead            int64      `gorm:"column:is_read"`                        // 是否已读
-	SettlementAmount  float64    `gorm:"column:settlement_amount"`              // 结算金额
-	ProductSnap       string     `gorm:"column:product_snap"`                   // 商品信息快照
-	ProductPhotoSnap  string     `gorm:"column:product_photo_snap"`             // 商品图片快照
+	SettleNum         int64      `gorm:"column:settle_num;type:int(11);default:0;comment:结案人数;NOT NULL" json:"settle_num"`
+	EnterpriseID      string     `gorm:"column:enterprise_id"`            // 所属企业id
+	ProductID         int64      `gorm:"column:product_id"`               // 关联商品id
+	CreatedAt         *time.Time `gorm:"column:created_at"`               // 创建时间
+	UpdatedAt         *time.Time `gorm:"column:updated_at"`               // 修改时间
+	FeeForm           string     `gorm:"column:fee_form"`                 // 稿费形式列表
+	AutoFailAt        *time.Time `gorm:"column:auto_fail_at"`             // 失效自动处理时间
+	AutoTaskID        int64      `gorm:"column:auto_task_id;NOT NULL"`    // 定时任务id
+	AutoDefaultID     int64      `gorm:"column:auto_default_id;NOT NULL"` // 违约状态id
+	PaymentAmount     float64    `gorm:"column:payment_amount"`           // 支付金额
+	PayAt             *time.Time `gorm:"column:pay_at"`                   // 支付时间
+	AutoScriptBreakAt *time.Time `gorm:"column:auto_script_break_at"`     // 脚本违约自动处理时间
+	AutoSketchBreakAt *time.Time `gorm:"column:auto_sketch_break_at"`     // 初稿违约自动处理时间
+	FailReason        int64      `gorm:"column:fail_reason"`              // 失效原因,1、2分别表示逾期未支付、项目存在风险
+	PassAt            *time.Time `gorm:"column:pass_at"`                  // 审核通过时间
+	FinishAt          *time.Time `gorm:"column:finish_at"`                // 结案时间
+	SubmitAt          *time.Time `gorm:"column:submit_at"`                // 结案时间
+	EstimatedCost     float64    `gorm:"column:estimated_cost"`           // 预估成本
+	IsRead            int64      `gorm:"column:is_read"`                  // 是否已读
+	SettlementAmount  float64    `gorm:"column:settlement_amount"`        // 结算金额
+	ProductSnap       string     `gorm:"column:product_snap"`             // 商品信息快照
+	ProductPhotoSnap  string     `gorm:"column:product_photo_snap"`       // 商品图片快照
+	NeedReview        int64      `gorm:"column:need_review"`              // 待审稿
+	NeedQuality       int64      `gorm:"column:need_quality"`             // 待质检
+	NeedCalculate     int64      `gorm:"column:need_calculate"`           // 待结算
+	ServiceChargeRate float64    `gorm:"column:service_charge_rate"`      // 公开服务费率
+	OperatorType      *int64     `gorm:"column:operator_type"`            // 创建者类型,1商家主账号,2商家子账号
+	TotalRecruitNum   *int64     `gorm:"column:total_recruit_num"`        // 此任务各策略招募人数总和
+	ViewNum           int64      `gorm:"column:view_num"`                 // 浏览量
+	Tools             string     `gorm:"column:tools"`                    // 工具选择,1邀约招募 2结算账单 3样品物流 4审稿工具 5作品审查 6数据巡检(,分隔)
+	InvoiceStatus     int64      `gorm:"column:invoice_status"`           // 开票状态(1开票中 2已开票)
 }
 
 func (m *ProjectInfo) TableName() string {

+ 18 - 12
model/gorm_model/project_task.go

@@ -53,19 +53,25 @@ type YoungeeTaskInfo struct {
 	BOperatorType          int       `gorm:"column:b_operator_type"`                      // 商家操作人类型,1商家用户,2商家子账号,3管理后台
 	SOperator              int       `gorm:"column:s_operator"`                           // 服务商提报达人操作人ID
 	SOperatorType          int       `gorm:"column:s_operator_type"`                      // 服务商操作人类型,1服务商主账号,2服务商子账号,3管理后台
-	SProjectId             int       `gorm:"column:s_project_id"`                         // 服务商种草任务ID
-	SupportFee             float64   `gorm:"column:support_fee"`                          // 提报价格
-	TerminateTime          time.Time `gorm:"column:terminate_time"`                       // 终止合作时间
-	TerminateReason        string    `gorm:"column:terminate_reason"`                     // 终止合作理由
-	CancelTime             time.Time `gorm:"column:cancel_time"`                          // 解约时间
-	CancelReason           string    `gorm:"column:cancel_reason"`                        // 解约理由
-	SketchMissingTime      time.Time `gorm:"column:sketch_missing_time"`                  // 未传初稿违约时间
-	SketchMissingStatus    int       `gorm:"column:sketch_missing_status"`                // 未传初稿违约状态,0无违约,1有违约
-	LinkMissingTime        time.Time `gorm:"column:link_missing_time"`                    // 未发作品违约时间
-	LinkMissingStatus      int       `gorm:"column:link_missing_status"`                  // 未发作品违约状态,0无违约,1有违约
-	DataMissingTime        time.Time `gorm:"column:data_missing_time"`                    // 未传数据违约时间
-	DataMissingStatus      int       `gorm:"column:data_missing_status"`                  // 未传数据违约状态,0无违约,1有违约
 	OpenId                 string    `gorm:"column:open_id"`                              // 达人报名的快手唯一标识
+	SupportFee             float64   `gorm:"column:support_fee"`                          //提报价格
+	SprojectId             int       `gorm:"column:s_project_id"`                         //服务商种草任务ID
+	CurBreakAt             time.Time `gorm:"column:cur_break_at;type:datetime;comment:当前阶段截止时间" json:"cur_break_at"`
+	SketchMissingTime      time.Time `gorm:"column:sketch_missing_time;type:datetime;comment:未传初稿违约时间" json:"sketch_missing_time"`
+	SketchMissingStatus    int       `gorm:"column:sketch_missing_status;type:int(11);default:0;comment:未传初稿违约状态,0无违约,1有违约" json:"sketch_missing_status"`
+	LinkMissingTime        time.Time `gorm:"column:link_missing_time;type:datetime;comment:未发作品违约时间" json:"link_missing_time"`
+	LinkMissingStatus      int       `gorm:"column:link_missing_status;type:int(11);default:0;comment:未发作品违约状态,0无违约,1有违约" json:"link_missing_status"`
+	DataMissingTime        time.Time `gorm:"column:data_missing_time;type:datetime;comment:未传数据违约时间" json:"data_missing_time"`
+	DataMissingStatus      int       `gorm:"column:data_missing_status;type:int(11);default:0;comment:未传数据违约状态,0无违约,1有违约" json:"data_missing_status"`
+	TerminateOperatorType  int       `gorm:"column:terminate_operator_type;type:int(11);comment:终止合作操作人类型,1商家用户,2商家子账号,3管理后台" json:"terminate_operator_type"`
+	TerminateOperator      string    `gorm:"column:terminate_operator;type:varchar(255);comment:终止合作操作人ID" json:"terminate_operator"`
+	TerminateReason        string    `gorm:"column:terminate_reason;type:varchar(255);comment:终止理由" json:"terminate_reason"`
+	TerminateTime          time.Time `gorm:"column:terminate_time;type:datetime;comment:终止合作时间" json:"terminate_time"`
+	CancelOperatorType     int       `gorm:"column:cancel_operator_type;type:int(11);comment:解约操作人类型,1商家用户,2商家子账号,3管理后台" json:"cancel_operator_type"`
+	CancelOperator         string    `gorm:"column:cancel_operator;type:varchar(255);comment:解约操作人ID" json:"cancel_operator"`
+	CancelReason           string    `gorm:"column:cancel_reason;type:varchar(255);comment:解约原因" json:"cancel_reason"`
+	CancelTime             time.Time `gorm:"column:cancel_time;type:datetime;comment:解约时间" json:"cancel_time"`
+	City                   string    `gorm:"column:city"` //报名达人的所在城市
 }
 
 func (m *YoungeeTaskInfo) TableName() string {

+ 30 - 0
model/gorm_model/s_locallife_info.go

@@ -0,0 +1,30 @@
+package gorm_model
+
+import (
+	"time"
+)
+
+type YounggeeSLocalLifeInfo struct {
+	SLocalLifeId        int       `gorm:"column:s_local_life_id;type:int(11);primary_key" json:"s_local_life_id"`
+	LocalLifeId         int       `gorm:"column:local_life_id;type:int(11);comment:被加入商单的原本地生活ID" json:"local_life_id"`
+	EnterpriseId        string    `gorm:"column:enterprise_id;type:varchar(255);comment:商家ID" json:"enterprise_id"`
+	SupplierId          int       `gorm:"column:supplier_id;type:int(11);comment:服务商ID" json:"supplier_id"`
+	ApplyNum            int       `gorm:"column:apply_num;type:int(11);comment:报名人数" json:"apply_num"`
+	RecruitNum          int       `gorm:"column:recruit_num;type:int(11);comment:已招募人数" json:"recruit_num"`
+	SettleNum           int       `gorm:"column:settle_num;type:int(11);default:0;comment:已结算人数" json:"settle_num"`
+	SubAccountId        int       `gorm:"column:sub_account_id;type:int(11);comment:服务商子账号ID" json:"sub_account_id"`
+	ServiceCharge       string    `gorm:"column:service_charge;type:varchar(255);comment:服务商预估可赚服务费" json:"service_charge"`
+	ServiceChargeActual string    `gorm:"column:service_charge_actual;type:varchar(255);comment:服务商实际可赚服务费" json:"service_charge_actual"`
+	OperatorType        string    `gorm:"column:operator_type;type:varchar(255);comment:添加商单操作人类型,1为服务商主账号,2为服务商子账号" json:"operator_type"`
+	SProjectStatus      string    `gorm:"column:s_project_status;type:varchar(255);comment:服务商本地生活任务状态,1待确认,2已确认,3已拒绝" json:"s_project_status"`
+	StrategyStatus      string    `gorm:"column:strategy_status;type:varchar(255);comment:定向本地生活任务是否替换招募策略" json:"strategy_status"`
+	BOperator           string    `gorm:"column:b_operator;type:varchar(255);comment:商家发起入库邀约人" json:"b_operator"`
+	BOperatorType       string    `gorm:"column:b_operator_type;type:varchar(255);comment:商家发起入库邀约人类型:1主账号 2子账号" json:"b_operator_type"`
+	CreateTime          time.Time `gorm:"column:create_time;type:datetime;comment:创建时间" json:"create_time"`
+	CreateStrategyId    int       `gorm:"column:create_strategy_id;type:int(11)" json:"create_strategy_id"`
+	CreateStrategyType  string    `gorm:"column:create_strategy_type;type:varchar(255)" json:"create_strategy_type"`
+}
+
+func (m *YounggeeSLocalLifeInfo) TableName() string {
+	return "younggee_s_local_life_info"
+}

+ 2 - 0
model/gorm_model/sketch.go

@@ -21,6 +21,8 @@ type YounggeeSketchInfo struct {
 	AutoAgreeAt       time.Time `gorm:"column:auto_agree_at"`                        // 初稿自动审核时间
 	AutoLinkBreakAt   time.Time `gorm:"column:auto_link_break_at"`                   // 链接违约自动处理时间
 	AutoSketchBreakAt time.Time `gorm:"column:auto_sketch_break_at"`                 // 初稿违约自动处理时间
+	BOperator         string    `gorm:"column:b_operator"`                           //商家确定操作人ID
+	BOperatorType     int       `gorm:"column:b_operator_type"`                      //商家操作人类型,1商家用户,2商家子账号,3管理后台
 }
 
 func (m *YounggeeSketchInfo) TableName() string {

+ 31 - 0
model/http_model/LocalPrelinkList.go

@@ -0,0 +1,31 @@
+package http_model
+
+import "time"
+
+type LocalPreLinkListRequest struct {
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	LinkStatus   string `json:"link_status"` // 链接状态,11待传链接
+	EnterpriseId string `json:"enterprise_id"`
+}
+
+type GetLocalPreLinkListData struct {
+	TasklinkList []*LocalTasklinkinfo `json:"task_list"`
+	Total        string               `json:"total"`
+}
+
+type LocalTasklinkinfo struct {
+	Task *LocaLTaskInfo `json:"task_info"`
+	DDl  time.Time      `json:"ddl"` // 提交时间
+}
+
+func NewLocalPreLinkListRequest() *LocalPreLinkListRequest {
+	return new(LocalPreLinkListRequest)
+}
+
+func NewLocalPreLinkListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLocalPreLinkListData)
+	return resp
+}

+ 23 - 0
model/http_model/PassLocalTaskCoopRequest.go

@@ -0,0 +1,23 @@
+package http_model
+
+type PasslocalTaskCoopRequest struct {
+	ProjectId   string   `json:"project_id"`
+	TaskIds     []string `json:"task_ids"`
+	SProjectId  *int     `json:"s_project_id"`
+	OperatorId  string   `json:"operator_id"`
+	OperateType int      `json:"operate_type"`
+	IsSpecial   int      `json:"is_special"`
+}
+
+type PasslocalTaskCoopData struct {
+}
+
+func NewPasslocalTaskCoopRequest() *PasslocalTaskCoopRequest {
+	return new(PasslocalTaskCoopRequest)
+}
+
+func NewPasslocalTaskCoopResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(PasslocalTaskCoopData)
+	return resp
+}

+ 2 - 0
model/http_model/PassproTaskCoopRequest.go

@@ -3,8 +3,10 @@ package http_model
 type PassproTaskCoopRequest struct {
 	ProjectId   string   `json:"project_id"`
 	TaskIds     []string `json:"task_ids"`
+	SProjectId  *int     `json:"s_project_id"`
 	OperatorId  string   `json:"operator_id"`
 	OperateType int      `json:"operate_type"`
+	IsSpecial   int      `json:"is_special"`
 }
 
 type PassproTaskCoopData struct {

+ 6 - 5
model/http_model/PreLinkList.go

@@ -3,10 +3,11 @@ package http_model
 import "time"
 
 type PreLinkListRequest struct {
-	PageSize   int    `json:"page_size"`
-	PageNum    int    `json:"page_num"`
-	ProjectId  string `json:"project_id"`  // 项目ID
-	LinkStatus string `json:"link_status"` // 链接状态,11待传链接
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	LinkStatus   string `json:"link_status"` // 链接状态,11待传链接
+	EnterpriseId string `json:"enterprise_id"`
 }
 
 type GetprelinkListData struct {
@@ -25,6 +26,6 @@ func NewPreLinkListRequest() *PreLinkListRequest {
 
 func NewPreLinkListResponse() *CommonResponse {
 	resp := new(CommonResponse)
-	resp.Data = new(GetSketchTaskListData)
+	resp.Data = new(GetprelinkListData)
 	return resp
 }

+ 6 - 4
model/http_model/data_accept.go

@@ -2,14 +2,16 @@ package http_model
 
 type AcceptDataRequest struct {
 	//Payment   float64 `json:"payment"`      //招募策略id
-	TaskIds   string `json:"task_id_list"` //任务id列表
-	ProjectId string `json:"project_id"`   //项目id
-	IsSpecial int    `json:"is_special"`   // 是否为专项项目
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`   //项目id
+	IsSpecial   int    `json:"is_special"`   // 是否为专项项目
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
 }
 
 type AcceptDataData struct {
 	TaskIds []string `json:"taskIds"` //任务id列表
-	IsEnd   int      `json:"is_end"`  // 项目是否结案
+	//IsEnd   int      `json:"is_end"`  // 项目是否结案
 }
 
 func NewAcceptDataRequest() *AcceptDataRequest {

+ 24 - 0
model/http_model/data_localaccept.go

@@ -0,0 +1,24 @@
+package http_model
+
+type LocalAcceptDataRequest struct {
+	//Payment   float64 `json:"payment"`      //招募策略id
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`   //项目id
+	IsSpecial   int    `json:"is_special"`   // 是否为专项项目
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+}
+
+type LocalAcceptDataData struct {
+	TaskIds []string `json:"taskIds"` //任务id列表
+	//IsEnd   int      `json:"is_end"`  // 项目是否结案
+}
+
+func NewLocalAcceptDataRequest() *LocalAcceptDataRequest {
+	return new(LocalAcceptDataRequest)
+}
+func NewLocalAcceptDataResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalAcceptDataData)
+	return resp
+}

+ 4 - 1
model/http_model/data_opinion.go

@@ -1,8 +1,11 @@
 package http_model
 
 type DataOpinionRequest struct {
-	TaskID      string `json:"task_id"`      //任务-id
+	TaskID      string `json:"task_id"` //任务-id
+	ProjectId   string `json:"project_id"`
 	DataOpinion string `json:"Data_opinion"` //数据审核意见
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
 }
 
 type DataOpinionData struct {

+ 52 - 0
model/http_model/getlocaltasklist.go

@@ -0,0 +1,52 @@
+package http_model
+
+import "time"
+
+type GetLocalTaskListRequest struct {
+	PageSize       int    `json:"page_size"`
+	PageNum        int    `json:"page_num"`
+	TalentFromList string `json:"talent_from_list"`
+	FeeFrom        *int   `json:"fee_from,omitempty"`
+	Type           *int   `json:"type,omitempty"` // 查询类型,1、2分别表示达人来源于公海(商家端),服务商
+	ProjectId      string `json:"project_id"`
+	CoopType       int    `json:"coop_type"` //1未处理,2同意,3拒绝
+	EnterPriseId   string `json:"enterprise_id"`
+}
+
+type GetLocalTaskListData struct {
+	TaskList []*LocaLTaskInfo `json:"task_list"`
+	Total    string           `json:"total"`
+}
+
+type LocaLTaskInfo struct {
+	TaskId             string  `json:"task_id"`
+	ProjectId          string  `json:"project_id"`
+	TalentId           string  `json:"talent_id"`
+	FansNum            int     `json:"fans_num"`
+	DraftFee           float64 `json:"draft_fee"`
+	FeeFrom            int     `json:"fee_from"`
+	TaskStage          int     `json:"task_stage"`
+	Voteavg            int     `json:"vote_avg"`
+	Commentavg         int     `json:"commit_avg"`
+	CurrentDefaultType int     `json:"current_default_type"`
+	From               int     `json:"from"`   //1公海,2服务商
+	SType              int     `json:"s_type"` //1个人,2机构
+	Boperator          string  `json:"b_operator"`
+	//SettleAmount       float64   `json:"settle_amount"`
+	CreateAt   time.Time `json:"create_time"`
+	ISCoop     int       `json:"is_coop"`
+	NickName   string    `json:"nick_name"`
+	HeadUrl    string    `json:"head_url"`
+	Sprojectid int       `json:"sprojectid"`
+	City       string    `json:"city"`
+}
+
+func NewGetLocalTaskListRequest() *GetLocalTaskListRequest {
+	return new(GetLocalTaskListRequest)
+}
+
+func NewGetLocalTaskListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLocalTaskListData)
+	return resp
+}

+ 27 - 21
model/http_model/gettasklist.go

@@ -3,12 +3,13 @@ package http_model
 import "time"
 
 type GetTaskListRequest struct {
-	PageSize  int    `json:"page_size"`
-	PageNum   int    `json:"page_num"`
-	FeeFrom   *int   `json:"fee_from,omitempty"`
-	Type      *int   `json:"type,omitempty"` // 查询类型,1、2分别表示达人来源于公海(商家端),服务商
-	ProjectId string `json:"project_id"`
-	CoopType  int    `json:"coop_type"` //1未处理,2同意,3拒绝
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	FeeFrom      *int   `json:"fee_from,omitempty"`
+	Type         *int   `json:"type,omitempty"` // 查询类型,1、2分别表示达人来源于公海(商家端),服务商
+	ProjectId    string `json:"project_id"`
+	CoopType     int    `json:"coop_type"` //1未处理,2同意,3拒绝
+	EnterPriseId string `json:"enterprise_id"`
 }
 
 type GetTaskListData struct {
@@ -17,21 +18,26 @@ type GetTaskListData struct {
 }
 
 type TaskInfo struct {
-	TaskId             string    `json:"task_id"`
-	ProjectId          string    `json:"project_id"`
-	TalentId           string    `json:"talent_id"`
-	FansNum            int       `json:"fans_num"`
-	DraftFee           float64   `json:"draft_fee"`
-	FeeFrom            int       `json:"fee_from"`
-	TaskStage          int       `json:"task_stage"`
-	Voteavg            int       `json:"vote_avg"`
-	Commentavg         int       `json:"commit_avg"`
-	CurrentDefaultType int       `json:"current_default_type"`
-	From               int       `json:"from"`   //1公海,2服务商
-	SType              int       `json:"s_type"` //1个人,2机构
-	Boperator          string    `json:"b_operator"`
-	SettleAmount       float64   `json:"settle_amount"`
-	CreateAt           time.Time `json:"create_time"`
+	TaskId             string  `json:"task_id"`
+	ProjectId          string  `json:"project_id"`
+	TalentId           string  `json:"talent_id"`
+	FansNum            int     `json:"fans_num"`
+	DraftFee           float64 `json:"draft_fee"`
+	FeeFrom            int     `json:"fee_from"`
+	TaskStage          int     `json:"task_stage"`
+	Voteavg            int     `json:"vote_avg"`
+	Commentavg         int     `json:"commit_avg"`
+	CurrentDefaultType int     `json:"current_default_type"`
+	From               int     `json:"from"`   //1公海,2服务商
+	SType              int     `json:"s_type"` //1个人,2机构
+	Boperator          string  `json:"b_operator"`
+	//SettleAmount       float64   `json:"settle_amount"`
+	CreateAt   time.Time `json:"create_time"`
+	ISCoop     int       `json:"is_coop"`
+	NickName   string    `json:"nick_name"`
+	HeadUrl    string    `json:"head_url"`
+	City       string    `json:"city"`
+	Sprojectid int       `json:"sprojectid"`
 }
 
 func NewGetTaskListRequest() *GetTaskListRequest {

+ 5 - 1
model/http_model/link_accept.go

@@ -1,7 +1,11 @@
 package http_model
 
 type AcceptLinkRequest struct {
-	TaskIds string `json:"task_id_list"` //任务id列表
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+	Isspecial   int    `json:"is_special"`
 }
 
 type AcceptLinkData struct {

+ 22 - 0
model/http_model/link_localaccept.go

@@ -0,0 +1,22 @@
+package http_model
+
+type LocalAcceptLinkRequest struct {
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+	Isspecial   int    `json:"is_special"`
+}
+
+type LocalAcceptLinkData struct {
+	TaskIds []string `json:"task_id_list"` //任务id列表
+}
+
+func NewLocalAcceptLinkRequest() *LocalAcceptLinkRequest {
+	return new(LocalAcceptLinkRequest)
+}
+func NewLocalAcceptLinkResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalAcceptLinkData)
+	return resp
+}

+ 4 - 1
model/http_model/link_opinion.go

@@ -1,8 +1,11 @@
 package http_model
 
 type LinkOpinionRequest struct {
-	TaskID      string `json:"task_id"`      //任务-id
+	TaskID      string `json:"task_id"` //任务-id
+	ProjectId   string `json:"project_id"`
 	LinkOpinion string `json:"Link_opinion"` //链接审核意见
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
 }
 
 type LinkOpinionData struct {

+ 22 - 0
model/http_model/localdata_opinion.go

@@ -0,0 +1,22 @@
+package http_model
+
+type LocalDataOpinionRequest struct {
+	TaskID           string `json:"task_id"` //任务-id
+	ProjectId        string `json:"project_id"`
+	LocalDataOpinion string `json:"Data_opinion"` //数据审核意见
+	OperatorId       string `json:"operator_id"`
+	OperateType      int    `json:"operate_type"`
+}
+
+type LocalDataOpinionData struct {
+	TaskID string `json:"task_id"` // 任务ID
+}
+
+func NewLocalDataOpinionRequest() *LocalDataOpinionRequest {
+	return new(LocalDataOpinionRequest)
+}
+func NewLocalDataOpinionResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalDataOpinionData)
+	return resp
+}

+ 31 - 0
model/http_model/locallifedatarequest.go

@@ -0,0 +1,31 @@
+package http_model
+
+import "time"
+
+type LocallifeDataRequest struct {
+	LocallifeId string `json:"Locallife_id"`
+}
+
+type LocallifeDataResponse struct {
+	RecruitDDl  time.Time      `json:"recruit_ddl"`
+	Recruittime time.Time      `json:"recruit_time"`
+	ApplyNum    int64          `json:"apply_num"`
+	AgreeNum    int64          `json:"agree_num"`
+	DraftFee    float64        `json:"draft_fee"`
+	AvgFansNum  int            `json:"avg_fans_num"`
+	FromType    float64        `json:"from_type"`
+	ManRatio    float64        `json:"man_ratio"`
+	FeeMap      map[int]int    `json:"fee_map"`
+	FansMap     map[int64]int  `json:"fans_map"`
+	DateStats   map[string]int `json:"date_stats"`
+}
+
+func NewLocallifeDataRequest() *LocallifeDataRequest {
+	return new(LocallifeDataRequest)
+}
+
+func NewLocallifeDataResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocallifeDataResponse)
+	return resp
+}

+ 22 - 0
model/http_model/locallink_opinion.go

@@ -0,0 +1,22 @@
+package http_model
+
+type LocalLinkOpinionRequest struct {
+	TaskID           string `json:"task_id"` //任务-id
+	ProjectId        string `json:"project_id"`
+	LocalLinkOpinion string `json:"Link_opinion"` //链接审核意见
+	OperatorId       string `json:"operator_id"`
+	OperateType      int    `json:"operate_type"`
+}
+
+type LocalLinkOpinionData struct {
+	TaskID string `json:"task_id"` // 任务ID
+}
+
+func NewLocalLinkOpinionRequest() *LocalLinkOpinionRequest {
+	return new(LocalLinkOpinionRequest)
+}
+func NewLocalLinkOpinionResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalLinkOpinionData)
+	return resp
+}

+ 31 - 0
model/http_model/localpredatalist.go

@@ -0,0 +1,31 @@
+package http_model
+
+import "time"
+
+type LocalPreDataListRequest struct {
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	DataStatus   string `json:"data_status"` // 数据状态,13待传数据
+	EnterpriseId string `json:"enterprise_id"`
+}
+
+type GetLocalPreDataListData struct {
+	TaskdataList []*LocalTaskdatainfo `json:"task_list"`
+	Total        string               `json:"total"`
+}
+
+type LocalTaskdatainfo struct {
+	Task *LocaLTaskInfo `json:"task_info"`
+	DDl  time.Time      `json:"ddl"` // 截止时间
+}
+
+func NewLocalPreDataListRequest() *LocalPreDataListRequest {
+	return new(LocalPreDataListRequest)
+}
+
+func NewLocalPreDataListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLocalPreDataListData)
+	return resp
+}

+ 31 - 0
model/http_model/localpresketchlistrequest.go

@@ -0,0 +1,31 @@
+package http_model
+
+import "time"
+
+type LocalPreSketchListRequest struct {
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`    // 项目ID
+	ScriptStatus int    `json:"script_status"` // 稿件状态,10初稿待审
+	EnterpriseId string `json:"enterprise_id"`
+}
+
+type GetLocalSketchTaskListData struct {
+	TasksketchList []*LocalTasksketchInfo `json:"task_list"`
+	Total          string                 `json:"total"`
+}
+
+type LocalTasksketchInfo struct {
+	Task *LocaLTaskInfo `json:"task_info"`
+	DDl  time.Time      `json:"ddl"`
+}
+
+func NewLocalPreSketchListRequest() *LocalPreSketchListRequest {
+	return new(LocalPreSketchListRequest)
+}
+
+func NewLocalPreSketchListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetSketchTaskListData)
+	return resp
+}

+ 21 - 0
model/http_model/localreject_data.go

@@ -0,0 +1,21 @@
+package http_model
+
+type LocalRejectDataRequest struct {
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+}
+
+type LocalRejectDataData struct {
+	TaskIds []string `json:"task_id_list"` //任务id列表
+}
+
+func NewLocalRejectDataRequest() *LocalRejectDataRequest {
+	return new(LocalRejectDataRequest)
+}
+func NewLocalRejectDataResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalRejectDataData)
+	return resp
+}

+ 21 - 0
model/http_model/localreject_link.go

@@ -0,0 +1,21 @@
+package http_model
+
+type LocalRejectLinkRequest struct {
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+}
+
+type LocalRejectLinkData struct {
+	TaskIds []string `json:"task_id_list"` //任务id列表
+}
+
+func NewLocalRejectLinkRequest() *LocalRejectLinkRequest {
+	return new(LocalRejectLinkRequest)
+}
+func NewLocalRejectLinkResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalRejectLinkData)
+	return resp
+}

+ 22 - 0
model/http_model/localsketch_opinion.go

@@ -0,0 +1,22 @@
+package http_model
+
+type LocalSketchOpinionRequest struct {
+	TaskID             string `json:"task_id"` //任务-id
+	ProjectId          string `json:"project_id"`
+	LocalSketchOpinion string `json:"sketch_opinion"` //初稿意见
+	OperatorId         string `json:"operator_id"`
+	OperateType        int    `json:"operate_type"`
+}
+
+type LocalSketchOpinionData struct {
+	TaskID string `json:"task_id"` // 脚本ID
+}
+
+func NewLocalSketchOpinionRequest() *LocalSketchOpinionRequest {
+	return new(LocalSketchOpinionRequest)
+}
+func NewLocalSketchOpinionResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalSketchOpinionData)
+	return resp
+}

+ 41 - 0
model/http_model/localtaskdatalist.go

@@ -0,0 +1,41 @@
+package http_model
+
+import "time"
+
+type LocalTaskDatalistRequest struct {
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	DataStatus   string `json:"data_status"` // 链接状态,14
+	EnterpriseId string `json:"enterprise_id"`
+}
+
+type GetLocalTaskDatalistData struct {
+	LocalTaskDatalist []*LocalTaskDatainfo `json:"task_list"`
+	Total             string               `json:"total"`
+}
+
+type LocalTaskDatainfo struct {
+	Task          *LocaLTaskInfo `json:"task_info"`
+	SubmitAt      time.Time      `json:"submit_at"` // 提交时间
+	AgreeAt       time.Time      `json:"agree_at"`
+	DataId        int            `json:"data_id"` //初稿ID
+	PhotoUrl      string         `json:"photo_url"`
+	PlayNumber    int            `json:"play_number"`
+	LikeNumber    int            `json:"like_number"`
+	CommentNumber int            `json:"comment_number"`
+	CollectNumber int            `json:"collect_number"`
+	SettleAmount  float64        `json:"settle_amount"`
+	Breakrate     int            `json:"breakrate"`
+	Operator      string         `json:"operator"`
+}
+
+func NewLocalTaskDatalistRequest() *LocalTaskDatalistRequest {
+	return new(LocalTaskDatalistRequest)
+}
+
+func NewLocalTaskDatalistResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLocalTaskDatalistData)
+	return resp
+}

+ 36 - 0
model/http_model/localtasklinklist.go

@@ -0,0 +1,36 @@
+package http_model
+
+import "time"
+
+type LocalTaskLinklistRequest struct {
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	LinkStatus   string `json:"link_status"` // 链接状态,12待审
+	EnterpriseId string `json:"enterprise_id"`
+}
+
+type GetLocalTaskLinkListData struct {
+	LocalTaskLinklist []*LocalTaskLinkinfo `json:"task_list"`
+	Total             string               `json:"total"`
+}
+
+type LocalTaskLinkinfo struct {
+	Task     *LocaLTaskInfo `json:"task_info"`
+	SubmitAt time.Time      `json:"submit_at"` // 提交时间
+	AgreeAt  time.Time      `json:"agree_at"`
+	LinkId   int            `json:"link_id"` //初稿ID
+	LinkUrl  string         `json:"link_url"`
+	PhotoUrl string         `json:"photo_url"`
+	Operator string         `json:"operator"`
+}
+
+func NewLocalTaskLinklistRequest() *LocalTaskLinklistRequest {
+	return new(LocalTaskLinklistRequest)
+}
+
+func NewLocalTaskLinklistResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetLocalTaskLinkListData)
+	return resp
+}

+ 33 - 0
model/http_model/localtasksketchlist.go

@@ -0,0 +1,33 @@
+package http_model
+
+import "time"
+
+type LocalTasksketchlistRequest struct {
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`    // 项目ID
+	ScriptStatus int    `json:"script_status"` // 稿件状态
+}
+
+type GetsketchlocaltaskListData struct {
+	LocalTasksketchList []*LocalTasksketchinfo `json:"task_list"`
+	Total               string                 `json:"total"`
+}
+
+type LocalTasksketchinfo struct {
+	Task     *LocaLTaskInfo `json:"task_info"`
+	SubmitAt time.Time      `json:"submit_at"` // 提交时间
+	AgreeAt  time.Time      `json:"agree_at"`
+	Operator string         `json:"operator"`
+	SketchId int            `json:"sketch_id"` //初稿ID
+}
+
+func NewLocalTasksketchlistRequest() *LocalTasksketchlistRequest {
+	return new(LocalTasksketchlistRequest)
+}
+
+func NewLocalTasksketchlistResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(GetsketchlocaltaskListData)
+	return resp
+}

+ 6 - 5
model/http_model/predatalist.go

@@ -3,10 +3,11 @@ package http_model
 import "time"
 
 type PreDataListRequest struct {
-	PageSize   int    `json:"page_size"`
-	PageNum    int    `json:"page_num"`
-	ProjectId  string `json:"project_id"`  // 项目ID
-	DataStatus string `json:"data_status"` // 数据状态,13待传数据
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	DataStatus   string `json:"data_status"` // 数据状态,13待传数据
+	EnterpriseId string `json:"enterprise_id"`
 }
 
 type GetPreDataListData struct {
@@ -25,6 +26,6 @@ func NewPreDataListRequest() *PreDataListRequest {
 
 func NewPreDataListResponse() *CommonResponse {
 	resp := new(CommonResponse)
-	resp.Data = new(GetSketchTaskListData)
+	resp.Data = new(GetPreDataListData)
 	return resp
 }

+ 1 - 0
model/http_model/presketchlist.go

@@ -7,6 +7,7 @@ type PreSketchListRequest struct {
 	PageNum      int    `json:"page_num"`
 	ProjectId    string `json:"project_id"`    // 项目ID
 	ScriptStatus int    `json:"script_status"` // 稿件状态,10初稿待审
+	EnterpriseId string `json:"enterprise_id"`
 }
 
 type GetSketchTaskListData struct {

+ 20 - 0
model/http_model/refuselocaltaskcooprequest.go

@@ -0,0 +1,20 @@
+package http_model
+
+type RefuselocalTaskCoopRequest struct {
+	TaskIds     []string `json:"task_ids"`
+	OperatorId  string   `json:"operator_id"`
+	OperateType int      `json:"operate_type"`
+}
+
+type RefuselocalTaskCoopData struct {
+}
+
+func NewRefuselocalTaskCoopRequest() *RefuselocalTaskCoopRequest {
+	return new(RefuselocalTaskCoopRequest)
+}
+
+func NewRefuselocalTaskCoopResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(RefuselocalTaskCoopData)
+	return resp
+}

+ 4 - 1
model/http_model/reject_data.go

@@ -1,7 +1,10 @@
 package http_model
 
 type RejectDataRequest struct {
-	TaskIds string `json:"task_id_list"` //任务id列表
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
 }
 
 type RejectDataData struct {

+ 4 - 1
model/http_model/reject_link.go

@@ -1,7 +1,10 @@
 package http_model
 
 type RejectLinkRequest struct {
-	TaskIds string `json:"task_id_list"` //任务id列表
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
 }
 
 type RejectLinkData struct {

+ 5 - 1
model/http_model/sketch_accept.go

@@ -1,7 +1,11 @@
 package http_model
 
 type AcceptSketchRequest struct {
-	TaskIds string `json:"task_id_list"` //任务id列表
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+	IsSpecial   int    `json:"is_special"`
 }
 
 type AcceptSketchData struct {

+ 22 - 0
model/http_model/sketch_loaclaccept.go

@@ -0,0 +1,22 @@
+package http_model
+
+type LocalAcceptSketchRequest struct {
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+	IsSpecial   int    `json:"is_special"`
+}
+
+type LocalAcceptSketchData struct {
+	TaskIds []string `json:"task_id_list"` //任务id列表
+}
+
+func NewLocalAcceptSketchRequest() *LocalAcceptSketchRequest {
+	return new(LocalAcceptSketchRequest)
+}
+func NewLocalAcceptSketchResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalAcceptSketchData)
+	return resp
+}

+ 21 - 0
model/http_model/sketch_localreject.go

@@ -0,0 +1,21 @@
+package http_model
+
+type LocalRejectSketchRequest struct {
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
+}
+
+type LocalRejectSketchData struct {
+	TaskIds []string `json:"task_id_list"` //任务id列表
+}
+
+func NewLocalRejectSketchRequest() *LocalRejectSketchRequest {
+	return new(LocalRejectSketchRequest)
+}
+func NewLocalRejectSketchResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(LocalRejectSketchData)
+	return resp
+}

+ 4 - 1
model/http_model/sketch_opinion.go

@@ -1,8 +1,11 @@
 package http_model
 
 type SketchOpinionRequest struct {
-	TaskID        string `json:"task_id"`        //任务-id
+	TaskID        string `json:"task_id"` //任务-id
+	ProjectId     string `json:"project_id"`
 	SketchOpinion string `json:"sketch_opinion"` //初稿意见
+	OperatorId    string `json:"operator_id"`
+	OperateType   int    `json:"operate_type"`
 }
 
 type SketchOpinionData struct {

+ 4 - 1
model/http_model/sketch_reject.go

@@ -1,7 +1,10 @@
 package http_model
 
 type RejectSketchRequest struct {
-	TaskIds string `json:"task_id_list"` //任务id列表
+	TaskIds     string `json:"task_id_list"` //任务id列表
+	ProjectId   string `json:"project_id"`
+	OperatorId  string `json:"operator_id"`
+	OperateType int    `json:"operate_type"`
 }
 
 type RejectSketchData struct {

+ 9 - 5
model/http_model/taskdatalist.go

@@ -3,10 +3,11 @@ package http_model
 import "time"
 
 type TaskDatalistRequest struct {
-	PageSize   int    `json:"page_size"`
-	PageNum    int    `json:"page_num"`
-	ProjectId  string `json:"project_id"`  // 项目ID
-	DataStatus string `json:"data_status"` // 链接状态,14
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	DataStatus   string `json:"data_status"` // 链接状态,14
+	EnterpriseId string `json:"enterprise_id"`
 }
 
 type GetTaskDatalistData struct {
@@ -24,6 +25,9 @@ type TaskDatainfo struct {
 	LikeNumber    int       `json:"like_number"`
 	CommentNumber int       `json:"comment_number"`
 	CollectNumber int       `json:"collect_number"`
+	SettleAmount  float64   `json:"settle_amount"`
+	Breakrate     int       `json:"breakrate"`
+	Operator      string    `json:"operator"`
 }
 
 func NewTaskDatalistRequest() *TaskDatalistRequest {
@@ -32,6 +36,6 @@ func NewTaskDatalistRequest() *TaskDatalistRequest {
 
 func NewTaskDatalistResponse() *CommonResponse {
 	resp := new(CommonResponse)
-	resp.Data = new(GetSketchTaskListData)
+	resp.Data = new(GetTaskDatalistData)
 	return resp
 }

+ 7 - 5
model/http_model/tasklinklist.go

@@ -3,10 +3,11 @@ package http_model
 import "time"
 
 type TaskLinklistRequest struct {
-	PageSize   int    `json:"page_size"`
-	PageNum    int    `json:"page_num"`
-	ProjectId  string `json:"project_id"`  // 项目ID
-	LinkStatus string `json:"link_status"` // 链接状态,12待审
+	PageSize     int    `json:"page_size"`
+	PageNum      int    `json:"page_num"`
+	ProjectId    string `json:"project_id"`  // 项目ID
+	LinkStatus   string `json:"link_status"` // 链接状态,12待审
+	EnterpriseId string `json:"enterprise_id"`
 }
 
 type GettasklinkListData struct {
@@ -21,6 +22,7 @@ type TaskLinkinfo struct {
 	LinkId   int       `json:"link_id"` //初稿ID
 	LinkUrl  string    `json:"link_url"`
 	PhotoUrl string    `json:"photo_url"`
+	Operator string    `json:"operator"`
 }
 
 func NewTaskLinklistRequest() *TaskLinklistRequest {
@@ -29,6 +31,6 @@ func NewTaskLinklistRequest() *TaskLinklistRequest {
 
 func NewTaskLinklistResponse() *CommonResponse {
 	resp := new(CommonResponse)
-	resp.Data = new(GetSketchTaskListData)
+	resp.Data = new(GettasklinkListData)
 	return resp
 }

+ 2 - 1
model/http_model/tasksketchlist.go

@@ -18,6 +18,7 @@ type Tasksketchinfo struct {
 	Task     *TaskInfo `json:"task_info"`
 	SubmitAt time.Time `json:"submit_at"` // 提交时间
 	AgreeAt  time.Time `json:"agree_at"`
+	Operator string    `json:"operator"`
 	SketchId int       `json:"sketch_id"` //初稿ID
 }
 
@@ -27,6 +28,6 @@ func NewTasksketchlistRequest() *TasksketchlistRequest {
 
 func NewTasksketchlistResponse() *CommonResponse {
 	resp := new(CommonResponse)
-	resp.Data = new(GetSketchTaskListData)
+	resp.Data = new(GetsketchtaskListData)
 	return resp
 }

+ 56 - 30
route/init.go

@@ -135,36 +135,8 @@ func InitRoute(r *gin.Engine) {
 		m.POST("/product/deletePhotoUrl", handler.WrapDeletePhotoUrlHandler)                     // 在数据库中删除图片url
 		m.POST("/qrcode/getwxqrcode", handler.WrapGetWxQRCodeHandler)                            // 获取微信二维码
 
-		m.POST("/project/getAllProduct", handler.WrapGetAllProjectHandler)        // 查询项目广场项目列表
-		m.POST("/project/getTasklist", handler.WrapGetTaskListHandler)            //招募中选达人列表/查名单
-		m.POST("/project/task/coop/pass", handler.WrapPassproTaskCoopHandler)     // 同意任务合作
-		m.POST("/project/task/coop/refuse", handler.WrapRefuseproTaskCoopHandler) // 拒绝任务合作
-
-		m.POST("/project/projectdata", handler.WrapProjectDataHandler) //看数据
-		m.POST("/project/endtask", handler.WrapEndTaskHandler)         //暂时终止
-
-		m.POST("/project/presketchlist", handler.WrapPreSketchListHandler)     //初稿待传列表?
-		m.POST("/project/tasksketchlist", handler.WrapTasksketchlistHandler)   //初稿待审列表.审核通过
-		m.POST("/project/sketchopinion", handler.WrapSketchOpinionHandler)     // 初稿审核意见提交
-		m.POST("/project/acceptsketch", handler.WrapAcceptSketchHandler)       // 同意初稿
-		m.POST("/project/rejectsketch", handler.WrapRejectSketchHandler)       // 拒绝初稿
-		m.POST("/project/findsketchphoto", handler.WrapFindSketchPhotoHandler) // 查询脚本配图和视频demo
-		m.POST("/project/getsketchinfo", handler.WrapGetSketchInfoHandler)     // 获取初稿
-
-		m.POST("/project/prelinklist", handler.WrapPreLinkListHandler)   //待传链接列表
-		m.POST("/project/tasklinklist", handler.WrapTaskLinklistHandler) //链接待审列表,通过
-		m.POST("/project/linkopinion", handler.WrapLinkOpinionHandler)   // 链接审核意见提交
-		m.POST("/project/acceptlink", handler.WrapAcceptLinkHandler)     // 同意链接
-		m.POST("/project/rejectlink", handler.WrapRejectLinkHandler)     // 拒绝链接
-
-		m.POST("/project/predatalist", handler.WrapPreDataListHandler)   //待传数据列表
-		m.POST("/project/taskdatalist", handler.WrapTaskDatalistHandler) //数据待审列表?结算金额
-		m.POST("/project/dataopinion", handler.WrapDataOpinionHandler)   // 数据审核意见提交
-		m.POST("/project/acceptdata", handler.WrapAcceptDataHandler)     // 同意数据
-		m.POST("/project/rejectdata", handler.WrapRejectDataHandler)     // 拒绝数据
-
-		m.POST("/project/executedata", handler.WrapExecuteDataHandler) //看数据
-		m.POST("/project/data", handler.WrapDataHandler)
+		m.POST("/project/getAllProduct", handler.WrapGetAllProjectHandler) // 查询项目广场项目列表
+
 	}
 
 	// 选品广场相关接口
@@ -233,6 +205,60 @@ func InitRoute(r *gin.Engine) {
 		task.POST("/localLife/del", controller.TaskController{}.LocalLifeDel)                    // 删除本地生活
 
 		// 草稿箱
+		task.POST("/project/getTasklist", handler.WrapGetTaskListHandler)            //种草招募中选达人列表/查名单
+		task.POST("/project/task/coop/pass", handler.WrapPassproTaskCoopHandler)     // 种草同意任务合作
+		task.POST("/project/task/coop/refuse", handler.WrapRefuseproTaskCoopHandler) // 种草拒绝任务合作
+
+		task.POST("/project/projectdata", handler.WrapProjectDataHandler) //种草看数据
+		task.POST("/project/endtask", handler.WrapEndTaskHandler)         //种草暂时终止
+
+		task.POST("/project/presketchlist", handler.WrapPreSketchListHandler)     //种草初稿待传列表
+		task.POST("/project/tasksketchlist", handler.WrapTasksketchlistHandler)   //种草初稿待审列表.审核通过
+		task.POST("/project/sketchopinion", handler.WrapSketchOpinionHandler)     //种草初稿审核意见提交
+		task.POST("/project/acceptsketch", handler.WrapAcceptSketchHandler)       //种草同意初稿
+		task.POST("/project/rejectsketch", handler.WrapRejectSketchHandler)       //种草拒绝初稿
+		task.POST("/project/findsketchphoto", handler.WrapFindSketchPhotoHandler) //种草查询脚本配图和视频demo
+		task.POST("/project/getsketchinfo", handler.WrapGetSketchInfoHandler)     //种草获取初稿
+
+		task.POST("/project/prelinklist", handler.WrapPreLinkListHandler)   //种草待传链接列表
+		task.POST("/project/tasklinklist", handler.WrapTaskLinklistHandler) //种草链接待审列表,通过
+		task.POST("/project/linkopinion", handler.WrapLinkOpinionHandler)   // 种草链接审核意见提交
+		task.POST("/project/acceptlink", handler.WrapAcceptLinkHandler)     // 种草同意链接
+		task.POST("/project/rejectlink", handler.WrapRejectLinkHandler)     // 种草拒绝链接
+
+		task.POST("/project/predatalist", handler.WrapPreDataListHandler)   //种草待传数据列表
+		task.POST("/project/taskdatalist", handler.WrapTaskDatalistHandler) //种草数据待审列表,审核通过
+		task.POST("/project/dataopinion", handler.WrapDataOpinionHandler)   // 种草数据审核意见提交
+		task.POST("/project/acceptdata", handler.WrapAcceptDataHandler)     // 种草同意数据
+		task.POST("/project/rejectdata", handler.WrapRejectDataHandler)     // 种草拒绝数据
+
+		task.POST("/project/executedata", handler.WrapExecuteDataHandler) //看数据
+		task.POST("/project/data", handler.WrapDataHandler)               //暂未
+
+		task.POST("/locallife/getTasklist", handler.WrapGetLocalTaskListHandler)         //本地生活招募中选大人列表/查名单
+		task.POST("/locallife/task/coop/pass", handler.WrapPasslocalTaskCoopHandler)     // 本地生活同意任务合作
+		task.POST("/locallife/task/coop/refuse", handler.WrapRefuselocalTaskCoopHandler) // 本地生活拒绝任务合作
+
+		task.POST("/locallife/locallifedata", handler.WrapLocallifeDataHandler) //本地看数据
+
+		task.POST("/locallife/presketchlist", handler.WrapLocalPreSketchListHandler)   //本地生活初稿待传列表
+		task.POST("/locallife/tasksketchlist", handler.WrapLocalTasksketchlistHandler) //本地生活初稿待审列表.审核通过
+		task.POST("/locallife/sketchopinion", handler.WrapLocalSketchOpinionHandler)   //本地生活初稿审核意见提交
+		task.POST("/locallife/acceptsketch", handler.WrapLocalAcceptSketchHandler)     //本地生活同意初稿
+		task.POST("/locallife/rejectsketch", handler.WrapLocalRejectSketchHandler)     //本地生活拒绝初稿
+
+		task.POST("/locallife/prelinklist", handler.WrapLocalPreLinkListHandler)   //本地生活待传链接列表
+		task.POST("/locallife/tasklinklist", handler.WrapLocalTaskLinklistHandler) //本地生活链接待审列表,通过
+		task.POST("/locallife/linkopinion", handler.WrapLocalLinkOpinionHandler)   // 本地生活链接审核意见提交
+		task.POST("/locallife/acceptlink", handler.WrapLocalAcceptLinkHandler)     // 本地生活同意链接
+		task.POST("/locallife/rejectlink", handler.WrapLocalRejectLinkHandler)     // 本地生活拒绝链接
+
+		task.POST("/locallife/predatalist", handler.WrapLocalPreDataListHandler)   //本地生活待传数据列表
+		task.POST("/locallife/taskdatalist", handler.WrapLocalTaskDatalistHandler) //本地生活数据待审列表
+		task.POST("/locallife/dataopinion", handler.WrapLocalDataOpinionHandler)   // 本地生活数据审核意见提交
+		task.POST("/locallife/acceptdata", handler.WrapLocalAcceptDataHandler)     // 本地生活同意数据
+		task.POST("/locallife/rejectdata", handler.WrapLocalRejectDataHandler)     // 本地生活拒绝数据
+
 		task.POST("/draft/selection/list", controller.TaskController{}.GetSelectionDraftList) // 草稿箱——电商带货列表
 		task.POST("/draft/project/list", controller.TaskController{}.GetProjectDraftList)     // 草稿箱——品牌种草列表
 		task.POST("/draft/localLife/list", controller.TaskController{}.GetLocalLifeDraftList) // 草稿箱——本地生活列表

+ 110 - 0
service/Localtask.go

@@ -0,0 +1,110 @@
+package service
+
+import (
+	"context"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/db"
+	"youngee_b_api/model/http_model"
+)
+
+var LocalTask *localtask
+
+type localtask struct {
+}
+
+func (*localtask) GetLocalList(ctx context.Context, request http_model.GetLocalTaskListRequest) (*http_model.GetLocalTaskListData, error) {
+	localTaskList, err := db.GetLocallifetaskList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[localtask service] call GetLocalTaskList error,err:%+v", err)
+		return nil, err
+	}
+	return localTaskList, nil
+}
+
+func (*localtask) PassCoop(ctx context.Context, request http_model.PasslocalTaskCoopRequest) (*http_model.PassSecTaskCoopData, error) {
+	_, err := db.PassLocalTaskCoop(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[localtask service] call PassCoop error,err:%+v", err)
+		return nil, err
+	}
+
+	selectionListData := http_model.PassSecTaskCoopData{}
+
+	return &selectionListData, nil
+}
+
+func (*localtask) RefuseCoop(ctx context.Context, request http_model.RefuselocalTaskCoopRequest) (*http_model.PasslocalTaskCoopData, error) {
+
+	_, err := db.RefuseLocalTaskCoop(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[localtask] call RefuseCoop error,err:%+v", err)
+		return nil, err
+	}
+
+	projectListData := http_model.PasslocalTaskCoopData{}
+
+	return &projectListData, nil
+}
+
+func (*localtask) Data(ctx context.Context, Project http_model.LocallifeDataRequest) (*http_model.LocallifeDataResponse, error) {
+	projectdata, err := db.GetLocallifeData(ctx, Project)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[localtask service] call Data error,err:%+v", err)
+		return nil, err
+	}
+	return &projectdata, nil
+}
+
+func (*localtask) GetLocalPreSketchList(ctx context.Context, request http_model.LocalPreSketchListRequest) (*http_model.GetLocalSketchTaskListData, error) {
+	secTaskList, err := db.GetLocalPreSketchList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[localtask service] call GetPreSketchList error,err:%+v", err)
+		return nil, err
+	}
+	return secTaskList, nil
+}
+
+func (*localtask) GetLocalTasksketchlist(ctx context.Context, request http_model.LocalTasksketchlistRequest) (*http_model.GetsketchlocaltaskListData, error) {
+	secTaskList, err := db.GetLocalSketchList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[localtask service] call GetLocalTasksketchlist error,err:%+v", err)
+		return nil, err
+	}
+	return secTaskList, nil
+}
+
+func (*localtask) GetLocalPreLinkList(ctx context.Context, request http_model.LocalPreLinkListRequest) (*http_model.GetLocalPreLinkListData, error) {
+	secTaskList, err := db.GetLocalPreLinkList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[sectask_service service] call PreLinkListRequest error,err:%+v", err)
+		return nil, err
+	}
+	return secTaskList, nil
+}
+
+func (*localtask) GetLocalTaskLinklist(ctx context.Context, request http_model.LocalTaskLinklistRequest) (*http_model.GetLocalTaskLinkListData, error) {
+	secTaskList, err := db.GetLocalLinkList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[sectask_service service] call GetTasksketchlist error,err:%+v", err)
+		return nil, err
+	}
+	return secTaskList, nil
+}
+
+func (*localtask) GetLocalPreDataList(ctx context.Context, request http_model.LocalPreDataListRequest) (*http_model.GetLocalPreDataListData, error) {
+	secTaskList, err := db.GetLocalPreDataList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[sectask_service service] call PreLinkListRequest error,err:%+v", err)
+		return nil, err
+	}
+	return secTaskList, nil
+}
+
+func (*localtask) GetLocalTaskDatalist(ctx context.Context, request http_model.LocalTaskDatalistRequest) (*http_model.GetLocalTaskDatalistData, error) {
+	secTaskList, err := db.GetLocalDataList(ctx, request)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[sectask_service service] call GetTasksketchlist error,err:%+v", err)
+		return nil, err
+	}
+	return secTaskList, nil
+}

+ 1 - 1
service/Task.go

@@ -22,7 +22,7 @@ func (*task) GetList(ctx context.Context, request http_model.GetTaskListRequest)
 }
 
 func (*task) PassCoop(ctx context.Context, request http_model.PassproTaskCoopRequest) (*http_model.PassSecTaskCoopData, error) {
-	_, err := db.PassProTaskCoop(ctx, request.ProjectId, request.TaskIds, request.OperatorId, request.OperateType)
+	_, err := db.PassProTaskCoop(ctx, request.ProjectId, request.TaskIds, request.OperatorId, request.OperateType, request.IsSpecial, request)
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[sectask_service service] call PassCoop error,err:%+v", err)
 		return nil, err

Some files were not shown because too many files changed in this diff