sys_login_log.go 2.2 KB

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