123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- 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")
- beego.Router("/api/activity", &ActivityAPIController{}, "get:GetActivity")
- }
-
- 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
- }
-
- // /api/activity [get]
- // @param id:int
- func (this *ActivityAPIController) GetActivity() {
- activityID, _ := this.GetInt64("id")
- if activityID <= 0 {
- this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
-
- adminUserInfo := this.GetAdminUserInfo()
- activity, getActivityErr := marketing_tool_service.GetActivityWithID(adminUserInfo.CurrentOrgId, activityID)
- if getActivityErr != nil {
- this.ErrorLog("获取活动失败:%v", getActivityErr)
- this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- return
- } else if activity == nil {
- this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeActivityNotExist)
- return
- }
-
- paragraph, getParagraphErr := marketing_tool_service.GetActivityParagraphByActivityID(activity.Id)
- if getParagraphErr != nil {
- this.ErrorLog("获取活动段落失败:%v", getParagraphErr)
- this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- return
- }
-
- paragraphID := int64(0)
- paragraphTitle := ""
- paragraphContent := ""
- if paragraph != nil {
- paragraphID = paragraph.Id
- paragraphTitle = paragraph.Title
- paragraphContent = paragraph.Text
- }
-
- this.ServeSuccessJSON(map[string]interface{}{
- "activity": activity,
- "paragraph": map[string]interface{}{
- "id": paragraphID,
- "title": paragraphTitle,
- "content": paragraphContent,
- },
- })
- }
-
- // /api/activity/submit [post]
- // @param publish:bool 是否发布
- // @data activity:json
- /*
- activity: {
- id?:int
- title:string
- subtitle:string
- poster_photo:string
- address:string
- limit_num?:int
- sign_up_deadline:string ("yyyy-MM-dd HH:mm")
- start_time:string ("yyyy-MM-dd HH:mm")
- phone_number?:string
- sign_up_notice?:string
-
- paragraph: {
- title:string
- content:string
- }
- }
- */
|