浏览代码

fix: API-活动列表

hsun 3 年之前
父节点
当前提交
f0025adbe2
共有 3 个文件被更改,包括 136 次插入103 次删除
  1. 17 13
      models/tables/yb_activity/query.go
  2. 96 90
      models/tables/yb_activity/yb_activity.go
  3. 23 0
      services/activity/activity.go

+ 17 - 13
models/tables/yb_activity/query.go

@@ -6,17 +6,21 @@ import (
 )
 
 type ActivityItem struct {
-	ActivityID          int       	`json:"activityId"`
-	ActivityName        string    	`json:"activityName"`		// 活动名称
-	ActivityTypeName    string    	`json:"activityTypeName"`	// 活动类型名称
-	StartTime           time.Time 	`json:"startTime"`			// 活动开始时间
-	EndTime             time.Time 	`json:"endTime"`			// 活动结束时间
-	Speaker             string    	`json:"speaker"`			// 主讲人
-	City                string		`json:"city"`				// 城市
-	WeekString			string		`json:"weekString"`			// 周几
-	HasRemind			int		  	`json:"hasRemind"`			// 是否已提醒
-	HasPlayBack			int		  	`json:"hasPlayBack"`		// 是否有回放
-	RegisterState		int		  	`json:"registerState"`		// 报名状态 0-取消报名 1-已报名
+	ActivityID          	int       	`json:"activityId"`
+	ActivityName        	string    	`json:"activityName"`			// 活动名称
+	ActivityTypeID			int			`json:"activityTypeId"`			// 活动类型ID
+	ActivityTypeName    	string    	`json:"activityTypeName"`		// 活动类型名称
+	StartTime           	time.Time 	`json:"startTime"`				// 活动开始时间
+	EndTime             	time.Time 	`json:"endTime"`				// 活动结束时间
+	Speaker             	string    	`json:"speaker"`				// 主讲人
+	SpeakerHeadPic			string		`json:"speakerHeadPic"`			// 主讲人头像
+	SpeakerBackgroundPic	string		`json:"speakerBackgroundPic"`	// 主讲人背景图
+	City                	string		`json:"city"`					// 城市
+	WeekString				string		`json:"weekString"`				// 周几
+	HasRemind				int		  	`json:"hasRemind"`				// 是否已提醒
+	HasPlayBack				int		  	`json:"hasPlayBack"`			// 是否有回放
+	RegisterState			int		  	`json:"registerState"`			// 报名状态 0-取消报名 1-已报名
+	ActivityState			int			`json:"activityState"`			// 活动状态 1-本周预告 2-进行中 3-已结束
 }
 
 type ActivityDetail struct {
@@ -37,7 +41,7 @@ type ActivityDetail struct {
 
 // GetPageListByWhere 分页获取活动列表
 func GetPageListByWhere(condition string, pars []interface{}, page, limit int, order string, userId int) (activities []ActivityItem, err error) {
-	fields := []string{"activity_id", "activity_name", "activity_type_name", "start_time", "end_time", "speaker", "city"}
+	fields := []string{"activity_id", "activity_name", "activity_type_id", "activity_type_name", "start_time", "end_time", "speaker", "city", "speaker_head_pic", "speaker_background_pic"}
 	queryOrder := "start_time asc"
 	if order != "" {
 		queryOrder = order
@@ -49,7 +53,7 @@ func GetPageListByWhere(condition string, pars []interface{}, page, limit int, o
 // GetDetailById 根据主键获取详情
 func GetDetailById(activityId int) (activity *ActivityDetail, err error) {
 	fields := []string{
-		"activity_id", "activity_name", "activity_type_name", "start_time", "end_time", "speaker", "city",
+		"activity_id", "activity_name", "activity_type_id", "activity_type_name", "start_time", "end_time", "speaker", "city", "speaker_head_pic", "speaker_background_pic",
 		"mainland_tel", "hong_kong_tel", "taiwan_tel", "america_tel", "singapore_tel", "participation_code",
 		"link_participants", "is_limit_people", "limit_people_num", "report_link", "address",
 	}

+ 96 - 90
models/tables/yb_activity/yb_activity.go

@@ -6,36 +6,38 @@ import (
 
 // YbActivity 弘则研小程序 活动表
 type YbActivity struct {
-	ActivityID          int       `gorm:"primaryKey;column:activity_id;type:int(11);not null" json:"-"`                                                  // 活动ID
-	ActivityTypeID      int       `gorm:"index:activity_type_id;column:activity_type_id;type:int(100);not null;default:0" json:"activityTypeId"`         // 活动类型ID
-	ActivityTypeName    string    `gorm:"column:activity_type_name;type:varchar(30);not null;default:''" json:"activityTypeName"`                        // 活动类型名称
-	ChartPermissionID   int       `gorm:"index:chart_permission_id;column:chart_permission_id;type:int(11);not null;default:0" json:"chartPermissionId"` // 表chart_permission中id
-	ChartPermissionName string    `gorm:"column:chart_permission_name;type:varchar(255);not null;default:''" json:"chartPermissionName"`                 // 权限名称
-	ActivityName        string    `gorm:"column:activity_name;type:text;not null" json:"activityName"`                                                   // 活动标题
-	StartTime           time.Time `gorm:"column:start_time;type:datetime" json:"startTime"`                                                              // 活动开始时间
-	EndTime             time.Time `gorm:"column:end_time;type:datetime" json:"endTime"`                                                                  // 活动结束时间
-	Speaker             string    `gorm:"column:speaker;type:varchar(255);not null;default:''" json:"speaker"`                                           // 主讲人
-	MainlandTel         string    `gorm:"column:mainland_tel;type:varchar(255);not null;default:''" json:"mainlandTel"`                                  // 大陆拨入
-	HongKongTel         string    `gorm:"column:hong_kong_tel;type:varchar(255);not null;default:''" json:"hongKongTel"`                                 // 香港拨入
-	TaiwanTel           string    `gorm:"column:taiwan_tel;type:varchar(255);not null;default:''" json:"taiwanTel"`                                      // 台湾拨入
-	AmericaTel          string    `gorm:"column:america_tel;type:varchar(255);not null;default:''" json:"americaTel"`                                    // 美国拨入
-	SingaporeTel        string    `gorm:"column:singapore_tel;type:varchar(255);not null;default:''" json:"singaporeTel"`                                // 新加坡拨入
-	ParticipationCode   string    `gorm:"column:participation_code;type:varchar(255);not null;default:''" json:"participationCode"`                      // 参会密码
-	LinkParticipants    string    `gorm:"column:link_participants;type:longtext;not null" json:"linkParticipants"`                                       // 参会链接
-	IsLimitPeople       int8      `gorm:"index:is_limit_people;column:is_limit_people;type:tinyint(4);not null;default:0" json:"isLimitPeople"`          // 是否限制人数 1是,0否
-	LimitPeopleNum      int       `gorm:"column:limit_people_num;type:int(9);not null;default:0" json:"limitPeopleNum"`                                  // 限制人数数量
-	ReportLink          string    `gorm:"column:report_link;type:longtext;not null" json:"reportLink"`                                                   // 报告链接
-	City                string    `gorm:"column:city;type:varchar(255);not null;default:''" json:"city"`                                                 // 城市
-	Address             string    `gorm:"column:address;type:varchar(255);not null;default:''" json:"address"`                                           // 活动地址
-	PosterURL           string    `gorm:"column:poster_url;type:varchar(255);not null;default:''" json:"posterUrl"`                                      // 活动海报地址
-	Remarks             string    `gorm:"column:remarks;type:text;not null" json:"remarks"`                                                              // 备注
-	UserID              int       `gorm:"column:user_id;type:int(9);not null;default:0" json:"userId"`                                                   // 创建者id
-	PublishStatus       int8      `gorm:"index:publish_status;column:publish_status;type:tinyint(4);not null;default:0" json:"publishStatus"`            // 发布状态,0未发布,1已发布
-	IsSendWxMsg         int8      `gorm:"column:is_send_wx_msg;type:tinyint(4);not null;default:0" json:"isSendWxMsg"`                                   // 是否推送过微信消息,未推送:0,已推送:1
-	IsDelete            int8      `gorm:"column:is_delete;type:tinyint(4);not null;default:0" json:"isDelete"`                                           // 是否删除,0:未删除,1:已删除
-	ArticleID           int       `gorm:"column:article_id;type:int(11);not null;default:0" json:"articleId"`                                            // 报告链接所关联的文章ID
-	ModifyTime          time.Time `gorm:"column:modify_time;type:timestamp;not null;default:CURRENT_TIMESTAMP" json:"modifyTime"`                        // 修改时间
-	CreateTime          time.Time `gorm:"index:create_time;column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"createTime"`                // 创建时间
+	ActivityID           int       `gorm:"primaryKey;column:activity_id;type:int(11);not null" json:"-"`                                                  // 活动ID
+	ActivityTypeID       int       `gorm:"index:activity_type_id;column:activity_type_id;type:int(100);not null;default:0" json:"activityTypeId"`         // 活动类型ID
+	ActivityTypeName     string    `gorm:"column:activity_type_name;type:varchar(30);not null;default:''" json:"activityTypeName"`                        // 活动类型名称
+	ChartPermissionID    int       `gorm:"index:chart_permission_id;column:chart_permission_id;type:int(11);not null;default:0" json:"chartPermissionId"` // 表chart_permission中id
+	ChartPermissionName  string    `gorm:"column:chart_permission_name;type:varchar(255);not null;default:''" json:"chartPermissionName"`                 // 权限名称
+	ActivityName         string    `gorm:"column:activity_name;type:text;not null" json:"activityName"`                                                   // 活动标题
+	StartTime            time.Time `gorm:"column:start_time;type:datetime" json:"startTime"`                                                              // 活动开始时间
+	EndTime              time.Time `gorm:"column:end_time;type:datetime" json:"endTime"`                                                                  // 活动结束时间
+	Speaker              string    `gorm:"column:speaker;type:varchar(255);not null;default:''" json:"speaker"`                                           // 主讲人
+	SpeakerHeadPic       string    `gorm:"column:speaker_head_pic;type:varchar(255);not null;default:''" json:"speakerHeadPic"`                           // 主讲人头像
+	SpeakerBackgroundPic string    `gorm:"column:speaker_background_pic;type:varchar(255);not null;default:''" json:"speakerBackgroundPic"`               // 主讲人背景图
+	MainlandTel          string    `gorm:"column:mainland_tel;type:varchar(255);not null;default:''" json:"mainlandTel"`                                  // 大陆拨入
+	HongKongTel          string    `gorm:"column:hong_kong_tel;type:varchar(255);not null;default:''" json:"hongKongTel"`                                 // 香港拨入
+	TaiwanTel            string    `gorm:"column:taiwan_tel;type:varchar(255);not null;default:''" json:"taiwanTel"`                                      // 台湾拨入
+	AmericaTel           string    `gorm:"column:america_tel;type:varchar(255);not null;default:''" json:"americaTel"`                                    // 美国拨入
+	SingaporeTel         string    `gorm:"column:singapore_tel;type:varchar(255);not null;default:''" json:"singaporeTel"`                                // 新加坡拨入
+	ParticipationCode    string    `gorm:"column:participation_code;type:varchar(255);not null;default:''" json:"participationCode"`                      // 参会密码
+	LinkParticipants     string    `gorm:"column:link_participants;type:longtext;not null" json:"linkParticipants"`                                       // 参会链接
+	IsLimitPeople        int8      `gorm:"index:is_limit_people;column:is_limit_people;type:tinyint(4);not null;default:0" json:"isLimitPeople"`          // 是否限制人数 1是,0否
+	LimitPeopleNum       int       `gorm:"column:limit_people_num;type:int(9);not null;default:0" json:"limitPeopleNum"`                                  // 限制人数数量
+	ReportLink           string    `gorm:"column:report_link;type:longtext;not null" json:"reportLink"`                                                   // 报告链接
+	City                 string    `gorm:"column:city;type:varchar(255);not null;default:''" json:"city"`                                                 // 城市
+	Address              string    `gorm:"column:address;type:varchar(255);not null;default:''" json:"address"`                                           // 活动地址
+	PosterURL            string    `gorm:"column:poster_url;type:varchar(255);not null;default:''" json:"posterUrl"`                                      // 活动海报地址
+	Remarks              string    `gorm:"column:remarks;type:text;not null" json:"remarks"`                                                              // 备注
+	UserID               int       `gorm:"column:user_id;type:int(9);not null;default:0" json:"userId"`                                                   // 创建者id
+	PublishStatus        int8      `gorm:"index:publish_status;column:publish_status;type:tinyint(4);not null;default:0" json:"publishStatus"`            // 发布状态,0未发布,1已发布
+	IsSendWxMsg          int8      `gorm:"column:is_send_wx_msg;type:tinyint(4);not null;default:0" json:"isSendWxMsg"`                                   // 是否推送过微信消息,未推送:0,已推送:1
+	IsDelete             int8      `gorm:"column:is_delete;type:tinyint(4);not null;default:0" json:"isDelete"`                                           // 是否删除,0:未删除,1:已删除
+	ArticleID            int       `gorm:"column:article_id;type:int(11);not null;default:0" json:"articleId"`                                            // 报告链接所关联的文章ID
+	ModifyTime           time.Time `gorm:"column:modify_time;type:timestamp;not null;default:CURRENT_TIMESTAMP" json:"modifyTime"`                        // 修改时间
+	CreateTime           time.Time `gorm:"index:create_time;column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"createTime"`                // 创建时间
 }
 
 // TableName get sql table name.获取数据库表名
@@ -45,65 +47,69 @@ func (m *YbActivity) TableName() string {
 
 // YbActivityColumns get sql column name.获取数据库列名
 var YbActivityColumns = struct {
-	ActivityID          string
-	ActivityTypeID      string
-	ActivityTypeName    string
-	ChartPermissionID   string
-	ChartPermissionName string
-	ActivityName        string
-	StartTime           string
-	EndTime             string
-	Speaker             string
-	MainlandTel         string
-	HongKongTel         string
-	TaiwanTel           string
-	AmericaTel          string
-	SingaporeTel        string
-	ParticipationCode   string
-	LinkParticipants    string
-	IsLimitPeople       string
-	LimitPeopleNum      string
-	ReportLink          string
-	City                string
-	Address             string
-	PosterURL           string
-	Remarks             string
-	UserID              string
-	PublishStatus       string
-	IsSendWxMsg         string
-	IsDelete            string
-	ArticleID           string
-	ModifyTime          string
-	CreateTime          string
+	ActivityID           string
+	ActivityTypeID       string
+	ActivityTypeName     string
+	ChartPermissionID    string
+	ChartPermissionName  string
+	ActivityName         string
+	StartTime            string
+	EndTime              string
+	Speaker              string
+	SpeakerHeadPic       string
+	SpeakerBackgroundPic string
+	MainlandTel          string
+	HongKongTel          string
+	TaiwanTel            string
+	AmericaTel           string
+	SingaporeTel         string
+	ParticipationCode    string
+	LinkParticipants     string
+	IsLimitPeople        string
+	LimitPeopleNum       string
+	ReportLink           string
+	City                 string
+	Address              string
+	PosterURL            string
+	Remarks              string
+	UserID               string
+	PublishStatus        string
+	IsSendWxMsg          string
+	IsDelete             string
+	ArticleID            string
+	ModifyTime           string
+	CreateTime           string
 }{
-	ActivityID:          "activity_id",
-	ActivityTypeID:      "activity_type_id",
-	ActivityTypeName:    "activity_type_name",
-	ChartPermissionID:   "chart_permission_id",
-	ChartPermissionName: "chart_permission_name",
-	ActivityName:        "activity_name",
-	StartTime:           "start_time",
-	EndTime:             "end_time",
-	Speaker:             "speaker",
-	MainlandTel:         "mainland_tel",
-	HongKongTel:         "hong_kong_tel",
-	TaiwanTel:           "taiwan_tel",
-	AmericaTel:          "america_tel",
-	SingaporeTel:        "singapore_tel",
-	ParticipationCode:   "participation_code",
-	LinkParticipants:    "link_participants",
-	IsLimitPeople:       "is_limit_people",
-	LimitPeopleNum:      "limit_people_num",
-	ReportLink:          "report_link",
-	City:                "city",
-	Address:             "address",
-	PosterURL:           "poster_url",
-	Remarks:             "remarks",
-	UserID:              "user_id",
-	PublishStatus:       "publish_status",
-	IsSendWxMsg:         "is_send_wx_msg",
-	IsDelete:            "is_delete",
-	ArticleID:           "article_id",
-	ModifyTime:          "modify_time",
-	CreateTime:          "create_time",
+	ActivityID:           "activity_id",
+	ActivityTypeID:       "activity_type_id",
+	ActivityTypeName:     "activity_type_name",
+	ChartPermissionID:    "chart_permission_id",
+	ChartPermissionName:  "chart_permission_name",
+	ActivityName:         "activity_name",
+	StartTime:            "start_time",
+	EndTime:              "end_time",
+	Speaker:              "speaker",
+	SpeakerHeadPic:       "speaker_head_pic",
+	SpeakerBackgroundPic: "speaker_background_pic",
+	MainlandTel:          "mainland_tel",
+	HongKongTel:          "hong_kong_tel",
+	TaiwanTel:            "taiwan_tel",
+	AmericaTel:           "america_tel",
+	SingaporeTel:         "singapore_tel",
+	ParticipationCode:    "participation_code",
+	LinkParticipants:     "link_participants",
+	IsLimitPeople:        "is_limit_people",
+	LimitPeopleNum:       "limit_people_num",
+	ReportLink:           "report_link",
+	City:                 "city",
+	Address:              "address",
+	PosterURL:            "poster_url",
+	Remarks:              "remarks",
+	UserID:               "user_id",
+	PublishStatus:        "publish_status",
+	IsSendWxMsg:          "is_send_wx_msg",
+	IsDelete:             "is_delete",
+	ArticleID:            "article_id",
+	ModifyTime:           "modify_time",
+	CreateTime:           "create_time",
 }

+ 23 - 0
services/activity/activity.go

@@ -9,7 +9,9 @@ import (
 	"hongze/hongze_yb/models/tables/yb_activity_voice"
 	"hongze/hongze_yb/services/company"
 	"hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/utils"
 	"log"
+	"time"
 )
 
 var WeekDay = [7]string{"周日", "周一", "周二", "周三", "周四", "周五", "周六"}
@@ -65,6 +67,7 @@ func PageList(condition string, pars []interface{}, page, limit int, order strin
 		for _, activity := range activities {
 			temp = activity
 			temp.WeekString = WeekDay[activity.StartTime.Weekday()]
+			temp.ActivityState = getActivityStateByTime(activity.StartTime, activity.EndTime)
 			// 是否有回放
 			tempActivity := activity
 			fmt.Println("活动ID", tempActivity.ActivityID)
@@ -89,6 +92,25 @@ func PageList(condition string, pars []interface{}, page, limit int, order strin
 	return
 }
 
+// getActivityStateByTime 根据时间生成活动枚举值
+func getActivityStateByTime(startTime, endTime time.Time) (state int) {
+	weekStart := utils.GetNowWeekMonday()
+	weekEnd := utils.GetNowWeekLastDay()
+	nowTime := time.Now().Format("2006-01-02 15:04:05")
+	timeNow, _ := time.Parse("2006-01-02 15:04:05", nowTime)
+	if timeNow.Before(endTime) && timeNow.After(startTime) {
+		// 进行中
+		state = 2
+	} else if timeNow.After(endTime) {
+		// 已结束
+		state = 3
+	} else if timeNow.Before(weekEnd) && timeNow.Before(endTime) && timeNow.After(weekStart) && timeNow.Before(startTime) {
+		// 本周预告
+		state = 1
+	}
+	return
+}
+
 // GetActivityDetail 活动详情
 func GetActivityDetail(activityId, userId int) (detail *yb_activity.ActivityDetail, err error) {
 	detail, err = yb_activity.GetDetailById(activityId)
@@ -107,6 +129,7 @@ func GetActivityDetail(activityId, userId int) (detail *yb_activity.ActivityDeta
 	}
 	detail.RegisteredNum = int(registeredNum)
 	detail.WeekString = WeekDay[detail.StartTime.Weekday()]
+	detail.ActivityState = getActivityStateByTime(detail.StartTime, detail.EndTime)
 	_, remindErr := yb_activity_remind.RemindExist(userId, activityId)
 	if remindErr != gorm.ErrRecordNotFound {
 		detail.HasRemind = 1