package service import ( "context" "fmt" "github.com/issue9/conv" "github.com/sirupsen/logrus" "time" "youngee_b_api/db" "youngee_b_api/model/common_model" "youngee_b_api/model/gorm_model" "youngee_b_api/model/http_model" "youngee_b_api/pack" ) var Project *project type project struct { } func (*project) Create(ctx context.Context, newProject http_model.CreateProjectRequest, enterpriseID int64) (*http_model.CreateProjectData, error) { // build gorm_model.ProjectInfo // 查询关联商品信息 product, err := db.GetProductByID(ctx, newProject.ProductID) if err != nil { return nil, err } // 按照品牌名-商品名对项目进行命名 projectName := product.BrandName + "-" + product.ProductName projectInfo := gorm_model.ProjectInfo{ ProjectName: 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 } if newProject.ProjectPhotos != nil { // build []gorm_model.ProjectPhoto projectPhotos := []gorm_model.ProjectPhoto{} for _, photo := range newProject.ProjectPhotos { projectPhoto := gorm_model.ProjectPhoto{ PhotoUrl: photo.PhotoUrl, PhotoUid: photo.PhotoUid, ProjectID: *projectID, } projectPhotos = append(projectPhotos, projectPhoto) } // db create ProjectPhoto err = db.CreateProjectPhoto(ctx, projectPhotos) if err != nil { return nil, err } } // 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, } fmt.Printf("%+v", res) return res, nil } func (*project) GetFullProjectList(ctx context.Context, enterpriseID int64, pageSize, pageNum int32, condition *common_model.ProjectCondition) (*http_model.FullProjectListData, error) { fullProjects, total, err := db.GetFullProjectList(ctx, enterpriseID, pageSize, pageNum, condition) if err != nil { logrus.WithContext(ctx).Errorf("[project service] call GetFullProjectList error,err:%+v", err) return nil, err } fullProjectListData := new(http_model.FullProjectListData) fullProjectListData.FullProjectPreview = pack.MGormFullProjectToHttpFullProjectPreview(fullProjects) fullProjectListData.Total = conv.MustString(total) return fullProjectListData, nil } func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_model.ShowProjectData, error) { project, err := db.GetProjectDetail(ctx, projectID) if err != nil { logrus.WithContext(ctx).Errorf("[project service] call GetPorjectDetail error,err:%+v", err) return nil, err } //var RecruitStrategys []http_model.ShowRecruitStrategy ProjectDetail := http_model.ShowProjectData{ ProjectID: conv.MustString(project.ProjectID), ProjectName: conv.MustString(project.ProjectName), ProjectStatus: conv.MustString(project.ProjectStatus), ProjectType: conv.MustString(project.ProjectType), ProjectPlatform: conv.MustString(project.ProjectPlatform), ProjectForm: conv.MustString(project.ProjectForm), TalentType: conv.MustString(project.TalentType), RecruitDdl: project.RecruitDdl, ContentType: conv.MustString(project.ContentType), ProductID: conv.MustString(project.ProductID), EnterpriseID: conv.MustString(project.EnterpriseID), } fmt.Printf("%+v", ProjectDetail.EnterpriseID) Strategys, err := db.GetRecruitStrategys(ctx, projectID) if err != nil { logrus.WithContext(ctx).Error() return nil, err } for _, strategy := range Strategys { RecruitStrategy := http_model.ShowRecruitStrategy{ FeeForm: conv.MustString(strategy.FeeForm), StrategyID: conv.MustString(strategy.StrategyID), FollowersLow: conv.MustString(strategy.FollowersLow), FollowersUp: conv.MustString(strategy.FollowersUp), RecruitNumber: conv.MustString(strategy.RecruitNumber), Offer: conv.MustString(strategy.Offer), } ProjectDetail.RecruitStrategys = append(ProjectDetail.RecruitStrategys, RecruitStrategy) } Photos, err := db.GetProjectPhoto(ctx, projectID) if err != nil { logrus.WithContext(ctx).Error() return nil, err } for _, Photo := range Photos { ProjectPhoto := http_model.ShowProjectPhoto{ PhotoUrl: Photo.PhotoUrl, PhotoUid: Photo.PhotoUid, } ProjectDetail.ProjectPhotos = append(ProjectDetail.ProjectPhotos, ProjectPhoto) } return &ProjectDetail, nil }