sys_login_log.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*
  2. * @desc:登录日志
  3. * @company:云南省奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2021/7/13 17:23
  6. */
  7. package service
  8. import (
  9. comModel "gfast/app/common/model"
  10. "gfast/app/system/dao"
  11. "gfast/app/system/model"
  12. "github.com/gogf/gf/errors/gerror"
  13. "github.com/gogf/gf/frame/g"
  14. "github.com/gogf/gf/os/grpool"
  15. "github.com/gogf/gf/util/gconv"
  16. )
  17. type sysLoginLog struct {
  18. Pool *grpool.Pool
  19. }
  20. var (
  21. SysLoginLog = &sysLoginLog{
  22. Pool: grpool.New(100),
  23. }
  24. )
  25. func (s *sysLoginLog) Invoke(data *model.LoginLogParams) {
  26. s.Pool.Add(func() {
  27. //写入日志数据
  28. SysUser.LoginLog(data)
  29. })
  30. }
  31. func (s *sysLoginLog) LoginLogListByPage(req *model.SysLoginLogSearchReq) (total, page int, list []*model.SysLoginLog, err error) {
  32. if req.PageNum == 0 {
  33. req.PageNum = 1
  34. }
  35. if req.PageSize == 0 {
  36. req.PageSize = comModel.PageSize
  37. }
  38. model := dao.SysLoginLog.M
  39. page = req.PageNum
  40. order := "info_id DESC"
  41. if req.LoginName != "" {
  42. model = model.Where("login_name like ?", "%"+req.LoginName+"%")
  43. }
  44. if req.Status != "" {
  45. model = model.Where("status", gconv.Int(req.Status))
  46. }
  47. if req.Ipaddr != "" {
  48. model = model.Where("ipaddr like ?", "%"+req.Ipaddr+"%")
  49. }
  50. if req.LoginLocation != "" {
  51. model = model.Where("login_location like ?", "%"+req.LoginLocation+"%")
  52. }
  53. if req.BeginTime != "" {
  54. model = model.Where("login_time >=", req.BeginTime)
  55. }
  56. if req.EndTime != "" {
  57. model = model.Where("login_time <=", req.EndTime)
  58. }
  59. if req.SortName != "" {
  60. if req.SortOrder != "" {
  61. order = req.SortName + " " + req.SortOrder
  62. } else {
  63. order = req.SortName + " DESC"
  64. }
  65. }
  66. total, err = model.Count()
  67. if err != nil {
  68. g.Log().Error(err)
  69. err = gerror.New("获取总行数失败")
  70. return
  71. }
  72. err = model.Page(page, req.PageSize).Order(order).Scan(&list)
  73. if err != nil {
  74. g.Log().Error(err)
  75. err = gerror.New("获取数据失败")
  76. }
  77. return
  78. }
  79. func (s *sysLoginLog) DeleteLoginLogByIds(ids []int) (err error) {
  80. if len(ids) == 0 {
  81. err = gerror.New("参数错误")
  82. return
  83. }
  84. _, err = dao.SysLoginLog.Delete("info_id in (?)", ids)
  85. if err != nil {
  86. g.Log().Error(err)
  87. err = gerror.New("删除失败")
  88. }
  89. return
  90. }
  91. func (s *sysLoginLog) ClearLoginLog() (err error) {
  92. _, err = g.DB().Exec("truncate " + dao.SysLoginLog.Table)
  93. if err != nil {
  94. g.Log().Error(err)
  95. err = gerror.New("清除失败")
  96. }
  97. return
  98. }