Parcourir la source

speciaSProjectlList

Xingyu Xian il y a 3 mois
Parent
commit
a0e9c300eb

+ 60 - 0
handler/s_special_project_list.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/pack"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+)
+
+func WrapSpecialSProjectListHandler(ctx *gin.Context) {
+	handler := newSpecialSProjectListHandler(ctx)
+	baseRun(handler)
+}
+
+func newSpecialSProjectListHandler(ctx *gin.Context) *SpecialSProjectListHandler {
+	return &SpecialSProjectListHandler{
+		req:  http_model.NewSpecialSProjectListRequest(),
+		resp: http_model.NewSpecialSProjectListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialSProjectListHandler struct {
+	req  *http_model.SpecialProjectListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialSProjectListHandler) getRequest() interface{} {
+	return h.req
+}
+
+func (h *SpecialSProjectListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+
+func (h *SpecialSProjectListHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *SpecialSProjectListHandler) run() {
+	condition := pack.HttpSpecialProjectRequestToCondition(h.req)
+	data, err := service.SProject.GetSpecialSProjectList(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.Status = 40000
+		h.resp.Message = err.Error()
+		return
+	}
+	h.resp.Status = 20000
+	h.resp.Data = data
+}
+
+func (h *SpecialSProjectListHandler) checkParam() error {
+	return nil
+}

+ 2 - 3
model/http_model/full_local_life_list.go

@@ -5,8 +5,8 @@ type FullListRequest struct {
 	PageNum         int32  `json:"page_num"`
 	SupplierId      int    `json:"supplier_id"`        // 服务商ID
 	LocalPlatform   int    `json:"local_platform"`     // 本地生活平台
-	TaskForm        int    `json:"task_form"`          // 任务形式,1-2分别
-	ContentType     int    `json:"content_type"`       // 内容形式
+	TaskForm        int    `json:"task_form"`          // 任务形式,1-2分别代表线下探店,素材分发
+	ContentType     int    `json:"content_type"`       // 内容形式,1代表图文,2代表视频
 	AddToListStatus int    `json:"add_to_list_status"` // 加入商单状态,1已加
 	LocalId         string `json:"local_id"`           // 本地生活ID
 	LocalName       string `json:"local_name"`         // 本地生活标题
@@ -21,7 +21,6 @@ type FullPreview struct {
 	LocalType          int                    `json:"local_type"`           // 本地生活类型
 	LocalContentType   int                    `json:"local_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"`       // 任务总服务费

+ 34 - 0
model/http_model/s_special_project_list.go

@@ -0,0 +1,34 @@
+package http_model
+
+import "time"
+
+type SpecialSProjectListData struct {
+	SpecialProjectInfo []*SpecialProjectResponse `json:"special_project_info"`
+	Total              int64                     `json:"total"`
+}
+
+type SpecialSProjectResponse struct {
+	SProjectId         int                   `json:"s_project_id"`         // 服务商加入商单后的种草任务ID
+	ProjectPlatform    int64                 `json:"project_platform"`     // 种草任务平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
+	ProjectForm        int64                 `json:"project_form"`         // 任务形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
+	ContentType        int64                 `json:"content_type"`         // 内容形式,1代表图文,2代表视频
+	SProjectStatus     int                   `json:"s_project_status"`     // 服务商种草任务状态,1待确认,2已确认,3已拒绝
+	CreateTime         *time.Time            `json:"create_time"`          // 创建时间
+	RecruitStrategy    []EasyRecruitStrategy `json:"recruit_strategy"`     // 招募策略
+	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"`        // 商品售价
+	Tools              string                `json:"tools"`                // 工具选择,1邀约招募 2样品物流 3审稿工具 4作品审查 5数据巡检 6结算账单(,分隔)
+}
+
+func NewSpecialSProjectListRequest() *SpecialProjectListRequest {
+	return new(SpecialProjectListRequest)
+}
+func NewSpecialSProjectListResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(SpecialSProjectListData)
+	return resp
+}

+ 1 - 0
route/init.go

@@ -65,6 +65,7 @@ func InitRoute(r *gin.Engine) {
 
 		// 服务商版定向种草接口
 		m.POST("/sProject/specialList", handler.WrapSpecialProjectListHandler)            // 商单广场 - 定向种草任务列表
+		m.POST("/sProject/sSpecialList", handler.WrapSpecialSProjectListHandler)          // 商单管理 - 定向种草任务列表
 		m.POST("/sProject/specialAddToList", handler.WrapSpecialSProjectAddToListHandler) // 定向种草任务加入商单 (同意/拒绝定向邀约)
 		m.POST("/sProject/specialAddStrategy", handler.WrapSpecialAddStrategyHandler)     // 定向种草任务添加招募策略
 

+ 74 - 4
service/s_project.go

@@ -375,12 +375,82 @@ func (*sProject) GetSpecialProjectList(ctx context.Context, supplierId int, page
 }
 
 // GetSpecialSProjectList 查找服务商加入商单后的定向种草任务列表
-func (*sProject) GetSpecialSProjectList(ctx context.Context, supplierId int, pageSize, pageNum int32, condition *common_model.SSpecialProjectCondition) ([]*gorm_model.SProjectInfo, int64, error) {
-	sProjects, total, err := db.GetSpecialProjectList(ctx, supplierId, pageSize, pageNum, condition)
+func (*sProject) GetSpecialSProjectList(ctx context.Context, supplierId int, pageSize, pageNum int32, condition *common_model.SSpecialProjectCondition) (*http_model.SpecialSProjectListData, error) {
+	var specialProjectListData *http_model.SpecialSProjectListData
+	specialProjectListData = &http_model.SpecialSProjectListData{}
+	specialProjects, total, err := db.GetSpecialProjectList(ctx, supplierId, pageSize, pageNum, condition)
 	if err != nil {
-		return nil, 0, err
+		return nil, err
+	}
+	if specialProjects != nil {
+		specialProjectListData.Total = total
+		// 1. 定向种草任务基本信息填入
+		for _, specialProject := range specialProjects {
+			var currSpecialProject *http_model.SpecialProjectResponse
+			currSpecialProject = &http_model.SpecialProjectResponse{}
+			currSpecialProject.SProjectId = specialProject.SProjectId
+			currSpecialProject.ProjectPlatform = specialProject.ProjectPlatform
+			currSpecialProject.ProjectForm = specialProject.ProjectForm
+			currSpecialProject.ContentType = specialProject.ContentType
+			currSpecialProject.SProjectStatus = specialProject.SProjectStatus
+
+			// 2. 定向种草任务商品信息填入
+			// 2.1. 商品信息
+			productInfo, productErr := db.GetProductByID(ctx, specialProject.ProductId)
+			if productErr != nil {
+				return nil, productErr
+			}
+			if productInfo != nil {
+				currSpecialProject.ProductId = productInfo.ProductID
+				currSpecialProject.ProductName = productInfo.ProductName
+				currSpecialProject.ProductPrice = productInfo.ProductPrice
+			}
+
+			// 2.2. 商品图片信息
+			productPhotoInfo, productPhotoErr := db.GetProductPhotoByProductID(ctx, specialProject.ProductId)
+			if productPhotoErr != nil {
+				return nil, productPhotoErr
+			}
+			if productPhotoInfo != nil {
+				for _, p := range productPhotoInfo {
+					if p.Symbol == 1 {
+						currSpecialProject.ProductPhotoUrl = p.PhotoUrl
+						currSpecialProject.ProductPhotoUid = p.PhotoUid
+						currSpecialProject.ProductPhotoSymbol = 1
+					}
+				}
+			}
+
+			// 3. 招募策略信息
+			recruitStrategy, recruitErr := db.GetRecruitStrategyByProjectId(ctx, specialProject.ProjectId)
+			if recruitErr != nil {
+				return nil, recruitErr
+			}
+			if recruitStrategy != nil {
+				for _, strategy := range recruitStrategy {
+					showStrategy := http_model.EasyRecruitStrategy{
+						FeeForm:       strategy.FeeForm,
+						RecruitNumber: strategy.RecruitNumber,
+						StrategyId:    strategy.StrategyID,
+					}
+					currSpecialProject.RecruitStrategy = append(currSpecialProject.RecruitStrategy, showStrategy)
+				}
+			}
+
+			// 4. 原种草任务信息
+			projectInfo, projectErr := db.GetProjectDetail(ctx, specialProject.ProjectId)
+			if projectErr != nil {
+				return nil, projectErr
+			}
+			if projectInfo != nil {
+				currSpecialProject.Tools = projectInfo.Tools
+			}
+			specialProjectListData.SpecialProjectInfo = append(specialProjectListData.SpecialProjectInfo, currSpecialProject)
+		}
+	} else {
+		specialProjectListData.Total = 0
 	}
-	return sProjects, total, nil
+	return specialProjectListData, nil
 }
 
 // UpdateSProject 更新SProject信息