1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package service
- import (
- "context"
- "gadmin/config"
- "gadmin/internal/admin/consts"
- "gadmin/internal/admin/data"
- "gadmin/internal/admin/forms"
- "gadmin/internal/gorm/query"
- "gadmin/utility/serializer"
- )
- var AdvertisementLog = new(sAdvertisementLog)
- type sAdvertisementLog struct{}
- func (s *sAdvertisementLog) AdvRanking(ctx context.Context, req forms.AdvRankingReq) serializer.Response {
- type mods struct {
- ID int64 `json:"id"`
- NickName string `json:"nickName"`
- UserId int64 `json:"user_id"`
- Count int64 `json:"count"`
- LastTime int64 `json:"lastTime"`
- }
- var (
- q = query.Use(config.DB).AdvertisementLog
- m = q.WithContext(ctx).Where(q.EventID.Eq(4))
- models forms.ListRes
- lists []mods
- )
- req.Page, req.PerPage, _ = forms.CalculatePage(req.Page, req.PerPage)
- if req.ServerId > 0 {
- m = m.Where(q.ServerID.Eq(int32(req.ServerId)))
- }
- if len(req.Createtime) == 2 {
- m = m.Where(q.EventAt.Between(int32(req.Createtime[0]), int32(req.Createtime[1])))
- }
- m = m.Select(q.UserID, q.ID.Count().As("count")).Group(q.UserID).Order(q.ID.Count().Desc())
- if err := m.Limit(100).Scan(&lists); err != nil {
- return serializer.Err(consts.CodeParamErr, "查询出错 lists", err)
- }
- for i := 0; i < len(lists); i++ {
- lists[i].ID = int64(i + 1)
- user := data.GetUser(lists[i].UserId)
- if user != nil {
- lists[i].NickName = user.NickName
- }
- first, _ := q.WithContext(ctx).Select(q.EventAt).Where(q.EventID.Eq(4)).Where(q.UserID.Eq(lists[i].UserId)).Order(q.ID.Desc()).First()
- if first != nil {
- lists[i].LastTime = int64(first.EventAt)
- }
- }
- models.List = lists
- models.Page = req.Page
- models.PerPage = req.PerPage
- models.PageCount = 0
- return serializer.Suc(models)
- }
|