yuliang1112 преди 2 години
родител
ревизия
81c3bd8a52

+ 10 - 17
db/sketch.go

@@ -254,7 +254,7 @@ func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, p
 	} else {
 		db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
 	}
-	fmt.Printf("初稿查询:%+v", SketchInfos)
+	//fmt.Printf("初稿查询:%+v", SketchInfos)
 	SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
 	for _, SketchInfo := range SketchInfos {
 		SketchMap[SketchInfo.TaskID] = SketchInfo
@@ -265,23 +265,16 @@ func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, p
 		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
 		return nil, 0, err
 	}
-	var misNum int64
-	if totalSketch > totalTask {
-		misNum = totalSketch - totalTask
-	} else {
-		misNum = totalTask - totalSketch
-	}
-	logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
 
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
+	//// 查询该页数据
+	//limit := pageSize
+	//offset := pageSize * pageNum // assert pageNum start with 0
+	//err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	//
+	//if err != nil {
+	//	logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+	//	return nil, 0, err
+	//}
 
 	var TaskSketches []*http_model.SpecialTaskSketch
 	var taskSketches []*http_model.SpecialTaskSketchInfo

+ 27 - 12
db/task.go

@@ -219,7 +219,7 @@ func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, p
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(conditions).Elem()
 	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
+	var platformNickname string = ""
 	for i := 0; i < conditionType.NumField(); i++ {
 		field := conditionType.Field(i)
 		tag := field.Tag.Get("condition")
@@ -234,7 +234,7 @@ func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, p
 			continue
 		} else if !util.IsBlank(value) {
 			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				platformNickname = fmt.Sprintf("%v", value.Interface())
 				continue
 			} else if tag == "project_id" {
 				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
@@ -251,26 +251,34 @@ func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, p
 	}
 	db.Order("task_id").Find(&taskInfos)
 
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
+	talentInfoTophoneMap := make(map[string]string)
+	for _, taskInfo := range taskInfos {
+		if _, ok := talentInfoTophoneMap[taskInfo.TalentID]; !ok {
+			phone := GetPhoneFromTalentId(ctx, taskInfo.TalentID)
+			talentInfoTophoneMap[taskInfo.TalentID] = phone
+		}
 	}
 
+	//// 查询该页数据
+	//limit := pageSize
+	//offset := pageSize * pageNum // assert pageNum start with 0
+	//err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	//if err != nil {
+	//	logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+	//	return nil, 0, err
+	//}
+
 	var taskDatas []*http_model.SpecialTaskInviteInfo
 	var newTaskDatas []*http_model.SpecialTaskInviteInfo
 
 	taskDatas = pack.YoungeeTaskInfoToSpecialTaskInviteInfo(taskInfos)
 
 	for _, v := range taskDatas {
-		if platform_nickname == "" {
+		if platformNickname == "" {
 			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+		} else if strings.Contains(v.PlatformNickname, platformNickname) {
 			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
+		} else if strings.Contains(conv.MustString(v.TaskID), platformNickname) {
 			newTaskDatas = append(newTaskDatas, v)
 		} else {
 			totalTask--
@@ -279,6 +287,13 @@ func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, p
 	return newTaskDatas, totalTask, nil
 }
 
+func GetPhoneFromTalentId(ctx context.Context, talentId string) string {
+	db := GetReadDB(ctx)
+	var Phone string
+	db.Model(&gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", talentId).Find(&Phone)
+	return Phone
+}
+
 func SetTalentIncome(ctx context.Context, TaskIDs []string) error {
 	db := GetReadDB(ctx)
 	var TaskInfoList []gorm_model.YoungeeTaskInfo

+ 4 - 0
handler/SpecialTaskSketchList.go

@@ -36,12 +36,15 @@ type SpecialTaskSketchListHandler struct {
 func (h *SpecialTaskSketchListHandler) getRequest() interface{} {
 	return h.req
 }
+
 func (h *SpecialTaskSketchListHandler) getContext() *gin.Context {
 	return h.ctx
 }
+
 func (h *SpecialTaskSketchListHandler) getResponse() interface{} {
 	return h.resp
 }
+
 func (h *SpecialTaskSketchListHandler) run() {
 	conditions := pack.HttpSpecialTaskSketchListRequestToCondition(h.req)
 	data, err := service.SpecialTask.GetSpecialTaskSketchList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
@@ -52,6 +55,7 @@ func (h *SpecialTaskSketchListHandler) run() {
 	}
 	h.resp.Data = data
 }
+
 func (h *SpecialTaskSketchListHandler) checkParam() error {
 	var errs []error
 	if h.req.PageNum < 0 || h.req.PageSize <= 0 {

+ 2 - 0
model/http_model/SpecialTaskDataList.go

@@ -26,6 +26,7 @@ type SpecialTaskDataPreview struct {
 	PhotoUrl         string  `json:"photo_url"`         // 数据截图url
 	AllPayment       float64 `json:"all_payment"`       // 企业支付
 	RealPayment      float64 `json:"real_payment"`      // 企业实际支付(扣除违约扣款)
+	Phone            string  `json:"phone"`             // 联系方式
 	SubmitAt         string  `json:"submit_at"`         // 提交时间
 	AgreeAt          string  `json:"agree_at"`          // 同意时间
 	ReviseOpinion    string  `json:"revise_opinion"`    // 审稿意见
@@ -45,6 +46,7 @@ type SpecialTaskDataInfo struct {
 	AllPayment       float64   `json:"all_payment"`       // 企业支付
 	RealPayment      float64   `json:"real_payment"`      // 企业实际支付(扣除违约扣款)
 	ReviseOpinion    string    `json:"revise_opinion"`    // 审稿意见
+	Phone            string    `json:"phone"`             // 联系方式
 	CreateAt         time.Time `json:"create_at"`         // 创建时间
 	SubmitAt         time.Time `json:"submit_at"`         // 提交时间
 	AgreeAt          time.Time `json:"agree_at"`          // 同意时间

+ 2 - 0
model/http_model/SpecialTaskFinishDataList.go

@@ -23,6 +23,7 @@ type SpecialTaskFinishDataPreview struct {
 	CollectNumber    int     `json:"collect_number"`    // 收藏数
 	PhotoUrl         string  `json:"photo_url"`         // 数据截图url
 	RealPayment      float64 `json:"real_payment"`      // 企业实际支付(扣除违约扣款)
+	Phone            string  `json:"phone"`             // 联系方式
 	SubmitAt         string  `json:"submit_at"`         // 提交时间
 	LinkUrl          string  `json:"link_url"`          // 上传链接url
 }
@@ -39,6 +40,7 @@ type SpecialTaskFinishDataInfo struct {
 	PhotoUrl         string    `json:"photo_url"`         // 数据截图url
 	RealPayment      float64   `json:"real_payment"`      // 企业实际支付(扣除违约扣款)
 	LinkUrl          string    `json:"link_url"`          // 上传链接url
+	Phone            string    `json:"phone"`             // 联系方式
 	SubmitAt         time.Time `json:"submit_at"`         // 提交时间
 }
 

+ 2 - 0
model/http_model/SpecialTaskInviteList.go

@@ -23,6 +23,7 @@ type SpecialTaskInvitePreview struct {
 	TaskReward         string `json:"task_reward"`           // 任务奖励金额
 	HomePageUrl        string `json:"home_page_url"`         // 主页链接
 	TaskStatus         string `json:"task_status"`           // 任务状态
+	Phone              string `json:"phone"`                 // 联系方式
 	CreateDate         string `json:"create_date"`           // 创建时间
 }
 
@@ -35,6 +36,7 @@ type SpecialTaskInviteInfo struct {
 	TaskReward         float64   `json:"task_reward"`           // 任务奖励金额
 	HomePageUrl        string    `json:"home_page_url"`         // 主页链接
 	TaskStatus         string    `json:"task_status"`           // 任务状态 1待选 2已选 3落选
+	Phone              string    `json:"phone"`                 // 联系方式
 	CreateDate         time.Time `json:"create_date"`           // 创建时间
 }
 

+ 2 - 0
model/http_model/SpecialTaskLinkList.go

@@ -20,6 +20,7 @@ type SpecialTaskLinkPreview struct {
 	FansCount        string `json:"fans_count"`        // 粉丝数
 	LinkUrl          string `json:"link_url"`          // 上传链接url
 	PhotoUrl         string `json:"photo_url"`         // 上传截图url
+	Phone            string `json:"phone"`             // 联系方式
 	Submit           string `json:"link_upload_time"`  // 创建时间
 	AgreeAt          string `json:"agree_at"`          // 同意时间
 	ReviseOpinion    string `json:"revise_opinion"`    // 审稿意见
@@ -33,6 +34,7 @@ type SpecialTaskLinkInfo struct {
 	LinkUrl          string    `json:"link_url"`          // 上传链接url
 	PhotoUrl         string    `json:"photo_url"`         // 上传截图url
 	ReviseOpinion    string    `json:"revise_opinion"`    // 审稿意见
+	Phone            string    `json:"phone"`             // 联系方式
 	CreateAt         time.Time `json:"create_at"`         // 创建时间
 	SubmitAt         time.Time `json:"submit_at"`         // 提交时间
 	AgreeAt          time.Time `json:"agree_at"`          // 同意时间

+ 2 - 0
model/http_model/SpecialTaskScriptList.go

@@ -18,6 +18,7 @@ type SpecialTaskScriptPreview struct {
 	TaskID           string `json:"task_id"`            // 任务ID
 	PlatformNickname string `json:"platform_nickname"`  // 账号昵称
 	FansCount        string `json:"fans_count"`         // 粉丝数
+	Phone            string `json:"phone"`              // 联系方式
 	Submit           string `json:"script_upload_time"` //创建时间
 	Title            string `json:"title"`              //脚本标题
 	AgreeAt          string `json:"agree_at"`           //同意时间
@@ -33,6 +34,7 @@ type SpecialTaskScriptInfo struct {
 	Title            string    `json:"title"`             //脚本标题
 	Content          string    `json:"content"`           //脚本内容
 	ReviseOpinion    string    `json:"revise_opinion"`    //审稿意见
+	Phone            string    `json:"phone"`             // 联系方式
 	CreateAt         time.Time `json:"create_at"`         //创建时间
 	SubmitAt         time.Time `json:"submit_at"`         // 提交时间
 	AgreeAt          time.Time `json:"agree_at"`          //同意时间

+ 2 - 0
model/http_model/SpecialTaskSketchList.go

@@ -19,6 +19,7 @@ type SpecialTaskSketchPreview struct {
 	SketchID         string `json:"sketch_id"`          // 初稿ID
 	PlatformNickname string `json:"platform_nickname"`  // 账号昵称
 	FansCount        string `json:"fans_count"`         // 粉丝数
+	Phone            string `json:"phone"`              // 联系方式
 	Submit           string `json:"sketch_upload_time"` // 创建时间
 	AgreeAt          string `json:"argee_at"`           // 同意时间
 	Title            string `json:"title"`              // 初稿标题
@@ -34,6 +35,7 @@ type SpecialTaskSketchInfo struct {
 	Title            string    `json:"title"`             //初稿标题
 	Content          string    `json:"content"`           //初稿内容
 	ReviseOpinion    string    `json:"revise_opinion"`    //审稿意见
+	Phone            string    `json:"phone"`             // 联系方式
 	CreateAt         time.Time `json:"create_at"`         //创建时间
 	SubmitAt         time.Time `json:"submit_at"`         // 提交时间
 	AgreeAt          time.Time `json:"agree_at"`          //同意时间

+ 3 - 0
pack/special_task_data_list.go

@@ -31,6 +31,7 @@ func MGormSpecialTaskDataInfoToHttpSpecialTaskDataPreview(SpecialTaskDataInfo *h
 		AllPayment:       SpecialTaskDataInfo.AllPayment,
 		RealPayment:      SpecialTaskDataInfo.RealPayment,
 		ReviseOpinion:    SpecialTaskDataInfo.ReviseOpinion,
+		Phone:            SpecialTaskDataInfo.Phone,
 		SubmitAt:         conv.MustString(SpecialTaskDataInfo.SubmitAt)[0:19],
 		AgreeAt:          conv.MustString(SpecialTaskDataInfo.AgreeAt)[0:19],
 	}
@@ -47,6 +48,7 @@ func SpecialTaskDataToTaskInfo(SpecialTaskDatas []*http_model.SpecialTaskData) [
 
 func GetSpecialTaskDataInfoStruct(SpecialTaskData *http_model.SpecialTaskData) *http_model.SpecialTaskDataInfo {
 	TalentPlatformInfoSnap := SpecialTaskData.Talent.TalentPlatformInfoSnap
+	TalentPersonalInfoSnap := SpecialTaskData.Talent.TalentPersonalInfoSnap
 	return &http_model.SpecialTaskDataInfo{
 		TaskID:           SpecialTaskData.Talent.TaskID,
 		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
@@ -63,6 +65,7 @@ func GetSpecialTaskDataInfoStruct(SpecialTaskData *http_model.SpecialTaskData) *
 		ReviseOpinion:    SpecialTaskData.Data.ReviseOpinion,
 		CreateAt:         SpecialTaskData.Data.CreateAt,
 		SubmitAt:         SpecialTaskData.Data.SubmitAt,
+		Phone:            conv.MustString(gjson.Get(TalentPersonalInfoSnap, "talent_phone_number")),
 		AgreeAt:          SpecialTaskData.Data.AgreeAt,
 		RejectAt:         SpecialTaskData.Data.RejectAt,
 		IsReview:         SpecialTaskData.Data.IsReview,

+ 3 - 0
pack/special_task_finishdata_list.go

@@ -29,6 +29,7 @@ func MGormSpecialTaskFinishDataInfoToHttpSpecialTaskFinishDataPreview(SpecialTas
 		RealPayment:      SpecialTaskFinishDataInfo.RealPayment,
 		PhotoUrl:         SpecialTaskFinishDataInfo.PhotoUrl,
 		LinkUrl:          SpecialTaskFinishDataInfo.LinkUrl,
+		Phone:            SpecialTaskFinishDataInfo.Phone,
 		SubmitAt:         conv.MustString(SpecialTaskFinishDataInfo.SubmitAt)[0:19],
 	}
 }
@@ -44,6 +45,7 @@ func SpecialTaskFinishDataToTaskInfo(SpecialTaskFinishDatas []*http_model.Specia
 
 func GetSpecialTaskFinishDataInfoStruct(SpecialTaskFinishData *http_model.SpecialTaskFinishData) *http_model.SpecialTaskFinishDataInfo {
 	TalentPlatformInfoSnap := SpecialTaskFinishData.Talent.TalentPlatformInfoSnap
+	TalentPersonalInfoSnap := SpecialTaskFinishData.Talent.TalentPersonalInfoSnap
 	return &http_model.SpecialTaskFinishDataInfo{
 		TaskID:           SpecialTaskFinishData.Talent.TaskID,
 		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
@@ -55,6 +57,7 @@ func GetSpecialTaskFinishDataInfoStruct(SpecialTaskFinishData *http_model.Specia
 		RealPayment:      SpecialTaskFinishData.Talent.RealPayment,
 		PhotoUrl:         SpecialTaskFinishData.Data.PhotoUrl,
 		LinkUrl:          SpecialTaskFinishData.Link.LinkUrl,
+		Phone:            conv.MustString(gjson.Get(TalentPersonalInfoSnap, "talent_phone_number")),
 		SubmitAt:         SpecialTaskFinishData.Data.SubmitAt,
 	}
 }

+ 4 - 2
pack/special_task_invite_list.go

@@ -1,7 +1,6 @@
 package pack
 
 import (
-	"fmt"
 	"youngee_b_api/model/gorm_model"
 	"youngee_b_api/model/http_model"
 
@@ -30,6 +29,7 @@ func GormFullProjectToHttpSpecialTaskInvitePreview(projectTaskInfo *http_model.S
 		TaskReward:         conv.MustString(projectTaskInfo.TaskReward),
 		HomePageUrl:        conv.MustString(projectTaskInfo.HomePageUrl),
 		TaskStatus:         conv.MustString(projectTaskInfo.TaskStatus),
+		Phone:              projectTaskInfo.Phone,
 		CreateDate:         createDate,
 	}
 }
@@ -45,12 +45,14 @@ func YoungeeTaskInfoToSpecialTaskInviteInfo(taskAccounts []gorm_model.YoungeeTas
 
 func GetSpecialTaskInviteInfoStruct(taskAccount gorm_model.YoungeeTaskInfo) *http_model.SpecialTaskInviteInfo {
 	TalentPlatformInfoSnap := taskAccount.TalentPlatformInfoSnap
-	fmt.Printf("任务-账户关联 %+v", taskAccount)
+	TalentPersonalInfoSnap := taskAccount.TalentPersonalInfoSnap
+	//fmt.Printf("任务-账户关联 %+v", taskAccount)
 	return &http_model.SpecialTaskInviteInfo{
 		TaskID:             taskAccount.TaskID,
 		TaskReward:         taskAccount.TaskReward,
 		AllPayment:         taskAccount.AllPayment,
 		PlatformNickname:   conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
+		Phone:              conv.MustString(gjson.Get(TalentPersonalInfoSnap, "talent_phone_number")),
 		CreateDate:         taskAccount.CreateDate,
 		HomePageUrl:        conv.MustString(gjson.Get(TalentPlatformInfoSnap, "home_page_url")),
 		HomePageCaptureUrl: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "home_page_capture_url")),

+ 3 - 0
pack/special_task_link_list.go

@@ -25,6 +25,7 @@ func MGormSpecialTaskLinkInfoToHttpSpecialTaskLinkPreview(SpecialTaskLinkInfo *h
 		PhotoUrl:         SpecialTaskLinkInfo.PhotoUrl,
 		LinkUrl:          SpecialTaskLinkInfo.LinkUrl,
 		ReviseOpinion:    SpecialTaskLinkInfo.ReviseOpinion,
+		Phone:            SpecialTaskLinkInfo.Phone,
 		Submit:           conv.MustString(SpecialTaskLinkInfo.SubmitAt)[0:19],
 		AgreeAt:          conv.MustString(SpecialTaskLinkInfo.AgreeAt)[0:19],
 	}
@@ -41,6 +42,7 @@ func SpecialTaskLinkToTaskInfo(SpecialTaskLinks []*http_model.SpecialTaskLink) [
 
 func GetSpecialTaskLinkInfoStruct(SpecialTaskLink *http_model.SpecialTaskLink) *http_model.SpecialTaskLinkInfo {
 	TalentPlatformInfoSnap := SpecialTaskLink.Talent.TalentPlatformInfoSnap
+	TalentPersonalInfoSnap := SpecialTaskLink.Talent.TalentPersonalInfoSnap
 	return &http_model.SpecialTaskLinkInfo{
 		TaskID:           SpecialTaskLink.Talent.TaskID,
 		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
@@ -52,6 +54,7 @@ func GetSpecialTaskLinkInfoStruct(SpecialTaskLink *http_model.SpecialTaskLink) *
 		CreateAt:         SpecialTaskLink.Link.CreateAt,
 		SubmitAt:         SpecialTaskLink.Link.SubmitAt,
 		AgreeAt:          SpecialTaskLink.Link.AgreeAt,
+		Phone:            conv.MustString(gjson.Get(TalentPersonalInfoSnap, "talent_phone_number")),
 		RejectAt:         SpecialTaskLink.Link.RejectAt,
 		IsReview:         SpecialTaskLink.Link.IsReview,
 	}

+ 3 - 0
pack/special_task_script_list.go

@@ -25,6 +25,7 @@ func MGormSpecialTaskScriptInfoToHttpSpecialTaskScriptPreview(SpecialTaskScriptI
 		Title:            SpecialTaskScriptInfo.Title,
 		Content:          SpecialTaskScriptInfo.Content,
 		ReviseOpinion:    SpecialTaskScriptInfo.ReviseOpinion,
+		Phone:            SpecialTaskScriptInfo.Phone,
 		Submit:           conv.MustString(SpecialTaskScriptInfo.SubmitAt)[0:19],
 		AgreeAt:          conv.MustString(SpecialTaskScriptInfo.AgreeAt)[0:19],
 	}
@@ -41,6 +42,7 @@ func SpecialTaskScriptToTaskInfo(SpecialTaskScripts []*http_model.SpecialTaskScr
 
 func GetSpecialTaskScriptInfoStruct(SpecialTaskScript *http_model.SpecialTaskScript) *http_model.SpecialTaskScriptInfo {
 	TalentPlatformInfoSnap := SpecialTaskScript.Talent.TalentPlatformInfoSnap
+	TalentPersonalInfoSnap := SpecialTaskScript.Talent.TalentPersonalInfoSnap
 	return &http_model.SpecialTaskScriptInfo{
 		TaskID:           SpecialTaskScript.Talent.TaskID,
 		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
@@ -52,6 +54,7 @@ func GetSpecialTaskScriptInfoStruct(SpecialTaskScript *http_model.SpecialTaskScr
 		CreateAt:         SpecialTaskScript.Script.CreateAt,
 		SubmitAt:         SpecialTaskScript.Script.SubmitAt,
 		AgreeAt:          SpecialTaskScript.Script.AgreeAt,
+		Phone:            conv.MustString(gjson.Get(TalentPersonalInfoSnap, "talent_phone_number")),
 		RejectAt:         SpecialTaskScript.Script.RejectAt,
 		IsReview:         SpecialTaskScript.Script.IsReview,
 	}

+ 3 - 0
pack/special_task_sketch_list.go

@@ -25,6 +25,7 @@ func MGormSpecialTaskSketchInfoToHttpSpecialTaskSketchPreview(SpecialTaskSketchI
 		Title:            SpecialTaskSketchInfo.Title,
 		Content:          SpecialTaskSketchInfo.Content,
 		ReviseOpinion:    SpecialTaskSketchInfo.ReviseOpinion,
+		Phone:            SpecialTaskSketchInfo.Phone,
 		Submit:           conv.MustString(SpecialTaskSketchInfo.SubmitAt)[0:19],
 		AgreeAt:          conv.MustString(SpecialTaskSketchInfo.AgreeAt)[0:19],
 	}
@@ -41,6 +42,7 @@ func SpecialTaskSketchToTaskInfo(SpecialTaskSketchs []*http_model.SpecialTaskSke
 
 func GetSpecialTaskSketchInfoStruct(SpecialTaskSketch *http_model.SpecialTaskSketch) *http_model.SpecialTaskSketchInfo {
 	TalentPlatformInfoSnap := SpecialTaskSketch.Talent.TalentPlatformInfoSnap
+	TalentPersonalInfoSnap := SpecialTaskSketch.Talent.TalentPersonalInfoSnap
 	return &http_model.SpecialTaskSketchInfo{
 		TaskID:           SpecialTaskSketch.Talent.TaskID,
 		PlatformNickname: conv.MustString(gjson.Get(TalentPlatformInfoSnap, "platform_nickname")),
@@ -51,6 +53,7 @@ func GetSpecialTaskSketchInfoStruct(SpecialTaskSketch *http_model.SpecialTaskSke
 		ReviseOpinion:    SpecialTaskSketch.Sketch.ReviseOpinion,
 		CreateAt:         SpecialTaskSketch.Sketch.CreateAt,
 		SubmitAt:         SpecialTaskSketch.Sketch.SubmitAt,
+		Phone:            conv.MustString(gjson.Get(TalentPersonalInfoSnap, "talent_phone_number")),
 		AgreeAt:          SpecialTaskSketch.Sketch.AgreeAt,
 		RejectAt:         SpecialTaskSketch.Sketch.RejectAt,
 		IsReview:         SpecialTaskSketch.Sketch.IsReview,