project.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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) Create(ctx context.Context, newProject http_model.CreateProjectRequest, enterpriseID int64) (*http_model.CreateProjectData, error) {
  13. // build gorm_model.ProjectInfo
  14. // 查询关联商品信息
  15. product, err := db.GetProductByID(ctx, newProject.ProductID)
  16. if err != nil {
  17. return nil, err
  18. }
  19. // 按照品牌名-商品名对项目进行命名
  20. projectName := product.BrandName + "-" + product.ProductName
  21. projectInfo := gorm_model.ProjectInfo{
  22. ProjectName: projectName,
  23. ProjectStatus: 1,
  24. ProjectType: newProject.ProjectType,
  25. TalentType: newProject.TalentType,
  26. ProjectPlatform: newProject.ProjectPlatform,
  27. ProjectForm: newProject.ProjectForm,
  28. RecruitDdl: time.Now().UTC().Local(),
  29. ProjectDetail: newProject.ProjectDetail,
  30. ContentType: newProject.ContentType,
  31. EnterpriseID: enterpriseID,
  32. ProductID: newProject.ProductID,
  33. }
  34. // db create ProjectInfo
  35. projectID, err := db.CreateProject(ctx, projectInfo)
  36. if err != nil {
  37. return nil, err
  38. }
  39. if newProject.ProjectPhotos != nil {
  40. // build []gorm_model.ProjectPhoto
  41. projectPhotos := []gorm_model.ProjectPhoto{}
  42. for _, photo := range newProject.ProjectPhotos {
  43. projectPhoto := gorm_model.ProjectPhoto{
  44. PhotoUrl: photo.PhotoUrl,
  45. PhotoUid: photo.PhotoUid,
  46. ProjectID: *projectID,
  47. }
  48. projectPhotos = append(projectPhotos, projectPhoto)
  49. }
  50. // db create ProjectPhoto
  51. err = db.CreateProjectPhoto(ctx, projectPhotos)
  52. if err != nil {
  53. return nil, err
  54. }
  55. }
  56. // build
  57. recruitStrategys := []gorm_model.RecruitStrategy{}
  58. for _, strategy := range newProject.RecruitStrategys {
  59. recruitStrategy := gorm_model.RecruitStrategy{
  60. FeeForm: strategy.FeeForm,
  61. StrategyID: strategy.StrategyID,
  62. FollowersLow: strategy.FollowersLow,
  63. FollowersUp: strategy.FollowersUp,
  64. RecruitNumber: strategy.RecruitNumber,
  65. Offer: strategy.Offer,
  66. ProjectID: *projectID,
  67. }
  68. recruitStrategys = append(recruitStrategys, recruitStrategy)
  69. }
  70. err = db.CreateRecruitStrategy(ctx, recruitStrategys)
  71. if err != nil {
  72. return nil, err
  73. }
  74. res := &http_model.CreateProjectData{
  75. ProjectID: *projectID,
  76. }
  77. return res, nil
  78. }