Ethan 4 ay önce
ebeveyn
işleme
da36ab1ab5

+ 8 - 2
app/dao/local_life_dao.go

@@ -115,8 +115,14 @@ func (d LocalLifeDao) GetLocalPreviews(param *vo.LocalSearchParam) ([]vo.ReLocal
 	query.Count(&total)
 	query = query.Select("enterprise_id, sub_account_id, local_id, local_platform, task_status, estimated_cost, task_form, content_type, need_review, need_quality, need_calculate, store_id, team_buying_id, tools")
 	offset := (param.Page - 1) * param.PageSize
-	if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&localLifes).Error; err != nil {
-		return nil, 0, err
+	if param.Order == 1 {
+		if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&localLifes).Error; err != nil {
+			return nil, 0, err
+		}
+	} else {
+		if err := query.Order("created_at desc").Offset(offset).Limit(param.PageSize).Find(&localLifes).Error; err != nil {
+			return nil, 0, err
+		}
 	}
 	for _, localLife := range localLifes {
 		reLocalTaskPreview := vo.ReLocalTaskPreview{

+ 1 - 1
app/dao/product_photo_dao.go

@@ -8,7 +8,7 @@ import (
 type ProductPhotoDAO struct{}
 
 func (d ProductPhotoDAO) CreateProductPhoto(productPhotos []entity.ProductPhoto) error {
-	err := Db.Create(&productPhotos).Error
+	err := Db.Debug().Create(&productPhotos).Error
 	if err != nil {
 		return err
 	}

+ 8 - 2
app/dao/project_dao.go

@@ -115,8 +115,14 @@ func (d ProjectDAO) GetProjectPreviews(param *vo.ProjectSearchParam) ([]vo.RePro
 	query.Count(&total)
 	query = query.Select("enterprise_id, sub_account_id, project_id, project_platform, project_status, estimated_cost, project_form, content_type, need_review, need_quality, need_calculate, product_id, tools")
 	offset := (param.Page - 1) * param.PageSize
-	if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&projects).Error; err != nil {
-		return nil, 0, err
+	if param.Order == 1 {
+		if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&projects).Error; err != nil {
+			return nil, 0, err
+		}
+	} else {
+		if err := query.Order("created_at desc").Offset(offset).Limit(param.PageSize).Find(&projects).Error; err != nil {
+			return nil, 0, err
+		}
 	}
 	for _, project := range projects {
 		reProjectTaskPreview := vo.ReProjectTaskPreview{

+ 11 - 3
app/dao/selection_info_dao.go

@@ -102,11 +102,18 @@ func (d SelectionInfoDAO) GetSelectionPreviews(param *vo.SelectionSearchParam) (
 		query = query.Where("selection_name LIKE ?", "%"+param.SelectionName+"%")
 	}
 	query.Count(&total)
-	query = query.Select("enterprise_id, sub_account_id, selection_id, platform, selection_status, created_at, task_ddl, sample_num, enroll_num, choose_num, product_id")
+	query = query.Select("enterprise_id, sub_account_id, selection_id, platform, selection_status, created_at, task_ddl, sample_num, enroll_num, choose_num, product_id, estimated_cost")
 	offset := (param.Page - 1) * param.PageSize
-	if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&selectionInfos).Error; err != nil {
-		return nil, 0, err
+	if param.Order == 1 {
+		if err := query.Order("selection_status desc").Order("task_ddl asc").Offset(offset).Limit(param.PageSize).Find(&selectionInfos).Error; err != nil {
+			return nil, 0, err
+		}
+	} else {
+		if err := query.Order("selection_status asc").Order("task_ddl desc").Offset(offset).Limit(param.PageSize).Find(&selectionInfos).Error; err != nil {
+			return nil, 0, err
+		}
 	}
+
 	for _, selectionInfo := range selectionInfos {
 		reSelectionTaskPreview := vo.ReSelectionTaskPreview{
 			EnterpriseId:      selectionInfo.EnterpriseID,
@@ -120,6 +127,7 @@ func (d SelectionInfoDAO) GetSelectionPreviews(param *vo.SelectionSearchParam) (
 			EnrollNum:         selectionInfo.EnrollNum,
 			ChooseNum:         selectionInfo.ChooseNum,
 			ProductId:         selectionInfo.ProductID,
+			Reward:            selectionInfo.EstimatedCost,
 		}
 		reSelectionTaskPreviews = append(reSelectionTaskPreviews, reSelectionTaskPreview)
 	}

+ 2 - 1
app/entity/project.go

@@ -6,7 +6,8 @@ import (
 )
 
 type Project struct {
-	ProjectId         string    `gorm:"column:project_id;primary_key;"`        // 项目id 项目ID生成规则:年(2位)+一年中的第几天(3位)+5位数随机数,雪花算法也可,生成10位订单号
+	ID                int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"`  // 种草主键ID
+	ProjectId         string    `gorm:"column:project_id"`                     // 项目id 项目ID生成规则:年(2位)+一年中的第几天(3位)+5位数随机数,雪花算法也可,生成10位订单号
 	ProjectName       string    `gorm:"column:project_name"`                   // 项目名称
 	ProjectStatus     int64     `gorm:"column:project_status"`                 // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
 	ProjectType       int64     `gorm:"column:project_type"`                   // 项目类型,1代表全流程项目,2代表专项项目

+ 39 - 38
app/entity/selection_info.go

@@ -7,44 +7,45 @@ import (
 )
 
 type SelectionInfo struct {
-	SelectionID      string    `gorm:"column:selection_id;primary_key"` // 选品项目id
-	SelectionName    string    `gorm:"column:selection_name"`           // 任务名称
-	EnterpriseID     string    `gorm:"column:enterprise_id"`            // 所属企业id
-	SubAccountId     int64     `gorm:"column:sub_account_id"`           // 子账号id
-	ProductID        int64     `gorm:"column:product_id"`               // 关联商品id
-	ProductCategory  string    `gorm:"column:product_category"`         // 商品类目1--20
-	SelectionStatus  int64     `gorm:"column:selection_status"`         // 选品项目状态,1-8分别代表创建中、待审核、审核通过、待支付、已支付、执行中、失效、已结案
-	Platform         int64     `gorm:"column:platform"`                 // 项目平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
-	SampleNum        int64     `gorm:"column:sample_num"`               // 样品数量
-	TaskDdl          time.Time `gorm:"column:task_ddl"`                 // 招募截止时间
-	ContentType      int64     `gorm:"column:content_type"`             // 内容形式,1代表图文,2代表视频,3代表直播
-	TaskMode         int64     `gorm:"column:task_mode"`                // 任务形式,1、2分别表示悬赏任务、纯佣带货
-	SampleMode       int64     `gorm:"column:sample_mode"`              // 领样形式,1、2分别表示免费领样、垫付领样
-	ProductUrl       string    `gorm:"column:product_url"`              // 带货链接
-	RemainNum        int64     `gorm:"column:remain_num"`               // 剩余数量
-	CommissionRate   float64   `gorm:"column:commission_rate"`          // 佣金比例
-	EstimatedCost    float64   `gorm:"column:estimated_cost"`           // 预估成本
-	TaskReward       float64   `gorm:"column:task_reward"`              // 任务悬赏
-	SampleCondition  string    `gorm:"column:sample_condition"`         // 领样条件
-	RewardCondition  string    `gorm:"column:reward_condition"`         // 返现悬赏条件
-	SettlementAmount float64   `gorm:"column:settlement_amount"`        // 结算金额
-	Detail           string    `gorm:"column:detail"`                   // 卖点总结
-	ProductSnap      string    `gorm:"column:product_snap"`             // 商品信息快照
-	ProductPhotoSnap string    `gorm:"column:product_photo_snap"`       // 商品图片快照
-	CreatedAt        time.Time `gorm:"column:created_at"`               // 创建时间
-	UpdatedAt        time.Time `gorm:"column:updated_at"`               // 修改时间
-	SubmitAt         time.Time `gorm:"column:submit_at"`                // 提交审核时间
-	PassAt           time.Time `gorm:"column:pass_at"`                  // 审核通过时间
-	FailReason       int64     `gorm:"column:fail_reason"`              // 失效原因,1、2分别表示逾期未支付、项目存在风险
-	PayAt            time.Time `gorm:"column:pay_at"`                   // 支付时间
-	FinishAt         time.Time `gorm:"column:finish_at"`                // 结案时间
-	IsRead           int64     `gorm:"column:is_read"`                  // 是否已读
-	AutoTaskID       int64     `gorm:"column:auto_task_id"`             // 定时任务id
-	AutoFailAt       time.Time `gorm:"column:auto_fail_at"`             // 失效自动处理时间
-	Status           int64     `gorm:"column:status"`                   // 选品是否删除 2代表删除
-	EnrollNum        int64     `gorm:"column:enroll_num"`               // 报名数量
-	ChooseNum        int64     `gorm:"column:choose_num"`               // 已选数量
-	InvoiceStatus    int64     `gorm:"column:invoice_status"`           // 开票状态(1开票中 2已开票)
+	ID               int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"` // 带货主键ID
+	SelectionID      string    `gorm:"column:selection_id"`                  // 选品项目id
+	SelectionName    string    `gorm:"column:selection_name"`                // 任务名称
+	EnterpriseID     string    `gorm:"column:enterprise_id"`                 // 所属企业id
+	SubAccountId     int64     `gorm:"column:sub_account_id"`                // 子账号id
+	ProductID        int64     `gorm:"column:product_id"`                    // 关联商品id
+	ProductCategory  string    `gorm:"column:product_category"`              // 商品类目1--20
+	SelectionStatus  int64     `gorm:"column:selection_status"`              // 选品项目状态,1-8分别代表创建中、待审核、审核通过、待支付、已支付、执行中、失效、已结案
+	Platform         int64     `gorm:"column:platform"`                      // 项目平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
+	SampleNum        int64     `gorm:"column:sample_num"`                    // 样品数量
+	TaskDdl          time.Time `gorm:"column:task_ddl"`                      // 招募截止时间
+	ContentType      int64     `gorm:"column:content_type"`                  // 内容形式,1代表图文,2代表视频,3代表直播
+	TaskMode         int64     `gorm:"column:task_mode"`                     // 任务形式,1、2分别表示悬赏任务、纯佣带货
+	SampleMode       int64     `gorm:"column:sample_mode"`                   // 领样形式,1、2分别表示免费领样、垫付领样
+	ProductUrl       string    `gorm:"column:product_url"`                   // 带货链接
+	RemainNum        int64     `gorm:"column:remain_num"`                    // 剩余数量
+	CommissionRate   float64   `gorm:"column:commission_rate"`               // 佣金比例
+	EstimatedCost    float64   `gorm:"column:estimated_cost"`                // 预估成本
+	TaskReward       float64   `gorm:"column:task_reward"`                   // 任务悬赏
+	SampleCondition  string    `gorm:"column:sample_condition"`              // 领样条件
+	RewardCondition  string    `gorm:"column:reward_condition"`              // 返现悬赏条件
+	SettlementAmount float64   `gorm:"column:settlement_amount"`             // 结算金额
+	Detail           string    `gorm:"column:detail"`                        // 卖点总结
+	ProductSnap      string    `gorm:"column:product_snap"`                  // 商品信息快照
+	ProductPhotoSnap string    `gorm:"column:product_photo_snap"`            // 商品图片快照
+	CreatedAt        time.Time `gorm:"column:created_at"`                    // 创建时间
+	UpdatedAt        time.Time `gorm:"column:updated_at"`                    // 修改时间
+	SubmitAt         time.Time `gorm:"column:submit_at"`                     // 提交审核时间
+	PassAt           time.Time `gorm:"column:pass_at"`                       // 审核通过时间
+	FailReason       int64     `gorm:"column:fail_reason"`                   // 失效原因,1、2分别表示逾期未支付、项目存在风险
+	PayAt            time.Time `gorm:"column:pay_at"`                        // 支付时间
+	FinishAt         time.Time `gorm:"column:finish_at"`                     // 结案时间
+	IsRead           int64     `gorm:"column:is_read"`                       // 是否已读
+	AutoTaskID       int64     `gorm:"column:auto_task_id"`                  // 定时任务id
+	AutoFailAt       time.Time `gorm:"column:auto_fail_at"`                  // 失效自动处理时间
+	Status           int64     `gorm:"column:status"`                        // 选品是否删除 2代表删除
+	EnrollNum        int64     `gorm:"column:enroll_num"`                    // 报名数量
+	ChooseNum        int64     `gorm:"column:choose_num"`                    // 已选数量
+	InvoiceStatus    int64     `gorm:"column:invoice_status"`                // 开票状态(1开票中 2已开票)
 }
 
 func (m *SelectionInfo) TableName() string {

+ 30 - 15
app/service/local_life_service.go

@@ -120,11 +120,15 @@ func (s LocalLifeService) CreateLocalLife(localCreateParam *vo.LocalCreateParam)
 
 	// 更新公开种草任务的招募策略
 	var totalRecruitNum int64
+	var estimatedCost float64
 	if localCreateParam.RecruitStrategys != nil {
 		// 2. 接收并创建新的招募策略
 		if len(localCreateParam.RecruitStrategys) != 0 {
 			var recruits []entity.RecruitStrategy
 			for _, strategy := range localCreateParam.RecruitStrategys {
+				if strategy.FeeForm == 2 {
+					estimatedCost += float64(strategy.RecruitNumber) * strategy.Offer
+				}
 				recruitStrategy := entity.RecruitStrategy{
 					FeeForm:       strategy.FeeForm,
 					StrategyID:    strategy.StrategyID,
@@ -149,6 +153,7 @@ func (s LocalLifeService) CreateLocalLife(localCreateParam *vo.LocalCreateParam)
 			}
 		}
 	}
+	_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{LocalID: localId, EstimatedCost: estimatedCost})
 
 	return &localId, nil
 }
@@ -166,6 +171,7 @@ func (s LocalLifeService) UpdateLocal(localUpdateParam *vo.LocalUpdateParam) (*s
 	}
 	// 更新公开种草任务的招募策略
 	var totalRecruitNum int64
+	var estimatedCost float64
 	if localUpdateParam.RecruitStrategys != nil {
 		// 1. 删除已有的招募策略
 		err = dao.RecruitStrategyDao{}.DeleteRecruitStrategyByProjectID(localUpdateParam.LocalID)
@@ -176,6 +182,9 @@ func (s LocalLifeService) UpdateLocal(localUpdateParam *vo.LocalUpdateParam) (*s
 		if len(localUpdateParam.RecruitStrategys) != 0 {
 			var recruits []entity.RecruitStrategy
 			for _, strategy := range localUpdateParam.RecruitStrategys {
+				if strategy.FeeForm == 2 {
+					estimatedCost += float64(strategy.RecruitNumber) * strategy.Offer
+				}
 				recruitStrategy := entity.RecruitStrategy{
 					FeeForm:       strategy.FeeForm,
 					StrategyID:    strategy.StrategyID,
@@ -224,13 +233,14 @@ func (s LocalLifeService) UpdateLocal(localUpdateParam *vo.LocalUpdateParam) (*s
 		PromoteBody:       localUpdateParam.PromoteBody,
 		Donate:            localUpdateParam.Donate,
 		//TaskStatus:        localUpdateParam.LocalStatus,
-		LocalName:   localUpdateParam.LocalName,
-		TalentType:  localUpdateParam.TalentType,
-		RecruitDdl:  recruitDdl,
-		TaskForm:    localUpdateParam.TaskForm,
-		ContentType: localUpdateParam.ContentType,
-		TaskDetail:  localUpdateParam.TaskDetail,
-		UpdatedAt:   t,
+		LocalName:     localUpdateParam.LocalName,
+		TalentType:    localUpdateParam.TalentType,
+		RecruitDdl:    recruitDdl,
+		TaskForm:      localUpdateParam.TaskForm,
+		ContentType:   localUpdateParam.ContentType,
+		TaskDetail:    localUpdateParam.TaskDetail,
+		UpdatedAt:     t,
+		EstimatedCost: estimatedCost,
 	}
 	//if localUpdateParam.LocalStatus == 2 {
 	//	updateLocalLife.SubmitAt = t
@@ -321,6 +331,7 @@ func (s LocalLifeService) UpdateLocalTarget(localUpdateParam *vo.LocalUpdatePara
 	println("更新定向本地生活任务的招募策略")
 	// 更新公开种草任务的招募策略
 	var totalRecruitNum int64
+	var estimatedCost float64
 	if localUpdateParam.RecruitStrategys != nil {
 		// 1. 删除已有的招募策略
 		err = dao.RecruitStrategyDao{}.DeleteRecruitStrategyByProjectID(localUpdateParam.LocalID)
@@ -331,6 +342,9 @@ func (s LocalLifeService) UpdateLocalTarget(localUpdateParam *vo.LocalUpdatePara
 		if len(localUpdateParam.RecruitStrategys) != 0 {
 			var recruits []entity.RecruitStrategy
 			for _, strategy := range localUpdateParam.RecruitStrategys {
+				if strategy.FeeForm == 2 {
+					estimatedCost += float64(strategy.RecruitNumber) * strategy.Offer
+				}
 				recruitStrategy := entity.RecruitStrategy{
 					FeeForm:       strategy.FeeForm,
 					StrategyID:    strategy.StrategyID,
@@ -377,14 +391,15 @@ func (s LocalLifeService) UpdateLocalTarget(localUpdateParam *vo.LocalUpdatePara
 		PromoteBody:       localUpdateParam.PromoteBody,
 		Donate:            localUpdateParam.Donate,
 		//TaskStatus:        localUpdateParam.LocalStatus,
-		LocalName:   localUpdateParam.LocalName,
-		TalentType:  localUpdateParam.TalentType,
-		RecruitDdl:  recruitDdl,
-		TaskForm:    localUpdateParam.TaskForm,
-		ContentType: localUpdateParam.ContentType,
-		TaskDetail:  localUpdateParam.TaskDetail,
-		UpdatedAt:   t,
-		Tools:       localUpdateParam.Tools,
+		LocalName:     localUpdateParam.LocalName,
+		TalentType:    localUpdateParam.TalentType,
+		RecruitDdl:    recruitDdl,
+		TaskForm:      localUpdateParam.TaskForm,
+		ContentType:   localUpdateParam.ContentType,
+		TaskDetail:    localUpdateParam.TaskDetail,
+		UpdatedAt:     t,
+		Tools:         localUpdateParam.Tools,
+		EstimatedCost: estimatedCost,
 	}
 	//if localUpdateParam.LocalStatus == 2 {
 	//	updateLocalLife.SubmitAt = t

+ 17 - 0
app/service/project_service.go

@@ -116,11 +116,15 @@ func (s ProjectService) CreateProject(projectCreateParam *vo.ProjectCreateParam)
 	}
 	// 更新公开种草任务的招募策略
 	var totalRecruitNum int64
+	var estimatedCost float64
 	if projectCreateParam.RecruitStrategys != nil {
 		// 2. 接收并创建新的招募策略
 		if len(projectCreateParam.RecruitStrategys) != 0 {
 			var recruits []entity.RecruitStrategy
 			for _, strategy := range projectCreateParam.RecruitStrategys {
+				if strategy.FeeForm == 2 {
+					estimatedCost += float64(strategy.RecruitNumber) * strategy.Offer
+				}
 				recruitStrategy := entity.RecruitStrategy{
 					FeeForm:       strategy.FeeForm,
 					StrategyID:    strategy.StrategyID,
@@ -145,6 +149,10 @@ func (s ProjectService) CreateProject(projectCreateParam *vo.ProjectCreateParam)
 			}
 		}
 	}
+	_ = dao.ProjectDAO{}.UpdateProject(entity.Project{
+		ProjectId:     projectId,
+		EstimatedCost: estimatedCost,
+	})
 
 	return &projectId, nil
 }
@@ -162,6 +170,7 @@ func (s ProjectService) UpdateProject(projectUpdateParam *vo.ProjectUpdateParam)
 	}
 	// 更新公开种草任务的招募策略
 	var totalRecruitNum int64
+	var estimatedCost float64
 	if projectUpdateParam.RecruitStrategys != nil {
 		// 1. 删除已有的招募策略
 		err = dao.RecruitStrategyDao{}.DeleteRecruitStrategyByProjectID(projectUpdateParam.ProjectID)
@@ -172,6 +181,9 @@ func (s ProjectService) UpdateProject(projectUpdateParam *vo.ProjectUpdateParam)
 		if len(projectUpdateParam.RecruitStrategys) != 0 {
 			var recruits []entity.RecruitStrategy
 			for _, strategy := range projectUpdateParam.RecruitStrategys {
+				if strategy.FeeForm == 2 {
+					estimatedCost += float64(strategy.RecruitNumber) * strategy.Offer
+				}
 				recruitStrategy := entity.RecruitStrategy{
 					FeeForm:       strategy.FeeForm,
 					StrategyID:    strategy.StrategyID,
@@ -226,6 +238,7 @@ func (s ProjectService) UpdateProject(projectUpdateParam *vo.ProjectUpdateParam)
 		ProjectForm:       projectUpdateParam.ProjectForm,
 		ContentType:       projectUpdateParam.ContentType,
 		ProjectDetail:     projectUpdateParam.ProjectDetail,
+		EstimatedCost:     estimatedCost,
 	}
 	//if projectUpdateParam.ProjectStatus == 2 {
 	//	updateProject.SubmitAt = t
@@ -316,6 +329,7 @@ func (s ProjectService) UpdateProjectTarget(projectUpdateParam *vo.ProjectUpdate
 	println("更新定向种草任务的招募策略")
 	// 更新定向种草任务的招募策略
 	var totalRecruitNum int64
+	var estimatedCost float64
 	if projectUpdateParam.RecruitStrategys != nil {
 		// 1. 删除已有的招募策略
 		err = dao.RecruitStrategyDao{}.DeleteRecruitStrategyByProjectID(projectUpdateParam.ProjectID)
@@ -326,6 +340,9 @@ func (s ProjectService) UpdateProjectTarget(projectUpdateParam *vo.ProjectUpdate
 		if len(projectUpdateParam.RecruitStrategys) != 0 {
 			var recruits []entity.RecruitStrategy
 			for _, strategy := range projectUpdateParam.RecruitStrategys {
+				if strategy.FeeForm == 2 {
+					estimatedCost += float64(strategy.RecruitNumber) * strategy.Offer
+				}
 				recruitStrategy := entity.RecruitStrategy{
 					FeeForm:       strategy.FeeForm,
 					StrategyID:    strategy.StrategyID,

+ 24 - 7
app/service/selection_info_service.go

@@ -78,6 +78,7 @@ func (s SelectionInfoService) CreateSelectionInfo(selectionCreateParam *vo.Selec
 	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(selectionCreateParam.EnterpriseId)
 	t := time.Now()
 	var sampleMode, taskMode int64
+	var poolRewardSum float64
 	if len(selectionCreateParam.FreeStrategys) > 0 {
 		sampleMode = 1
 	} else {
@@ -85,6 +86,9 @@ func (s SelectionInfoService) CreateSelectionInfo(selectionCreateParam *vo.Selec
 	}
 	if len(selectionCreateParam.RewardStrategys) > 0 {
 		taskMode = 1
+		for _, rewardStrategy := range selectionCreateParam.RewardStrategys {
+			poolRewardSum += rewardStrategy.Reward
+		}
 	} else {
 		taskMode = 2
 	}
@@ -102,10 +106,12 @@ func (s SelectionInfoService) CreateSelectionInfo(selectionCreateParam *vo.Selec
 		SelectionName:    selectionCreateParam.SelectionName,
 		TaskDdl:          taskDdl,
 		SampleNum:        selectionCreateParam.SampleNum,
+		RemainNum:        selectionCreateParam.SampleNum,
 		SampleMode:       sampleMode,
 		TaskMode:         taskMode,
 		CreatedAt:        t,
 		AutoTaskID:       infoAutoTask.AutoTaskID,
+		EstimatedCost:    poolRewardSum,
 	}
 	err = dao.SelectionInfoDAO{}.CreateSelectionInfo(newSelection)
 	if err != nil {
@@ -197,7 +203,7 @@ func (s SelectionInfoService) CreateSelectionInfo(selectionCreateParam *vo.Selec
 
 // 更新带货任务(样品奖励、补充信息)
 func (s SelectionInfoService) UpdateSelectionInfo(selectionUpdateParam *vo.SelectionInfoUpdateParam) (*string, error) {
-	// 1. 检查该企业id和商品id有无选品
+	// 1. 检查该id
 	selectionID := selectionUpdateParam.SelectionID
 	selectionInfo, err := dao.SelectionInfoDAO{}.GetSelectionInfoById(selectionID)
 	if err != nil {
@@ -227,6 +233,7 @@ func (s SelectionInfoService) UpdateSelectionInfo(selectionUpdateParam *vo.Selec
 	//}
 	t := time.Now()
 	var sampleMode, taskMode int64
+	var poolRewardSum float64
 	if len(selectionUpdateParam.FreeStrategys) > 0 {
 		sampleMode = 1
 	} else {
@@ -234,6 +241,9 @@ func (s SelectionInfoService) UpdateSelectionInfo(selectionUpdateParam *vo.Selec
 	}
 	if len(selectionUpdateParam.RewardStrategys) > 0 {
 		taskMode = 1
+		for _, rewardStrategy := range selectionUpdateParam.RewardStrategys {
+			poolRewardSum += rewardStrategy.Reward
+		}
 	} else {
 		taskMode = 2
 	}
@@ -252,7 +262,7 @@ func (s SelectionInfoService) UpdateSelectionInfo(selectionUpdateParam *vo.Selec
 		//CommissionRate:   selectionUpdateParam.CommissionRate,
 		//TaskReward:       selectionUpdateParam.TaskReward,
 		//SettlementAmount: selectionUpdateParam.SettlementAmount,
-		EstimatedCost: selectionInfo.EstimatedCost,
+		EstimatedCost: poolRewardSum,
 		//SampleCondition:  selectionUpdateParam.SampleCondition,
 		//RewardCondition:  selectionUpdateParam.RewardCondition,
 		TaskDdl: taskDdl,
@@ -667,7 +677,7 @@ func (s SelectionInfoService) GetSelectionTaskList(param *vo.SelectionSearchPara
 		var productName string
 		var productPrice float64
 		var mainImage string
-		var reward float64
+		//var reward float64
 		if reSelectionTaskPreviews[i].SubAccountId == 0 {
 			enterprise, err := dao.EnterpriseDao{}.GetEnterprise(reSelectionTaskPreviews[i].EnterpriseId)
 			if err == nil && enterprise != nil {
@@ -685,15 +695,22 @@ func (s SelectionInfoService) GetSelectionTaskList(param *vo.SelectionSearchPara
 			productPrice = product.ProductPrice
 		}
 		mainImage, err = dao.ProductPhotoDAO{}.GetMainPhotoByProductID(reSelectionTaskPreviews[i].ProductId)
-		rewardStrategys, err := dao.RewardStrategyDao{}.GetRewardStrategyBySelectionId(reSelectionTaskPreviews[i].SelectionId)
-		for _, rewardStrategy := range rewardStrategys {
-			reward += rewardStrategy.Reward
+		rewardStrategys, _ := dao.RewardStrategyDao{}.GetRewardStrategyBySelectionId(reSelectionTaskPreviews[i].SelectionId)
+		freeStrategys, _ := dao.FreeStrategyDao{}.GetFreeStrategyBySelectionId(reSelectionTaskPreviews[i].SelectionId)
+		if rewardStrategys != nil && len(rewardStrategys) > 0 {
+			reSelectionTaskPreviews[i].HaveRewardStrategys = 1
+		}
+		if freeStrategys != nil && len(freeStrategys) > 0 {
+			reSelectionTaskPreviews[i].HaveFreeStrategys = 1
 		}
+		//for _, rewardStrategy := range rewardStrategys {
+		//	reward += rewardStrategy.Reward
+		//}
+		//reSelectionTaskPreviews[i].Reward = reward
 		reSelectionTaskPreviews[i].CreatorName = creatorName
 		reSelectionTaskPreviews[i].ProductName = productName
 		reSelectionTaskPreviews[i].ProductPrice = productPrice
 		reSelectionTaskPreviews[i].MainImage = mainImage
-		reSelectionTaskPreviews[i].Reward = reward
 	}
 	result = vo.ResultVO{
 		Page:     param.Page,

+ 1 - 0
app/vo/local_search_param.go

@@ -10,6 +10,7 @@ type LocalSearchParam struct {
 	LocalStatus   int64  `json:"local_status"` // 任务状态,1-10代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
 	LocalForm     int64  `json:"local_form"`   // 任务形式,1-2分别代表线下探店,素材分发
 	ContentType   int64  `json:"content_type"` // 内容形式, 1图文 2视频
+	Order         int64  `json:"order"`        // 排序 0降序 1升序(默认0)
 
 	LocalId   string `json:"local_id"`   // 任务ID
 	LocalName string `json:"local_name"` // 任务标题

+ 1 - 1
app/vo/pay_param.go

@@ -1,5 +1,5 @@
 package vo
 
 type PayParam struct {
-	ObjectId string `json:"object_id"` // 公开电商带货/种草/本地生活id
+	ObjectId string `json:"object_id"` // 电商带货id/种草id/本地生活id
 }

+ 1 - 0
app/vo/project_search_param.go

@@ -10,6 +10,7 @@ type ProjectSearchParam struct {
 	ProjectStatus   int64  `json:"project_status"` // 任务状态,1-10代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
 	ProjectForm     int64  `json:"project_form"`   // 任务形式,1-5代表商品寄拍、素材分发、虚拟产品测评、线下探店打卡、素材微原创
 	ContentType     int64  `json:"content_type"`   // 内容形式, 1图文 2视频
+	Order           int64  `json:"order"`          // 排序 0降序 1升序(默认0)
 
 	ProjectId   string `json:"project_id"`   // 任务ID
 	ProjectName string `json:"project_name"` // 任务标题

+ 4 - 3
app/vo/re_project_task_preview.go

@@ -14,9 +14,10 @@ type ReProjectTaskPreview struct {
 	EstimatedCost   float64 `json:"estimatedCost"` // 任务成本
 	ProjectForm     int64   `json:"projectForm"`
 	ContentType     int64   `json:"contentType"`
-	NeedReview      int64   `json:"needReview"`
-	NeedQuality     int64   `json:"needQuality"`
-	NeedCalculate   int64   `json:"needCalculate"`
+	NeedFilter      int64   `json:"needFilter"`    // 待筛选
+	NeedReview      int64   `json:"needReview"`    // 待审稿
+	NeedQuality     int64   `json:"needQuality"`   // 待质检
+	NeedCalculate   int64   `json:"needCalculate"` // 待结算
 	CreatorName     string  `json:"creatorName"`
 	ProjectType     int64   `json:"projectType"`
 	CreatedAt       string  `json:"createdAt"`

+ 14 - 12
app/vo/re_selection_task_preview.go

@@ -6,16 +6,18 @@ type ReSelectionTaskPreview struct {
 	ProductName  string  `json:"productName"`
 	ProductPrice float64 `json:"productPrice"`
 
-	EnterpriseId      string  `json:"enterpriseId"`
-	SubAccountId      int64   `json:"subAccountId"`
-	SelectionId       string  `json:"selectionId"`
-	SelectionPlatform int64   `json:"selectionPlatform"`
-	SelectionStatus   int64   `json:"selectionStatus"`
-	CreatedAt         string  `json:"createdAt"`
-	TaskDdl           string  `json:"taskDdl"`
-	SampleNum         int64   `json:"sampleNum"` // 样品数量
-	Reward            float64 `json:"reward"`    // 悬赏池总金额
-	EnrollNum         int64   `json:"enrollNum"` // 报名数量
-	ChooseNum         int64   `json:"chooseNum"` // 已选数量
-	CreatorName       string  `json:"creatorName"`
+	EnterpriseId        string  `json:"enterpriseId"`
+	SubAccountId        int64   `json:"subAccountId"`
+	SelectionId         string  `json:"selectionId"`
+	SelectionPlatform   int64   `json:"selectionPlatform"`
+	SelectionStatus     int64   `json:"selectionStatus"`
+	CreatedAt           string  `json:"createdAt"`
+	TaskDdl             string  `json:"taskDdl"`
+	SampleNum           int64   `json:"sampleNum"` // 样品数量
+	Reward              float64 `json:"reward"`    // 悬赏池总金额
+	EnrollNum           int64   `json:"enrollNum"` // 报名数量
+	ChooseNum           int64   `json:"chooseNum"` // 已选数量
+	CreatorName         string  `json:"creatorName"`
+	HaveRewardStrategys int64   `json:"haveRewardStrategies"` // 1有悬赏策略
+	HaveFreeStrategys   int64   `json:"haveFreeStrategies"`   // 1有领样策略
 }

+ 1 - 0
app/vo/selection_search_param.go

@@ -9,6 +9,7 @@ type SelectionSearchParam struct {
 	SelectionStatus   int64  `json:"selection_status"`   // 任务状态,1-8代表创建中、待审核、审核通过、待支付、已支付、执行中、失效、已结案
 	FreeFlag          int64  `json:"free_flag"`          // 领样策略  0全部 1有 2无
 	RewardFlag        int64  `json:"reward_flag"`        // 悬赏策略 0全部 1有 2无
+	Order             int64  `json:"order"`              // 排序 0降序 1升序(默认0)
 
 	SelectionId   string `json:"selection_id"`   // 任务ID
 	SelectionName string `json:"selection_name"` // 任务标题