|
@@ -43,9 +43,20 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
|
|
//feeForm := fmt.Sprintf("[")
|
|
//feeForm := fmt.Sprintf("[")
|
|
feeFrom := []string{}
|
|
feeFrom := []string{}
|
|
for _, strategy := range newProject.RecruitStrategys {
|
|
for _, strategy := range newProject.RecruitStrategys {
|
|
- //if strategy.StrategyID
|
|
|
|
feeFrom = append(feeFrom, strconv.FormatInt(strategy.FeeForm, 10))
|
|
feeFrom = append(feeFrom, strconv.FormatInt(strategy.FeeForm, 10))
|
|
- //feeForm += string(strategy.StrategyID)
|
|
|
|
|
|
+ }
|
|
|
|
+ var ECost float64 = 0
|
|
|
|
+ if newProject.ProjectType == int64(1) {
|
|
|
|
+ for _, strategy := range newProject.RecruitStrategys {
|
|
|
|
+ // 计算预估成本
|
|
|
|
+ var tmpCost float64 = 0
|
|
|
|
+ if strategy.FeeForm == 1 {
|
|
|
|
+ tmpCost = strategy.ServiceCharge * float64(strategy.RecruitNumber)
|
|
|
|
+ } else if strategy.FeeForm == 2 {
|
|
|
|
+ tmpCost = strategy.Offer * float64(strategy.RecruitNumber)
|
|
|
|
+ }
|
|
|
|
+ ECost += tmpCost
|
|
|
|
+ }
|
|
}
|
|
}
|
|
feeFroms := strings.Join(feeFrom, ",")
|
|
feeFroms := strings.Join(feeFrom, ",")
|
|
fmt.Printf("创建项目new %+v", newProject)
|
|
fmt.Printf("创建项目new %+v", newProject)
|
|
@@ -66,6 +77,7 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
|
|
FeeForm: feeFroms,
|
|
FeeForm: feeFroms,
|
|
AutoTaskID: conv.MustInt64(AutoTaskID),
|
|
AutoTaskID: conv.MustInt64(AutoTaskID),
|
|
AutoDefaultID: conv.MustInt64(AutoDefaultID),
|
|
AutoDefaultID: conv.MustInt64(AutoDefaultID),
|
|
|
|
+ EstimatedCost: ECost,
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
projectInfo = gorm_model.ProjectInfo{
|
|
projectInfo = gorm_model.ProjectInfo{
|
|
@@ -82,6 +94,7 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
|
|
FeeForm: feeFroms,
|
|
FeeForm: feeFroms,
|
|
AutoTaskID: conv.MustInt64(AutoTaskID),
|
|
AutoTaskID: conv.MustInt64(AutoTaskID),
|
|
AutoDefaultID: conv.MustInt64(AutoDefaultID),
|
|
AutoDefaultID: conv.MustInt64(AutoDefaultID),
|
|
|
|
+ EstimatedCost: ECost,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// db create ProjectInfo
|
|
// db create ProjectInfo
|
|
@@ -109,12 +122,12 @@ func (*project) Create(ctx context.Context, newProject http_model.CreateProjectR
|
|
// build
|
|
// build
|
|
if newProject.ProjectType == int64(1) {
|
|
if newProject.ProjectType == int64(1) {
|
|
recruitStrategys := []gorm_model.RecruitStrategy{}
|
|
recruitStrategys := []gorm_model.RecruitStrategy{}
|
|
- for _, strategy := range newProject.RecruitStrategys { // 查询对应定价策略
|
|
|
|
|
|
+ for _, strategy := range newProject.RecruitStrategys {
|
|
|
|
+ // 查询对应定价策略
|
|
pricingStrategy, err := db.GetPricingStrategy(ctx, strategy.FollowersLow, strategy.FollowersUp, strategy.FeeForm, newProject.ProjectPlatform)
|
|
pricingStrategy, err := db.GetPricingStrategy(ctx, strategy.FollowersLow, strategy.FollowersUp, strategy.FeeForm, newProject.ProjectPlatform)
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- // fmt.Printf(" %+v 对应定价策略 %+v", strategy, pricingStrategy)
|
|
|
|
// 根据定价策略计算达人所见报价
|
|
// 根据定价策略计算达人所见报价
|
|
if strategy.FeeForm == 2 {
|
|
if strategy.FeeForm == 2 {
|
|
strategy.TOffer = strategy.Offer * (1 - conv.MustFloat64(pricingStrategy.ServiceRate)/1000)
|
|
strategy.TOffer = strategy.Offer * (1 - conv.MustFloat64(pricingStrategy.ServiceRate)/1000)
|
|
@@ -155,6 +168,19 @@ func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectR
|
|
feeFrom = append(feeFrom, strconv.FormatInt(strategy.FeeForm, 10))
|
|
feeFrom = append(feeFrom, strconv.FormatInt(strategy.FeeForm, 10))
|
|
//feeForm += string(strategy.StrategyID)
|
|
//feeForm += string(strategy.StrategyID)
|
|
}
|
|
}
|
|
|
|
+ var ECost float64 = 0
|
|
|
|
+ if newProject.ProjectType == int64(1) {
|
|
|
|
+ for _, strategy := range newProject.RecruitStrategys {
|
|
|
|
+ // 计算预估成本
|
|
|
|
+ var tmpCost float64 = 0
|
|
|
|
+ if strategy.FeeForm == 1 {
|
|
|
|
+ tmpCost = strategy.ServiceCharge * float64(strategy.RecruitNumber)
|
|
|
|
+ } else if strategy.FeeForm == 2 {
|
|
|
|
+ tmpCost = strategy.Offer * float64(strategy.RecruitNumber)
|
|
|
|
+ }
|
|
|
|
+ ECost += tmpCost
|
|
|
|
+ }
|
|
|
|
+ }
|
|
feeFroms := strings.Join(feeFrom, ",")
|
|
feeFroms := strings.Join(feeFrom, ",")
|
|
project := gorm_model.ProjectInfo{
|
|
project := gorm_model.ProjectInfo{
|
|
ProjectID: conv.MustInt64(newProject.ProjectID),
|
|
ProjectID: conv.MustInt64(newProject.ProjectID),
|
|
@@ -166,6 +192,7 @@ func (*project) Update(ctx context.Context, newProject http_model.UpdateProjectR
|
|
EnterpriseID: enterpriseID,
|
|
EnterpriseID: enterpriseID,
|
|
ProjectStatus: conv.MustInt64(newProject.ProjectStatus),
|
|
ProjectStatus: conv.MustInt64(newProject.ProjectStatus),
|
|
FeeForm: feeFroms,
|
|
FeeForm: feeFroms,
|
|
|
|
+ EstimatedCost: ECost,
|
|
}
|
|
}
|
|
projectID, err := db.UpdateProject(ctx, project)
|
|
projectID, err := db.UpdateProject(ctx, project)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -299,7 +326,6 @@ func (*project) GetProjectTaskList(ctx context.Context, projectID string, pageSi
|
|
}
|
|
}
|
|
|
|
|
|
func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_model.ShowProjectData, error) {
|
|
func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_model.ShowProjectData, error) {
|
|
-
|
|
|
|
project, err := db.GetProjectDetail(ctx, projectID)
|
|
project, err := db.GetProjectDetail(ctx, projectID)
|
|
if err != nil {
|
|
if err != nil {
|
|
logrus.WithContext(ctx).Errorf("[project service] call GetPorjectDetail error,err:%+v", err)
|
|
logrus.WithContext(ctx).Errorf("[project service] call GetPorjectDetail error,err:%+v", err)
|
|
@@ -332,6 +358,7 @@ func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_mo
|
|
ProductID: conv.MustString(project.ProductID),
|
|
ProductID: conv.MustString(project.ProductID),
|
|
EnterpriseID: conv.MustString(project.EnterpriseID),
|
|
EnterpriseID: conv.MustString(project.EnterpriseID),
|
|
Balance: conv.MustString(enterprise.Balance),
|
|
Balance: conv.MustString(enterprise.Balance),
|
|
|
|
+ EstimatedCost: conv.MustString(project.EstimatedCost),
|
|
FailReason: conv.MustString(project.FailReason),
|
|
FailReason: conv.MustString(project.FailReason),
|
|
CreateAt: util.GetTimePoionter(project.CreatedAt),
|
|
CreateAt: util.GetTimePoionter(project.CreatedAt),
|
|
UpdateAt: util.GetTimePoionter(project.UpdatedAt),
|
|
UpdateAt: util.GetTimePoionter(project.UpdatedAt),
|