project.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package service
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/issue9/conv"
  6. "github.com/sirupsen/logrus"
  7. "time"
  8. "youngee_b_api/db"
  9. "youngee_b_api/model/common_model"
  10. "youngee_b_api/model/gorm_model"
  11. "youngee_b_api/model/http_model"
  12. "youngee_b_api/pack"
  13. )
  14. var Project *project
  15. type project struct {
  16. }
  17. func (*project) Create(ctx context.Context, newProject http_model.CreateProjectRequest, enterpriseID int64) (*http_model.CreateProjectData, error) {
  18. // build gorm_model.ProjectInfo
  19. // 查询关联商品信息
  20. product, err := db.GetProductByID(ctx, newProject.ProductID)
  21. if err != nil {
  22. return nil, err
  23. }
  24. // 按照品牌名-商品名对项目进行命名
  25. projectName := product.BrandName + "-" + product.ProductName
  26. projectInfo := gorm_model.ProjectInfo{
  27. ProjectName: projectName,
  28. ProjectStatus: 1,
  29. ProjectType: newProject.ProjectType,
  30. TalentType: newProject.TalentType,
  31. ProjectPlatform: newProject.ProjectPlatform,
  32. ProjectForm: newProject.ProjectForm,
  33. RecruitDdl: time.Now().UTC().Local(),
  34. ProjectDetail: newProject.ProjectDetail,
  35. ContentType: newProject.ContentType,
  36. EnterpriseID: enterpriseID,
  37. ProductID: newProject.ProductID,
  38. }
  39. // db create ProjectInfo
  40. projectID, err := db.CreateProject(ctx, projectInfo)
  41. if err != nil {
  42. return nil, err
  43. }
  44. if newProject.ProjectPhotos != nil {
  45. // build []gorm_model.ProjectPhoto
  46. projectPhotos := []gorm_model.ProjectPhoto{}
  47. for _, photo := range newProject.ProjectPhotos {
  48. projectPhoto := gorm_model.ProjectPhoto{
  49. PhotoUrl: photo.PhotoUrl,
  50. PhotoUid: photo.PhotoUid,
  51. ProjectID: *projectID,
  52. }
  53. projectPhotos = append(projectPhotos, projectPhoto)
  54. }
  55. // db create ProjectPhoto
  56. err = db.CreateProjectPhoto(ctx, projectPhotos)
  57. if err != nil {
  58. return nil, err
  59. }
  60. }
  61. // build
  62. recruitStrategys := []gorm_model.RecruitStrategy{}
  63. for _, strategy := range newProject.RecruitStrategys {
  64. recruitStrategy := gorm_model.RecruitStrategy{
  65. FeeForm: strategy.FeeForm,
  66. StrategyID: strategy.StrategyID,
  67. FollowersLow: strategy.FollowersLow,
  68. FollowersUp: strategy.FollowersUp,
  69. RecruitNumber: strategy.RecruitNumber,
  70. Offer: strategy.Offer,
  71. ProjectID: *projectID,
  72. }
  73. recruitStrategys = append(recruitStrategys, recruitStrategy)
  74. }
  75. err = db.CreateRecruitStrategy(ctx, recruitStrategys)
  76. if err != nil {
  77. return nil, err
  78. }
  79. res := &http_model.CreateProjectData{
  80. ProjectID: *projectID,
  81. }
  82. fmt.Printf("%+v", res)
  83. return res, nil
  84. }
  85. func (*project) GetFullProjectList(ctx context.Context, enterpriseID int64, pageSize, pageNum int32, condition *common_model.ProjectCondition) (*http_model.FullProjectListData, error) {
  86. fullProjects, total, err := db.GetFullProjectList(ctx, enterpriseID, pageSize, pageNum, condition)
  87. if err != nil {
  88. logrus.WithContext(ctx).Errorf("[project service] call GetFullProjectList error,err:%+v", err)
  89. return nil, err
  90. }
  91. fullProjectListData := new(http_model.FullProjectListData)
  92. fullProjectListData.FullProjectPreview = pack.MGormFullProjectToHttpFullProjectPreview(fullProjects)
  93. fullProjectListData.Total = conv.MustString(total)
  94. return fullProjectListData, nil
  95. }
  96. func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_model.ShowProjectData, error) {
  97. project, err := db.GetProjectDetail(ctx, projectID)
  98. if err != nil {
  99. logrus.WithContext(ctx).Errorf("[project service] call GetPorjectDetail error,err:%+v", err)
  100. return nil, err
  101. }
  102. //var RecruitStrategys []http_model.ShowRecruitStrategy
  103. ProjectDetail := http_model.ShowProjectData{
  104. ProjectID: conv.MustString(project.ProjectID),
  105. ProjectName: conv.MustString(project.ProjectName),
  106. ProjectStatus: conv.MustString(project.ProjectStatus),
  107. ProjectType: conv.MustString(project.ProjectType),
  108. ProjectPlatform: conv.MustString(project.ProjectPlatform),
  109. ProjectForm: conv.MustString(project.ProjectForm),
  110. TalentType: conv.MustString(project.TalentType),
  111. RecruitDdl: project.RecruitDdl,
  112. ContentType: conv.MustString(project.ContentType),
  113. ProductID: conv.MustString(project.ProductID),
  114. EnterpriseID: conv.MustString(project.EnterpriseID),
  115. }
  116. fmt.Printf("%+v", ProjectDetail.EnterpriseID)
  117. Strategys, err := db.GetRecruitStrategys(ctx, projectID)
  118. if err != nil {
  119. logrus.WithContext(ctx).Error()
  120. return nil, err
  121. }
  122. for _, strategy := range Strategys {
  123. RecruitStrategy := http_model.ShowRecruitStrategy{
  124. FeeForm: conv.MustString(strategy.FeeForm),
  125. StrategyID: conv.MustString(strategy.StrategyID),
  126. FollowersLow: conv.MustString(strategy.FollowersLow),
  127. FollowersUp: conv.MustString(strategy.FollowersUp),
  128. RecruitNumber: conv.MustString(strategy.RecruitNumber),
  129. Offer: conv.MustString(strategy.Offer),
  130. }
  131. ProjectDetail.RecruitStrategys = append(ProjectDetail.RecruitStrategys, RecruitStrategy)
  132. }
  133. Photos, err := db.GetProjectPhoto(ctx, projectID)
  134. if err != nil {
  135. logrus.WithContext(ctx).Error()
  136. return nil, err
  137. }
  138. for _, Photo := range Photos {
  139. ProjectPhoto := http_model.ShowProjectPhoto{
  140. PhotoUrl: Photo.PhotoUrl,
  141. PhotoUid: Photo.PhotoUid,
  142. }
  143. ProjectDetail.ProjectPhotos = append(ProjectDetail.ProjectPhotos, ProjectPhoto)
  144. }
  145. return &ProjectDetail, nil
  146. }