ban_logs.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package service
  2. import (
  3. "gadmin/config"
  4. "gadmin/internal/admin/consts"
  5. "gadmin/internal/admin/forms"
  6. "gadmin/internal/gorm/model"
  7. "gadmin/internal/gorm/query"
  8. "gadmin/utility/serializer"
  9. "github.com/gin-gonic/gin"
  10. )
  11. // BanLog 拉黑记录
  12. var BanLog = new(sBanLog)
  13. type sBanLog struct{}
  14. func (s *sBanLog) List(ctx *gin.Context, req forms.UserAccountBanListReq) serializer.Response {
  15. type Result struct {
  16. model.PlayerBanLog
  17. OpenID string `gorm:"column:openId" json:"openId"`
  18. NickName string `gorm:"column:nickName" json:"nickName"`
  19. ImgURL string `gorm:"column:imgUrl" json:"imgUrl"`
  20. CurBan int32 `json:"curBan"`
  21. ServerName string `json:"serverName"`
  22. }
  23. var (
  24. q = query.Use(config.DB).PlayerBanLog
  25. m = q.WithContext(ctx)
  26. offset int64 = 0
  27. models forms.UserAccountListRes
  28. lists []*Result
  29. )
  30. if req.ID > 0 {
  31. m = m.Where(q.Playerid.Eq(req.ID))
  32. }
  33. if req.AccId > 0 {
  34. m = m.Where(q.AccID.Eq(req.AccId))
  35. }
  36. m = m.Order(q.ID.Desc())
  37. req.Page, req.PerPage, offset = forms.CalculatePage(req.Page, req.PerPage)
  38. count, err := m.Count()
  39. if err != nil {
  40. return serializer.Err(consts.CodeParamErr, "查询出错 count", err)
  41. }
  42. if count > 0 {
  43. if err = m.Limit(int(req.PerPage)).Offset(int(offset)).Scan(&lists); err != nil {
  44. return serializer.Err(consts.CodeParamErr, "查询出错 lists", err)
  45. }
  46. }
  47. for _, v := range lists {
  48. v.ServerName, _ = ServerOption.GetName(ctx, v.ServerID)
  49. u := query.Use(config.GDBGroup[int(v.ServerID)]).PlayerAttr
  50. user, _ := u.Where(u.Playerid.Eq(v.Playerid)).First()
  51. if user != nil {
  52. v.NickName = user.NickName
  53. v.ImgURL = user.ImgURL
  54. v.OpenID = user.OpenID
  55. v.CurBan = user.Ban
  56. }
  57. }
  58. models.List = lists
  59. models.Page = req.Page
  60. models.PerPage = req.PerPage
  61. models.PageCount = (count + req.PerPage - 1) / req.PerPage
  62. return serializer.Suc(models)
  63. }