scrm-go

activity_controller.go 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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. beego.Router("/api/activity", &ActivityAPIController{}, "get:GetActivity")
  13. }
  14. type ActivityAPIController struct {
  15. controllers.BaseAuthAPIController
  16. }
  17. // /api/activities [get]
  18. // @param page?:int
  19. // @param keyword?:string
  20. // @param status?:int 1.已发布 2.待发布 3.未通过 4.已结束 其他取全部
  21. func (this *ActivityAPIController) Activities() {
  22. page, _ := this.GetInt("page")
  23. keyword := this.GetString("keyword")
  24. status, _ := this.GetInt("status")
  25. if page <= 0 {
  26. page = 1
  27. }
  28. if status < 1 || status > 4 {
  29. status = 0
  30. }
  31. adminUserInfo := this.GetAdminUserInfo()
  32. var activities []*models.Activity
  33. var totalCount int64
  34. var getActivityErr error
  35. if status == 1 {
  36. activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 1, page, 10)
  37. } else if status == 2 {
  38. activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 4, page, 10)
  39. } else if status == 3 {
  40. activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 3, page, 10)
  41. } else if status == 4 {
  42. activities, totalCount, getActivityErr = marketing_tool_service.GetDidEndedActivities(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, page, 10)
  43. } else {
  44. activities, totalCount, getActivityErr = marketing_tool_service.GetValidActivities(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, page, 10)
  45. }
  46. if getActivityErr != nil {
  47. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  48. return
  49. }
  50. activityJSONList := make([]map[string]interface{}, 0, len(activities))
  51. for _, activity := range activities {
  52. var json map[string]interface{}
  53. // 活动状态 1:已发布 2:待审核 3:未通过 4:草稿 9:已删除
  54. if activity.Status == 1 { // 已发布/已结束
  55. json = this._convertToPublishedActivityViewJSON(activity)
  56. } else if activity.Status == 3 { // 未通过
  57. json = this._convertToUnapprovedActivityViewJSON(activity)
  58. } else if activity.Status == 4 { // 草稿
  59. json = this._convertToActivityDraftsViewJSON(activity)
  60. }
  61. activityJSONList = append(activityJSONList, json)
  62. }
  63. this.ServeSuccessJSON(map[string]interface{}{
  64. "activities": activityJSONList,
  65. "total": totalCount,
  66. })
  67. }
  68. func (this *ActivityAPIController) _convertToPublishedActivityViewJSON(activity *models.Activity) map[string]interface{} {
  69. json := make(map[string]interface{})
  70. now := time.Now().Unix()
  71. if activity.StartTime < now {
  72. json["status"] = 4
  73. } else {
  74. json["status"] = 1
  75. }
  76. json["id"] = activity.Id
  77. json["poster_photo"] = activity.PosterPhoto
  78. json["title"] = activity.Title
  79. json["is_recommend"] = activity.IsRecommend
  80. json["read_num"] = activity.ReadNum
  81. json["comment_num"] = activity.CommentNum
  82. json["star_num"] = activity.StarNum
  83. json["join_num"] = activity.JoinNum
  84. json["limit_num"] = activity.LimitNum
  85. json["start_time"] = activity.StartTime
  86. return json
  87. }
  88. func (this *ActivityAPIController) _convertToActivityDraftsViewJSON(activity *models.Activity) map[string]interface{} {
  89. json := make(map[string]interface{})
  90. json["status"] = 2
  91. json["id"] = activity.Id
  92. json["poster_photo"] = activity.PosterPhoto
  93. json["title"] = activity.Title
  94. return json
  95. }
  96. func (this *ActivityAPIController) _convertToUnapprovedActivityViewJSON(activity *models.Activity) map[string]interface{} {
  97. json := make(map[string]interface{})
  98. json["status"] = 3
  99. json["id"] = activity.Id
  100. json["poster_photo"] = activity.PosterPhoto
  101. json["title"] = activity.Title
  102. json["reason"] = activity.Reason
  103. json["start_time"] = activity.StartTime
  104. return json
  105. }
  106. // /api/activity [get]
  107. // @param id:int
  108. func (this *ActivityAPIController) GetActivity() {
  109. activityID, _ := this.GetInt64("id")
  110. if activityID <= 0 {
  111. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  112. return
  113. }
  114. adminUserInfo := this.GetAdminUserInfo()
  115. activity, getActivityErr := marketing_tool_service.GetActivityWithID(adminUserInfo.CurrentOrgId, activityID)
  116. if getActivityErr != nil {
  117. this.ErrorLog("获取活动失败:%v", getActivityErr)
  118. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  119. return
  120. } else if activity == nil {
  121. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeActivityNotExist)
  122. return
  123. }
  124. paragraph, getParagraphErr := marketing_tool_service.GetActivityParagraphByActivityID(activity.Id)
  125. if getParagraphErr != nil {
  126. this.ErrorLog("获取活动段落失败:%v", getParagraphErr)
  127. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  128. return
  129. }
  130. paragraphID := int64(0)
  131. paragraphTitle := ""
  132. paragraphContent := ""
  133. if paragraph != nil {
  134. paragraphID = paragraph.Id
  135. paragraphTitle = paragraph.Title
  136. paragraphContent = paragraph.Text
  137. }
  138. this.ServeSuccessJSON(map[string]interface{}{
  139. "activity": activity,
  140. "paragraph": map[string]interface{}{
  141. "id": paragraphID,
  142. "title": paragraphTitle,
  143. "content": paragraphContent,
  144. },
  145. })
  146. }
  147. // /api/activity/submit [post]
  148. // @param publish:bool 是否发布
  149. // @data activity:json
  150. /*
  151. activity: {
  152. id?:int
  153. title:string
  154. subtitle:string
  155. poster_photo:string
  156. address:string
  157. limit_num?:int
  158. sign_up_deadline:string ("yyyy-MM-dd HH:mm")
  159. start_time:string ("yyyy-MM-dd HH:mm")
  160. phone_number?:string
  161. sign_up_notice?:string
  162. paragraph: {
  163. title:string
  164. content:string
  165. }
  166. }
  167. */