Kaynağa Gözat

project_list_fixed

Xingyu Xian 3 ay önce
ebeveyn
işleme
884adb0454

+ 2 - 2
db/project.go

@@ -49,8 +49,8 @@ func DeleteProject(ctx context.Context, projectID string) (*string, error) {
 func GetFullProjectList(ctx context.Context, pageSize, pageNum int32, condition *common_model.ProjectCondition) ([]*gorm_model.ProjectInfo, int64, error) {
 	db := GetReadDB(ctx)
 
-	// 根据企业id过滤
-	db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_status =4")
+	// 根据带货任务状态过滤
+	db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_status = 4")
 
 	// 根据Project条件过滤
 	conditionType := reflect.TypeOf(condition).Elem()

+ 15 - 0
db/s_project.go

@@ -175,3 +175,18 @@ func GetFullSProjectBillList(ctx context.Context, supplierId int, ProjectPlatfor
 	}
 	return SProjects, total, nil
 }
+
+// UpdateSProjectByProjectIdAndSupplierId 根据种草任务ID和服务商ID查找种草任务是否加入商单
+func UpdateSProjectByProjectIdAndSupplierId(ctx context.Context, projectId string, supplierId int) (int64, error) {
+	db := GetWriteDB(ctx)
+	whereCondition := gorm_model.SProjectInfo{
+		ProjectId:  projectId,
+		SupplierId: supplierId,
+	}
+	var total int64
+	err := db.Debug().Model(gorm_model.SProjectInfo{}).Where(whereCondition).Count(&total).Error
+	if err != nil {
+		return 0, err
+	}
+	return total, nil
+}

+ 1 - 0
db/task.go

@@ -81,6 +81,7 @@ func ChangeTaskStatus(ctx context.Context, taskIds []string, supplierStatus int)
 		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]3 error query mysql total, err:%+v", err)
 		return nil, err
 	}
+
 	var recruitStrategysIDs []int64
 	recruitStrategys := gorm_model.RecruitStrategy{}
 	for _, taskInfo := range taskInfos {

+ 1 - 1
handler/project_list.go

@@ -42,7 +42,7 @@ func (h *FullProjectListHandler) getResponse() interface{} {
 func (h *FullProjectListHandler) run() {
 	// enterpriseID := middleware.GetSessionAuth(h.ctx).EnterpriseID
 	condition := pack.HttpFullProjectRequestToCondition(h.req)
-	data, err := service.Project.GetFullProjectList(h.ctx, h.req.PageSize, h.req.PageNum, condition)
+	data, err := service.Project.GetFullProjectList(h.ctx, h.req.PageSize, h.req.PageNum, h.req.SupplierId, condition)
 	if err != nil {
 		logrus.WithContext(h.ctx).Errorf("[FullProjectListHandler] error GetFullProjectList, err:%+v", err)
 		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)

+ 4 - 5
handler/s_project_list.go

@@ -41,18 +41,17 @@ func (h *SProjectListHandler) getResponse() interface{} {
 func (h *SProjectListHandler) run() {
 	condition := pack.HttpSProjectListRequestToCondition(h.req)
 	// fmt.Println("SupplierProjectList: ", condition)
-	data, total, err := service.SProject.GetSProjectList(h.ctx, h.req.SupplierId, h.req.PageSize, h.req.PageNum, condition)
+	data, err := service.SProject.GetSProjectList(h.ctx, h.req.SupplierId, h.req.PageSize, h.req.PageNum, condition)
 	if err != nil {
 		logrus.WithContext(h.ctx).Errorf("[FullProjectListHandler] error GetFullProjectList, err:%+v", err)
 		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		h.resp.Message = "失败"
 		return
 	}
 	// fmt.Println("data: ", data, "total: ", total)
-	var sProjectInfo http_model.SProjectData
-	sProjectInfo.SProjectList = data
-	sProjectInfo.Total = total
 	// fmt.Println("sProjectInfo: ", sProjectInfo)
-	h.resp.Data = sProjectInfo
+	h.resp.Data = data
+	h.resp.Message = "成功"
 }
 
 func (h *SProjectListHandler) checkParam() error {

+ 1 - 1
model/gorm_model/project.go

@@ -10,7 +10,7 @@ type ProjectInfo struct {
 	ProjectStatus     int64      `gorm:"column:project_status"`                 // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
 	ProjectType       int64      `gorm:"column:project_type"`                   // 项目类型,1代表全流程项目,2代表专项项目
 	ProjectPlatform   int64      `gorm:"column:project_platform"`               // 项目平台,1-7分别代表红book、抖音、微博、快手、b站、大众点评、知乎
-	ProjectForm       int64      `gorm:"column:project_form"`                   // 项目形式,1-4分别代表实体商品寄拍、虚拟产品测评、线下探店打卡、素材微原创
+	ProjectForm       int64      `gorm:"column:project_form"`                   // 项目形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
 	TalentType        string     `gorm:"column:talent_type"`                    // 达人类型
 	RecruitDdl        *time.Time `gorm:"column:recruit_ddl"`                    // 招募截止时间
 	ContentType       int64      `gorm:"column:content_type"`                   // 内容形式,1代表图文,2代表视频

+ 2 - 0
model/gorm_model/s_project.go

@@ -6,7 +6,9 @@ type SProjectInfo struct {
 	SProjectId          int        `gorm:"column:s_project_id;primary_key;AUTO_INCREMENT"` // 服务商加入商单后的种草任务ID
 	ProjectId           string     `gorm:"column:project_id;"`                             // 被服务商加入商单的原种草任务ID
 	ProjectType         int        `gorm:"column:project_type"`                            // 种草任务类型,1为公开,2为定向
+	ProductId           int64      `gorm:"column:product_id;"`                             // 商品ID
 	ProjectName         string     `gorm:"column:project_name"`                            // 种草任务名称
+	ProjectStatus       int        `gorm:"column:project_status"`                          // 种草任务状态
 	ProjectPlatform     int        `gorm:"column:project_platform"`                        // 种草任务平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
 	ProjectForm         int        `gorm:"column:project_form"`                            // 任务形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
 	ContentType         int        `gorm:"column:content_type"`                            // 内容形式,1代表图文,2代表视频

+ 0 - 1
model/http_model/add_to_list.go

@@ -7,7 +7,6 @@ type AddToListRequest struct {
 	ProjectPlatform int    `json:"project_platform"` // 种草任务平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
 	ProjectForm     int    `json:"project_form"`     // 任务形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
 	ContentType     int    `json:"content_type"`     // 内容形式,1代表图文,2代表视频
-	ShareCode       string `json:"share_code"`       // 分享码URL
 	EnterpriseId    string `json:"enterprise_id"`    // 商家ID
 	SupplierId      int    `json:"supplier_id"`      // 服务商ID
 	SubAccountId    int    `json:"sub_account_id"`   // 子账号ID

+ 36 - 16
model/http_model/full_project_list.go

@@ -3,26 +3,46 @@ package http_model
 type FullProjectListRequest struct {
 	PageSize           int32  `json:"page_size"`
 	PageNum            int32  `json:"page_num"`
-	ProjectId          string `json:"project_id"`           // 项目ID
-	ProjectName        string `json:"project_name"`         // 项目名
-	ProjectStatus      string `json:"project_status"`       // 项目状态
-	ProjectType        string `json:"project_type"`         // 项目类型
-	ProjectPlatform    string `json:"project_platform"`     // 项目平台
-	ProjectForm        string `json:"project_form"`         // 项目形式
-	ProjectContentType string `json:"project_content_type"` // 内容形式
-	ProjectUpdated     string `json:"project_updated"`      // 最后操作时间
+	SupplierId         int    `json:"supplier_id"`          // 服务商ID
+	ProjectId          string `json:"project_id"`           // 种草任务ID
+	ProjectName        string `json:"project_name"`         // 种草任务名
+	ProjectStatus      string `json:"project_status"`       // 种草任务状态
+	ProjectType        string `json:"project_type"`         // 种草任务类型
+	ProjectPlatform    string `json:"project_platform"`     // 种草任务平台
+	ProjectForm        string `json:"project_form"`         // 种草任务形式
+	ProjectContentType string `json:"project_content_type"` // 种草任务内容形式
+	ProjectUpdated     string `json:"project_updated"`      // 种草任务最后操作时间
 }
 
 type FullProjectPreview struct {
-	ProjectId          string `json:"project_id"`           //
-	ProjectName        string `json:"project_name"`         // 项目名
-	ProjectStatus      string `json:"project_status"`       // 项目状态
-	ProjectPlatform    string `json:"project_platform"`     // 项目平台
-	ProjectForm        string `json:"project_form"`         // 项目形式
-	ProjectType        string `json:"project_type"`         // 项目类型
-	ProjectContentType string `json:"project_content_type"` // 内容形式
-	ProjectUpdated     string `json:"project_updated"`      // 最后操作时间
+	ProjectId          string                 `json:"project_id"`           // 种草任务ID
+	ProjectName        string                 `json:"project_name"`         // 种草任务名称
+	ProjectStatus      string                 `json:"project_status"`       // 种草任务状态
+	ProjectPlatform    string                 `json:"project_platform"`     // 种草任务平台
+	ProjectForm        string                 `json:"project_form"`         // 种草任务形式
+	ProjectType        string                 `json:"project_type"`         // 种草任务类型
+	ProjectContentType string                 `json:"project_content_type"` // 种草任务内容形式
+	RecruitStrategy    []*EasyRecruitStrategy `json:"recruit_strategy"`     // 招募策略
+	ProjectUpdated     string                 `json:"project_updated"`      // 最后操作时间
+	EstimatedCost      float64                `json:"estimated_cost"`       // 任务总预算
+	ServiceChargeRate  float64                `json:"service_charge_rate"`  // 服务费率
+	ServiceCharge      float64                `json:"service_charge"`       // 任务总服务费
+	RecruitDdl         string                 `json:"recruit_ddl"`          // 招募截至时间
+	ProductPhotoUrl    string                 `json:"product_photo_url"`    // 商品主图URL
+	ProductPhotoSymbol int64                  `json:"product_photo_symbol"` // 标志位
+	ProductPhotoUid    string                 `json:"product_photo_uid"`    // uid
+	ProductName        string                 `json:"product_name"`         // 商品名称
+	ProductId          int64                  `json:"product_id"`           // 商品ID
+	ProductPrice       float64                `json:"product_price"`        // 商品售价
+	AddToListStatus    int                    `json:"add_to_list_status"`   // 加入商单状态,1已加入,2未加入
 }
+
+type EasyRecruitStrategy struct {
+	StrategyId    int64 `json:"strategy_id"`    // 策略ID
+	FeeForm       int64 `json:"fee_form"`       // 稿费形式,1-3分别代表无费置换、一口价、自报价
+	RecruitNumber int64 `json:"recruit_number"` // 招募人数
+}
+
 type FullProjectListData struct {
 	FullProjectPreview []*FullProjectPreview `json:"full_project_pre_view"`
 	Total              string                `json:"total"`

+ 25 - 17
model/http_model/project_taskList.go

@@ -17,23 +17,25 @@ type ProjectTaskListRequest struct {
 }
 
 type ProjectTaskPreview struct {
-	TaskId             string `json:"task_id"`               // 任务ID
-	PlatformNickname   string `json:"platform_nickname"`     // 账号昵称
-	FansCount          string `json:"fans_count"`            // 粉丝数
-	HomePageCaptureUrl string `json:"home_page_capture_url"` // 主页截图链接
-	StrategyId         string `json:"strategy_id"`           // 报名选择的招募策略id
-	AllPayment         string `json:"all_payment"`           // 企业支付
-	TaskReward         string `json:"task_reward"`           // 任务奖励金额
-	HomePageUrl        string `json:"home_page_url"`         // 主页链接
-	TaskStatus         string `json:"task_status"`           // 任务状态
-	CreateDate         string `json:"create_date"`           // 创建时间
-	FansNum            int    `json:"fans_num"`              // 粉丝数
-	VoteAvg            int    `json:"vote_Avg"`              // 平均点赞数
-	CommitAvg          int    `json:"commit_avg"`            // 平均评论数
-	BOperator          string `json:"b_operator"`            // 商家确定达人操作人ID
-	BOperatorType      int    `json:"b_operator_type"`       // 商家操作人类型,1商家用户,2商家子账号,3管理后台
-	SOperator          int    `json:"s_operator"`            // 服务商确定达人操作人ID
-	SOperatorType      int    `json:"s_operator_type"`       // 服务商操作人类型,1服务商用户,2服务商子账号,3管理后台
+	TaskId           string  `json:"task_id"`           // 任务ID
+	PlatformNickname string  `json:"platform_nickname"` // 账号昵称
+	FansCount        string  `json:"fans_count"`        // 粉丝数
+	AvatarUrl        string  `json:"avatar_url"`        // 达人头像url
+	Location         string  `json:"location"`          // 达人所在地区
+	Gender           string  `json:"gender"`            // 达人性别
+	ServiceCharge    float64 `json:"service_charge"`    // 服务费
+	DraftFee         float64 `json:"draft_fee"`         // 达人稿费
+	SupportFee       float64 `json:"support_fee"`       // 提报价格
+	StrategyId       string  `json:"strategy_id"`       // 报名选择的招募策略id
+	TaskStatus       string  `json:"task_status"`       // 任务状态
+	CreateDate       string  `json:"create_date"`       // 创建时间
+	FansNum          int     `json:"fans_num"`          // 粉丝数
+	VoteAvg          int     `json:"vote_avg"`          // 平均点赞数
+	CommitAvg        int     `json:"commit_avg"`        // 平均评论数
+	BOperator        string  `json:"b_operator"`        // 商家确定达人操作人ID
+	BOperatorType    int     `json:"b_operator_type"`   // 商家操作人类型,1商家用户,2商家子账号,3管理后台
+	SOperator        int     `json:"s_operator"`        // 服务商确定达人操作人ID
+	SOperatorType    int     `json:"s_operator_type"`   // 服务商操作人类型,1服务商用户,2服务商子账号,3管理后台
 }
 
 type ProjectTaskInfo struct {
@@ -41,6 +43,12 @@ type ProjectTaskInfo struct {
 	PlatformNickname   string    `json:"platform_nickname"`     // 在平台上的昵称
 	FansCount          string    `json:"fans_count"`            // 粉丝数
 	HomePageCaptureUrl string    `json:"home_page_capture_url"` // 主页截图链接
+	AvatarUrl          string    `json:"avatar_url"`            // 达人头像url
+	Location           string    `json:"location"`              // 达人所在地区
+	Gender             string    `json:"gender"`                // 达人性别
+	ServiceCharge      float64   `json:"service_charge"`        // 服务费
+	DraftFee           float64   `json:"draft_fee"`             // 达人稿费
+	SupportFee         float64   `json:"support_fee"`           // 提报价格
 	StrategyID         int       `json:"strategy_id"`           // 报名选择的招募策略id
 	AllPayment         float64   `json:"all_payment"`           // 企业支付
 	TaskReward         float64   `json:"task_reward"`           // 任务奖励金额

+ 36 - 5
model/http_model/s_project_list.go

@@ -1,9 +1,7 @@
 package http_model
 
-import "youngee_b_api/model/gorm_model"
-
 type SProjectListRequest struct {
-	SProjectId      int    `json:"s_project_id"`     // 加入商单的种草任务ID
+	SProjectId      int    `json:"s_project_id"`     // 加入商单的种草任务ID
 	ProjectId       string `json:"project_id"`       // 种草任务ID
 	ProjectType     int    `json:"project_type"`     // 种草任务类型,1为公开,2为定向
 	ProjectName     string `json:"project_name"`     // 种草任务名称
@@ -16,9 +14,42 @@ type SProjectListRequest struct {
 	PageSize        int32  `json:"page_size"`
 }
 
+type SProjectListReview struct {
+	SProjectId             int     `json:"s_project_id"`             // 服务商加入商单后的种草任务ID
+	ProjectId              string  `json:"project_id"`               // 被服务商加入商单的原种草任务ID
+	ProjectType            int     `json:"project_type"`             // 种草任务类型,1为公开,2为定向
+	ProjectName            string  `json:"project_name"`             // 种草任务名称
+	ProjectPlatform        int     `json:"project_platform"`         // 种草任务平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
+	ProjectForm            int     `json:"project_form"`             // 任务形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
+	ContentType            int     `json:"content_type"`             // 内容形式,1代表图文,2代表视频
+	ProjectStatus          int     `json:"project_status"`           // 种草任务状态
+	ShareCode              string  `json:"share_code"`               // 分享码URL
+	ApplyNum               int     `json:"apply_num"`                // 报名人数
+	RecruitNum             int     `json:"recruit_num"`              // 已招募人数
+	SettleNum              int     `json:"settle_num"`               // 已结算人数
+	EnterpriseId           string  `json:"enterprise_id"`            // 所属企业ID
+	SupplierId             int     `json:"supplier_id"`              // 所属服务商ID
+	SubAccountId           int     `json:"sub_account_id"`           // 所属子账号ID
+	ServiceCharge          float64 `json:"service_charge"`           // 服务商预估可赚服务费
+	ServiceChargeActual    float64 `json:"service_charge_actual"`    // 服务商实际可赚服务费
+	OperatorType           int     `json:"operator_type"`            // 添加商单操作人类型,1为服务商主账号,2为服务商子账号
+	SProjectStatus         int     `json:"s_project_status"`         // 服务商种草任务状态,1待确认,2已确认,3已拒绝
+	StrategyStatus         int     `json:"strategy_status"`          // 定向种草任务是否替换招募策略
+	CreateStrategyId       int     `json:"create_strategy_id"`       // 服务商修改服务费操作人ID
+	CreateStrategyType     int     `json:"create_strategy_type"`     // 服务商修改服务费操作人类型:1服务商主账号,2子账号
+	CreateTime             string  `json:"create_time"`              // 创建时间
+	EstimatedServiceCharge float64 `json:"estimated_service_charge"` // 预估服务费(待支付前)
+	ProductPhotoUrl        string  `json:"product_photo_url"`        // 商品主图URL
+	ProductPhotoSymbol     int64   `json:"product_photo_symbol"`     // 标志位
+	ProductPhotoUid        string  `json:"product_photo_uid"`        // uid
+	ProductName            string  `json:"product_name"`             // 商品名称
+	ProductId              int64   `json:"product_id"`               // 商品ID
+	ProductPrice           float64 `json:"product_price"`            // 商品售价
+}
+
 type SProjectData struct {
-	SProjectList []*gorm_model.SProjectInfo `json:"s_project_info"` // 服务商加入商单的种草任务信息
-	Total        int64                      `json:"total"`          // 数量
+	SProjectList []*SProjectListReview `json:"s_project_info"` // 服务商加入商单的种草任务信息
+	Total        int64                 `json:"total"`          // 数量
 }
 
 func NewSProjectListRequest() *SProjectListRequest {

+ 5 - 0
pack/full_project.go

@@ -28,5 +28,10 @@ func GormFullProjectToHttpFullProjectPreview(gormProjectInfo *gorm_model.Project
 		ProjectContentType: consts.GetProjectContentType(gormProjectInfo.ContentType),
 		ProjectType:        consts.GetProjectType(gormProjectInfo.ProjectType),
 		ProjectUpdated:     updatedTime,
+		ProductId:          gormProjectInfo.ProductID,
+		EstimatedCost:      gormProjectInfo.EstimatedCost,
+		RecruitDdl:         conv.MustString(gormProjectInfo.RecruitDdl)[0:19],
+		ServiceChargeRate:  gormProjectInfo.ServiceChargeRate,
+		ServiceCharge:      gormProjectInfo.ServiceChargeRate * gormProjectInfo.EstimatedCost * 0.01,
 	}
 }

+ 13 - 17
pack/project_task_list.go

@@ -22,23 +22,19 @@ func GormFullProjectToHttpProjectTaskPreview(projectTaskInfo *http_model.Project
 	createDate := conv.MustString(projectTaskInfo.CreateDate)
 	createDate = createDate[0:19]
 	return &http_model.ProjectTaskPreview{
-		TaskId:             conv.MustString(projectTaskInfo.TaskID),
-		PlatformNickname:   conv.MustString(projectTaskInfo.PlatformNickname),
-		FansCount:          conv.MustString(projectTaskInfo.FansCount),
-		HomePageCaptureUrl: conv.MustString(projectTaskInfo.HomePageCaptureUrl),
-		StrategyId:         conv.MustString(projectTaskInfo.StrategyID),
-		AllPayment:         conv.MustString(projectTaskInfo.AllPayment),
-		TaskReward:         conv.MustString(projectTaskInfo.TaskReward),
-		HomePageUrl:        conv.MustString(projectTaskInfo.HomePageUrl),
-		TaskStatus:         conv.MustString(projectTaskInfo.TaskStatus),
-		CreateDate:         createDate,
-		FansNum:            projectTaskInfo.FansNum,
-		VoteAvg:            projectTaskInfo.VoteAvg,
-		CommitAvg:          projectTaskInfo.CommitAvg,
-		BOperator:          projectTaskInfo.BOperator,
-		BOperatorType:      projectTaskInfo.BOperatorType,
-		SOperator:          projectTaskInfo.SOperator,
-		SOperatorType:      projectTaskInfo.SOperatorType,
+		TaskId:           conv.MustString(projectTaskInfo.TaskID),
+		PlatformNickname: conv.MustString(projectTaskInfo.PlatformNickname),
+		FansCount:        conv.MustString(projectTaskInfo.FansCount),
+		StrategyId:       conv.MustString(projectTaskInfo.StrategyID),
+		TaskStatus:       conv.MustString(projectTaskInfo.TaskStatus),
+		CreateDate:       createDate,
+		FansNum:          projectTaskInfo.FansNum,
+		VoteAvg:          projectTaskInfo.VoteAvg,
+		CommitAvg:        projectTaskInfo.CommitAvg,
+		BOperator:        projectTaskInfo.BOperator,
+		BOperatorType:    projectTaskInfo.BOperatorType,
+		SOperator:        projectTaskInfo.SOperator,
+		SOperatorType:    projectTaskInfo.SOperatorType,
 	}
 }
 

+ 4 - 4
route/init.go

@@ -47,8 +47,8 @@ func InitRoute(r *gin.Engine) {
 		})
 
 		// 服务商版公开种草接口
-		m.POST("/sProject/fullProjectList", handler.WrapFullProjectListHandler)          // 公开种草任务列表
-		m.POST("/sProject/sProjectList", handler.WrapSProjectListHandler)                // 服务商商单列表
+		m.POST("/sProject/fullProjectList", handler.WrapFullProjectListHandler)          // 商单广场-公开种草任务列表
+		m.POST("/sProject/sProjectList", handler.WrapSProjectListHandler)                // 商单管理-服务商商单列表
 		m.POST("/sProject/addToList", handler.WrapAddToListHandler)                      // 公开种草任务服务商加入商单
 		m.POST("/sProject/showSProject", handler.WrapShowSProjectHandler)                // 展示选中的服务商种草任务内容
 		m.POST("/sProject/projectStrategy", handler.WrapProjectStrategyHandler)          // 招募策略查询
@@ -58,7 +58,7 @@ func InitRoute(r *gin.Engine) {
 		m.POST("/qrcode/getWxQrcode", handler.WrapGetWxQRCodeHandler)                    // 获取微信二维码
 
 		// 服务商版定向种草接口
-		m.POST("/sProject/specialList", handler.WrapSpecialProjectListHandler)            // 定向种草任务列表
+		m.POST("/sProject/specialList", handler.WrapSpecialProjectListHandler)            // 商单广场 - 定向种草任务列表
 		m.POST("/sProject/specialAddToList", handler.WrapSpecialSProjectAddToListHandler) // 定向种草任务加入商单 (同意/拒绝定向邀约)
 		m.POST("/sProject/specialAddStrategy", handler.WrapSpecialAddStrategyHandler)     // 种草任务添加招募策略
 
@@ -148,7 +148,7 @@ func InitRoute(r *gin.Engine) {
 		m.POST("/project/getAllProduct", handler.WrapGetAllProjectHandler)                         // 查询项目广场项目列表
 	}
 
-	// 选品广场相关接口
+	// 商家带货相关接口
 	s := r.Group("/youngee/s")
 	{
 		s.Use(middleware.LoginAuthMiddleware)

+ 61 - 1
service/project.go

@@ -363,7 +363,9 @@ func (*project) Delete(ctx context.Context, projectID string) (*http_model.Delet
 	return res, nil
 }
 
-func (*project) GetFullProjectList(ctx context.Context, pageSize, pageNum int32, condition *common_model.ProjectCondition) (*http_model.FullProjectListData, error) {
+func (*project) GetFullProjectList(ctx context.Context, pageSize, pageNum int32, supplierId int, condition *common_model.ProjectCondition) (*http_model.FullProjectListData, error) {
+
+	// 1. 查询种草任务基本信息
 	fullProjects, total, err := db.GetFullProjectList(ctx, pageSize, pageNum, condition)
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[project service] call GetFullProjectList error,err:%+v", err)
@@ -372,6 +374,64 @@ func (*project) GetFullProjectList(ctx context.Context, pageSize, pageNum int32,
 	fullProjectListData := new(http_model.FullProjectListData)
 	fullProjectListData.FullProjectPreview = pack.MGormFullProjectToHttpFullProjectPreview(fullProjects)
 	fullProjectListData.Total = conv.MustString(total)
+
+	// 2. 查询种草任务补充信息:商品信息,招募策略
+	for _, project := range fullProjectListData.FullProjectPreview {
+
+		// 2.1. 商品信息
+		productInfo, productErr := db.GetProductByID(ctx, project.ProductId)
+		if productErr != nil {
+			return nil, productErr
+		}
+		if productInfo != nil {
+			project.ProductId = productInfo.ProductID
+			project.ProductPrice = productInfo.ProductPrice
+			project.ProductName = productInfo.ProductName
+		}
+
+		// 2.2. 商品图片信息
+		productPhotoInfo, productPhotoErr := db.GetProductPhotoByProductID(ctx, project.ProductId)
+		if productPhotoErr != nil {
+			return nil, productPhotoErr
+		}
+		if productPhotoInfo != nil {
+			for _, photo := range productPhotoInfo {
+				fmt.Println(photo)
+				if photo.Symbol == 1 {
+					project.ProductPhotoSymbol = 1
+					project.ProductPhotoUrl = photo.PhotoUrl
+					project.ProductPhotoUid = photo.PhotoUid
+				}
+			}
+		}
+
+		// 2.3. 招募策略信息
+		recruitStrategyInfo, recruitErr := db.GetRecruitStrategyByProjectId(ctx, project.ProjectId)
+		if recruitErr != nil {
+			return nil, recruitErr
+		}
+		if recruitStrategyInfo != nil {
+			for _, strategy := range recruitStrategyInfo {
+				var recruitStrategy *http_model.EasyRecruitStrategy
+				recruitStrategy = &http_model.EasyRecruitStrategy{}
+				recruitStrategy.StrategyId = strategy.StrategyID
+				recruitStrategy.FeeForm = strategy.FeeForm
+				recruitStrategy.RecruitNumber = strategy.RecruitNumber
+				project.RecruitStrategy = append(project.RecruitStrategy, recruitStrategy)
+			}
+		}
+
+		// 2.4. 判断是否加入商单
+		sProjectCount, sProjectErr := db.UpdateSProjectByProjectIdAndSupplierId(ctx, project.ProjectId, supplierId)
+		if sProjectErr != nil {
+			return nil, sProjectErr
+		}
+		if sProjectCount > 0 {
+			project.AddToListStatus = 1
+		} else {
+			project.AddToListStatus = 2
+		}
+	}
 	return fullProjectListData, nil
 }
 

+ 53 - 4
service/s_project.go

@@ -3,6 +3,7 @@ package service
 import (
 	"context"
 	"fmt"
+	"github.com/issue9/conv"
 	log "github.com/sirupsen/logrus"
 	"youngee_b_api/db"
 	"youngee_b_api/model/common_model"
@@ -29,7 +30,6 @@ func (*sProject) CreateSProject(ctx context.Context, request http_model.AddToLis
 		ProjectPlatform: request.ProjectPlatform,
 		ProjectForm:     request.ProjectForm,
 		ContentType:     request.ContentType,
-		ShareCode:       request.ShareCode,
 		OperatorType:    request.OperatorType,
 		SProjectStatus:  2,
 		StrategyStatus:  1,
@@ -76,12 +76,61 @@ func (*sProject) CreateSProject(ctx context.Context, request http_model.AddToLis
 }
 
 // GetSProjectList 查找服务商加入商单的种草任务列表
-func (*sProject) GetSProjectList(ctx context.Context, supplierId int, pageSize, pageNum int32, condition *common_model.SProjectCondition) ([]*gorm_model.SProjectInfo, int64, error) {
+func (*sProject) GetSProjectList(ctx context.Context, supplierId int, pageSize, pageNum int32, condition *common_model.SProjectCondition) (*http_model.SProjectData, error) {
+	var SProjectList *http_model.SProjectData
+	SProjectList = &http_model.SProjectData{}
+
+	// 1. 加入商单后的种草任务基本信息
 	sProjects, total, err := db.GetSProjectList(ctx, supplierId, pageSize, pageNum, condition)
 	if err != nil {
-		return nil, 0, err
+		return nil, err
 	}
-	return sProjects, total, nil
+	SProjectList.Total = total
+
+	// 2. 商品信息填入
+	for _, sProject := range sProjects {
+		var currSProject *http_model.SProjectListReview
+		currSProject = &http_model.SProjectListReview{}
+		currSProject.SProjectId = sProject.SProjectId
+		currSProject.ProjectId = sProject.ProjectId
+		currSProject.ProjectPlatform = sProject.ProjectPlatform
+		currSProject.ContentType = sProject.ContentType
+		currSProject.ProjectForm = sProject.ProjectForm
+		currSProject.ProjectStatus = sProject.ProjectStatus
+		currSProject.SupplierId = sProject.SupplierId
+		currSProject.SubAccountId = sProject.SubAccountId
+		currSProject.OperatorType = sProject.OperatorType
+		currSProject.CreateTime = conv.MustString(sProject.CreateTime)[0:19]
+
+		// 2.2. 商品信息
+		productInfo, productErr := db.GetProductByID(ctx, sProject.ProductId)
+		if productErr != nil {
+			return nil, productErr
+		}
+		if productInfo != nil {
+			currSProject.ProductId = productInfo.ProductID
+			currSProject.ProductPrice = productInfo.ProductPrice
+			currSProject.ProductName = productInfo.ProductName
+		}
+
+		// 2.3. 商品图片信息
+		productPhotoInfo, productPhotoErr := db.GetProductPhotoByProductID(ctx, sProject.ProductId)
+		if productPhotoErr != nil {
+			return nil, productPhotoErr
+		}
+		if productPhotoInfo != nil {
+			for _, photo := range productPhotoInfo {
+				fmt.Println(photo)
+				if photo.Symbol == 1 {
+					currSProject.ProductPhotoSymbol = 1
+					currSProject.ProductPhotoUrl = photo.PhotoUrl
+					currSProject.ProductPhotoUid = photo.PhotoUid
+				}
+			}
+		}
+		SProjectList.SProjectList = append(SProjectList.SProjectList, currSProject)
+	}
+	return SProjectList, nil
 }
 
 // GetSPorjectDetail 查找服务商种草任务详情