advertisement_logs.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package service
  2. import (
  3. "context"
  4. "gadmin/config"
  5. "gadmin/internal/admin/consts"
  6. "gadmin/internal/admin/data"
  7. "gadmin/internal/admin/forms"
  8. "gadmin/internal/gorm/query"
  9. "gadmin/utility/serializer"
  10. )
  11. var AdvertisementLog = new(sAdvertisementLog)
  12. type sAdvertisementLog struct{}
  13. func (s *sAdvertisementLog) AdvRanking(ctx context.Context, req forms.AdvRankingReq) serializer.Response {
  14. type mods struct {
  15. ID int64 `json:"id"`
  16. NickName string `json:"nickName"`
  17. UserId int64 `json:"user_id"`
  18. Count int64 `json:"count"`
  19. LastTime int64 `json:"lastTime"`
  20. }
  21. var (
  22. q = query.Use(config.DB).AdvertisementLog
  23. m = q.WithContext(ctx).Where(q.EventID.Eq(4))
  24. models forms.ListRes
  25. lists []mods
  26. )
  27. req.Page, req.PerPage, _ = forms.CalculatePage(req.Page, req.PerPage)
  28. if req.ServerId > 0 {
  29. m = m.Where(q.ServerID.Eq(int32(req.ServerId)))
  30. }
  31. if len(req.Createtime) == 2 {
  32. m = m.Where(q.EventAt.Between(int32(req.Createtime[0]), int32(req.Createtime[1])))
  33. }
  34. m = m.Select(q.UserID, q.ID.Count().As("count")).Group(q.UserID).Order(q.ID.Count().Desc())
  35. if err := m.Limit(100).Scan(&lists); err != nil {
  36. return serializer.Err(consts.CodeParamErr, "查询出错 lists", err)
  37. }
  38. for i := 0; i < len(lists); i++ {
  39. lists[i].ID = int64(i + 1)
  40. user := data.GetUser(lists[i].UserId)
  41. if user != nil {
  42. lists[i].NickName = user.NickName
  43. }
  44. first, _ := q.WithContext(ctx).Select(q.EventAt).Where(q.EventID.Eq(4)).Where(q.UserID.Eq(lists[i].UserId)).Order(q.ID.Desc()).First()
  45. if first != nil {
  46. lists[i].LastTime = int64(first.EventAt)
  47. }
  48. }
  49. models.List = lists
  50. models.Page = req.Page
  51. models.PerPage = req.PerPage
  52. models.PageCount = 0
  53. return serializer.Suc(models)
  54. }