Xingyu Xian 19 시간 전
부모
커밋
3075fff135

+ 86 - 0
db/local_life_task.go

@@ -222,3 +222,89 @@ func CountLocalTaskNumByTaskStage(ctx context.Context, taskStage int, supplierSt
 	}
 	return taskNum, nil
 }
+
+// CountLocalTaskNumByTaskStageAndOpenId 根据子任务状态和openId查找对应的种草子任务数量
+func CountLocalTaskNumByTaskStageAndOpenId(ctx context.Context, taskStage int, openId string) (int64, error) {
+	db := GetReadDB(ctx)
+	var taskNum int64
+	if taskStage == 0 && openId != "" {
+		err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("open_id = ?", openId).Count(&taskNum).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+			return 0, err
+		}
+	} else if taskStage != 0 && openId != "" {
+		err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_stage = ? and open_id = ?", taskStage, openId).Count(&taskNum).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+			return 0, err
+		}
+	}
+	return taskNum, nil
+}
+
+// GetLocalTaskListByOpenId 根据OpenId查询达人全部本地生活子任务
+func GetLocalTaskListByOpenId(ctx context.Context, openId string, orderBy []string, orderDesc []string, pageNum int64, pageSize int64) ([]gorm_model.YoungeeLocalTaskInfo, int64, error) {
+	db := GetReadDB(ctx).Model(&gorm_model.YoungeeLocalTaskInfo{})
+
+	// 基础查询条件
+	db = db.Where("open_id = ? and task_status = 2 and task_stage = 15", openId)
+
+	// 动态排序逻辑
+	if len(orderBy) > 0 && len(orderDesc) > 0 && len(orderBy) == len(orderDesc) {
+		for i := 0; i < len(orderBy); i++ {
+			orderField := orderBy[i]
+			isDesc := strings.ToLower(orderDesc[i]) == "desc" // 不区分大小写判断
+
+			switch orderField {
+			case "view_avg":
+				if isDesc {
+					db = db.Order("view_avg desc")
+				} else {
+					db = db.Order("view_avg asc")
+				}
+			case "vote_avg":
+				if isDesc {
+					db = db.Order("vote_avg desc")
+				} else {
+					db = db.Order("vote_avg asc")
+				}
+			case "commit_avg":
+				if isDesc {
+					db = db.Order("commit_avg desc")
+				} else {
+					db = db.Order("commit_avg asc")
+				}
+			case "collect_avg":
+				if isDesc {
+					db = db.Order("collect_avg desc")
+				} else {
+					db = db.Order("collect_avg asc")
+				}
+			}
+		}
+	} else {
+		// 默认排序
+		db = db.Order("task_id desc")
+	}
+
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[YoungeeLocalTaskInfo] count error, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// 分页查询
+	var tasks []gorm_model.YoungeeLocalTaskInfo
+	if pageSize > 0 {
+		offset := pageSize * (pageNum - 1) // 假设pageNum从1开始
+		db = db.Limit(int(pageSize)).Offset(int(offset))
+	}
+
+	if err := db.Find(&tasks).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskListByOpenId] query error, err:%+v", err)
+		return nil, 0, err
+	}
+	return tasks, total, nil
+}

+ 20 - 0
db/task.go

@@ -532,3 +532,23 @@ func GetTaskListByOpenId(ctx context.Context, openId string, orderBy []string, o
 	}
 	return tasks, total, nil
 }
+
+// CountTaskNumByTaskStageAndOpenId 根据子任务状态和openId查找对应的种草子任务数量
+func CountTaskNumByTaskStageAndOpenId(ctx context.Context, taskStage int, openId string) (int64, error) {
+	db := GetReadDB(ctx)
+	var taskNum int64
+	if taskStage == 0 && openId != "" {
+		err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("open_id = ?", openId).Count(&taskNum).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+			return 0, err
+		}
+	} else if taskStage != 0 && openId != "" {
+		err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_stage = ? and open_id = ?", taskStage, openId).Count(&taskNum).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+			return 0, err
+		}
+	}
+	return taskNum, nil
+}

+ 5 - 4
model/http_model/talent_cooperate_data.go

@@ -2,13 +2,14 @@ package http_model
 
 type TalentCooperateDataRequest struct {
 	PlatformUserId int `json:"platform_user_id"` // 平台用户ID
+	TaskType       int `json:"task_type"`        // 任务类型,1种草,2本地生活
 }
 
 type TalentCooperateData struct {
-	VoteTaskNum     int `json:"vote_task_num"`     // 报名任务数
-	SelectedTaskNum int `json:"selected_task_num"` // 选中任务数
-	TaskingNum      int `json:"tasking_num"`       // 进行中任务数
-	FinishTaskNum   int `json:"finish_task_num"`   // 完成任务数
+	VoteTaskNum     int64 `json:"vote_task_num"`     // 报名任务数
+	SelectedTaskNum int64 `json:"selected_task_num"` // 选中任务数
+	TaskingNum      int64 `json:"tasking_num"`       // 进行中任务数
+	FinishTaskNum   int64 `json:"finish_task_num"`   // 完成任务数
 }
 
 func NewTalentCooperateDataRequest() *TalentCooperateDataRequest {

+ 6 - 4
model/http_model/talent_local_list.go

@@ -1,10 +1,12 @@
 package http_model
 
 type TalentLocalListRequest struct {
-	PageSize       int64  `json:"page_size"`
-	PageNum        int64  `json:"page_num"`
-	PlatformUserId int    `json:"platform_user_id"` // 平台用户ID
-	Nickname       string `json:"nickname"`         // 昵称
+	PageSize       int64    `json:"page_size"`
+	PageNum        int64    `json:"page"`
+	PlatformUserId int      `json:"platform_user_id"` // 平台用户ID
+	Nickname       string   `json:"nickname"`         // 昵称
+	OrderBy        []string `json:"order_by"`         // 排序条件 view_avg,vote_avg,commit_avg,collect_avg
+	OrderDesc      []string `json:"order_desc"`       // 是否降序 1是,2否
 }
 
 type TalentLocalListData struct {

+ 3 - 1
model/http_model/talent_project_list.go

@@ -2,9 +2,11 @@ package http_model
 
 type TalentProjectListRequest struct {
 	PageSize       int64    `json:"page_size"`
-	PageNum        int64    `json:"page_num"`
+	PageNum        int64    `json:"page"`
 	PlatformUserId int      `json:"platform_user_id"` // 平台用户ID
 	ProjectName    string   `json:"nickname"`         // 任务标题
+	SupplierId     int      `json:"supplier_id"`      // 服务商ID
+	CooperateType  int      `json:"cooperate_type"`   // 1全部,2本账号相关
 	OrderBy        []string `json:"order_by"`         // 排序条件 view_avg,vote_avg,commit_avg,collect_avg
 	OrderDesc      []string `json:"order_desc"`       // 是否降序 1是,2否
 }

+ 104 - 1
service/s_t_cooperate.go

@@ -228,6 +228,49 @@ func (*stcooperate) CountTalentTaskNum(ctx context.Context, request *http_model.
 		return nil, platformUserErr
 	}
 	if platformUserInfo != nil {
+		if request.TaskType == 1 {
+			// 报名数量
+			voteTaskNum, voteTaskNumErr := db.CountTaskNumByTaskStageAndOpenId(ctx, 0, platformUserInfo.OpenId)
+			if voteTaskNumErr != nil {
+				return nil, voteTaskNumErr
+			}
+			cooperateData.VoteTaskNum = voteTaskNum
+			// 被选中任务数量
+			selectedTaskNum, selectedTaskNumErr := db.CountTaskNumByTaskStageAndOpenId(ctx, 4, platformUserInfo.OpenId)
+			if selectedTaskNumErr != nil {
+				return nil, selectedTaskNumErr
+			}
+			cooperateData.SelectedTaskNum = selectedTaskNum
+			// 已完成任务数量
+			finishTaskNum, finishTaskNumErr := db.CountTaskNumByTaskStageAndOpenId(ctx, 15, platformUserInfo.OpenId)
+			if finishTaskNumErr != nil {
+				return nil, finishTaskNumErr
+			}
+			cooperateData.FinishTaskNum = finishTaskNum
+			// 进行中任务数量
+			cooperateData.TaskingNum = voteTaskNum - selectedTaskNum - finishTaskNum
+		} else if request.TaskType == 2 {
+			// 报名数量
+			voteTaskNum, voteTaskNumErr := db.CountLocalTaskNumByTaskStageAndOpenId(ctx, 0, platformUserInfo.OpenId)
+			if voteTaskNumErr != nil {
+				return nil, voteTaskNumErr
+			}
+			cooperateData.VoteTaskNum = voteTaskNum
+			// 被选中任务数量
+			selectedTaskNum, selectedTaskNumErr := db.CountLocalTaskNumByTaskStageAndOpenId(ctx, 4, platformUserInfo.OpenId)
+			if selectedTaskNumErr != nil {
+				return nil, selectedTaskNumErr
+			}
+			cooperateData.SelectedTaskNum = selectedTaskNum
+			// 已完成任务数量
+			finishTaskNum, finishTaskNumErr := db.CountLocalTaskNumByTaskStageAndOpenId(ctx, 15, platformUserInfo.OpenId)
+			if finishTaskNumErr != nil {
+				return nil, finishTaskNumErr
+			}
+			cooperateData.FinishTaskNum = finishTaskNum
+			// 进行中任务数量
+			cooperateData.TaskingNum = voteTaskNum - selectedTaskNum - finishTaskNum
+		}
 	}
 	return cooperateData, nil
 }
@@ -301,8 +344,67 @@ func (*stcooperate) GetTalentProjectList(ctx context.Context, request *http_mode
 
 // GetTalentLocalList 达人本地表现
 func (*stcooperate) GetTalentLocalList(ctx context.Context, request *http_model.TalentLocalListRequest) (*http_model.TalentLocalListData, error) {
+	// 1. 查询openId
+	var projectTasks *http_model.TalentLocalListData
+	projectTasks = &http_model.TalentLocalListData{}
+	platformUserInfo, platformUserErr := db.FindUserInfoById(ctx, request.PlatformUserId)
+	if platformUserErr != nil {
+		return nil, platformUserErr
+	}
+	if platformUserInfo != nil {
+		projectTaskInfo, total, projectTaskInfoErr := db.GetLocalTaskListByOpenId(ctx, platformUserInfo.OpenId, request.OrderBy, request.OrderDesc, request.PageNum-1, request.PageSize)
+		if projectTaskInfoErr != nil {
+			projectTasks.Total = 0
+			return nil, projectTaskInfoErr
+		}
+		if projectTaskInfo != nil {
+			projectTasks.Total = total
+			for _, task := range projectTaskInfo {
+				var projectTask *http_model.TalentLocalData
+				projectTask = &http_model.TalentLocalData{}
+				projectTask.ReadNum = 0
+				projectTask.VoteNum = task.VoteAvg
+				projectTask.CollectNum = task.CommitAvg
+				projectTask.CommitNum = task.CommitAvg
+
+				// 本地生活任务信息
+				projectInfo, projectInfoErr := db.GetLocalLifeDetail(ctx, task.LocalID)
+				if projectInfoErr != nil {
+					return nil, projectInfoErr
+				}
+				if projectInfo != nil {
+					projectTask.LocalName = projectInfo.LocalName
+
+					// 门店信息
+					productInfo, productInfoErr := db.FindStoreById(ctx, projectInfo.StoreId)
+					if productInfoErr != nil {
+						return nil, productInfoErr
+					}
+					if productInfo != nil {
+						projectTask.StoreId = productInfo.StoreId
+						projectTask.StoreName = productInfo.StoreName
+					}
 
-	return nil, nil
+					// 门店图片
+					productPhotoInfo, productPhotoErr := db.GetStorePhotoByStoreID(ctx, projectInfo.StoreId)
+					if productPhotoErr != nil {
+						return nil, productPhotoErr
+					}
+					if productPhotoInfo != nil {
+						for _, photo := range productPhotoInfo {
+							if photo.Symbol == 1 {
+								projectTask.StoreMainPhotoSymbol = 1
+								projectTask.StoreMainPhotoUrl = photo.PhotoUrl
+								projectTask.StoreMainPhotoUid = photo.PhotoUid
+							}
+						}
+					}
+				}
+				projectTasks.TalentLocalDataListInfo = append(projectTasks.TalentLocalDataListInfo, projectTask)
+			}
+		}
+	}
+	return projectTasks, nil
 }
 
 // GetHistoryDataList 历史作品列表
@@ -340,6 +442,7 @@ func (*stcooperate) GetHistoryDataList(ctx context.Context, request *http_model.
 					historyResp.CommitCount = history.Likes
 					historyResp.CommitCount = history.Comments
 					historyResp.CreatedAt = history.CreatedAt
+					historyResp.Name = history.Text
 					historyRespList.TalentLocalDataListInfo = append(historyRespList.TalentLocalDataListInfo, historyResp)
 				}
 			}

+ 3 - 0
service/talent_platform_link_info.go

@@ -260,6 +260,7 @@ type WeiboPostsResponse struct {
 type WeiboPostStats struct {
 	Id            string `json:"id"`
 	CreatedAt     string `json:"created_at"`
+	Text          string `json:"text"`            // 名称
 	Likes         int    `json:"likes"`           // 点赞数
 	Comments      int    `json:"comments"`        // 评论数
 	Reposts       int    `json:"reposts"`         // 转发数
@@ -291,6 +292,7 @@ func parseWeiboPosts(body []byte) ([]WeiboPostStats, error) {
 
 		posts = append(posts, WeiboPostStats{
 			Id:            mblog.Id,
+			Text:          mblog.Text,
 			CreatedAt:     mblog.CreatedAt,
 			Likes:         mblog.AttitudesCount,
 			Comments:      mblog.CommentsCount,
@@ -301,6 +303,7 @@ func parseWeiboPosts(body []byte) ([]WeiboPostStats, error) {
 			VideoUrl:      mblog.PageInfo.MediaInfo.StreamUrl,
 		})
 	}
+	//fmt.Println(posts)
 	return posts, nil
 }