Forráskód Böngészése

修改创建招募策略bug

Ohio-HYF 2 éve
szülő
commit
2122b25c8e

+ 24 - 4
db/info_pricing_strategy.go

@@ -2,20 +2,40 @@ package db
 
 import (
 	"context"
+	"fmt"
 	"youngee_b_api/model/gorm_model"
 
 	log "github.com/sirupsen/logrus"
 )
 
-func GetPricingStrategy(ctx context.Context, fans int64, feeForm int64, platForm int64) (*gorm_model.InfoPricingStrategy, error) {
+func GetPricingStrategy(ctx context.Context, fansLow int64, fansUp int64, feeForm int64, platForm int64) (*gorm_model.InfoPricingStrategy, error) {
 	db := GetReadDB(context.Background())
-	// 查找最后一个
-	PricingStrategy := gorm_model.InfoPricingStrategy{}
-	err := db.Model(gorm_model.InfoPricingStrategy{}).Where("fee_form = ? and platform = ? and fans_low <= ? and fans_up >= ?", feeForm, platForm, fans, fans).Scan(&PricingStrategy).Error
+	PricingStrategys := []gorm_model.InfoPricingStrategy{}
+	whereStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansLow, fansLow)
+	orStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansUp, fansUp)
+	err := db.Model(gorm_model.InfoPricingStrategy{}).Where(whereStr).Or(orStr).Scan(&PricingStrategys).Error
 	if err != nil {
 		log.Println("DB GetLastAutoDefaultID:", err)
 		return nil, err
 	}
+	PricingStrategy := gorm_model.InfoPricingStrategy{}
+	if feeForm == 1 {
+		var maxCharge float64 = 0
+		for _, v := range PricingStrategys {
+			if v.ServiceCharge >= maxCharge {
+				maxCharge = v.ServiceCharge
+				PricingStrategy = v
+			}
+		}
+	} else {
+		var maxRate int64 = 0
+		for _, v := range PricingStrategys {
+			if v.ServiceRate >= maxRate {
+				maxRate = v.ServiceRate
+				PricingStrategy = v
+			}
+		}
+	}
 	//fmt.Printf("auto task %+v %+v", result, LastTask)
 	return &PricingStrategy, nil
 }

+ 59 - 0
handler/GetServiceFee.go

@@ -0,0 +1,59 @@
+package handler
+
+import (
+	"youngee_b_api/consts"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+	"youngee_b_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+)
+
+func WrapGetServiceChargeHandler(ctx *gin.Context) {
+	handler := newGetServiceChargeHandler(ctx)
+	baseRun(handler)
+}
+
+func newGetServiceChargeHandler(ctx *gin.Context) *GetServiceChargeHandler {
+	return &GetServiceChargeHandler{
+		req:  http_model.NewGetServiceChargeRequest(),
+		resp: http_model.NewGetServiceChargeResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetServiceChargeHandler struct {
+	req  *http_model.GetServiceChargeRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetServiceChargeHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetServiceChargeHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetServiceChargeHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetServiceChargeHandler) run() {
+	data := http_model.GetServiceChargeRequest{}
+	data = *h.req
+	res, err := service.Project.GetServiceCharge(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetServiceChargeHandler] call GetServiceCharge err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetServiceCharge fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetServiceChargeHandler) checkParam() error {
+	return nil
+}

+ 1 - 1
model/gorm_model/recruit_strategy.go

@@ -12,7 +12,7 @@ type RecruitStrategy struct {
 	Offer             float64 `gorm:"column:offer"`                                          // 报价
 	TOffer            float64 `gorm:"column:t_offer"`                                        // 达人所见报价
 	ProjectID         int64    `gorm:"column:project_id"`                                     // 所属项目id
-	ServiceCharge     int64    `gorm:"column:service_charge"`                                 // 平台服务费,稿费形式为产品置换时必填
+	ServiceCharge     float64    `gorm:"column:service_charge"`                                 // 平台服务费,稿费形式为产品置换时必填
 	SelectedNumber    int64    `gorm:"column:selected_number;default:0"`                      // 已选数量,被企业选择的达人数量
 	WaitingNumber     int64    `gorm:"column:waiting_number;default:0"`                       // 待发货
 	DeliveredNumber   int64    `gorm:"column:delivered_number;default:0"`                     // 已发货

+ 22 - 0
model/http_model/GetServiceFee.go

@@ -0,0 +1,22 @@
+package http_model
+
+type GetServiceChargeRequest struct {
+	FollowersLow int64 `json:"followers_low"` // 达人粉丝数下限
+	FollowersUp  int64 `json:"followers_up"`  // 达人粉丝数上限
+	FeeForm      int64 `json:"fee_form"`      // 稿费形式
+	Platform     int64 `json:"platform"`      // 项目平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
+}
+
+type ServiceChargeData struct {
+	ServiceCharge float64 `json:"service_charge"` // 服务费
+}
+
+func NewGetServiceChargeRequest() *GetServiceChargeRequest {
+	return new(GetServiceChargeRequest)
+}
+
+func NewGetServiceChargeResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(ServiceChargeData)
+	return resp
+}

+ 1 - 0
model/http_model/project_create.go

@@ -13,6 +13,7 @@ type CreateRecruitStrategy struct {
 	FollowersLow  int64   `json:"followers_low"`  // 达人粉丝数下限
 	FollowersUp   int64   `json:"followers_up"`   // 达人粉丝数上限
 	RecruitNumber int64   `json:"recruit_number"` // 招募数量
+	ServiceCharge float64 `json:"service_charge"` // 服务费
 	Offer         float64 `json:"offer"`          // 报价
 	TOffer        float64 `json:"t_offer"`        // 达人所见报价
 }

+ 1 - 1
model/http_model/project_show.go

@@ -15,7 +15,7 @@ type ShowRecruitStrategy struct {
 	FollowersUp       string `json:"followers_up"`   // 达人粉丝数上限
 	RecruitNumber     string `json:"recruit_number"` // 招募数量
 	Offer             string `json:"offer"`          // 报价
-	ServiceCharge     int64  `json:"service_charge"`
+	ServiceCharge     string `json:"service_charge"`
 	SelectedNumber    int64  `json:"selected_number"`
 	WaitingNumber     int64  `json:"waiting_number"`   // 待发货
 	DeliveredNumber   int64  `json:"delivered_number"` // 已发货

+ 1 - 0
model/http_model/project_update.go

@@ -13,6 +13,7 @@ type UpdateRecruitStrategy struct {
 	FollowersLow  int64   `json:"followers_low"`  // 达人粉丝数下限
 	FollowersUp   int64   `json:"followers_up"`   // 达人粉丝数上限
 	RecruitNumber int64   `json:"recruit_number"` // 招募数量
+	ServiceCharge float64 `json:"service_charge"` // 服务费
 	Offer         float64 `json:"offer"`          // 报价
 	TOffer        float64 `json:"t_offer"`        // 达人所见报价
 }

+ 2 - 0
route/init.go

@@ -121,5 +121,7 @@ func InitRoute(r *gin.Engine) {
 
 		m.POST("/project/getspecialfinishdata", handler.WrapGetSpecialFinishDataHandler) // 查询专项任务结案单结案数据
 		m.POST("/workspace/ddlproject", handler.WrapWorkspaceDDLprojectHandler)          // 工作台项目统计
+
+		m.POST("/project/recruit/getservicecharge", handler.WrapGetServiceChargeHandler) // 获取产品置换服务费
 	}
 }

+ 16 - 3
service/project.go

@@ -110,7 +110,7 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
 	if newProject.ProjectType == int64(1) {
 		recruitStrategys := []gorm_model.RecruitStrategy{}
 		for _, strategy := range newProject.RecruitStrategys { // 查询对应定价策略
-			pricingStrategy, err := db.GetPricingStrategy(ctx, strategy.FollowersLow, strategy.FeeForm, newProject.ProjectPlatform)
+			pricingStrategy, err := db.GetPricingStrategy(ctx, strategy.FollowersLow, strategy.FollowersUp, strategy.FeeForm, newProject.ProjectPlatform)
 			if err != nil {
 				return nil, err
 			}
@@ -125,6 +125,7 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
 				FollowersLow:  strategy.FollowersLow,
 				FollowersUp:   strategy.FollowersUp,
 				RecruitNumber: strategy.RecruitNumber,
+				ServiceCharge: strategy.ServiceCharge,
 				Offer:         strategy.Offer,
 				TOffer:        strategy.TOffer,
 				ProjectID:     *projectID,
@@ -203,7 +204,7 @@ func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectR
 		RecruitStrategys := []gorm_model.RecruitStrategy{}
 		for _, Strategy := range newProject.RecruitStrategys {
 			// 查询对应定价策略
-			pricingStrategy, err := db.GetPricingStrategy(ctx, Strategy.FollowersLow, Strategy.FeeForm, oldProject.ProjectPlatform)
+			pricingStrategy, err := db.GetPricingStrategy(ctx, Strategy.FollowersLow, Strategy.FollowersUp, Strategy.FeeForm, oldProject.ProjectPlatform)
 			if err != nil {
 				return nil, err
 			}
@@ -218,6 +219,7 @@ func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectR
 				FollowersLow:  conv.MustInt64(Strategy.FollowersLow),
 				FollowersUp:   conv.MustInt64(Strategy.FollowersUp),
 				RecruitNumber: conv.MustInt64(Strategy.RecruitNumber),
+				ServiceCharge: Strategy.ServiceCharge,
 				Offer:         Strategy.Offer,
 				TOffer:        Strategy.TOffer,
 				ProjectID:     project.ProjectID,
@@ -353,7 +355,7 @@ func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_mo
 			FollowersUp:       conv.MustString(strategy.FollowersUp),
 			RecruitNumber:     conv.MustString(strategy.RecruitNumber),
 			Offer:             conv.MustString(strategy.Offer),
-			ServiceCharge:     strategy.ServiceCharge,
+			ServiceCharge:     conv.MustString(strategy.ServiceCharge),
 			SelectedNumber:    strategy.SelectedNumber,
 			WaitingNumber:     strategy.WaitingNumber,
 			DeliveredNumber:   strategy.DeliveredNumber,
@@ -478,3 +480,14 @@ func (p *project) GetTaskFinishList(ctx *gin.Context, projectID string, pageSize
 	TaskFinishListData.Total = conv.MustString(total)
 	return TaskFinishListData, nil
 }
+
+func (p *project) GetServiceCharge(ctx *gin.Context, data http_model.GetServiceChargeRequest) (*http_model.ServiceChargeData, error) {
+	pricingStrategy, err := db.GetPricingStrategy(ctx, data.FollowersLow, data.FollowersUp, data.FeeForm, data.Platform)
+	if err != nil {
+		return nil, err
+	}
+	serviceFee := http_model.ServiceChargeData{
+		ServiceCharge: pricingStrategy.ServiceCharge,
+	}
+	return &serviceFee, nil
+}