package yb_activity import ( "errors" "hongze/hongze_yb/global" "hongze/hongze_yb/utils" "time" ) type QueryActivity 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"` HasRemind int `json:"hasRemind"` HasPlayBack int `json:"hasPlayBack"` Registered int `json:"registered"` } func GetPageListByWhereMap(where map[string]interface{}, page, limit, userId int) (activities []*QueryActivity, err error) { condition, values, buildErr := utils.WhereBuild(where) if buildErr != nil { err = errors.New("系统异常,生成查询语句失败") return } fields := []string{ "a.activity_id", "a.activity_name", "a.activity_type_name", "a.start_time", "a.end_time", "a.speaker", "b.activity_voice_id AS has_play_back", "c.id AS has_remind", "d.id AS registered", } err = global.DEFAULT_MYSQL.Table("yb_activity AS a"). Select(fields). Joins("LEFT JOIN yb_activity_voice AS b ON a.activity_id = b.activity_id"). Joins("LEFT JOIN yb_activity_remind AS c ON a.activity_id = c.activity_id AND c.user_id = ?", userId). Joins("LEFT JOIN yb_activity_register AS d ON a.activity_id = d.activity_id AND d.user_id = ?", userId). Where(condition, values...). Order("a.start_time asc"). Group("a.activity_id"). Limit(limit).Offset((page - 1) * limit). Scan(&activities).Error return }