query.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package yb_activity
  2. import (
  3. "errors"
  4. "hongze/hongze_yb/global"
  5. "hongze/hongze_yb/utils"
  6. "time"
  7. )
  8. type ActivityList 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. type ActivityDetail struct {
  20. }
  21. // GetPageListByWhereMap 分页获取列表-关联录音、提醒和报名信息
  22. func GetPageListByWhereMap(where map[string]interface{}, page, limit int, order string, userId int) (activities []*ActivityList, err error) {
  23. condition, values, buildErr := utils.WhereBuild(where)
  24. if buildErr != nil {
  25. err = errors.New("系统异常,生成查询语句失败")
  26. return
  27. }
  28. fields := []string{
  29. "a.activity_id", "a.activity_name", "a.activity_type_name", "a.start_time", "a.end_time", "a.speaker",
  30. "b.activity_voice_id AS has_play_back", "c.id AS has_remind", "d.id AS registered",
  31. }
  32. queryOrder := "start_time asc"
  33. if order != "" {
  34. queryOrder = order
  35. }
  36. err = global.DEFAULT_MYSQL.Table("yb_activity AS a").
  37. Select(fields).
  38. Joins("LEFT JOIN yb_activity_voice AS b ON a.activity_id = b.activity_id").
  39. Joins("LEFT JOIN yb_activity_remind AS c ON a.activity_id = c.activity_id AND c.user_id = ?", userId).
  40. Joins("LEFT JOIN yb_activity_register AS d ON a.activity_id = d.activity_id AND d.user_id = ?", userId).
  41. Where(condition, values...).
  42. Order(queryOrder).
  43. Group("activity_id").
  44. Limit(limit).Offset((page - 1) * limit).
  45. Scan(&activities).Error
  46. return
  47. }
  48. // GetOneById 根据主键获取活动
  49. func GetOneById(activityId int) (activity *YbActivity, err error) {
  50. err = global.DEFAULT_MYSQL.Where("activity_id = ?", activityId).First(&activity).Error
  51. return
  52. }
  53. func GetDetailById() {
  54. }