query.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package yb_activity
  2. import (
  3. "errors"
  4. "hongze/hongze_yb/global"
  5. "hongze/hongze_yb/utils"
  6. "time"
  7. )
  8. type QueryActivity struct {
  9. ActivityID int `json:"activityId"`
  10. ActivityName string `json:"activityName"`
  11. ActivityTypeName string `json:"activityTypeName"`
  12. StartTime time.Time `json:"startTime"`
  13. EndTime time.Time `json:"endTime"`
  14. Speaker string `json:"speaker"`
  15. HasRemind int `json:"hasRemind"`
  16. HasPlayBack int `json:"hasPlayBack"`
  17. Registered int `json:"registered"`
  18. }
  19. func GetPageListByWhereMap(where map[string]interface{}, page, limit, userId int) (activities []*QueryActivity, err error) {
  20. condition, values, buildErr := utils.WhereBuild(where)
  21. if buildErr != nil {
  22. err = errors.New("系统异常,生成查询语句失败")
  23. return
  24. }
  25. fields := []string{
  26. "a.activity_id", "a.activity_name", "a.activity_type_name", "a.start_time", "a.end_time", "a.speaker",
  27. "b.activity_voice_id AS has_play_back", "c.id AS has_remind", "d.id AS registered",
  28. }
  29. err = global.DEFAULT_MYSQL.Table("yb_activity AS a").
  30. Select(fields).
  31. Joins("LEFT JOIN yb_activity_voice AS b ON a.activity_id = b.activity_id").
  32. Joins("LEFT JOIN yb_activity_remind AS c ON a.activity_id = c.activity_id AND c.user_id = ?", userId).
  33. Joins("LEFT JOIN yb_activity_register AS d ON a.activity_id = d.activity_id AND d.user_id = ?", userId).
  34. Where(condition, values...).
  35. Order("a.start_time asc").
  36. Group("a.activity_id").
  37. Limit(limit).Offset((page - 1) * limit).
  38. Scan(&activities).Error
  39. return
  40. }