scrm-go

activity_controller.go 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package marketing_tool
  2. import (
  3. "SCRM/controllers"
  4. "SCRM/enums"
  5. "SCRM/models"
  6. "SCRM/service/marketing_tool_service"
  7. "time"
  8. "github.com/astaxie/beego"
  9. )
  10. func ActivityCtlRegistRouters() {
  11. beego.Router("/api/activities", &ActivityAPIController{}, "get:Activities")
  12. }
  13. type ActivityAPIController struct {
  14. controllers.BaseAuthAPIController
  15. }
  16. // /api/activities [get]
  17. // @param page?:int
  18. // @param keyword?:string
  19. // @param status?:int 1.已发布 2.待发布 3.未通过 4.已结束 其他取全部
  20. func (this *ActivityAPIController) Activities() {
  21. page, _ := this.GetInt("page")
  22. keyword := this.GetString("keyword")
  23. status, _ := this.GetInt("status")
  24. if page <= 0 {
  25. page = 1
  26. }
  27. if status < 1 || status > 4 {
  28. status = 0
  29. }
  30. adminUserInfo := this.GetAdminUserInfo()
  31. var activities []*models.Activity
  32. var totalCount int64
  33. var getActivityErr error
  34. if status == 1 {
  35. activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 1, page, 10)
  36. } else if status == 2 {
  37. activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 4, page, 10)
  38. } else if status == 3 {
  39. activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 3, page, 10)
  40. } else if status == 4 {
  41. activities, totalCount, getActivityErr = marketing_tool_service.GetDidEndedActivities(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, page, 10)
  42. } else {
  43. activities, totalCount, getActivityErr = marketing_tool_service.GetValidActivities(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, page, 10)
  44. }
  45. if getActivityErr != nil {
  46. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  47. return
  48. }
  49. activityJSONList := make([]map[string]interface{}, 0, len(activities))
  50. for _, activity := range activities {
  51. var json map[string]interface{}
  52. // 活动状态 1:已发布 2:待审核 3:未通过 4:草稿 9:已删除
  53. if activity.Status == 1 { // 已发布/已结束
  54. json = this._convertToPublishedActivityViewJSON(activity)
  55. } else if activity.Status == 3 { // 未通过
  56. json = this._convertToUnapprovedActivityViewJSON(activity)
  57. } else if activity.Status == 4 { // 草稿
  58. json = this._convertToActivityDraftsViewJSON(activity)
  59. }
  60. activityJSONList = append(activityJSONList, json)
  61. }
  62. this.ServeSuccessJSON(map[string]interface{}{
  63. "activities": activityJSONList,
  64. "total": totalCount,
  65. })
  66. }
  67. func (this *ActivityAPIController) _convertToPublishedActivityViewJSON(activity *models.Activity) map[string]interface{} {
  68. json := make(map[string]interface{})
  69. now := time.Now().Unix()
  70. if activity.StartTime < now {
  71. json["status"] = 4
  72. } else {
  73. json["status"] = 1
  74. }
  75. json["id"] = activity.Id
  76. json["poster_photo"] = activity.PosterPhoto
  77. json["title"] = activity.Title
  78. json["is_recommend"] = activity.IsRecommend
  79. json["read_num"] = activity.ReadNum
  80. json["comment_num"] = activity.CommentNum
  81. json["star_num"] = activity.StarNum
  82. json["join_num"] = activity.JoinNum
  83. json["limit_num"] = activity.LimitNum
  84. json["start_time"] = activity.StartTime
  85. return json
  86. }
  87. func (this *ActivityAPIController) _convertToActivityDraftsViewJSON(activity *models.Activity) map[string]interface{} {
  88. json := make(map[string]interface{})
  89. json["status"] = 2
  90. json["id"] = activity.Id
  91. json["poster_photo"] = activity.PosterPhoto
  92. json["title"] = activity.Title
  93. return json
  94. }
  95. func (this *ActivityAPIController) _convertToUnapprovedActivityViewJSON(activity *models.Activity) map[string]interface{} {
  96. json := make(map[string]interface{})
  97. json["status"] = 3
  98. json["id"] = activity.Id
  99. json["poster_photo"] = activity.PosterPhoto
  100. json["title"] = activity.Title
  101. json["reason"] = activity.Reason
  102. json["start_time"] = activity.StartTime
  103. return json
  104. }