project.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package service
  2. import (
  3. "context"
  4. "time"
  5. "youngee_b_api/db"
  6. "youngee_b_api/model/gorm_model"
  7. "youngee_b_api/model/http_model"
  8. )
  9. var Project *project
  10. type project struct {
  11. }
  12. func (*project) CreateProject(ctx context.Context, newProject http_model.CreateProjectRequest, enterpriseID int64) (*http_model.CreateProjectData, error) {
  13. // build gorm_model.ProjectInfo
  14. projectInfo := gorm_model.ProjectInfo{
  15. ProjectName: newProject.ProjectName,
  16. ProjectStatus: 1,
  17. ProjectType: newProject.ProjectType,
  18. TalentType: newProject.TalentType,
  19. ProjectPlatform: newProject.ProjectPlatform,
  20. ProjectForm: newProject.ProjectForm,
  21. RecruitDdl: time.Now().UTC().Local(),
  22. ProjectDetail: newProject.ProjectDetail,
  23. ContentType: newProject.ContentType,
  24. EnterpriseID: enterpriseID,
  25. ProductID: newProject.ProductID,
  26. }
  27. // db create ProjectInfo
  28. projectID, err := db.CreateProject(ctx, projectInfo)
  29. if err != nil {
  30. return nil, err
  31. } else {
  32. // build []gorm_model.ProjectPhoto
  33. projectPhotos := []gorm_model.ProjectPhoto{}
  34. for _, photo := range newProject.ProjectPhotos {
  35. projectPhoto := gorm_model.ProjectPhoto{
  36. PhotoUrl: photo.PhotoUrl,
  37. ProjectID: *projectID,
  38. }
  39. projectPhotos = append(projectPhotos, projectPhoto)
  40. }
  41. // db create ProjectPhoto
  42. err := db.CreateProjectPhoto(ctx, projectPhotos)
  43. if err != nil {
  44. return nil, err
  45. } else {
  46. // build
  47. recruitStrategys := []gorm_model.RecruitStrategy{}
  48. for _, strategy := range newProject.RecruitStrategys {
  49. recruitStrategy := gorm_model.RecruitStrategy{
  50. FeeForm: strategy.FeeForm,
  51. StrategyID: strategy.StrategyID,
  52. FollowersLow: strategy.FollowersLow,
  53. FollowersUp: strategy.FollowersUp,
  54. RecruitNumber: strategy.RecruitNumber,
  55. Offer: strategy.Offer,
  56. ProjectID: *projectID,
  57. }
  58. recruitStrategys = append(recruitStrategys, recruitStrategy)
  59. }
  60. err := db.CreateRecruitStrategy(ctx, recruitStrategys)
  61. if err != nil {
  62. return nil, err
  63. }
  64. }
  65. }
  66. res := &http_model.CreateProjectData{
  67. ProjectID: *projectID,
  68. }
  69. return res, nil
  70. }