project.go 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package service
  2. import (
  3. "context"
  4. "fmt"
  5. "youngee_b_api/db"
  6. "youngee_b_api/model/common_model"
  7. "youngee_b_api/model/gorm_model"
  8. "youngee_b_api/model/http_model"
  9. "youngee_b_api/pack"
  10. "github.com/gin-gonic/gin"
  11. "github.com/issue9/conv"
  12. "github.com/sirupsen/logrus"
  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: newProject.RecruitDdl,
  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) Update(ctx context.Context, newProject http_model.UpdateProjectRequest, enterpriseID int64) (*http_model.UpdateProjectData, error) {
  86. project := gorm_model.ProjectInfo{
  87. ProjectID: conv.MustInt64(newProject.ProjectID),
  88. RecruitDdl: newProject.RecruitDdl,
  89. TalentType: newProject.TalentType,
  90. ContentType: conv.MustInt64(newProject.ContentType),
  91. ProjectDetail: newProject.ProjectDetail,
  92. ProjectForm: conv.MustInt64(newProject.ProjectForm),
  93. EnterpriseID: enterpriseID,
  94. ProjectStatus: 2,
  95. }
  96. projectID, err := db.UpdateProject(ctx, project)
  97. if err != nil {
  98. return nil, err
  99. }
  100. // 删除该项目之前的所有图片
  101. err = db.DeleteProjectPhotoByProjecttID(ctx, *projectID)
  102. if err != nil {
  103. return nil, err
  104. }
  105. fmt.Printf("照片:\t %+v", newProject.ProjectPhotos)
  106. if newProject.ProjectPhotos != nil {
  107. // 新增图片
  108. projectPhotos := []gorm_model.ProjectPhoto{}
  109. for _, photo := range newProject.ProjectPhotos {
  110. projectPhoto := gorm_model.ProjectPhoto{
  111. ProjectID: project.ProjectID,
  112. PhotoUrl: photo.PhotoUrl,
  113. PhotoUid: photo.PhotoUid,
  114. }
  115. projectPhotos = append(projectPhotos, projectPhoto)
  116. }
  117. err = db.CreateProjectPhoto(ctx, projectPhotos)
  118. if err != nil {
  119. return nil, err
  120. }
  121. }
  122. // 删除该项目之前的所有策略
  123. err = db.DeleteRecruitStrategyByProjectID(ctx, *projectID)
  124. if err != nil {
  125. return nil, err
  126. }
  127. fmt.Printf("策略:\t %+v", newProject.RecruitStrategys)
  128. if newProject.RecruitStrategys != nil {
  129. // 新增策略
  130. RecruitStrategys := []gorm_model.RecruitStrategy{}
  131. for _, Strategy := range newProject.RecruitStrategys {
  132. RecruitStrategy := gorm_model.RecruitStrategy{
  133. FeeForm: conv.MustInt64(Strategy.FeeForm),
  134. StrategyID: conv.MustInt64(Strategy.StrategyID),
  135. FollowersLow: conv.MustInt64(Strategy.FollowersLow),
  136. FollowersUp: conv.MustInt64(Strategy.FollowersUp),
  137. RecruitNumber: conv.MustInt64(Strategy.RecruitNumber),
  138. Offer: conv.MustInt64(Strategy.Offer),
  139. ProjectID: project.ProjectID,
  140. }
  141. fmt.Printf("Offer:\t %+v", Strategy.Offer)
  142. RecruitStrategys = append(RecruitStrategys, RecruitStrategy)
  143. }
  144. err = db.CreateRecruitStrategy(ctx, RecruitStrategys)
  145. if err != nil {
  146. return nil, err
  147. }
  148. }
  149. res := &http_model.UpdateProjectData{
  150. ProjectID: *projectID,
  151. }
  152. return res, nil
  153. }
  154. func (*project) GetFullProjectList(ctx context.Context, enterpriseID int64, pageSize, pageNum int32, condition *common_model.ProjectCondition) (*http_model.FullProjectListData, error) {
  155. fullProjects, total, err := db.GetFullProjectList(ctx, enterpriseID, pageSize, pageNum, condition)
  156. if err != nil {
  157. logrus.WithContext(ctx).Errorf("[project service] call GetFullProjectList error,err:%+v", err)
  158. return nil, err
  159. }
  160. fullProjectListData := new(http_model.FullProjectListData)
  161. fullProjectListData.FullProjectPreview = pack.MGormFullProjectToHttpFullProjectPreview(fullProjects)
  162. fullProjectListData.Total = conv.MustString(total)
  163. return fullProjectListData, nil
  164. }
  165. func (*project) GetProjectTaskList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TaskConditions) (*http_model.ProjectTaskListData, error) {
  166. projectTasks, total, err := db.GetProjectTaskList(ctx, projectID, pageSize, pageNum, conditions)
  167. if err != nil {
  168. logrus.WithContext(ctx).Errorf("[project service] call GetProjectTaskList error,err:%+v", err)
  169. return nil, err
  170. }
  171. projectTaskListData := new(http_model.ProjectTaskListData)
  172. projectTaskListData.ProjectTaskPreview = pack.MGormProjectTaskToHttpProjectTaskPreview(projectTasks)
  173. projectTaskListData.Total = conv.MustString(total)
  174. return projectTaskListData, nil
  175. }
  176. func (*project) GetPorjectDetail(ctx context.Context, projectID int64) (*http_model.ShowProjectData, error) {
  177. project, err := db.GetProjectDetail(ctx, projectID)
  178. if err != nil {
  179. logrus.WithContext(ctx).Errorf("[project service] call GetPorjectDetail error,err:%+v", err)
  180. return nil, err
  181. }
  182. enterprise, err := db.GetEnterpriseByEnterpriseID(ctx, project.EnterpriseID)
  183. fmt.Println("%+v", enterprise.UserID)
  184. if err != nil {
  185. logrus.WithContext(ctx).Errorf("[project service] call GetEnterpriseByEnterpriseID error,err:%+v", err)
  186. return nil, err
  187. }
  188. user, err := db.GetUserByID(ctx, enterprise.UserID)
  189. if err != nil {
  190. logrus.WithContext(ctx).Errorf("[project service] call GetUserByID error,err:%+v", err)
  191. return nil, err
  192. }
  193. fmt.Println("%+v", user.Phone)
  194. //var RecruitStrategys []http_model.ShowRecruitStrategy
  195. ProjectDetail := http_model.ShowProjectData{
  196. ProjectID: conv.MustString(project.ProjectID),
  197. ProjectName: conv.MustString(project.ProjectName),
  198. ProjectStatus: conv.MustString(project.ProjectStatus),
  199. ProjectType: conv.MustString(project.ProjectType),
  200. ProjectPlatform: conv.MustString(project.ProjectPlatform),
  201. ProjectForm: conv.MustString(project.ProjectForm),
  202. TalentType: conv.MustString(project.TalentType),
  203. RecruitDdl: project.RecruitDdl,
  204. ContentType: conv.MustString(project.ContentType),
  205. ProjectDetail: conv.MustString(project.ProjectDetail),
  206. ProductID: conv.MustString(project.ProductID),
  207. EnterpriseID: conv.MustString(project.EnterpriseID),
  208. Balance: conv.MustString(enterprise.Balance),
  209. CreateAt: project.CreatedAt,
  210. UpdateAt: project.UpdatedAt,
  211. Phone: user.Phone,
  212. }
  213. Strategys, err := db.GetRecruitStrategys(ctx, projectID)
  214. if err != nil {
  215. logrus.WithContext(ctx).Error()
  216. return nil, err
  217. }
  218. for _, strategy := range Strategys {
  219. RecruitStrategy := http_model.ShowRecruitStrategy{
  220. FeeForm: conv.MustString(strategy.FeeForm),
  221. StrategyID: conv.MustString(strategy.StrategyID),
  222. FollowersLow: conv.MustString(strategy.FollowersLow),
  223. FollowersUp: conv.MustString(strategy.FollowersUp),
  224. RecruitNumber: conv.MustString(strategy.RecruitNumber),
  225. Offer: conv.MustString(strategy.Offer),
  226. }
  227. ProjectDetail.RecruitStrategys = append(ProjectDetail.RecruitStrategys, RecruitStrategy)
  228. }
  229. Photos, err := db.GetProjectPhoto(ctx, projectID)
  230. if err != nil {
  231. logrus.WithContext(ctx).Error()
  232. return nil, err
  233. }
  234. for _, Photo := range Photos {
  235. ProjectPhoto := http_model.ShowProjectPhoto{
  236. PhotoUrl: Photo.PhotoUrl,
  237. PhotoUid: Photo.PhotoUid,
  238. }
  239. ProjectDetail.ProjectPhotos = append(ProjectDetail.ProjectPhotos, ProjectPhoto)
  240. }
  241. return &ProjectDetail, nil
  242. }
  243. func (*project) ChangeTaskStatus(ctx *gin.Context, data http_model.ProjectChangeTaskStatusRequest) interface{} {
  244. err := db.ChangeTaskStatus(ctx, data.TaskIds, data.TaskStatus)
  245. if err != nil {
  246. logrus.WithContext(ctx).Errorf("[project service] call ChangeTaskStatus error,err:%+v", err)
  247. return err
  248. }
  249. return nil
  250. }