mysql_machine_log.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package dao
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "strconv"
  6. "go-common/app/admin/ep/merlin/model"
  7. pkgerr "github.com/pkg/errors"
  8. )
  9. const (
  10. _machineRightJoinLogSQL = "SELECT m.id,m.name,ml.username,ml.operation_type,ml.operation_result,ml.ctime FROM machines AS m INNER JOIN machine_logs AS ml ON m.id = ml.machine_id"
  11. _machineRightCountSQL = "SELECT count(m.id) FROM machines AS m INNER JOIN machine_logs AS ml ON m.id = ml.machine_id"
  12. )
  13. // InsertMachineLog insert machine log.
  14. func (d *Dao) InsertMachineLog(machineLog *model.MachineLog) (err error) {
  15. return pkgerr.WithStack(d.db.Create(machineLog).Error)
  16. }
  17. // FindMachineLogsByMachineID find machine log by machineId.
  18. func (d *Dao) FindMachineLogsByMachineID(machineID int64, pn, ps int) (total int64, machineLogs []*model.AboundMachineLog, err error) {
  19. var (
  20. qSQL = _machineRightJoinLogSQL
  21. cSQL = _machineRightCountSQL
  22. rows *sql.Rows
  23. )
  24. if machineID > 0 {
  25. qSQL = _machineRightJoinLogSQL + " WHERE machine_id = " + strconv.FormatInt(machineID, 10)
  26. cSQL = _machineRightCountSQL + " WHERE machine_id = " + strconv.FormatInt(machineID, 10)
  27. }
  28. cDB := d.db.Raw(cSQL)
  29. if err = pkgerr.WithStack(cDB.Count(&total).Error); err != nil {
  30. return
  31. }
  32. gDB := d.db.Raw(qSQL)
  33. if rows, err = gDB.Order("ml.ctime DESC").Offset((pn - 1) * ps).Limit(ps).Rows(); err != nil {
  34. return
  35. }
  36. defer rows.Close()
  37. for rows.Next() {
  38. ml := &model.AboundMachineLog{}
  39. if err = rows.Scan(&ml.MachineID, &ml.Name, &ml.Username, &ml.OperateType, &ml.OperateResult, &ml.OperateTime); err != nil {
  40. return
  41. }
  42. machineLogs = append(machineLogs, ml)
  43. }
  44. return
  45. }
  46. // FindMachineLogs Find Machine Logs.
  47. func (d *Dao) FindMachineLogs(queryRequest *model.QueryMachineLogRequest) (total int64, machineLogs []*model.AboundMachineLog, err error) {
  48. var (
  49. qSQL = _machineRightJoinLogSQL
  50. cSQL = _machineRightCountSQL
  51. rows *sql.Rows
  52. )
  53. if queryRequest.MachineID > 0 || queryRequest.OperateType != "" || queryRequest.OperateUser != "" || queryRequest.MachineName != "" {
  54. var (
  55. strSQL = ""
  56. logicalWord = _where
  57. )
  58. if queryRequest.MachineID > 0 {
  59. strSQL = fmt.Sprintf("%s %s ml.machine_id = %s", strSQL, logicalWord, strconv.FormatInt(queryRequest.MachineID, 10))
  60. logicalWord = _and
  61. }
  62. if queryRequest.OperateType != "" {
  63. strSQL = fmt.Sprintf("%s %s ml.operation_type like '%s'", strSQL, logicalWord, _wildcards+queryRequest.OperateType+_wildcards)
  64. logicalWord = _and
  65. }
  66. if queryRequest.MachineName != "" {
  67. strSQL = fmt.Sprintf("%s %s m.name like '%s'", strSQL, logicalWord, _wildcards+queryRequest.MachineName+_wildcards)
  68. logicalWord = _and
  69. }
  70. if queryRequest.OperateUser != "" {
  71. strSQL = fmt.Sprintf("%s %s ml.username like '%s'", strSQL, logicalWord, _wildcards+queryRequest.OperateUser+_wildcards)
  72. logicalWord = _and
  73. }
  74. qSQL = _machineRightJoinLogSQL + " " + strSQL
  75. cSQL = _machineRightCountSQL + " " + strSQL
  76. }
  77. cDB := d.db.Raw(cSQL)
  78. if err = pkgerr.WithStack(cDB.Count(&total).Error); err != nil {
  79. return
  80. }
  81. gDB := d.db.Raw(qSQL)
  82. if rows, err = gDB.Order("ml.ctime DESC").Offset((queryRequest.PageNum - 1) * queryRequest.PageSize).Limit(queryRequest.PageSize).Rows(); err != nil {
  83. return
  84. }
  85. defer rows.Close()
  86. for rows.Next() {
  87. ml := &model.AboundMachineLog{}
  88. if err = rows.Scan(&ml.MachineID, &ml.Name, &ml.Username, &ml.OperateType, &ml.OperateResult, &ml.OperateTime); err != nil {
  89. return
  90. }
  91. machineLogs = append(machineLogs, ml)
  92. }
  93. return
  94. }