package marketing_tool import ( "SCRM/controllers" "SCRM/enums" "SCRM/models" "SCRM/service/marketing_tool_service" "time" "github.com/astaxie/beego" ) func ActivityCtlRegistRouters() { beego.Router("/api/activities", &ActivityAPIController{}, "get:Activities") } type ActivityAPIController struct { controllers.BaseAuthAPIController } // /api/activities [get] // @param page?:int // @param keyword?:string // @param status?:int 1.已发布 2.待发布 3.未通过 4.已结束 其他取全部 func (this *ActivityAPIController) Activities() { page, _ := this.GetInt("page") keyword := this.GetString("keyword") status, _ := this.GetInt("status") if page <= 0 { page = 1 } if status < 1 || status > 4 { status = 0 } adminUserInfo := this.GetAdminUserInfo() var activities []*models.Activity var totalCount int64 var getActivityErr error if status == 1 { activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 1, page, 10) } else if status == 2 { activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 4, page, 10) } else if status == 3 { activities, totalCount, getActivityErr = marketing_tool_service.GetActivitiesWithStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, 3, page, 10) } else if status == 4 { activities, totalCount, getActivityErr = marketing_tool_service.GetDidEndedActivities(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, page, 10) } else { activities, totalCount, getActivityErr = marketing_tool_service.GetValidActivities(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, keyword, page, 10) } if getActivityErr != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } activityJSONList := make([]map[string]interface{}, 0, len(activities)) for _, activity := range activities { var json map[string]interface{} // 活动状态 1:已发布 2:待审核 3:未通过 4:草稿 9:已删除 if activity.Status == 1 { // 已发布/已结束 json = this._convertToPublishedActivityViewJSON(activity) } else if activity.Status == 3 { // 未通过 json = this._convertToUnapprovedActivityViewJSON(activity) } else if activity.Status == 4 { // 草稿 json = this._convertToActivityDraftsViewJSON(activity) } activityJSONList = append(activityJSONList, json) } this.ServeSuccessJSON(map[string]interface{}{ "activities": activityJSONList, "total": totalCount, }) } func (this *ActivityAPIController) _convertToPublishedActivityViewJSON(activity *models.Activity) map[string]interface{} { json := make(map[string]interface{}) now := time.Now().Unix() if activity.StartTime < now { json["status"] = 4 } else { json["status"] = 1 } json["id"] = activity.Id json["poster_photo"] = activity.PosterPhoto json["title"] = activity.Title json["is_recommend"] = activity.IsRecommend json["read_num"] = activity.ReadNum json["comment_num"] = activity.CommentNum json["star_num"] = activity.StarNum json["join_num"] = activity.JoinNum json["limit_num"] = activity.LimitNum json["start_time"] = activity.StartTime return json } func (this *ActivityAPIController) _convertToActivityDraftsViewJSON(activity *models.Activity) map[string]interface{} { json := make(map[string]interface{}) json["status"] = 2 json["id"] = activity.Id json["poster_photo"] = activity.PosterPhoto json["title"] = activity.Title return json } func (this *ActivityAPIController) _convertToUnapprovedActivityViewJSON(activity *models.Activity) map[string]interface{} { json := make(map[string]interface{}) json["status"] = 3 json["id"] = activity.Id json["poster_photo"] = activity.PosterPhoto json["title"] = activity.Title json["reason"] = activity.Reason json["start_time"] = activity.StartTime return json }