소스 검색

活动列表接口

庄逸洲 5 년 전
부모
커밋
ae14447202
3개의 변경된 파일210개의 추가작업 그리고 30개의 파일을 삭제
  1. 93 0
      controllers/marketing_tool/activity_controller.go
  2. 27 30
      models/activity_models.go
  3. 90 0
      service/marketing_tool_service/activity_service.go

+ 93 - 0
controllers/marketing_tool/activity_controller.go 파일 보기

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

+ 27 - 30
models/activity_models.go 파일 보기

@@ -2,36 +2,33 @@ package models
2 2
 
3 3
 // 表
4 4
 type Activity struct {
5
-	Id       int    `gorm:"PRIMARY_KEY;AUTO_INCREMENT"` // 活动 ID
6
-	Title    string // 活动标题
7
-	Subtitle string // 活动副标题
8
-	CityId   int    `gorm:"column:city_id"` // 活动地点 ID
9
-	Address  string // 活动详细地址
10
-	Lng      string `gorm:"column:longitude"` // 活动位置的经度
11
-	Lat      string `gorm:"column:latitude"`  // 活动位置的纬度
12
-	// SignUpStart int64  `gorm:"column:sign_up_start"` // 报名开始时间戳
13
-	SignUpDeadline int64  `gorm:"column:sign_up_deadline"` // 报名截止时间戳
14
-	SignUpNotice   string `gorm:"column:sign_up_notice"`   // 报名须知
15
-	StartTime      int64  `gorm:"column:start_time"`       // 活动开始时间戳
16
-	// EndTime          int64  `gorm:"column:end_time"`            // 活动结束时间戳
17
-	PosterPhoto      string `gorm:"column:poster_photo"`        // 活动海报
18
-	PosterPhotoThumb string `gorm:"column:poster_photo_thumb"`  // 活动海报缩略图
19
-	LimitNum         int    `gorm:"column:limit_num;default:0"` // 限制报名人数,0表示无限制
20
-	JoinNum          int    `gorm:"column:join_num"`            // 已报名人数
21
-	PhoneNumber      string `gorm:"column:phone_number"`        // 联系方式
22
-	Type             int8   // 活动形式
23
-	// Content		string	// 活动内容
24
-	IsInsurance int8   `gorm:"column:is_insurance;default:0"` // 是否提供保险:报名不需要保险0:否;报名需要保险1:是;2不需要报名
25
-	Status      int    // 活动状态 1:已发布 2:待审核 3:未通过 4:草稿 9:已删除
26
-	Reason      string // 审核原因
27
-	IsRecommend int8   `gorm:"column:is_recommend;default:0"` // 0:未推荐;1:已推荐
28
-	CreateTime  int64  `gorm:"column:ctime"`                  // 创建时间
29
-	ModifyTime  int64  `gorm:"column:mtime"`                  // 修改时间
30
-	UserOrgId   int    `gorm:"column:user_org_id"`            // 所属发布机构 ID
31
-	UserAppId   int    `gorm:"column:user_app_id"`            // 所属发布应用 ID
32
-	CommentNum  int    `gorm:"column:comment_num;default:0"`  // 评论数
33
-	StarNum     int    `gorm:"column:star_num;default:0"`     // 点赞书
34
-	ReadNum     int    `gorm:"column:read_num;default:0"`     // 阅读数
5
+	Id               int    `gorm:"column:id" json:"id"`                                 // 活动 ID
6
+	Title            string `json:"title"`                                               // 活动标题
7
+	Subtitle         string `json:"subtitle"`                                            // 活动副标题
8
+	CityId           int    `gorm:"column:city_id" json:"city_id"`                       // 活动地点 ID
9
+	Address          string `json:"address"`                                             // 活动详细地址
10
+	Lng              string `gorm:"column:longitude" json:"lng"`                         // 活动位置的经度
11
+	Lat              string `gorm:"column:latitude" json:"lat"`                          // 活动位置的纬度
12
+	SignUpDeadline   int64  `gorm:"column:sign_up_deadline" json:"sign_up_deadline"`     // 报名截止时间戳
13
+	SignUpNotice     string `gorm:"column:sign_up_notice" json:"sign_up_notice"`         // 报名须知
14
+	StartTime        int64  `gorm:"column:start_time" json:"start_time"`                 // 活动开始时间戳
15
+	PosterPhoto      string `gorm:"column:poster_photo" json:"poster_photo"`             // 活动海报
16
+	PosterPhotoThumb string `gorm:"column:poster_photo_thumb" json:"poster_photo_thumb"` // 活动海报缩略图
17
+	LimitNum         int    `gorm:"column:limit_num;" json:"limit_num"`                  // 限制报名人数,0表示无限制
18
+	JoinNum          int    `gorm:"column:join_num" json:"join_num"`                     // 已报名人数
19
+	PhoneNumber      string `gorm:"column:phone_number" json:"phone_number"`             // 联系方式
20
+	Type             int8   `json:"type"`                                                // 活动形式
21
+	IsInsurance      int8   `gorm:"column:is_insurance;" json:"is_insurance"`            // 是否提供保险:报名不需要保险0:否;报名需要保险1:是;2不需要报名
22
+	Status           int    `json:"status"`                                              // 活动状态 1:已发布 2:待审核 3:未通过 4:草稿 9:已删除
23
+	Reason           string `json:"reason"`                                              // 审核原因
24
+	IsRecommend      int8   `gorm:"column:is_recommend;" json:"is_recommend"`            // 0:未推荐;1:已推荐
25
+	CreateTime       int64  `gorm:"column:ctime" json:"-"`                               // 创建时间
26
+	ModifyTime       int64  `gorm:"column:mtime" json:"-"`                               // 修改时间
27
+	UserOrgId        int    `gorm:"column:user_org_id" json:"-"`                         // 所属发布机构 ID
28
+	UserAppId        int    `gorm:"column:user_app_id" json:"-"`                         // 所属发布应用 ID
29
+	CommentNum       int    `gorm:"column:comment_num;" json:"comment_num"`              // 评论数
30
+	StarNum          int    `gorm:"column:star_num" json:"star_num"`                     // 点赞书
31
+	ReadNum          int    `gorm:"column:read_num;" json:"read_num"`                    // 阅读数
35 32
 }
36 33
 
37 34
 func (Activity) TableName() string {

+ 90 - 0
service/marketing_tool_service/activity_service.go 파일 보기

@@ -0,0 +1,90 @@
1
+package marketing_tool_service
2
+
3
+import (
4
+	"SCRM/models"
5
+	"SCRM/service"
6
+	"time"
7
+)
8
+
9
+func GetValidActivities(orgID int64, appID int64, keyWord string, page int, count int) ([]*models.Activity, int64, error) {
10
+	if count <= 0 {
11
+		return []*models.Activity{}, 0, nil
12
+	}
13
+	if page < 1 {
14
+		page = 1
15
+	}
16
+
17
+	var activities []*models.Activity
18
+	var totalCount int64
19
+	db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status <> 9", orgID, appID)
20
+	if len(keyWord) > 0 {
21
+		likeParam := "%" + keyWord + "%"
22
+		db = db.Where("title LIKE ?", likeParam)
23
+	}
24
+
25
+	err := db.
26
+		Count(&totalCount).
27
+		Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities).
28
+		Error
29
+
30
+	if err == nil {
31
+		return activities, totalCount, nil
32
+	} else {
33
+		return nil, 0, err
34
+	}
35
+}
36
+
37
+func GetActivitiesWithStatus(orgID int64, appID int64, keyWord string, status int, page int, count int) ([]*models.Activity, int64, error) {
38
+	if count <= 0 {
39
+		return []*models.Activity{}, 0, nil
40
+	}
41
+	if page < 1 {
42
+		page = 1
43
+	}
44
+
45
+	var activities []*models.Activity
46
+	var totalCount int64
47
+	db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status = ?", orgID, appID, status)
48
+	if len(keyWord) > 0 {
49
+		likeParam := "%" + keyWord + "%"
50
+		db = db.Where("title LIKE ?", likeParam)
51
+	}
52
+	err := db.
53
+		Count(&totalCount).
54
+		Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities).
55
+		Error
56
+
57
+	if err == nil {
58
+		return activities, totalCount, nil
59
+	} else {
60
+		return nil, 0, err
61
+	}
62
+}
63
+
64
+func GetDidEndedActivities(orgID int64, appID int64, keyWord string, page int, count int) ([]*models.Activity, int64, error) {
65
+	if count <= 0 {
66
+		return []*models.Activity{}, 0, nil
67
+	}
68
+	if page < 1 {
69
+		page = 1
70
+	}
71
+
72
+	var activities []*models.Activity
73
+	var totalCount int64
74
+	now := time.Now().Unix()
75
+	db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status = 1 AND start_time < ?", orgID, appID, now)
76
+	if len(keyWord) > 0 {
77
+		likeParam := "%" + keyWord + "%"
78
+		db = db.Where("title LIKE ?", likeParam)
79
+	}
80
+	err := db.
81
+		Count(&totalCount).
82
+		Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities).
83
+		Error
84
+
85
+	if err == nil {
86
+		return activities, totalCount, nil
87
+	} else {
88
+		return nil, 0, err
89
+	}
90
+}