package service import ( "context" "time" "youngee_b_api/db" "youngee_b_api/model/gorm_model" "youngee_b_api/model/http_model" ) var Project *project type project struct { } func (*project) CreateProject(ctx context.Context, newProject http_model.CreateProjectRequest, enterpriseID int64) (*http_model.CreateProjectData, error) { // build gorm_model.ProjectInfo projectInfo := gorm_model.ProjectInfo{ ProjectName: newProject.ProjectName, ProjectStatus: 1, ProjectType: newProject.ProjectType, TalentType: newProject.TalentType, ProjectPlatform: newProject.ProjectPlatform, ProjectForm: newProject.ProjectForm, RecruitDdl: time.Now().UTC().Local(), ProjectDetail: newProject.ProjectDetail, ContentType: newProject.ContentType, EnterpriseID: enterpriseID, ProductID: newProject.ProductID, } // db create ProjectInfo projectID, err := db.CreateProject(ctx, projectInfo) if err != nil { return nil, err } else { // build []gorm_model.ProjectPhoto projectPhotos := []gorm_model.ProjectPhoto{} for _, photo := range newProject.ProjectPhotos { projectPhoto := gorm_model.ProjectPhoto{ PhotoUrl: photo.PhotoUrl, ProjectID: *projectID, } projectPhotos = append(projectPhotos, projectPhoto) } // db create ProjectPhoto err := db.CreateProjectPhoto(ctx, projectPhotos) if err != nil { return nil, err } else { // build recruitStrategys := []gorm_model.RecruitStrategy{} for _, strategy := range newProject.RecruitStrategys { recruitStrategy := gorm_model.RecruitStrategy{ FeeForm: strategy.FeeForm, StrategyID: strategy.StrategyID, FollowersLow: strategy.FollowersLow, FollowersUp: strategy.FollowersUp, RecruitNumber: strategy.RecruitNumber, Offer: strategy.Offer, ProjectID: *projectID, } recruitStrategys = append(recruitStrategys, recruitStrategy) } err := db.CreateRecruitStrategy(ctx, recruitStrategys) if err != nil { return nil, err } } } res := &http_model.CreateProjectData{ ProjectID: *projectID, } return res, nil }